summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/a7800/a78_slot.cpp12
-rw-r--r--src/devices/bus/a7800/a78_slot.h4
-rw-r--r--src/devices/bus/a800/a800_slot.cpp26
-rw-r--r--src/devices/bus/a800/a800_slot.h6
-rw-r--r--src/devices/bus/abckb/abc99.cpp22
-rw-r--r--src/devices/bus/adam/exp.cpp8
-rw-r--r--src/devices/bus/adam/exp.h2
-rw-r--r--src/devices/bus/amiga/zorro/buddha.cpp12
-rw-r--r--src/devices/bus/apf/slot.cpp11
-rw-r--r--src/devices/bus/apf/slot.h2
-rw-r--r--src/devices/bus/arcadia/slot.cpp6
-rw-r--r--src/devices/bus/arcadia/slot.h2
-rw-r--r--src/devices/bus/astrocde/slot.cpp11
-rw-r--r--src/devices/bus/astrocde/slot.h3
-rw-r--r--src/devices/bus/c64/exp.cpp13
-rw-r--r--src/devices/bus/c64/exp.h2
-rw-r--r--src/devices/bus/c64/geocable.h2
-rw-r--r--src/devices/bus/c64/magic_voice.h2
-rw-r--r--src/devices/bus/cbm2/exp.cpp8
-rw-r--r--src/devices/bus/cbm2/exp.h2
-rw-r--r--src/devices/bus/cbm2/hrg.cpp104
-rw-r--r--src/devices/bus/cbm2/hrg.h24
-rw-r--r--src/devices/bus/cbmiec/c1541.cpp4
-rw-r--r--src/devices/bus/cbmiec/c1571.cpp4
-rw-r--r--src/devices/bus/cbmiec/c1571.h2
-rw-r--r--src/devices/bus/cbmiec/c1581.cpp6
-rw-r--r--src/devices/bus/centronics/epson_ex800.cpp5
-rw-r--r--src/devices/bus/centronics/epson_ex800.h1
-rw-r--r--src/devices/bus/centronics/epson_lx800.cpp7
-rw-r--r--src/devices/bus/centronics/epson_lx810l.cpp4
-rw-r--r--src/devices/bus/cgenie/expansion/floppy.h2
-rw-r--r--src/devices/bus/chanf/slot.cpp11
-rw-r--r--src/devices/bus/chanf/slot.h2
-rw-r--r--src/devices/bus/coco/coco_dwsock.cpp3
-rw-r--r--src/devices/bus/coco/coco_fdc.cpp2
-rw-r--r--src/devices/bus/coco/cococart.cpp10
-rw-r--r--src/devices/bus/coco/cococart.h2
-rw-r--r--src/devices/bus/coleco/exp.cpp11
-rw-r--r--src/devices/bus/coleco/exp.h2
-rw-r--r--src/devices/bus/cpc/cpc_rom.cpp7
-rw-r--r--src/devices/bus/cpc/cpc_rom.h4
-rw-r--r--src/devices/bus/cpc/mface2.cpp6
-rw-r--r--src/devices/bus/cpc/mface2.h2
-rw-r--r--src/devices/bus/cpc/symbfac2.cpp14
-rw-r--r--src/devices/bus/cpc/transtape.cpp14
-rw-r--r--src/devices/bus/cpc/transtape.h2
-rw-r--r--src/devices/bus/crvision/slot.cpp11
-rw-r--r--src/devices/bus/crvision/slot.h2
-rw-r--r--src/devices/bus/dmv/k220.cpp4
-rw-r--r--src/devices/bus/econet/e01.cpp4
-rw-r--r--src/devices/bus/econet/e01.h1
-rw-r--r--src/devices/bus/gameboy/gb_slot.cpp24
-rw-r--r--src/devices/bus/gameboy/gb_slot.h4
-rw-r--r--src/devices/bus/gameboy/rom.h2
-rw-r--r--src/devices/bus/gba/gba_slot.cpp11
-rw-r--r--src/devices/bus/gba/gba_slot.h3
-rw-r--r--src/devices/bus/generic/slot.cpp6
-rw-r--r--src/devices/bus/generic/slot.h2
-rw-r--r--src/devices/bus/ieee488/c2031.cpp2
-rw-r--r--src/devices/bus/ieee488/c2040.cpp6
-rw-r--r--src/devices/bus/ieee488/c2040.h2
-rw-r--r--src/devices/bus/ieee488/c8050.cpp6
-rw-r--r--src/devices/bus/ieee488/c8050.h2
-rw-r--r--src/devices/bus/ieee488/c8280.cpp6
-rw-r--r--src/devices/bus/ieee488/d9060.cpp6
-rw-r--r--src/devices/bus/ieee488/d9060.h1
-rw-r--r--src/devices/bus/ieee488/hardbox.cpp6
-rw-r--r--src/devices/bus/ieee488/softbox.cpp6
-rw-r--r--src/devices/bus/imi7000/imi7000.h2
-rw-r--r--src/devices/bus/intv/ecs.cpp164
-rw-r--r--src/devices/bus/intv/slot.cpp15
-rw-r--r--src/devices/bus/intv/slot.h2
-rw-r--r--src/devices/bus/iq151/iq151.cpp8
-rw-r--r--src/devices/bus/iq151/iq151.h2
-rw-r--r--src/devices/bus/iq151/minigraf.cpp2
-rw-r--r--src/devices/bus/iq151/minigraf.h2
-rw-r--r--src/devices/bus/iq151/ms151a.cpp2
-rw-r--r--src/devices/bus/iq151/ms151a.h2
-rw-r--r--src/devices/bus/iq151/video32.cpp2
-rw-r--r--src/devices/bus/iq151/video64.cpp2
-rw-r--r--src/devices/bus/isa/3c505.h2
-rw-r--r--src/devices/bus/isa/aga.cpp26
-rw-r--r--src/devices/bus/isa/aga.h2
-rw-r--r--src/devices/bus/isa/com.cpp8
-rw-r--r--src/devices/bus/isa/ega.cpp4
-rw-r--r--src/devices/bus/isa/gus.cpp4
-rw-r--r--src/devices/bus/isa/hdc.cpp4
-rw-r--r--src/devices/bus/isa/ibm_mfc.cpp2
-rw-r--r--src/devices/bus/isa/mda.cpp6
-rw-r--r--src/devices/bus/isa/mda.h2
-rw-r--r--src/devices/bus/isa/omti8621.cpp121
-rw-r--r--src/devices/bus/isa/omti8621.h30
-rw-r--r--src/devices/bus/isa/pgc.cpp10
-rw-r--r--src/devices/bus/isa/pgc.h6
-rw-r--r--src/devices/bus/isa/sc499.cpp5
-rw-r--r--src/devices/bus/isa/sc499.h3
-rw-r--r--src/devices/bus/isa/trident.cpp2
-rw-r--r--src/devices/bus/kc/kc.cpp8
-rw-r--r--src/devices/bus/kc/kc.h2
-rw-r--r--src/devices/bus/lpci/i82439tx.cpp2
-rw-r--r--src/devices/bus/macpds/macpds.h1
-rw-r--r--src/devices/bus/macpds/pds_tpdfpd.cpp8
-rw-r--r--src/devices/bus/macpds/pds_tpdfpd.h2
-rw-r--r--src/devices/bus/megadrive/md_slot.cpp10
-rw-r--r--src/devices/bus/megadrive/md_slot.h2
-rw-r--r--src/devices/bus/megadrive/rom.cpp2
-rw-r--r--src/devices/bus/megadrive/svp.cpp2
-rw-r--r--src/devices/bus/megadrive/svp.h2
-rw-r--r--src/devices/bus/msx_cart/disk.cpp4
-rw-r--r--src/devices/bus/msx_slot/cartridge.cpp9
-rw-r--r--src/devices/bus/msx_slot/cartridge.h2
-rw-r--r--src/devices/bus/msx_slot/disk.cpp4
-rw-r--r--src/devices/bus/neogeo/bootleg_prot.cpp2
-rw-r--r--src/devices/bus/neogeo/neogeo_intf.h2
-rw-r--r--src/devices/bus/neogeo/neogeo_slot.cpp6
-rw-r--r--src/devices/bus/neogeo/neogeo_slot.h2
-rw-r--r--src/devices/bus/nes/act53.cpp2
-rw-r--r--src/devices/bus/nes/aladdin.cpp10
-rw-r--r--src/devices/bus/nes/aladdin.h2
-rw-r--r--src/devices/bus/nes/bootleg.cpp2
-rw-r--r--src/devices/bus/nes/datach.cpp6
-rw-r--r--src/devices/bus/nes/datach.h2
-rw-r--r--src/devices/bus/nes/disksys.cpp6
-rw-r--r--src/devices/bus/nes/disksys.h2
-rw-r--r--src/devices/bus/nes/karastudio.cpp6
-rw-r--r--src/devices/bus/nes/karastudio.h2
-rw-r--r--src/devices/bus/nes/mmc5.h1
-rw-r--r--src/devices/bus/nes/nes_slot.cpp8
-rw-r--r--src/devices/bus/nes/nes_slot.h2
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.cpp6
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.h2
-rw-r--r--src/devices/bus/nes_ctrl/arkpaddle.cpp2
-rw-r--r--src/devices/bus/nubus/nubus_image.cpp16
-rw-r--r--src/devices/bus/odyssey2/slot.cpp11
-rw-r--r--src/devices/bus/odyssey2/slot.h2
-rw-r--r--src/devices/bus/pc_kbd/pcat84.cpp6
-rw-r--r--src/devices/bus/pce/pce_slot.cpp13
-rw-r--r--src/devices/bus/pce/pce_slot.h3
-rw-r--r--src/devices/bus/pet/64k.cpp2
-rw-r--r--src/devices/bus/pet/hsg.cpp49
-rw-r--r--src/devices/bus/pet/hsg.h4
-rw-r--r--src/devices/bus/plus4/c1551.cpp2
-rw-r--r--src/devices/bus/plus4/c1551.h4
-rw-r--r--src/devices/bus/plus4/exp.cpp6
-rw-r--r--src/devices/bus/plus4/exp.h2
-rw-r--r--src/devices/bus/ql/cst_q_plus4.h1
-rw-r--r--src/devices/bus/ql/cst_qdisc.h1
-rw-r--r--src/devices/bus/ql/cumana_fdi.h1
-rw-r--r--src/devices/bus/ql/kempston_di.h1
-rw-r--r--src/devices/bus/ql/miracle_gold_card.h1
-rw-r--r--src/devices/bus/ql/miracle_hd.h1
-rw-r--r--src/devices/bus/ql/mp_fdi.h1
-rw-r--r--src/devices/bus/ql/opd_basic_master.h1
-rw-r--r--src/devices/bus/ql/pcml_qdisk.h1
-rw-r--r--src/devices/bus/ql/qubide.h1
-rw-r--r--src/devices/bus/ql/rom.cpp8
-rw-r--r--src/devices/bus/ql/rom.h2
-rw-r--r--src/devices/bus/rs232/keyboard.h1
-rw-r--r--src/devices/bus/rs232/xvd701.h3
-rw-r--r--src/devices/bus/saturn/sat_slot.cpp6
-rw-r--r--src/devices/bus/saturn/sat_slot.h2
-rw-r--r--src/devices/bus/scv/slot.cpp11
-rw-r--r--src/devices/bus/scv/slot.h2
-rw-r--r--src/devices/bus/sega8/sega8_slot.cpp13
-rw-r--r--src/devices/bus/sega8/sega8_slot.h5
-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/rfu.cpp2
-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/snes/bsx.cpp2
-rw-r--r--src/devices/bus/snes/bsx.h2
-rw-r--r--src/devices/bus/snes/rom.cpp2
-rw-r--r--src/devices/bus/snes/sa1.cpp10
-rw-r--r--src/devices/bus/snes/sdd1.cpp40
-rw-r--r--src/devices/bus/snes/sdd1.h24
-rw-r--r--src/devices/bus/snes/snes_slot.cpp15
-rw-r--r--src/devices/bus/snes/snes_slot.h2
-rw-r--r--src/devices/bus/snes/spc7110.cpp8
-rw-r--r--src/devices/bus/snes/spc7110.h4
-rw-r--r--src/devices/bus/ti99_peb/bwg.cpp2
-rw-r--r--src/devices/bus/ti99_peb/bwg.h3
-rw-r--r--src/devices/bus/ti99_peb/evpc.cpp10
-rw-r--r--src/devices/bus/ti99_peb/evpc.h2
-rw-r--r--src/devices/bus/ti99_peb/hfdc.cpp2
-rw-r--r--src/devices/bus/ti99_peb/hfdc.h4
-rw-r--r--src/devices/bus/ti99_peb/horizon.cpp4
-rw-r--r--src/devices/bus/ti99_peb/hsgpl.cpp8
-rw-r--r--src/devices/bus/ti99_peb/hsgpl.h4
-rw-r--r--src/devices/bus/ti99_peb/memex.cpp2
-rw-r--r--src/devices/bus/ti99_peb/myarcmem.cpp2
-rw-r--r--src/devices/bus/ti99_peb/samsmem.cpp4
-rw-r--r--src/devices/bus/ti99_peb/spchsyn.h4
-rw-r--r--src/devices/bus/ti99_peb/ti_fdc.h3
-rw-r--r--src/devices/bus/ti99_peb/ti_rs232.cpp14
-rw-r--r--src/devices/bus/ti99_peb/ti_rs232.h3
-rw-r--r--src/devices/bus/ti99x/998board.cpp12
-rw-r--r--src/devices/bus/ti99x/998board.h4
-rw-r--r--src/devices/bus/ti99x/datamux.cpp6
-rw-r--r--src/devices/bus/ti99x/datamux.h2
-rw-r--r--src/devices/bus/ti99x/genboard.cpp2
-rw-r--r--src/devices/bus/ti99x/gromport.cpp54
-rw-r--r--src/devices/bus/ti99x/gromport.h5
-rw-r--r--src/devices/bus/ti99x/handset.h1
-rw-r--r--src/devices/bus/ti99x/videowrp.h12
-rw-r--r--src/devices/bus/vboy/slot.cpp6
-rw-r--r--src/devices/bus/vboy/slot.h3
-rw-r--r--src/devices/bus/vc4000/slot.cpp11
-rw-r--r--src/devices/bus/vc4000/slot.h2
-rwxr-xr-xsrc/devices/bus/vcs/vcs_slot.cpp10
-rwxr-xr-xsrc/devices/bus/vcs/vcs_slot.h2
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.h1
-rw-r--r--src/devices/bus/vectrex/slot.cpp11
-rw-r--r--src/devices/bus/vectrex/slot.h2
-rw-r--r--src/devices/bus/vic10/exp.cpp13
-rw-r--r--src/devices/bus/vic10/exp.h2
-rw-r--r--src/devices/bus/vic20/exp.cpp6
-rw-r--r--src/devices/bus/vic20/exp.h2
-rw-r--r--src/devices/bus/vidbrain/exp.cpp8
-rw-r--r--src/devices/bus/vidbrain/exp.h2
-rw-r--r--src/devices/bus/wangpc/tig.cpp2
-rw-r--r--src/devices/bus/wswan/slot.cpp11
-rw-r--r--src/devices/bus/wswan/slot.h2
-rw-r--r--src/devices/bus/z88/z88.cpp14
-rw-r--r--src/devices/bus/z88/z88.h2
-rw-r--r--src/devices/cpu/8x300/8x300.cpp4
-rw-r--r--src/devices/cpu/8x300/8x300.h2
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.cpp13
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.h2
-rw-r--r--src/devices/cpu/alph8201/alph8201.cpp2
-rw-r--r--src/devices/cpu/alph8201/alph8201.h2
-rw-r--r--src/devices/cpu/alto2/a2disk.cpp2
-rw-r--r--src/devices/cpu/alto2/a2disp.cpp12
-rw-r--r--src/devices/cpu/alto2/a2disp.h4
-rw-r--r--src/devices/cpu/alto2/a2ether.cpp8
-rw-r--r--src/devices/cpu/alto2/a2ether.h4
-rw-r--r--src/devices/cpu/alto2/a2mem.cpp8
-rw-r--r--src/devices/cpu/alto2/a2mem.h4
-rw-r--r--src/devices/cpu/alto2/a2ram.cpp4
-rw-r--r--src/devices/cpu/alto2/alto2cpu.cpp12
-rw-r--r--src/devices/cpu/alto2/alto2cpu.h10
-rw-r--r--src/devices/cpu/am29000/am29000.cpp2
-rw-r--r--src/devices/cpu/am29000/am29000.h2
-rw-r--r--src/devices/cpu/amis2000/amis2000.cpp2
-rw-r--r--src/devices/cpu/amis2000/amis2000.h2
-rw-r--r--src/devices/cpu/apexc/apexc.cpp2
-rw-r--r--src/devices/cpu/apexc/apexc.h2
-rw-r--r--src/devices/cpu/arcompact/arcompact_execute.cpp20
-rw-r--r--src/devices/cpu/arcompact/arcompactdasm.cpp2
-rw-r--r--src/devices/cpu/arcompact/arcompactdasm_ops.cpp4
-rw-r--r--src/devices/cpu/arm/arm.cpp2
-rw-r--r--src/devices/cpu/arm/arm.h2
-rw-r--r--src/devices/cpu/arm7/arm7.cpp2
-rw-r--r--src/devices/cpu/arm7/arm7.h2
-rw-r--r--src/devices/cpu/arm7/arm7dasm.cpp2
-rw-r--r--src/devices/cpu/arm7/arm7ops.cpp8
-rw-r--r--src/devices/cpu/asap/asap.cpp5
-rw-r--r--src/devices/cpu/asap/asap.h2
-rw-r--r--src/devices/cpu/avr8/avr8.cpp24
-rw-r--r--src/devices/cpu/avr8/avr8.h13
-rw-r--r--src/devices/cpu/avr8/avr8dasm.cpp2
-rw-r--r--src/devices/cpu/ccpu/ccpu.cpp14
-rw-r--r--src/devices/cpu/ccpu/ccpu.h3
-rw-r--r--src/devices/cpu/cop400/cop400.cpp2
-rw-r--r--src/devices/cpu/cop400/cop400.h2
-rw-r--r--src/devices/cpu/cosmac/cosmac.cpp5
-rw-r--r--src/devices/cpu/cosmac/cosmac.h3
-rw-r--r--src/devices/cpu/cp1610/cp1610.cpp2
-rw-r--r--src/devices/cpu/cp1610/cp1610.h2
-rw-r--r--src/devices/cpu/cubeqcpu/cubeqcpu.cpp4
-rw-r--r--src/devices/cpu/cubeqcpu/cubeqcpu.h4
-rw-r--r--src/devices/cpu/drcbeut.cpp2
-rw-r--r--src/devices/cpu/drcbex64.cpp8
-rw-r--r--src/devices/cpu/drcbex86.cpp8
-rw-r--r--src/devices/cpu/drcbex86.h9
-rw-r--r--src/devices/cpu/drcuml.cpp21
-rw-r--r--src/devices/cpu/drcuml.h1
-rw-r--r--src/devices/cpu/dsp16/dsp16.cpp2
-rw-r--r--src/devices/cpu/dsp16/dsp16.h2
-rw-r--r--src/devices/cpu/dsp32/dsp32.cpp5
-rw-r--r--src/devices/cpu/dsp32/dsp32.h2
-rw-r--r--src/devices/cpu/dsp56k/dsp56k.cpp4
-rw-r--r--src/devices/cpu/dsp56k/dsp56k.h4
-rw-r--r--src/devices/cpu/dsp56k/dsp56pcu.cpp44
-rw-r--r--src/devices/cpu/dsp56k/dsp56pcu.h42
-rw-r--r--src/devices/cpu/e0c6200/e0c6200.cpp2
-rw-r--r--src/devices/cpu/e0c6200/e0c6200.h2
-rw-r--r--src/devices/cpu/e0c6200/e0c6200d.cpp2
-rw-r--r--src/devices/cpu/e132xs/32xsdasm.cpp2
-rw-r--r--src/devices/cpu/e132xs/e132xs.cpp2
-rw-r--r--src/devices/cpu/e132xs/e132xs.h6
-rw-r--r--src/devices/cpu/esrip/esrip.cpp8
-rw-r--r--src/devices/cpu/esrip/esrip.h8
-rw-r--r--src/devices/cpu/f8/f8.cpp2
-rw-r--r--src/devices/cpu/f8/f8.h2
-rw-r--r--src/devices/cpu/g65816/g65816.cpp2
-rw-r--r--src/devices/cpu/g65816/g65816.h2
-rw-r--r--src/devices/cpu/h6280/h6280.cpp2
-rw-r--r--src/devices/cpu/h6280/h6280.h2
-rw-r--r--src/devices/cpu/h8/h8.cpp2
-rw-r--r--src/devices/cpu/h8/h8.h2
-rw-r--r--src/devices/cpu/h8/h83008.h1
-rw-r--r--src/devices/cpu/h8/h8_intc.h3
-rw-r--r--src/devices/cpu/h8/h8_timer16.h2
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.cpp2
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.h2
-rw-r--r--src/devices/cpu/hcd62121/hcd62121d.cpp4
-rw-r--r--src/devices/cpu/hd61700/hd61700.cpp11
-rw-r--r--src/devices/cpu/hd61700/hd61700.h2
-rw-r--r--src/devices/cpu/hd61700/hd61700d.cpp2
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.cpp2
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.h2
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.cpp998
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.h229
-rw-r--r--src/devices/cpu/hphybrid/hphybrid_dasm.cpp289
-rw-r--r--src/devices/cpu/i386/cycles.h1
-rw-r--r--src/devices/cpu/i386/i386.cpp59
-rw-r--r--src/devices/cpu/i386/i386.h9
-rw-r--r--src/devices/cpu/i386/i386priv.h2
-rw-r--r--src/devices/cpu/i4004/i4004.cpp7
-rw-r--r--src/devices/cpu/i4004/i4004.h2
-rw-r--r--src/devices/cpu/i8008/i8008.cpp5
-rw-r--r--src/devices/cpu/i8008/i8008.h2
-rw-r--r--src/devices/cpu/i8085/i8085.cpp4
-rw-r--r--src/devices/cpu/i8085/i8085.h6
-rw-r--r--src/devices/cpu/i8089/i8089.cpp6
-rw-r--r--src/devices/cpu/i8089/i8089.h8
-rw-r--r--src/devices/cpu/i86/i286.cpp6
-rw-r--r--src/devices/cpu/i86/i286.h2
-rw-r--r--src/devices/cpu/i86/i86.cpp31
-rw-r--r--src/devices/cpu/i86/i86.h4
-rw-r--r--src/devices/cpu/i86/i86inline.h2
-rw-r--r--src/devices/cpu/i860/i860.cpp2
-rw-r--r--src/devices/cpu/i860/i860.h5
-rw-r--r--src/devices/cpu/i860/i860dis.cpp8
-rw-r--r--src/devices/cpu/i960/i960.cpp2
-rw-r--r--src/devices/cpu/i960/i960.h2
-rw-r--r--src/devices/cpu/ie15/ie15.cpp5
-rw-r--r--src/devices/cpu/ie15/ie15.h2
-rw-r--r--src/devices/cpu/jaguar/jaguar.cpp16
-rw-r--r--src/devices/cpu/jaguar/jaguar.h6
-rw-r--r--src/devices/cpu/lc8670/lc8670.cpp10
-rw-r--r--src/devices/cpu/lc8670/lc8670.h2
-rw-r--r--src/devices/cpu/lh5801/lh5801.cpp2
-rw-r--r--src/devices/cpu/lh5801/lh5801.h2
-rw-r--r--src/devices/cpu/lr35902/lr35902.cpp2
-rw-r--r--src/devices/cpu/lr35902/lr35902.h2
-rw-r--r--src/devices/cpu/lr35902/lr35902d.cpp4
-rw-r--r--src/devices/cpu/m37710/m37710.cpp2
-rw-r--r--src/devices/cpu/m37710/m37710.h2
-rw-r--r--src/devices/cpu/m6502/m6502.cpp2
-rw-r--r--src/devices/cpu/m6502/m6502.h2
-rw-r--r--src/devices/cpu/m6502/m6510.h1
-rw-r--r--src/devices/cpu/m6502/m65ce02.cpp2
-rw-r--r--src/devices/cpu/m6502/m65ce02.h2
-rw-r--r--src/devices/cpu/m6502/m740.cpp2
-rw-r--r--src/devices/cpu/m6502/m740.h2
-rw-r--r--src/devices/cpu/m6800/m6800.cpp2
-rw-r--r--src/devices/cpu/m6800/m6800.h2
-rw-r--r--src/devices/cpu/m68000/m68000.h2
-rw-r--r--src/devices/cpu/m68000/m68k_in.cpp35
-rw-r--r--src/devices/cpu/m68000/m68kcpu.cpp12
-rw-r--r--src/devices/cpu/m68000/m68kfpu.inc2
-rw-r--r--src/devices/cpu/m68000/m68kmake.cpp4
-rw-r--r--src/devices/cpu/m68000/m68kops.cpp24
-rw-r--r--src/devices/cpu/m6805/m6805.cpp2
-rw-r--r--src/devices/cpu/m6805/m6805.h4
-rw-r--r--src/devices/cpu/m6809/m6809.cpp2
-rw-r--r--src/devices/cpu/m6809/m6809.h2
-rw-r--r--src/devices/cpu/mb86233/mb86233.cpp4
-rw-r--r--src/devices/cpu/mb86233/mb86233.h2
-rw-r--r--src/devices/cpu/mb86235/mb86235.cpp2
-rw-r--r--src/devices/cpu/mb86235/mb86235.h2
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.cpp2
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.h6
-rw-r--r--src/devices/cpu/mc68hc11/hc11dasm.cpp2
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.cpp2
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.h2
-rw-r--r--src/devices/cpu/mcs48/mcs48.cpp6
-rw-r--r--src/devices/cpu/mcs48/mcs48.h2
-rw-r--r--src/devices/cpu/mcs51/mcs51.cpp8
-rw-r--r--src/devices/cpu/mcs51/mcs51.h2
-rw-r--r--src/devices/cpu/mcs96/mcs96.cpp2
-rw-r--r--src/devices/cpu/mcs96/mcs96.h2
-rw-r--r--src/devices/cpu/melps4/melps4.cpp4
-rw-r--r--src/devices/cpu/melps4/melps4.h2
-rw-r--r--src/devices/cpu/minx/minx.cpp2
-rw-r--r--src/devices/cpu/minx/minx.h2
-rw-r--r--src/devices/cpu/minx/minxd.cpp4
-rw-r--r--src/devices/cpu/mips/mips3.cpp8
-rw-r--r--src/devices/cpu/mips/mips3.h6
-rw-r--r--src/devices/cpu/mips/mips3drc.cpp14
-rw-r--r--src/devices/cpu/mips/r3000.cpp2
-rw-r--r--src/devices/cpu/mips/r3000.h2
-rw-r--r--src/devices/cpu/mn10200/mn10200.cpp2
-rw-r--r--src/devices/cpu/mn10200/mn10200.h2
-rw-r--r--src/devices/cpu/nec/nec.cpp2
-rw-r--r--src/devices/cpu/nec/nec.h2
-rw-r--r--src/devices/cpu/nec/v25.cpp2
-rw-r--r--src/devices/cpu/nec/v25.h2
-rw-r--r--src/devices/cpu/patinhofeio/patinho_feio.cpp935
-rw-r--r--src/devices/cpu/patinhofeio/patinho_feio.h108
-rw-r--r--src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp308
-rw-r--r--src/devices/cpu/pdp1/pdp1.cpp2
-rw-r--r--src/devices/cpu/pdp1/pdp1.h2
-rw-r--r--src/devices/cpu/pdp8/pdp8.cpp3
-rw-r--r--src/devices/cpu/pdp8/pdp8.h2
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.cpp2
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.h2
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.cpp2
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.h11
-rw-r--r--src/devices/cpu/powerpc/ppc.h9
-rw-r--r--src/devices/cpu/powerpc/ppccom.cpp12
-rw-r--r--src/devices/cpu/powerpc/ppcdrc.cpp28
-rw-r--r--src/devices/cpu/pps4/pps4.cpp2
-rw-r--r--src/devices/cpu/pps4/pps4.h5
-rw-r--r--src/devices/cpu/psx/dma.h2
-rw-r--r--src/devices/cpu/psx/gte.h4
-rw-r--r--src/devices/cpu/psx/psx.cpp2
-rw-r--r--src/devices/cpu/psx/psx.h8
-rw-r--r--src/devices/cpu/psx/sio.h1
-rw-r--r--src/devices/cpu/rsp/rsp.cpp25
-rw-r--r--src/devices/cpu/rsp/rsp.h11
-rw-r--r--src/devices/cpu/rsp/rspcp2.cpp6
-rw-r--r--src/devices/cpu/rsp/rspcp2.h6
-rw-r--r--src/devices/cpu/rsp/rspcp2d.cpp12
-rw-r--r--src/devices/cpu/rsp/rspcp2d.h6
-rw-r--r--src/devices/cpu/rsp/rspdrc.cpp12
-rw-r--r--src/devices/cpu/s2650/s2650.cpp14
-rw-r--r--src/devices/cpu/s2650/s2650.h7
-rw-r--r--src/devices/cpu/saturn/saturn.cpp2
-rw-r--r--src/devices/cpu/saturn/saturn.h2
-rw-r--r--src/devices/cpu/sc61860/sc61860.cpp2
-rw-r--r--src/devices/cpu/sc61860/sc61860.h2
-rw-r--r--src/devices/cpu/scmp/scmp.cpp6
-rw-r--r--src/devices/cpu/scmp/scmp.h2
-rw-r--r--src/devices/cpu/score/score.cpp10
-rw-r--r--src/devices/cpu/score/score.h2
-rw-r--r--src/devices/cpu/scudsp/scudsp.cpp2
-rw-r--r--src/devices/cpu/scudsp/scudsp.h2
-rw-r--r--src/devices/cpu/se3208/se3208.cpp2
-rw-r--r--src/devices/cpu/se3208/se3208.h2
-rw-r--r--src/devices/cpu/sh2/sh2.cpp11
-rw-r--r--src/devices/cpu/sh2/sh2.h6
-rw-r--r--src/devices/cpu/sh2/sh2drc.cpp14
-rw-r--r--src/devices/cpu/sh4/sh4.cpp2
-rw-r--r--src/devices/cpu/sh4/sh4.h2
-rw-r--r--src/devices/cpu/sharc/sharcdsm.cpp4
-rw-r--r--src/devices/cpu/sm8500/sm8500.cpp4
-rw-r--r--src/devices/cpu/sm8500/sm8500.h6
-rw-r--r--src/devices/cpu/sm8500/sm8500d.cpp5
-rw-r--r--src/devices/cpu/spc700/spc700.cpp2
-rw-r--r--src/devices/cpu/spc700/spc700.h2
-rw-r--r--src/devices/cpu/ssem/ssem.cpp2
-rw-r--r--src/devices/cpu/ssem/ssem.h2
-rw-r--r--src/devices/cpu/ssp1601/ssp1601.cpp6
-rw-r--r--src/devices/cpu/ssp1601/ssp1601.h2
-rw-r--r--src/devices/cpu/ssp1601/ssp1601d.cpp2
-rw-r--r--src/devices/cpu/superfx/superfx.cpp10
-rw-r--r--src/devices/cpu/t11/t11.cpp4
-rw-r--r--src/devices/cpu/t11/t11.h4
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.cpp4
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.h2
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.cpp210
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.h29
-rw-r--r--src/devices/cpu/tms0980/tms0980.cpp58
-rw-r--r--src/devices/cpu/tms0980/tms0980.h18
-rw-r--r--src/devices/cpu/tms32010/tms32010.cpp2
-rw-r--r--src/devices/cpu/tms32010/tms32010.h2
-rw-r--r--src/devices/cpu/tms32025/tms32025.cpp6
-rw-r--r--src/devices/cpu/tms32025/tms32025.h3
-rw-r--r--src/devices/cpu/tms32031/tms32031.cpp2
-rw-r--r--src/devices/cpu/tms32031/tms32031.h3
-rw-r--r--src/devices/cpu/tms32051/32051ops.inc245
-rw-r--r--src/devices/cpu/tms32051/dis32051.cpp170
-rw-r--r--src/devices/cpu/tms32051/tms32051.cpp62
-rw-r--r--src/devices/cpu/tms32051/tms32051.h12
-rw-r--r--src/devices/cpu/tms32082/dis_mp.cpp9
-rw-r--r--src/devices/cpu/tms32082/dis_pp.cpp2
-rw-r--r--src/devices/cpu/tms32082/mp_ops.cpp38
-rw-r--r--src/devices/cpu/tms32082/tms32082.cpp88
-rw-r--r--src/devices/cpu/tms32082/tms32082.h8
-rw-r--r--src/devices/cpu/tms34010/tms34010.cpp9
-rw-r--r--src/devices/cpu/tms34010/tms34010.h2
-rw-r--r--src/devices/cpu/tms57002/tms57002.h2
-rw-r--r--src/devices/cpu/tms7000/tms7000.cpp2
-rw-r--r--src/devices/cpu/tms7000/tms7000.h2
-rw-r--r--src/devices/cpu/tms9900/tms9900.cpp8
-rw-r--r--src/devices/cpu/tms9900/tms9900.h8
-rw-r--r--src/devices/cpu/tms9900/tms9995.cpp12
-rw-r--r--src/devices/cpu/tms9900/tms9995.h2
-rw-r--r--src/devices/cpu/ucom4/ucom4.cpp2
-rw-r--r--src/devices/cpu/ucom4/ucom4.h3
-rw-r--r--src/devices/cpu/uml.cpp11
-rw-r--r--src/devices/cpu/uml.h2
-rw-r--r--src/devices/cpu/upd7725/upd7725.cpp2
-rw-r--r--src/devices/cpu/upd7725/upd7725.h5
-rw-r--r--src/devices/cpu/upd7810/upd7810.cpp4
-rw-r--r--src/devices/cpu/upd7810/upd7810.h2
-rw-r--r--src/devices/cpu/v30mz/v30mz.cpp6
-rw-r--r--src/devices/cpu/v30mz/v30mz.h4
-rw-r--r--src/devices/cpu/v60/v60.cpp2
-rw-r--r--src/devices/cpu/v60/v60.h6
-rw-r--r--src/devices/cpu/v810/v810.cpp2
-rw-r--r--src/devices/cpu/v810/v810.h2
-rw-r--r--src/devices/cpu/vtlb.cpp2
-rw-r--r--src/devices/cpu/x86log.cpp122
-rw-r--r--src/devices/cpu/x86log.h126
-rw-r--r--src/devices/cpu/z180/z180.cpp10
-rw-r--r--src/devices/cpu/z180/z180.h2
-rw-r--r--src/devices/cpu/z180/z180dasm.cpp2
-rw-r--r--src/devices/cpu/z8/z8.cpp5
-rw-r--r--src/devices/cpu/z8/z8.h2
-rw-r--r--src/devices/cpu/z80/z80.cpp2
-rw-r--r--src/devices/cpu/z80/z80.h2
-rw-r--r--src/devices/cpu/z8000/z8000.cpp2
-rw-r--r--src/devices/cpu/z8000/z8000.h2
-rw-r--r--src/devices/imagedev/cassette.cpp1
-rw-r--r--src/devices/imagedev/chd_cd.cpp4
-rw-r--r--src/devices/imagedev/chd_cd.h2
-rw-r--r--src/devices/imagedev/diablo.cpp4
-rw-r--r--src/devices/imagedev/diablo.h2
-rw-r--r--src/devices/imagedev/flopdrv.cpp1
-rw-r--r--src/devices/imagedev/floppy.cpp9
-rw-r--r--src/devices/imagedev/floppy.h7
-rw-r--r--src/devices/imagedev/harddriv.cpp4
-rw-r--r--src/devices/imagedev/harddriv.h2
-rw-r--r--src/devices/machine/53c7xx.cpp2
-rw-r--r--src/devices/machine/53c810.cpp2
-rw-r--r--src/devices/machine/53c810.h6
-rw-r--r--src/devices/machine/6821pia.cpp2
-rw-r--r--src/devices/machine/68230pit.cpp2
-rw-r--r--src/devices/machine/68307.cpp2
-rw-r--r--src/devices/machine/68307.h1
-rw-r--r--src/devices/machine/74123.h2
-rw-r--r--src/devices/machine/adc1213x.cpp2
-rw-r--r--src/devices/machine/akiko.cpp10
-rw-r--r--src/devices/machine/akiko.h2
-rw-r--r--src/devices/machine/amigafdc.cpp14
-rw-r--r--src/devices/machine/at29x.cpp20
-rw-r--r--src/devices/machine/at29x.h4
-rw-r--r--src/devices/machine/atahle.h4
-rw-r--r--src/devices/machine/atapihle.cpp8
-rw-r--r--src/devices/machine/diablo_hd.cpp17
-rw-r--r--src/devices/machine/diablo_hd.h2
-rw-r--r--src/devices/machine/dp8390.h1
-rw-r--r--src/devices/machine/ds1315.cpp2
-rw-r--r--src/devices/machine/gayle.cpp2
-rw-r--r--src/devices/machine/hdc92x4.cpp10
-rw-r--r--src/devices/machine/i8255.cpp6
-rw-r--r--src/devices/machine/i8271.cpp1
-rw-r--r--src/devices/machine/i8271.h2
-rw-r--r--src/devices/machine/i8279.cpp6
-rw-r--r--src/devices/machine/i8279.h2
-rw-r--r--src/devices/machine/i8355.h1
-rw-r--r--src/devices/machine/idehd.cpp19
-rw-r--r--src/devices/machine/intelfsh.cpp11
-rw-r--r--src/devices/machine/intelfsh.h11
-rw-r--r--src/devices/machine/k053252.cpp21
-rw-r--r--src/devices/machine/k053252.h6
-rw-r--r--src/devices/machine/laserdsc.cpp14
-rw-r--r--src/devices/machine/laserdsc.h4
-rw-r--r--src/devices/machine/ldpr8210.cpp20
-rw-r--r--src/devices/machine/ldvp931.cpp2
-rw-r--r--src/devices/machine/mc68328.cpp2
-rw-r--r--src/devices/machine/mc68681.cpp4
-rw-r--r--src/devices/machine/microtch.h1
-rw-r--r--src/devices/machine/mos6526.cpp2
-rw-r--r--src/devices/machine/mos6530.cpp2
-rw-r--r--src/devices/machine/mos6530n.cpp2
-rw-r--r--src/devices/machine/ncr5380.cpp2
-rw-r--r--src/devices/machine/ncr5380n.cpp4
-rw-r--r--src/devices/machine/ncr5390.cpp2
-rw-r--r--src/devices/machine/netlist.h7
-rw-r--r--src/devices/machine/nscsi_bus.cpp2
-rw-r--r--src/devices/machine/pci.h4
-rw-r--r--src/devices/machine/pci9050.cpp2
-rw-r--r--src/devices/machine/pckeybrd.cpp14
-rw-r--r--src/devices/machine/pdc.cpp591
-rw-r--r--src/devices/machine/pdc.h118
-rw-r--r--src/devices/machine/pla.cpp2
-rw-r--r--src/devices/machine/roc10937.cpp2
-rw-r--r--src/devices/machine/roc10937.h2
-rw-r--r--src/devices/machine/rp5c15.h1
-rw-r--r--src/devices/machine/rp5h01.cpp9
-rw-r--r--src/devices/machine/rp5h01.h2
-rw-r--r--src/devices/machine/s2636.cpp56
-rw-r--r--src/devices/machine/s2636.h72
-rw-r--r--src/devices/machine/s3c2400.h2
-rw-r--r--src/devices/machine/s3c2410.h2
-rw-r--r--src/devices/machine/s3c2440.h2
-rw-r--r--src/devices/machine/s3c24xx.inc4
-rw-r--r--src/devices/machine/s3c44b0.cpp14
-rw-r--r--src/devices/machine/s3c44b0.h2
-rw-r--r--src/devices/machine/smc91c9x.cpp2
-rw-r--r--src/devices/machine/smpc.cpp12
-rw-r--r--src/devices/machine/steppers.cpp2
-rw-r--r--src/devices/machine/strata.cpp16
-rw-r--r--src/devices/machine/strata.h2
-rw-r--r--src/devices/machine/stvcd.cpp6
-rw-r--r--src/devices/machine/t10mmc.h5
-rw-r--r--src/devices/machine/t10sbc.h5
-rw-r--r--src/devices/machine/t10spc.h4
-rw-r--r--src/devices/machine/tc009xlvc.cpp2
-rw-r--r--src/devices/machine/tc009xlvc.h3
-rw-r--r--src/devices/machine/timekpr.cpp8
-rw-r--r--src/devices/machine/timekpr.h2
-rw-r--r--src/devices/machine/tms6100.cpp370
-rw-r--r--src/devices/machine/tms6100.h141
-rw-r--r--src/devices/machine/upd765.cpp3
-rw-r--r--src/devices/machine/v3021.h3
-rw-r--r--src/devices/machine/wd2010.cpp6
-rw-r--r--src/devices/machine/wd_fdc.cpp3
-rw-r--r--src/devices/machine/z80ctc.cpp2
-rw-r--r--src/devices/machine/z80dma.cpp2
-rw-r--r--src/devices/machine/z80scc.cpp51
-rw-r--r--src/devices/machine/z80scc.h4
-rw-r--r--src/devices/machine/z80sio.h6
-rw-r--r--src/devices/machine/z8536.cpp4
-rw-r--r--src/devices/sound/2610intf.cpp33
-rw-r--r--src/devices/sound/2610intf.h3
-rw-r--r--src/devices/sound/aica.cpp33
-rw-r--r--src/devices/sound/aica.h4
-rw-r--r--src/devices/sound/aicadsp.cpp6
-rw-r--r--src/devices/sound/beep.cpp31
-rw-r--r--src/devices/sound/beep.h5
-rw-r--r--src/devices/sound/c140.cpp58
-rw-r--r--src/devices/sound/c140.h5
-rw-r--r--src/devices/sound/cdda.cpp6
-rw-r--r--src/devices/sound/cdda.h2
-rw-r--r--src/devices/sound/cem3394.cpp22
-rw-r--r--src/devices/sound/cem3394.h4
-rw-r--r--src/devices/sound/disc_cls.h3
-rw-r--r--src/devices/sound/disc_dev.h3
-rw-r--r--src/devices/sound/disc_dev.inc2
-rw-r--r--src/devices/sound/disc_flt.h3
-rw-r--r--src/devices/sound/disc_mth.h3
-rw-r--r--src/devices/sound/disc_mth.inc2
-rw-r--r--src/devices/sound/disc_sys.inc2
-rw-r--r--src/devices/sound/disc_wav.h3
-rw-r--r--src/devices/sound/discrete.cpp9
-rw-r--r--src/devices/sound/discrete.h33
-rw-r--r--src/devices/sound/dmadac.cpp6
-rw-r--r--src/devices/sound/dmadac.h2
-rw-r--r--src/devices/sound/es5506.cpp63
-rw-r--r--src/devices/sound/es5506.h6
-rw-r--r--src/devices/sound/flt_rc.cpp2
-rw-r--r--src/devices/sound/flt_rc.h2
-rw-r--r--src/devices/sound/flt_vol.cpp2
-rw-r--r--src/devices/sound/flt_vol.h2
-rw-r--r--src/devices/sound/fm.cpp22
-rw-r--r--src/devices/sound/fm.h2
-rw-r--r--src/devices/sound/fm2612.cpp4
-rw-r--r--src/devices/sound/fmopl.cpp2
-rw-r--r--src/devices/sound/fmopl.h2
-rw-r--r--src/devices/sound/k005289.cpp14
-rw-r--r--src/devices/sound/k005289.h4
-rw-r--r--src/devices/sound/k007232.cpp2
-rw-r--r--src/devices/sound/k051649.cpp12
-rw-r--r--src/devices/sound/k051649.h4
-rw-r--r--src/devices/sound/k053260.cpp1
-rw-r--r--src/devices/sound/k053260.h4
-rw-r--r--src/devices/sound/k054539.cpp12
-rw-r--r--src/devices/sound/k054539.h2
-rw-r--r--src/devices/sound/k056800.cpp6
-rw-r--r--src/devices/sound/mos6560.cpp4
-rw-r--r--src/devices/sound/mos6560.h4
-rw-r--r--src/devices/sound/mos6581.cpp6
-rw-r--r--src/devices/sound/mos7360.cpp2
-rw-r--r--src/devices/sound/mos7360.h2
-rw-r--r--src/devices/sound/mpeg_audio.h6
-rw-r--r--src/devices/sound/msm5232.cpp2
-rw-r--r--src/devices/sound/msm5232.h2
-rw-r--r--src/devices/sound/multipcm.h1
-rw-r--r--src/devices/sound/namco.cpp31
-rw-r--r--src/devices/sound/namco.h3
-rw-r--r--src/devices/sound/pokey.cpp2
-rw-r--r--src/devices/sound/qs1000.cpp2
-rw-r--r--src/devices/sound/qs1000.h1
-rw-r--r--src/devices/sound/qsound.cpp4
-rw-r--r--src/devices/sound/qsound.h2
-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.h145
-rw-r--r--src/devices/sound/saa1099.cpp7
-rw-r--r--src/devices/sound/scsp.cpp29
-rw-r--r--src/devices/sound/scsp.h37
-rw-r--r--src/devices/sound/scspdsp.cpp8
-rw-r--r--src/devices/sound/segapcm.cpp12
-rw-r--r--src/devices/sound/segapcm.h2
-rw-r--r--src/devices/sound/sid.cpp8
-rw-r--r--src/devices/sound/sidvoice.cpp4
-rw-r--r--src/devices/sound/sn76477.cpp476
-rw-r--r--src/devices/sound/sn76477.h29
-rw-r--r--src/devices/sound/sn76496.cpp2
-rw-r--r--src/devices/sound/sp0256.cpp12
-rw-r--r--src/devices/sound/sp0256.h2
-rw-r--r--src/devices/sound/spu.cpp2
-rw-r--r--src/devices/sound/spu.h3
-rw-r--r--src/devices/sound/spureverb.h1
-rw-r--r--src/devices/sound/tiasound.cpp4
-rw-r--r--src/devices/sound/tms5110.cpp34
-rw-r--r--src/devices/sound/tms5110.h10
-rw-r--r--src/devices/sound/upd7759.cpp124
-rw-r--r--src/devices/sound/upd7759.h2
-rw-r--r--src/devices/sound/vrender0.cpp2
-rw-r--r--src/devices/sound/ym2151.cpp2
-rw-r--r--src/devices/sound/ym2151.h2
-rw-r--r--src/devices/sound/ym2413.cpp4
-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.cpp4
-rw-r--r--src/devices/sound/ymf262.h2
-rw-r--r--src/devices/sound/ymf271.cpp83
-rw-r--r--src/devices/sound/ymf271.h16
-rw-r--r--src/devices/sound/ymf278b.cpp12
-rw-r--r--src/devices/sound/ymf278b.h2
-rw-r--r--src/devices/sound/ymz280b.cpp21
-rw-r--r--src/devices/sound/ymz280b.h2
-rw-r--r--src/devices/sound/zsg2.cpp8
-rw-r--r--src/devices/sound/zsg2.h4
-rw-r--r--src/devices/video/315_5313.cpp86
-rw-r--r--src/devices/video/315_5313.h30
-rw-r--r--src/devices/video/clgd542x.cpp2
-rw-r--r--src/devices/video/ef9340_1.cpp2
-rw-r--r--src/devices/video/ef9365.cpp1197
-rw-r--r--src/devices/video/ef9365.h91
-rw-r--r--src/devices/video/epic12.cpp8
-rw-r--r--src/devices/video/epic12.h4
-rw-r--r--src/devices/video/fixfreq.cpp10
-rw-r--r--src/devices/video/fixfreq.h2
-rw-r--r--src/devices/video/gf4500.cpp8
-rw-r--r--src/devices/video/gf4500.h2
-rw-r--r--src/devices/video/h63484.cpp2
-rw-r--r--src/devices/video/hd44780.cpp2
-rw-r--r--src/devices/video/hd61830.cpp2
-rw-r--r--src/devices/video/hd63484.cpp4
-rw-r--r--src/devices/video/hd63484.h2
-rw-r--r--src/devices/video/huc6260.cpp2
-rw-r--r--src/devices/video/huc6260.h2
-rw-r--r--src/devices/video/huc6261.cpp2
-rw-r--r--src/devices/video/huc6261.h2
-rw-r--r--src/devices/video/huc6270.cpp4
-rw-r--r--src/devices/video/huc6270.h2
-rw-r--r--src/devices/video/i8244.cpp2
-rw-r--r--src/devices/video/i82730.cpp2
-rw-r--r--src/devices/video/i8275.cpp4
-rw-r--r--src/devices/video/m50458.cpp2
-rw-r--r--src/devices/video/m50458.h2
-rw-r--r--src/devices/video/mb_vcu.cpp8
-rw-r--r--src/devices/video/mb_vcu.h4
-rw-r--r--src/devices/video/mc6845.cpp2
-rw-r--r--src/devices/video/mc6847.h9
-rw-r--r--src/devices/video/mos6566.cpp2
-rw-r--r--src/devices/video/msm6222b.cpp2
-rw-r--r--src/devices/video/msm6222b.h1
-rw-r--r--src/devices/video/pc_vga.cpp4
-rw-r--r--src/devices/video/pcd8544.cpp226
-rw-r--r--src/devices/video/pcd8544.h72
-rw-r--r--src/devices/video/poly.h12
-rw-r--r--src/devices/video/polylgcy.cpp2
-rw-r--r--src/devices/video/psx.cpp6
-rw-r--r--src/devices/video/psx.h4
-rw-r--r--src/devices/video/ramdac.cpp2
-rw-r--r--src/devices/video/ramdac.h2
-rw-r--r--src/devices/video/snes_ppu.cpp36
-rw-r--r--src/devices/video/snes_ppu.h7
-rw-r--r--src/devices/video/stvvdp1.cpp20
-rw-r--r--src/devices/video/stvvdp2.cpp56
-rw-r--r--src/devices/video/tms3556.cpp4
-rw-r--r--src/devices/video/upd7220.cpp6
-rw-r--r--src/devices/video/upd7220.h4
-rw-r--r--src/devices/video/vic4567.cpp2
-rw-r--r--src/devices/video/vic4567.h2
-rw-r--r--src/devices/video/vooddefs.h201
-rw-r--r--src/devices/video/voodoo.cpp569
-rw-r--r--src/devices/video/voodoo_rast.inc493
-rw-r--r--src/emu/addrmap.cpp153
-rw-r--r--src/emu/addrmap.h7
-rw-r--r--src/emu/audit.cpp5
-rw-r--r--src/emu/bookkeeping.cpp215
-rw-r--r--src/emu/bookkeeping.h78
-rw-r--r--src/emu/cheat.cpp46
-rw-r--r--src/emu/cheat.h4
-rw-r--r--src/emu/clifront.cpp111
-rw-r--r--src/emu/clifront.h1
-rw-r--r--src/emu/config.cpp159
-rw-r--r--src/emu/config.h47
-rw-r--r--src/emu/crsshair.cpp334
-rw-r--r--src/emu/crsshair.h73
-rw-r--r--src/emu/debug/debugcmd.cpp1
-rw-r--r--src/emu/debug/debugcon.cpp4
-rw-r--r--src/emu/debug/debugcon.h4
-rw-r--r--src/emu/debug/debugcpu.cpp15
-rw-r--r--src/emu/debug/debugcpu.h2
-rw-r--r--src/emu/debug/dvbpoints.cpp1
-rw-r--r--src/emu/debug/dvbpoints.h4
-rw-r--r--src/emu/debug/dvdisasm.cpp3
-rw-r--r--src/emu/debug/dvmemory.cpp2
-rw-r--r--src/emu/debug/dvmemory.h4
-rw-r--r--src/emu/debug/dvstate.cpp2
-rw-r--r--src/emu/debugger.cpp120
-rw-r--r--src/emu/debugger.h30
-rw-r--r--src/emu/devdelegate.h5
-rw-r--r--src/emu/devfind.h7
-rw-r--r--src/emu/device.cpp20
-rw-r--r--src/emu/device.h12
-rw-r--r--src/emu/digfx.cpp2
-rw-r--r--src/emu/digfx.h6
-rw-r--r--src/emu/diimage.cpp113
-rw-r--r--src/emu/diimage.h8
-rw-r--r--src/emu/dimemory.cpp131
-rw-r--r--src/emu/dioutput.cpp14
-rw-r--r--src/emu/dislot.cpp16
-rw-r--r--src/emu/dislot.h2
-rw-r--r--src/emu/distate.cpp19
-rw-r--r--src/emu/distate.h8
-rw-r--r--src/emu/drawgfx.cpp52
-rw-r--r--src/emu/drawgfx.h46
-rw-r--r--src/emu/drivenum.h2
-rw-r--r--src/emu/driver.cpp19
-rw-r--r--src/emu/driver.h5
-rw-r--r--src/emu/emu.h4
-rw-r--r--src/emu/emualloc.h29
-rw-r--r--src/emu/emuopts.cpp24
-rw-r--r--src/emu/emuopts.h8
-rw-r--r--src/emu/fileio.cpp3
-rw-r--r--src/emu/gamedrv.h1
-rw-r--r--src/emu/hash.cpp40
-rw-r--r--src/emu/hash.h8
-rw-r--r--src/emu/hashfile.cpp4
-rw-r--r--src/emu/image.cpp286
-rw-r--r--src/emu/image.h33
-rw-r--r--src/emu/info.cpp18
-rw-r--r--src/emu/inpttype.h4
-rw-r--r--src/emu/input.cpp59
-rw-r--r--src/emu/input.h10
-rw-r--r--src/emu/ioport.cpp67
-rw-r--r--src/emu/ioport.h12
-rw-r--r--src/emu/luaengine.cpp17
-rw-r--r--src/emu/machine.cpp76
-rw-r--r--src/emu/machine.h65
-rw-r--r--src/emu/machine/generic.cpp289
-rw-r--r--src/emu/machine/generic.h69
-rw-r--r--src/emu/mame.cpp4
-rw-r--r--src/emu/mame.h2
-rw-r--r--src/emu/mconfig.cpp15
-rw-r--r--src/emu/memory.h10
-rw-r--r--src/emu/network.cpp60
-rw-r--r--src/emu/network.h18
-rw-r--r--src/emu/output.cpp223
-rw-r--r--src/emu/output.h148
-rw-r--r--src/emu/render.cpp20
-rw-r--r--src/emu/render.h6
-rw-r--r--src/emu/rendlay.cpp4
-rw-r--r--src/emu/romload.cpp538
-rw-r--r--src/emu/romload.h118
-rw-r--r--src/emu/screen.h5
-rw-r--r--src/emu/softlist.cpp4
-rw-r--r--src/emu/sound.cpp20
-rw-r--r--src/emu/sound.h6
-rw-r--r--src/emu/sound/filter.cpp2
-rw-r--r--src/emu/sound/filter.h2
-rw-r--r--src/emu/tilemap.cpp2
-rw-r--r--src/emu/tilemap.h4
-rw-r--r--src/emu/ui/filemngr.cpp4
-rw-r--r--src/emu/ui/imgcntrl.cpp18
-rw-r--r--src/emu/ui/inputmap.cpp6
-rw-r--r--src/emu/ui/mainmenu.cpp46
-rw-r--r--src/emu/ui/menu.cpp20
-rw-r--r--src/emu/ui/menu.h2
-rw-r--r--src/emu/ui/miscmenu.cpp19
-rw-r--r--src/emu/ui/miscmenu.h2
-rw-r--r--src/emu/ui/selgame.cpp14
-rw-r--r--src/emu/ui/sliders.cpp2
-rw-r--r--src/emu/ui/slotopt.cpp12
-rw-r--r--src/emu/ui/swlist.cpp2
-rw-r--r--src/emu/ui/ui.cpp111
-rw-r--r--src/emu/ui/ui.h2
-rw-r--r--src/emu/ui/videoopt.cpp2
-rw-r--r--src/emu/ui/viewgfx.cpp72
-rw-r--r--src/emu/uiinput.cpp255
-rw-r--r--src/emu/uiinput.h175
-rw-r--r--src/emu/validity.cpp96
-rw-r--r--src/emu/validity.h8
-rw-r--r--src/emu/video.cpp33
-rw-r--r--src/emu/video.h2
-rw-r--r--src/emu/video/vector.cpp4
-rw-r--r--src/emu/video/vector.h2
-rw-r--r--src/ldplayer/ldplayer.cpp24
-rw-r--r--src/lib/formats/bbc_dsk.cpp48
-rw-r--r--src/lib/formats/bbc_dsk.h16
-rw-r--r--src/lib/formats/cassimg.cpp2
-rw-r--r--src/lib/formats/cbm_crt.cpp7
-rw-r--r--src/lib/formats/cbm_crt.h2
-rw-r--r--src/lib/formats/ipf_dsk.cpp6
-rw-r--r--src/lib/netlist/build/makefile3
-rw-r--r--src/lib/netlist/plib/pfmtlog.cpp2
-rw-r--r--src/lib/netlist/prg/nltool.cpp8
-rw-r--r--src/lib/netlist/prg/nlwav.cpp8
-rw-r--r--src/lib/util/cdrom.cpp27
-rw-r--r--src/lib/util/corealloc.cpp432
-rw-r--r--src/lib/util/corealloc.h145
-rw-r--r--src/lib/util/corefile.cpp4
-rw-r--r--src/lib/util/corefile.h2
-rw-r--r--src/lib/util/corestr.cpp5
-rw-r--r--src/lib/util/corestr.h2
-rw-r--r--src/lib/util/coretmpl.h47
-rw-r--r--src/lib/util/hashing.cpp28
-rw-r--r--src/lib/util/hashing.h8
-rw-r--r--src/lib/util/options.cpp18
-rw-r--r--src/lib/util/options.h4
-rw-r--r--src/lib/util/tagmap.h2
-rw-r--r--src/mame/arcade.lst363
-rw-r--r--src/mame/audio/8080bw.cpp6
-rw-r--r--src/mame/audio/asteroid.cpp2
-rw-r--r--src/mame/audio/atarifb.cpp4
-rw-r--r--src/mame/audio/atarijsa.cpp8
-rw-r--r--src/mame/audio/bzone.cpp2
-rw-r--r--src/mame/audio/carnival.cpp247
-rw-r--r--src/mame/audio/cclimber.cpp27
-rw-r--r--src/mame/audio/cclimber.h5
-rw-r--r--src/mame/audio/cinemat.cpp4
-rw-r--r--src/mame/audio/copsnrob.cpp4
-rw-r--r--src/mame/audio/crbaloon.cpp2
-rw-r--r--src/mame/audio/cyberbal.cpp4
-rw-r--r--src/mame/audio/dcs.cpp99
-rw-r--r--src/mame/audio/dcs.h9
-rw-r--r--src/mame/audio/depthch.cpp25
-rw-r--r--src/mame/audio/dkong.cpp32
-rw-r--r--src/mame/audio/dragrace.cpp4
-rw-r--r--src/mame/audio/dsbz80.h1
-rw-r--r--src/mame/audio/exidy.h3
-rw-r--r--src/mame/audio/exidy440.cpp16
-rw-r--r--src/mame/audio/exidy440.h4
-rw-r--r--src/mame/audio/firetrk.cpp2
-rw-r--r--src/mame/audio/flower.cpp12
-rw-r--r--src/mame/audio/galaga.cpp2
-rw-r--r--src/mame/audio/geebee.cpp2
-rw-r--r--src/mame/audio/gomoku.cpp14
-rw-r--r--src/mame/audio/gottlieb.cpp4
-rw-r--r--src/mame/audio/hng64.cpp6
-rw-r--r--src/mame/audio/invinco.cpp29
-rw-r--r--src/mame/audio/laserbat.cpp409
-rw-r--r--src/mame/audio/leland.cpp2
-rw-r--r--src/mame/audio/lynx.cpp4
-rw-r--r--src/mame/audio/lynx.h4
-rw-r--r--src/mame/audio/m72.cpp15
-rw-r--r--src/mame/audio/m72.h2
-rw-r--r--src/mame/audio/m79amb.cpp4
-rw-r--r--src/mame/audio/mac.cpp4
-rw-r--r--src/mame/audio/madalien.cpp2
-rw-r--r--src/mame/audio/micro3d.cpp10
-rw-r--r--src/mame/audio/mw8080bw.cpp42
-rw-r--r--src/mame/audio/nitedrvr.cpp2
-rw-r--r--src/mame/audio/norautp.cpp2
-rw-r--r--src/mame/audio/orbit.cpp2
-rw-r--r--src/mame/audio/phoenix.cpp6
-rw-r--r--src/mame/audio/pleiads.cpp4
-rw-r--r--src/mame/audio/pleiads.h2
-rw-r--r--src/mame/audio/polepos.cpp2
-rw-r--r--src/mame/audio/polyplay.cpp2
-rw-r--r--src/mame/audio/poolshrk.cpp2
-rw-r--r--src/mame/audio/pulsar.cpp25
-rw-r--r--src/mame/audio/qix.cpp8
-rw-r--r--src/mame/audio/redbaron.cpp2
-rw-r--r--src/mame/audio/redbaron.h2
-rw-r--r--src/mame/audio/seibu.cpp22
-rw-r--r--src/mame/audio/seibu.h2
-rw-r--r--src/mame/audio/skydiver.cpp2
-rw-r--r--src/mame/audio/skyraid.cpp4
-rw-r--r--src/mame/audio/snes_snd.cpp4
-rw-r--r--src/mame/audio/snes_snd.h2
-rw-r--r--src/mame/audio/spiders.cpp4
-rw-r--r--src/mame/audio/sprint2.cpp2
-rw-r--r--src/mame/audio/sprint4.cpp2
-rw-r--r--src/mame/audio/sprint4.h2
-rw-r--r--src/mame/audio/sprint8.cpp2
-rw-r--r--src/mame/audio/starshp1.cpp2
-rw-r--r--src/mame/audio/subs.cpp2
-rw-r--r--src/mame/audio/suna8.cpp2
-rw-r--r--src/mame/audio/taito_zm.cpp4
-rw-r--r--src/mame/audio/taito_zm.h2
-rw-r--r--src/mame/audio/tank8.cpp2
-rw-r--r--src/mame/audio/trackfld.h2
-rw-r--r--src/mame/audio/triplhnt.cpp2
-rw-r--r--src/mame/audio/turbo.cpp4
-rw-r--r--src/mame/audio/tx1.cpp4
-rw-r--r--src/mame/audio/upd1771.cpp2
-rw-r--r--src/mame/audio/vboy.h3
-rw-r--r--src/mame/audio/vicdual.cpp2
-rw-r--r--src/mame/audio/videopin.cpp2
-rw-r--r--src/mame/audio/warpwarp.cpp2
-rw-r--r--src/mame/audio/warpwarp.h4
-rw-r--r--src/mame/audio/wiping.cpp14
-rw-r--r--src/mame/audio/wiping.h6
-rw-r--r--src/mame/drivers/1942.cpp2
-rw-r--r--src/mame/drivers/1943.cpp2
-rw-r--r--src/mame/drivers/20pacgal.cpp36
-rw-r--r--src/mame/drivers/24cdjuke.cpp2
-rw-r--r--src/mame/drivers/2mindril.cpp8
-rw-r--r--src/mame/drivers/30test.cpp10
-rw-r--r--src/mame/drivers/39in1.cpp2
-rw-r--r--src/mame/drivers/4004clk.cpp4
-rw-r--r--src/mame/drivers/40love.cpp13
-rw-r--r--src/mame/drivers/4dpi.cpp (renamed from src/mame/drivers/sgi_ip6.cpp)2
-rw-r--r--src/mame/drivers/4enraya.cpp3
-rw-r--r--src/mame/drivers/5clown.cpp8
-rw-r--r--src/mame/drivers/8080bw.cpp77
-rw-r--r--src/mame/drivers/88games.cpp4
-rw-r--r--src/mame/drivers/a2600.cpp1
-rw-r--r--src/mame/drivers/a5105.cpp3
-rw-r--r--src/mame/drivers/a7800.cpp3
-rw-r--r--src/mame/drivers/ace.cpp2
-rw-r--r--src/mame/drivers/acefruit.cpp4
-rw-r--r--src/mame/drivers/aces1.cpp4
-rw-r--r--src/mame/drivers/acommand.cpp4
-rw-r--r--src/mame/drivers/acrnsys1.cpp2
-rw-r--r--src/mame/drivers/age_candy.cpp11
-rw-r--r--src/mame/drivers/airbustr.cpp8
-rw-r--r--src/mame/drivers/albazc.cpp10
-rw-r--r--src/mame/drivers/albazg.cpp6
-rw-r--r--src/mame/drivers/aleck64.cpp7
-rw-r--r--src/mame/drivers/alesis.cpp34
-rw-r--r--src/mame/drivers/alg.cpp11
-rw-r--r--src/mame/drivers/aliens.cpp4
-rw-r--r--src/mame/drivers/allied.cpp42
-rw-r--r--src/mame/drivers/alpha68k.cpp2
-rw-r--r--src/mame/drivers/alphasma.cpp4
-rw-r--r--src/mame/drivers/alphatro.cpp3
-rw-r--r--src/mame/drivers/alto2.cpp10
-rw-r--r--src/mame/drivers/amaticmg.cpp18
-rw-r--r--src/mame/drivers/ambush.cpp4
-rw-r--r--src/mame/drivers/amerihok.cpp11
-rw-r--r--src/mame/drivers/amico2k.cpp2
-rw-r--r--src/mame/drivers/amiga.cpp26
-rw-r--r--src/mame/drivers/ampoker2.cpp20
-rw-r--r--src/mame/drivers/amusco.cpp1
-rw-r--r--src/mame/drivers/amust.cpp3
-rw-r--r--src/mame/drivers/apexc.cpp4
-rw-r--r--src/mame/drivers/apollo.cpp10
-rw-r--r--src/mame/drivers/apple2e.cpp40
-rw-r--r--src/mame/drivers/applix.cpp3
-rw-r--r--src/mame/drivers/aquarium.cpp8
-rw-r--r--src/mame/drivers/arabian.cpp4
-rw-r--r--src/mame/drivers/aristmk4.cpp60
-rw-r--r--src/mame/drivers/aristmk5.cpp80
-rw-r--r--src/mame/drivers/aristmk6.cpp2
-rw-r--r--src/mame/drivers/arkanoid.cpp215
-rw-r--r--src/mame/drivers/armedf.cpp20
-rw-r--r--src/mame/drivers/arsystems.cpp31
-rw-r--r--src/mame/drivers/asteroid.cpp4
-rw-r--r--src/mame/drivers/astinvad.cpp6
-rw-r--r--src/mame/drivers/astrafr.cpp8
-rw-r--r--src/mame/drivers/astrcorp.cpp38
-rw-r--r--src/mame/drivers/astrocde.cpp122
-rw-r--r--src/mame/drivers/astrof.cpp6
-rw-r--r--src/mame/drivers/atari400.cpp2
-rw-r--r--src/mame/drivers/atari_s1.cpp6
-rw-r--r--src/mame/drivers/atari_s2.cpp2
-rw-r--r--src/mame/drivers/atarifb.cpp2
-rw-r--r--src/mame/drivers/atarig1.cpp6
-rw-r--r--src/mame/drivers/atarigt.cpp4
-rw-r--r--src/mame/drivers/atarist.cpp2
-rw-r--r--src/mame/drivers/atarisy1.cpp2
-rw-r--r--src/mame/drivers/atarisy2.cpp8
-rw-r--r--src/mame/drivers/atarisy4.cpp20
-rw-r--r--src/mame/drivers/ataxx.cpp2
-rw-r--r--src/mame/drivers/atetris.cpp4
-rw-r--r--src/mame/drivers/atom.cpp94
-rw-r--r--src/mame/drivers/avalnche.cpp10
-rw-r--r--src/mame/drivers/avt.cpp1
-rw-r--r--src/mame/drivers/babbage.cpp4
-rw-r--r--src/mame/drivers/backfire.cpp32
-rw-r--r--src/mame/drivers/bagman.cpp34
-rw-r--r--src/mame/drivers/baraduke.cpp10
-rw-r--r--src/mame/drivers/barata.cpp29
-rw-r--r--src/mame/drivers/batman.cpp2
-rw-r--r--src/mame/drivers/battlane.cpp2
-rw-r--r--src/mame/drivers/battlera.cpp10
-rw-r--r--src/mame/drivers/battlnts.cpp4
-rw-r--r--src/mame/drivers/bbc.cpp217
-rw-r--r--src/mame/drivers/bbcbc.cpp4
-rw-r--r--src/mame/drivers/bbusters.cpp10
-rw-r--r--src/mame/drivers/beathead.cpp2
-rw-r--r--src/mame/drivers/berzerk.cpp94
-rw-r--r--src/mame/drivers/beta.cpp6
-rw-r--r--src/mame/drivers/bfcobra.cpp25
-rw-r--r--src/mame/drivers/bfm_sc1.cpp43
-rw-r--r--src/mame/drivers/bfm_sc2.cpp232
-rw-r--r--src/mame/drivers/bfm_sc4.cpp6240
-rw-r--r--src/mame/drivers/bfm_sc45_helper.cpp5
-rw-r--r--src/mame/drivers/bfm_sc4h.cpp22
-rw-r--r--src/mame/drivers/bfm_swp.cpp4
-rw-r--r--src/mame/drivers/bfmsys85.cpp97
-rw-r--r--src/mame/drivers/bigbord2.cpp7
-rw-r--r--src/mame/drivers/bigevglf.cpp2
-rw-r--r--src/mame/drivers/bingoc.cpp1
-rw-r--r--src/mame/drivers/bionicc.cpp5
-rw-r--r--src/mame/drivers/bitgraph.cpp2
-rw-r--r--src/mame/drivers/bladestl.cpp8
-rw-r--r--src/mame/drivers/blitz.cpp16
-rw-r--r--src/mame/drivers/blitz68k.cpp80
-rw-r--r--src/mame/drivers/blktiger.cpp6
-rw-r--r--src/mame/drivers/blockhl.cpp4
-rw-r--r--src/mame/drivers/blueprnt.cpp4
-rw-r--r--src/mame/drivers/bmcpokr.cpp9
-rw-r--r--src/mame/drivers/bmjr.cpp3
-rw-r--r--src/mame/drivers/bml3.cpp4
-rw-r--r--src/mame/drivers/bnstars.cpp4
-rw-r--r--src/mame/drivers/bob85.cpp2
-rw-r--r--src/mame/drivers/bottom9.cpp4
-rw-r--r--src/mame/drivers/boxer.cpp8
-rw-r--r--src/mame/drivers/br8641.cpp10
-rw-r--r--src/mame/drivers/buster.cpp1
-rw-r--r--src/mame/drivers/bw12.cpp5
-rw-r--r--src/mame/drivers/bwidow.cpp24
-rw-r--r--src/mame/drivers/by17.cpp52
-rw-r--r--src/mame/drivers/by35.cpp54
-rw-r--r--src/mame/drivers/by6803.cpp12
-rw-r--r--src/mame/drivers/byvid.cpp6
-rw-r--r--src/mame/drivers/bzone.cpp2
-rw-r--r--src/mame/drivers/c80.cpp2
-rw-r--r--src/mame/drivers/cabal.cpp4
-rw-r--r--src/mame/drivers/cabaret.cpp10
-rw-r--r--src/mame/drivers/calchase.cpp20
-rw-r--r--src/mame/drivers/calomega.cpp34
-rw-r--r--src/mame/drivers/canyon.cpp2
-rw-r--r--src/mame/drivers/cardline.cpp16
-rw-r--r--src/mame/drivers/casloopy.cpp28
-rw-r--r--src/mame/drivers/caswin.cpp18
-rw-r--r--src/mame/drivers/cave.cpp213
-rw-r--r--src/mame/drivers/cb2001.cpp2
-rw-r--r--src/mame/drivers/cball.cpp2
-rw-r--r--src/mame/drivers/cbasebal.cpp16
-rw-r--r--src/mame/drivers/cc40.cpp12
-rw-r--r--src/mame/drivers/ccastles.cpp10
-rw-r--r--src/mame/drivers/cchance.cpp4
-rw-r--r--src/mame/drivers/cclimber.cpp6
-rw-r--r--src/mame/drivers/ccs2810.cpp2
-rw-r--r--src/mame/drivers/cd2650.cpp3
-rw-r--r--src/mame/drivers/cdi.cpp772
-rw-r--r--src/mame/drivers/centiped.cpp6
-rw-r--r--src/mame/drivers/cesclass.cpp2
-rw-r--r--src/mame/drivers/cham24.cpp40
-rw-r--r--src/mame/drivers/champbwl.cpp14
-rw-r--r--src/mame/drivers/chance32.cpp26
-rw-r--r--src/mame/drivers/changela.cpp4
-rw-r--r--src/mame/drivers/chaos.cpp1
-rw-r--r--src/mame/drivers/chessmst.cpp20
-rw-r--r--src/mame/drivers/chesstrv.cpp10
-rw-r--r--src/mame/drivers/chexx.cpp20
-rw-r--r--src/mame/drivers/chihiro.cpp4
-rw-r--r--src/mame/drivers/chinsan.cpp10
-rw-r--r--src/mame/drivers/chqflag.cpp4
-rw-r--r--src/mame/drivers/chsuper.cpp46
-rw-r--r--src/mame/drivers/cidelsa.cpp6
-rw-r--r--src/mame/drivers/circusc.cpp2
-rw-r--r--src/mame/drivers/cischeat.cpp407
-rw-r--r--src/mame/drivers/cliffhgr.cpp4
-rw-r--r--src/mame/drivers/cloak.cpp4
-rw-r--r--src/mame/drivers/cloud9.cpp4
-rw-r--r--src/mame/drivers/clowndwn.cpp11
-rw-r--r--src/mame/drivers/cobra.cpp204
-rw-r--r--src/mame/drivers/cocoloco.cpp8
-rw-r--r--src/mame/drivers/coinmstr.cpp225
-rw-r--r--src/mame/drivers/coinmvga.cpp2
-rw-r--r--src/mame/drivers/combatsc.cpp4
-rw-r--r--src/mame/drivers/compis.cpp8
-rw-r--r--src/mame/drivers/contra.cpp4
-rw-r--r--src/mame/drivers/coolpool.cpp8
-rw-r--r--src/mame/drivers/coolridr.cpp41
-rw-r--r--src/mame/drivers/cops.cpp48
-rw-r--r--src/mame/drivers/copsnrob.cpp2
-rw-r--r--src/mame/drivers/corona.cpp18
-rw-r--r--src/mame/drivers/cosmicos.cpp26
-rw-r--r--src/mame/drivers/cp1.cpp12
-rw-r--r--src/mame/drivers/cps1.cpp114
-rw-r--r--src/mame/drivers/cps2.cpp70
-rw-r--r--src/mame/drivers/cps3.cpp106
-rw-r--r--src/mame/drivers/crimfght.cpp6
-rw-r--r--src/mame/drivers/csc.cpp61
-rw-r--r--src/mame/drivers/csplayh5.cpp1
-rw-r--r--src/mame/drivers/cubeqst.cpp11
-rw-r--r--src/mame/drivers/cubo.cpp13
-rw-r--r--src/mame/drivers/cultures.cpp2
-rw-r--r--src/mame/drivers/cvicny.cpp2
-rw-r--r--src/mame/drivers/cvs.cpp12
-rw-r--r--src/mame/drivers/d6800.cpp4
-rw-r--r--src/mame/drivers/dacholer.cpp8
-rw-r--r--src/mame/drivers/dai3wksi.cpp2
-rw-r--r--src/mame/drivers/darius.cpp10
-rw-r--r--src/mame/drivers/dassault.cpp2
-rw-r--r--src/mame/drivers/dblcrown.cpp30
-rw-r--r--src/mame/drivers/dblewing.cpp2
-rw-r--r--src/mame/drivers/dbz.cpp4
-rw-r--r--src/mame/drivers/dccons.cpp107
-rw-r--r--src/mame/drivers/ddenlovr.cpp120
-rw-r--r--src/mame/drivers/ddragon.cpp46
-rw-r--r--src/mame/drivers/ddribble.cpp4
-rw-r--r--src/mame/drivers/de_2.cpp19
-rw-r--r--src/mame/drivers/de_3.cpp16
-rw-r--r--src/mame/drivers/dec0.cpp148
-rw-r--r--src/mame/drivers/deco156.cpp8
-rw-r--r--src/mame/drivers/deco_ld.cpp2
-rw-r--r--src/mame/drivers/deco_mlc.cpp34
-rw-r--r--src/mame/drivers/decwritr.cpp17
-rw-r--r--src/mame/drivers/deshoros.cpp13
-rw-r--r--src/mame/drivers/destroyr.cpp10
-rw-r--r--src/mame/drivers/dgpix.cpp10
-rw-r--r--src/mame/drivers/didact.cpp720
-rw-r--r--src/mame/drivers/digel804.cpp8
-rw-r--r--src/mame/drivers/dim68k.cpp5
-rw-r--r--src/mame/drivers/discoboy.cpp1
-rw-r--r--src/mame/drivers/djboy.cpp4
-rw-r--r--src/mame/drivers/djmain.cpp24
-rw-r--r--src/mame/drivers/dkong.cpp25
-rw-r--r--src/mame/drivers/dlair.cpp10
-rw-r--r--src/mame/drivers/dmv.cpp2
-rw-r--r--src/mame/drivers/dolphunk.cpp2
-rw-r--r--src/mame/drivers/dooyong.cpp122
-rw-r--r--src/mame/drivers/dragrace.cpp14
-rw-r--r--src/mame/drivers/dreamwld.cpp22
-rw-r--r--src/mame/drivers/drgnmst.cpp6
-rw-r--r--src/mame/drivers/dunhuang.cpp3
-rw-r--r--src/mame/drivers/dvk_kcgd.cpp7
-rw-r--r--src/mame/drivers/dynax.cpp18
-rw-r--r--src/mame/drivers/eacc.cpp4
-rw-r--r--src/mame/drivers/ecoinf2.cpp52
-rw-r--r--src/mame/drivers/ecoinf3.cpp16
-rw-r--r--src/mame/drivers/ecoinfr.cpp10
-rw-r--r--src/mame/drivers/einstein.cpp4
-rw-r--r--src/mame/drivers/elecbowl.cpp4
-rw-r--r--src/mame/drivers/electron.cpp2
-rw-r--r--src/mame/drivers/elekscmp.cpp2
-rw-r--r--src/mame/drivers/elf.cpp2
-rw-r--r--src/mame/drivers/embargo.cpp2
-rw-r--r--src/mame/drivers/enmirage.cpp4
-rw-r--r--src/mame/drivers/eolith.cpp4
-rw-r--r--src/mame/drivers/eolith16.cpp8
-rw-r--r--src/mame/drivers/esqkt.cpp4
-rw-r--r--src/mame/drivers/esripsys.cpp14
-rw-r--r--src/mame/drivers/et3400.cpp4
-rw-r--r--src/mame/drivers/eti660.cpp2
-rw-r--r--src/mame/drivers/ettrivia.cpp2
-rw-r--r--src/mame/drivers/exedexes.cpp2
-rw-r--r--src/mame/drivers/exerion.cpp2
-rw-r--r--src/mame/drivers/exidy440.cpp2
-rw-r--r--src/mame/drivers/expro02.cpp32
-rw-r--r--src/mame/drivers/exterm.cpp4
-rw-r--r--src/mame/drivers/exzisus.cpp8
-rw-r--r--src/mame/drivers/famibox.cpp13
-rw-r--r--src/mame/drivers/fantland.cpp2
-rw-r--r--src/mame/drivers/fanucspmg.cpp31
-rw-r--r--src/mame/drivers/fastinvaders.cpp781
-rw-r--r--src/mame/drivers/fastlane.cpp4
-rw-r--r--src/mame/drivers/feversoc.cpp10
-rw-r--r--src/mame/drivers/fgoal.cpp2
-rw-r--r--src/mame/drivers/fidel6502.cpp601
-rw-r--r--src/mame/drivers/fidelz80.cpp1546
-rw-r--r--src/mame/drivers/finalizr.cpp4
-rw-r--r--src/mame/drivers/fireball.cpp62
-rw-r--r--src/mame/drivers/firebeat.cpp80
-rw-r--r--src/mame/drivers/firefox.cpp4
-rw-r--r--src/mame/drivers/firetrk.cpp58
-rw-r--r--src/mame/drivers/fitfight.cpp2
-rw-r--r--src/mame/drivers/flicker.cpp2
-rw-r--r--src/mame/drivers/flkatck.cpp4
-rw-r--r--src/mame/drivers/flower.cpp4
-rw-r--r--src/mame/drivers/flyball.cpp4
-rw-r--r--src/mame/drivers/fm7.cpp76
-rw-r--r--src/mame/drivers/fmtowns.cpp16
-rw-r--r--src/mame/drivers/foodf.cpp8
-rw-r--r--src/mame/drivers/fortecar.cpp2
-rw-r--r--src/mame/drivers/fp1100.cpp3
-rw-r--r--src/mame/drivers/fp200.cpp8
-rw-r--r--src/mame/drivers/freekick.cpp2
-rw-r--r--src/mame/drivers/fromanc2.cpp6
-rw-r--r--src/mame/drivers/funkball.cpp9
-rw-r--r--src/mame/drivers/funkybee.cpp2
-rw-r--r--src/mame/drivers/funworld.cpp69
-rw-r--r--src/mame/drivers/g627.cpp20
-rw-r--r--src/mame/drivers/gaelco.cpp4
-rw-r--r--src/mame/drivers/gaelco2.cpp101
-rw-r--r--src/mame/drivers/gaelco3d.cpp6
-rw-r--r--src/mame/drivers/gal3.cpp2
-rw-r--r--src/mame/drivers/galaga.cpp10
-rw-r--r--src/mame/drivers/galastrm.cpp8
-rw-r--r--src/mame/drivers/galaxi.cpp95
-rw-r--r--src/mame/drivers/galaxia.cpp8
-rw-r--r--src/mame/drivers/galaxian.cpp113
-rw-r--r--src/mame/drivers/galpani2.cpp8
-rw-r--r--src/mame/drivers/galpani3.cpp6
-rw-r--r--src/mame/drivers/galpanic.cpp8
-rw-r--r--src/mame/drivers/gamate.cpp25
-rw-r--r--src/mame/drivers/gambl186.cpp1
-rw-r--r--src/mame/drivers/gamecstl.cpp8
-rw-r--r--src/mame/drivers/gameking.cpp40
-rw-r--r--src/mame/drivers/gameplan.cpp2
-rw-r--r--src/mame/drivers/gaplus.cpp10
-rw-r--r--src/mame/drivers/gatron.cpp18
-rw-r--r--src/mame/drivers/gberet.cpp8
-rw-r--r--src/mame/drivers/gcpinbal.cpp4
-rw-r--r--src/mame/drivers/gei.cpp36
-rw-r--r--src/mame/drivers/geneve.cpp10
-rw-r--r--src/mame/drivers/ggconnie.cpp4
-rw-r--r--src/mame/drivers/gkigt.cpp379
-rw-r--r--src/mame/drivers/glasgow.cpp36
-rw-r--r--src/mame/drivers/glass.cpp30
-rw-r--r--src/mame/drivers/gluck2.cpp6
-rw-r--r--src/mame/drivers/gng.cpp2
-rw-r--r--src/mame/drivers/goldnpkr.cpp34
-rw-r--r--src/mame/drivers/goldstar.cpp70
-rw-r--r--src/mame/drivers/gottlieb.cpp14
-rw-r--r--src/mame/drivers/gp32.cpp4
-rw-r--r--src/mame/drivers/gp_1.cpp10
-rw-r--r--src/mame/drivers/gp_2.cpp12
-rw-r--r--src/mame/drivers/gradius3.cpp4
-rw-r--r--src/mame/drivers/grchamp.cpp8
-rw-r--r--src/mame/drivers/gridlee.cpp11
-rw-r--r--src/mame/drivers/groundfx.cpp8
-rw-r--r--src/mame/drivers/gticlub.cpp10
-rw-r--r--src/mame/drivers/gts1.cpp8
-rw-r--r--src/mame/drivers/gts3.cpp2
-rw-r--r--src/mame/drivers/gts3a.cpp2
-rw-r--r--src/mame/drivers/gts80.cpp6
-rw-r--r--src/mame/drivers/gts80a.cpp6
-rw-r--r--src/mame/drivers/gts80b.cpp2
-rw-r--r--src/mame/drivers/gunbustr.cpp14
-rw-r--r--src/mame/drivers/gundealr.cpp47
-rw-r--r--src/mame/drivers/gunpey.cpp4
-rw-r--r--src/mame/drivers/gunsmoke.cpp2
-rw-r--r--src/mame/drivers/h19.cpp3
-rw-r--r--src/mame/drivers/h8.cpp15
-rw-r--r--src/mame/drivers/halleys.cpp30
-rw-r--r--src/mame/drivers/hankin.cpp4
-rw-r--r--src/mame/drivers/harddriv.cpp20
-rw-r--r--src/mame/drivers/hcastle.cpp4
-rw-r--r--src/mame/drivers/hexion.cpp4
-rw-r--r--src/mame/drivers/hh_cop400.cpp22
-rw-r--r--src/mame/drivers/hh_hmcs40.cpp84
-rw-r--r--src/mame/drivers/hh_melps4.cpp10
-rw-r--r--src/mame/drivers/hh_pic16.cpp8
-rw-r--r--src/mame/drivers/hh_sm510.cpp8
-rw-r--r--src/mame/drivers/hh_tms1k.cpp437
-rw-r--r--src/mame/drivers/hh_ucom4.cpp48
-rw-r--r--src/mame/drivers/highvdeo.cpp40
-rw-r--r--src/mame/drivers/hitpoker.cpp13
-rw-r--r--src/mame/drivers/hk68v10.cpp8
-rw-r--r--src/mame/drivers/hng64.cpp10
-rw-r--r--src/mame/drivers/homedata.cpp4
-rw-r--r--src/mame/drivers/hornet.cpp37
-rw-r--r--src/mame/drivers/hp9845.cpp633
-rw-r--r--src/mame/drivers/hvyunit.cpp4
-rw-r--r--src/mame/drivers/hyperspt.cpp2
-rw-r--r--src/mame/drivers/ibmpcjr.cpp1
-rw-r--r--src/mame/drivers/ice_bozopail.cpp11
-rw-r--r--src/mame/drivers/icecold.cpp44
-rw-r--r--src/mame/drivers/ichiban.cpp2
-rw-r--r--src/mame/drivers/ie15.cpp25
-rw-r--r--src/mame/drivers/igs009.cpp24
-rw-r--r--src/mame/drivers/igs011.cpp104
-rw-r--r--src/mame/drivers/igs017.cpp36
-rw-r--r--src/mame/drivers/igspoker.cpp40
-rw-r--r--src/mame/drivers/ikki.cpp4
-rw-r--r--src/mame/drivers/imds2.cpp3
-rw-r--r--src/mame/drivers/imolagp.cpp2
-rw-r--r--src/mame/drivers/inder.cpp4
-rw-r--r--src/mame/drivers/indigo.cpp (renamed from src/mame/drivers/ip20.cpp)333
-rw-r--r--src/mame/drivers/indy_indigo2.cpp (renamed from src/mame/drivers/ip22.cpp)2
-rw-r--r--src/mame/drivers/instruct.cpp6
-rw-r--r--src/mame/drivers/iqblock.cpp2
-rw-r--r--src/mame/drivers/iris3130.cpp (renamed from src/mame/drivers/sgi_ip2.cpp)2
-rw-r--r--src/mame/drivers/iteagle.cpp6
-rw-r--r--src/mame/drivers/itech32.cpp12
-rw-r--r--src/mame/drivers/itech8.cpp50
-rw-r--r--src/mame/drivers/itt3030.cpp3
-rw-r--r--src/mame/drivers/jackal.cpp11
-rw-r--r--src/mame/drivers/jackie.cpp24
-rw-r--r--src/mame/drivers/jade.cpp1
-rw-r--r--src/mame/drivers/jaguar.cpp14
-rw-r--r--src/mame/drivers/jalmah.cpp26
-rw-r--r--src/mame/drivers/jangou.cpp4
-rw-r--r--src/mame/drivers/jankenmn.cpp40
-rw-r--r--src/mame/drivers/jchan.cpp36
-rw-r--r--src/mame/drivers/jclub2.cpp2
-rw-r--r--src/mame/drivers/jedi.cpp2
-rw-r--r--src/mame/drivers/jeutel.cpp6
-rw-r--r--src/mame/drivers/jollyjgr.cpp2
-rw-r--r--src/mame/drivers/jongkyo.cpp2
-rw-r--r--src/mame/drivers/joystand.cpp14
-rw-r--r--src/mame/drivers/jp.cpp14
-rw-r--r--src/mame/drivers/jpmimpct.cpp43
-rw-r--r--src/mame/drivers/jpmmps.cpp446
-rw-r--r--src/mame/drivers/jpmsru.cpp1
-rw-r--r--src/mame/drivers/jpmsys5.cpp55
-rw-r--r--src/mame/drivers/jr100.cpp6
-rw-r--r--src/mame/drivers/jr200.cpp4
-rw-r--r--src/mame/drivers/jtc.cpp18
-rw-r--r--src/mame/drivers/jubilee.cpp19
-rw-r--r--src/mame/drivers/juicebox.cpp10
-rw-r--r--src/mame/drivers/junior.cpp6
-rw-r--r--src/mame/drivers/junofrst.cpp2
-rw-r--r--src/mame/drivers/jupace.cpp1
-rw-r--r--src/mame/drivers/k1003.cpp4
-rw-r--r--src/mame/drivers/kaneko16.cpp314
-rw-r--r--src/mame/drivers/kangaroo.cpp4
-rw-r--r--src/mame/drivers/kas89.cpp90
-rw-r--r--src/mame/drivers/kaypro.cpp4
-rw-r--r--src/mame/drivers/kenseim.cpp22
-rw-r--r--src/mame/drivers/kim1.cpp4
-rw-r--r--src/mame/drivers/kingdrby.cpp4
-rw-r--r--src/mame/drivers/klax.cpp10
-rw-r--r--src/mame/drivers/konamigx.cpp94
-rw-r--r--src/mame/drivers/konamim2.cpp3
-rw-r--r--src/mame/drivers/kopunch.cpp6
-rw-r--r--src/mame/drivers/korgm1.cpp1
-rw-r--r--src/mame/drivers/ksys573.cpp222
-rw-r--r--src/mame/drivers/kungfur.cpp12
-rw-r--r--src/mame/drivers/kurukuru.cpp27
-rw-r--r--src/mame/drivers/kyugo.cpp2
-rw-r--r--src/mame/drivers/labyrunr.cpp4
-rw-r--r--src/mame/drivers/laser3k.cpp8
-rw-r--r--src/mame/drivers/laserbas.cpp1
-rw-r--r--src/mame/drivers/laserbat.cpp1049
-rw-r--r--src/mame/drivers/laz_aftrshok.cpp15
-rw-r--r--src/mame/drivers/laz_awetoss.cpp13
-rw-r--r--src/mame/drivers/laz_ribrac.cpp11
-rw-r--r--src/mame/drivers/lc80.cpp4
-rw-r--r--src/mame/drivers/legionna.cpp68
-rw-r--r--src/mame/drivers/leland.cpp2
-rw-r--r--src/mame/drivers/lethal.cpp2
-rw-r--r--src/mame/drivers/lethalj.cpp20
-rw-r--r--src/mame/drivers/liberatr.cpp60
-rw-r--r--src/mame/drivers/limenko.cpp2
-rw-r--r--src/mame/drivers/lkage.cpp2
-rw-r--r--src/mame/drivers/lockon.cpp8
-rw-r--r--src/mame/drivers/lordgun.cpp6
-rw-r--r--src/mame/drivers/ltd.cpp102
-rw-r--r--src/mame/drivers/luckgrln.cpp32
-rw-r--r--src/mame/drivers/lucky74.cpp24
-rw-r--r--src/mame/drivers/lwings.cpp6
-rw-r--r--src/mame/drivers/m107.cpp4
-rw-r--r--src/mame/drivers/m14.cpp1
-rw-r--r--src/mame/drivers/m20.cpp1
-rw-r--r--src/mame/drivers/m58.cpp46
-rw-r--r--src/mame/drivers/m63.cpp10
-rw-r--r--src/mame/drivers/m72.cpp18
-rw-r--r--src/mame/drivers/m79amb.cpp2
-rw-r--r--src/mame/drivers/m90.cpp4
-rw-r--r--src/mame/drivers/m92.cpp17
-rw-r--r--src/mame/drivers/mac.cpp5
-rw-r--r--src/mame/drivers/macs.cpp12
-rw-r--r--src/mame/drivers/madmotor.cpp2
-rw-r--r--src/mame/drivers/magic10.cpp20
-rw-r--r--src/mame/drivers/magicfly.cpp6
-rw-r--r--src/mame/drivers/magictg.cpp1
-rw-r--r--src/mame/drivers/mainevt.cpp12
-rw-r--r--src/mame/drivers/majorpkr.cpp34
-rw-r--r--src/mame/drivers/malzak.cpp10
-rw-r--r--src/mame/drivers/mappy.cpp8
-rw-r--r--src/mame/drivers/marinedt.cpp12
-rw-r--r--src/mame/drivers/marywu.cpp217
-rw-r--r--src/mame/drivers/maxaflex.cpp28
-rw-r--r--src/mame/drivers/maygay1b.cpp28
-rw-r--r--src/mame/drivers/maygayv1.cpp16
-rw-r--r--src/mame/drivers/mazerbla.cpp25
-rw-r--r--src/mame/drivers/mbdtower.cpp10
-rw-r--r--src/mame/drivers/mcatadv.cpp8
-rw-r--r--src/mame/drivers/mcr.cpp30
-rw-r--r--src/mame/drivers/mcr3.cpp16
-rw-r--r--src/mame/drivers/meadwttl.cpp6
-rw-r--r--src/mame/drivers/mediagx.cpp13
-rw-r--r--src/mame/drivers/megadriv.cpp66
-rw-r--r--src/mame/drivers/megaplay.cpp8
-rw-r--r--src/mame/drivers/megasys1.cpp64
-rw-r--r--src/mame/drivers/megatech.cpp12
-rw-r--r--src/mame/drivers/megazone.cpp2
-rw-r--r--src/mame/drivers/mekd2.cpp2
-rw-r--r--src/mame/drivers/mephisto.cpp24
-rw-r--r--src/mame/drivers/merit.cpp28
-rw-r--r--src/mame/drivers/meritm.cpp26
-rw-r--r--src/mame/drivers/metro.cpp112
-rw-r--r--src/mame/drivers/mexico86.cpp74
-rw-r--r--src/mame/drivers/meyc8080.cpp30
-rw-r--r--src/mame/drivers/meyc8088.cpp4
-rw-r--r--src/mame/drivers/mgames.cpp24
-rw-r--r--src/mame/drivers/mgavegas.cpp64
-rw-r--r--src/mame/drivers/mgolf.cpp2
-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.cpp16
-rw-r--r--src/mame/drivers/midas.cpp6
-rw-r--r--src/mame/drivers/midqslvr.cpp56
-rw-r--r--src/mame/drivers/midzeus.cpp7
-rw-r--r--src/mame/drivers/mikie.cpp2
-rw-r--r--src/mame/drivers/mil4000.cpp18
-rw-r--r--src/mame/drivers/miniboy7.cpp12
-rw-r--r--src/mame/drivers/minicom.cpp4
-rw-r--r--src/mame/drivers/mirax.cpp4
-rw-r--r--src/mame/drivers/missile.cpp11
-rw-r--r--src/mame/drivers/mjsister.cpp8
-rw-r--r--src/mame/drivers/mk1.cpp4
-rw-r--r--src/mame/drivers/mk14.cpp2
-rw-r--r--src/mame/drivers/mk2.cpp10
-rw-r--r--src/mame/drivers/mkit09.cpp2
-rw-r--r--src/mame/drivers/mlanding.cpp8
-rw-r--r--src/mame/drivers/mmd1.cpp56
-rw-r--r--src/mame/drivers/mmodular.cpp76
-rw-r--r--src/mame/drivers/model1.cpp12
-rw-r--r--src/mame/drivers/model2.cpp4
-rw-r--r--src/mame/drivers/model3.cpp10
-rw-r--r--src/mame/drivers/molecular.cpp8
-rw-r--r--src/mame/drivers/monty.cpp4
-rw-r--r--src/mame/drivers/monzagp.cpp185
-rw-r--r--src/mame/drivers/mpf1.cpp16
-rw-r--r--src/mame/drivers/mpu3.cpp90
-rw-r--r--src/mame/drivers/mpu4hw.cpp103
-rw-r--r--src/mame/drivers/mpu4vid.cpp5
-rw-r--r--src/mame/drivers/mpu5hw.cpp8
-rw-r--r--src/mame/drivers/mquake.cpp4
-rw-r--r--src/mame/drivers/mrgame.cpp4
-rw-r--r--src/mame/drivers/ms32.cpp2
-rw-r--r--src/mame/drivers/msisaac.cpp4
-rw-r--r--src/mame/drivers/msx.cpp2
-rw-r--r--src/mame/drivers/multfish.cpp70
-rw-r--r--src/mame/drivers/multi8.cpp3
-rw-r--r--src/mame/drivers/multigam.cpp78
-rw-r--r--src/mame/drivers/mvme350.cpp8
-rw-r--r--src/mame/drivers/mw18w.cpp8
-rw-r--r--src/mame/drivers/mw8080bw.cpp52
-rw-r--r--src/mame/drivers/mwsub.cpp10
-rw-r--r--src/mame/drivers/mz2000.cpp3
-rw-r--r--src/mame/drivers/mz2500.cpp50
-rw-r--r--src/mame/drivers/mz3500.cpp11
-rw-r--r--src/mame/drivers/n64.cpp6
-rw-r--r--src/mame/drivers/namcofl.cpp12
-rw-r--r--src/mame/drivers/namcoic.cpp4
-rw-r--r--src/mame/drivers/namcops2.cpp15
-rw-r--r--src/mame/drivers/namcos1.cpp6
-rw-r--r--src/mame/drivers/namcos10.cpp2
-rw-r--r--src/mame/drivers/namcos11.cpp8
-rw-r--r--src/mame/drivers/namcos12.cpp9
-rw-r--r--src/mame/drivers/namcos2.cpp87
-rw-r--r--src/mame/drivers/namcos21.cpp12
-rw-r--r--src/mame/drivers/namcos22.cpp8
-rw-r--r--src/mame/drivers/namcos23.cpp8
-rw-r--r--src/mame/drivers/namcos86.cpp26
-rw-r--r--src/mame/drivers/naomi.cpp353
-rw-r--r--src/mame/drivers/nbmj8688.cpp4
-rw-r--r--src/mame/drivers/nc.cpp2
-rw-r--r--src/mame/drivers/nemesis.cpp10
-rw-r--r--src/mame/drivers/neogeo.cpp26
-rw-r--r--src/mame/drivers/neogeo_noslot.cpp221
-rw-r--r--src/mame/drivers/nes.cpp6
-rw-r--r--src/mame/drivers/newbrain.cpp2
-rw-r--r--src/mame/drivers/ng_aes.cpp11
-rw-r--r--src/mame/drivers/nightgal.cpp8
-rw-r--r--src/mame/drivers/ninjakd2.cpp98
-rw-r--r--src/mame/drivers/niyanpai.cpp4
-rw-r--r--src/mame/drivers/nmk16.cpp6
-rw-r--r--src/mame/drivers/nokia_3310.cpp848
-rw-r--r--src/mame/drivers/norautp.cpp32
-rw-r--r--src/mame/drivers/nova2001.cpp25
-rw-r--r--src/mame/drivers/nsm.cpp2
-rw-r--r--src/mame/drivers/nsmpoker.cpp1
-rw-r--r--src/mame/drivers/nss.cpp8
-rw-r--r--src/mame/drivers/nwk-tr.cpp8
-rw-r--r--src/mame/drivers/ohmygod.cpp4
-rw-r--r--src/mame/drivers/ojankohs.cpp4
-rw-r--r--src/mame/drivers/omegrace.cpp12
-rw-r--r--src/mame/drivers/onetwo.cpp4
-rw-r--r--src/mame/drivers/opwolf.cpp2
-rw-r--r--src/mame/drivers/orbit.cpp10
-rw-r--r--src/mame/drivers/osi.cpp7
-rw-r--r--src/mame/drivers/othunder.cpp4
-rw-r--r--src/mame/drivers/overdriv.cpp6
-rw-r--r--src/mame/drivers/p2000t.cpp2
-rw-r--r--src/mame/drivers/p8k.cpp4
-rw-r--r--src/mame/drivers/pacland.cpp10
-rw-r--r--src/mame/drivers/pacman.cpp60
-rw-r--r--src/mame/drivers/palm.cpp2
-rw-r--r--src/mame/drivers/palmz22.cpp4
-rw-r--r--src/mame/drivers/pandoras.cpp4
-rw-r--r--src/mame/drivers/panicr.cpp15
-rw-r--r--src/mame/drivers/paradise.cpp2
-rw-r--r--src/mame/drivers/parodius.cpp4
-rw-r--r--src/mame/drivers/pasha2.cpp29
-rw-r--r--src/mame/drivers/paso1600.cpp3
-rw-r--r--src/mame/drivers/pasopia.cpp7
-rw-r--r--src/mame/drivers/pasopia7.cpp4
-rw-r--r--src/mame/drivers/patinho_feio.cpp136
-rw-r--r--src/mame/drivers/pb1000.cpp3
-rw-r--r--src/mame/drivers/pc100.cpp3
-rw-r--r--src/mame/drivers/pc1500.cpp28
-rw-r--r--src/mame/drivers/pc2000.cpp42
-rw-r--r--src/mame/drivers/pc4.cpp2
-rw-r--r--src/mame/drivers/pc6001.cpp3
-rw-r--r--src/mame/drivers/pc8801.cpp37
-rw-r--r--src/mame/drivers/pc88va.cpp1
-rw-r--r--src/mame/drivers/pc9801.cpp123
-rw-r--r--src/mame/drivers/pcat_nit.cpp8
-rw-r--r--src/mame/drivers/pce220.cpp74
-rw-r--r--src/mame/drivers/pcw.cpp13
-rw-r--r--src/mame/drivers/pcw16.cpp3
-rw-r--r--src/mame/drivers/pcxt.cpp4
-rw-r--r--src/mame/drivers/pengo.cpp2
-rw-r--r--src/mame/drivers/peoplepc.cpp2
-rw-r--r--src/mame/drivers/peplus.cpp3065
-rw-r--r--src/mame/drivers/peyper.cpp22
-rw-r--r--src/mame/drivers/pgm.cpp10
-rw-r--r--src/mame/drivers/phoenix.cpp2
-rw-r--r--src/mame/drivers/piggypas.cpp2
-rw-r--r--src/mame/drivers/pinball2k.cpp3
-rw-r--r--src/mame/drivers/pingpong.cpp4
-rw-r--r--src/mame/drivers/pipeline.cpp6
-rw-r--r--src/mame/drivers/pirates.cpp31
-rw-r--r--src/mame/drivers/pkscram.cpp2
-rw-r--r--src/mame/drivers/playmark.cpp24
-rw-r--r--src/mame/drivers/pluto5.cpp4
-rw-r--r--src/mame/drivers/plygonet.cpp4
-rw-r--r--src/mame/drivers/pmi80.cpp2
-rw-r--r--src/mame/drivers/polepos.cpp10
-rw-r--r--src/mame/drivers/poly880.cpp2
-rw-r--r--src/mame/drivers/polyplay.cpp4
-rw-r--r--src/mame/drivers/pong.cpp8
-rw-r--r--src/mame/drivers/poolshrk.cpp6
-rw-r--r--src/mame/drivers/popeye.cpp7
-rw-r--r--src/mame/drivers/portrait.cpp14
-rw-r--r--src/mame/drivers/powerbal.cpp2
-rw-r--r--src/mame/drivers/ppmast93.cpp4
-rw-r--r--src/mame/drivers/prestige.cpp42
-rw-r--r--src/mame/drivers/pro80.cpp12
-rw-r--r--src/mame/drivers/proconn.cpp16
-rw-r--r--src/mame/drivers/progolf.cpp6
-rw-r--r--src/mame/drivers/prophet600.cpp301
-rw-r--r--src/mame/drivers/pse.cpp50
-rw-r--r--src/mame/drivers/psikyo4.cpp2
-rw-r--r--src/mame/drivers/psion.cpp12
-rw-r--r--src/mame/drivers/psychic5.cpp38
-rw-r--r--src/mame/drivers/pturn.cpp2
-rw-r--r--src/mame/drivers/pve500.cpp5
-rw-r--r--src/mame/drivers/px4.cpp56
-rw-r--r--src/mame/drivers/px8.cpp6
-rw-r--r--src/mame/drivers/qix.cpp7
-rw-r--r--src/mame/drivers/quantum.cpp11
-rw-r--r--src/mame/drivers/queen.cpp16
-rw-r--r--src/mame/drivers/quizo.cpp6
-rw-r--r--src/mame/drivers/quizshow.cpp10
-rw-r--r--src/mame/drivers/qx10.cpp5
-rw-r--r--src/mame/drivers/r2dx_v33.cpp6
-rw-r--r--src/mame/drivers/r9751.cpp433
-rw-r--r--src/mame/drivers/rabbit.cpp22
-rw-r--r--src/mame/drivers/raiden.cpp7
-rw-r--r--src/mame/drivers/raiden2.cpp48
-rw-r--r--src/mame/drivers/rainbow.cpp76
-rw-r--r--src/mame/drivers/rallyx.cpp12
-rw-r--r--src/mame/drivers/rampart.cpp4
-rw-r--r--src/mame/drivers/rastan.cpp2
-rw-r--r--src/mame/drivers/rastersp.cpp10
-rw-r--r--src/mame/drivers/ravens.cpp6
-rw-r--r--src/mame/drivers/re900.cpp28
-rw-r--r--src/mame/drivers/retofinv.cpp4
-rw-r--r--src/mame/drivers/rex6000.cpp17
-rw-r--r--src/mame/drivers/rmhaihai.cpp4
-rw-r--r--src/mame/drivers/rockrage.cpp4
-rw-r--r--src/mame/drivers/rollerg.cpp4
-rw-r--r--src/mame/drivers/rollext.cpp392
-rw-r--r--src/mame/drivers/roul.cpp10
-rw-r--r--src/mame/drivers/rowamet.cpp4
-rw-r--r--src/mame/drivers/royalmah.cpp30
-rw-r--r--src/mame/drivers/rsc55.cpp4
-rw-r--r--src/mame/drivers/runaway.cpp2
-rw-r--r--src/mame/drivers/rungun.cpp50
-rw-r--r--src/mame/drivers/s11.cpp10
-rw-r--r--src/mame/drivers/s11a.cpp6
-rw-r--r--src/mame/drivers/s11b.cpp16
-rw-r--r--src/mame/drivers/s3.cpp8
-rw-r--r--src/mame/drivers/s4.cpp8
-rw-r--r--src/mame/drivers/s6.cpp8
-rw-r--r--src/mame/drivers/s6a.cpp8
-rw-r--r--src/mame/drivers/s7.cpp7
-rw-r--r--src/mame/drivers/s8.cpp7
-rw-r--r--src/mame/drivers/s8a.cpp7
-rw-r--r--src/mame/drivers/s9.cpp7
-rw-r--r--src/mame/drivers/safarir.cpp12
-rw-r--r--src/mame/drivers/sage2.cpp2
-rw-r--r--src/mame/drivers/sam.cpp398
-rw-r--r--src/mame/drivers/sandscrp.cpp4
-rw-r--r--src/mame/drivers/sangho.cpp20
-rw-r--r--src/mame/drivers/sanremmg.cpp78
-rw-r--r--src/mame/drivers/sanremo.cpp14
-rw-r--r--src/mame/drivers/sansa_fuze.cpp68
-rw-r--r--src/mame/drivers/saturn.cpp12
-rw-r--r--src/mame/drivers/sauro.cpp8
-rw-r--r--src/mame/drivers/savia84.cpp4
-rw-r--r--src/mame/drivers/savquest.cpp44
-rw-r--r--src/mame/drivers/sbasketb.cpp2
-rw-r--r--src/mame/drivers/sbowling.cpp8
-rw-r--r--src/mame/drivers/sbrain.cpp3
-rw-r--r--src/mame/drivers/sbrkout.cpp10
-rw-r--r--src/mame/drivers/sc1.cpp8
-rw-r--r--src/mame/drivers/sc2.cpp20
-rw-r--r--src/mame/drivers/scm_500.cpp4
-rw-r--r--src/mame/drivers/scramble.cpp34
-rw-r--r--src/mame/drivers/scv.cpp1
-rw-r--r--src/mame/drivers/sderby.cpp30
-rw-r--r--src/mame/drivers/sdk85.cpp2
-rw-r--r--src/mame/drivers/sdk86.cpp2
-rw-r--r--src/mame/drivers/seabattl.cpp6
-rw-r--r--src/mame/drivers/seattle.cpp12
-rw-r--r--src/mame/drivers/sega_sawatte.cpp2
-rw-r--r--src/mame/drivers/segac2.cpp114
-rw-r--r--src/mame/drivers/segag80r.cpp6
-rw-r--r--src/mame/drivers/segag80v.cpp4
-rw-r--r--src/mame/drivers/segahang.cpp8
-rw-r--r--src/mame/drivers/segajw.cpp166
-rw-r--r--src/mame/drivers/segaorun.cpp22
-rw-r--r--src/mame/drivers/segas16a.cpp27
-rw-r--r--src/mame/drivers/segas16b.cpp42
-rw-r--r--src/mame/drivers/segas18.cpp114
-rw-r--r--src/mame/drivers/segas24.cpp6
-rw-r--r--src/mame/drivers/segas32.cpp100
-rw-r--r--src/mame/drivers/segaufo.cpp22
-rw-r--r--src/mame/drivers/segaxbd.cpp10
-rw-r--r--src/mame/drivers/segaybd.cpp134
-rw-r--r--src/mame/drivers/seibuspi.cpp4
-rw-r--r--src/mame/drivers/selz80.cpp2
-rw-r--r--src/mame/drivers/sengokmj.cpp6
-rw-r--r--src/mame/drivers/seta.cpp6
-rw-r--r--src/mame/drivers/seta2.cpp52
-rw-r--r--src/mame/drivers/sf.cpp10
-rw-r--r--src/mame/drivers/sfbonus.cpp125
-rw-r--r--src/mame/drivers/sfkick.cpp179
-rw-r--r--src/mame/drivers/sg1000a.cpp2
-rw-r--r--src/mame/drivers/shangha3.cpp24
-rw-r--r--src/mame/drivers/shanghai.cpp4
-rw-r--r--src/mame/drivers/shisen.cpp4
-rw-r--r--src/mame/drivers/shootout.cpp2
-rw-r--r--src/mame/drivers/shougi.cpp2
-rw-r--r--src/mame/drivers/sidearms.cpp2
-rw-r--r--src/mame/drivers/sigmab52.cpp8
-rw-r--r--src/mame/drivers/sigmab98.cpp48
-rw-r--r--src/mame/drivers/silkroad.cpp4
-rw-r--r--src/mame/drivers/simpsons.cpp2
-rw-r--r--src/mame/drivers/sitcom.cpp6
-rw-r--r--src/mame/drivers/skimaxx.cpp12
-rw-r--r--src/mame/drivers/skykid.cpp10
-rw-r--r--src/mame/drivers/skylncr.cpp3
-rw-r--r--src/mame/drivers/skyraid.cpp2
-rw-r--r--src/mame/drivers/slapshot.cpp8
-rw-r--r--src/mame/drivers/slc1.cpp6
-rw-r--r--src/mame/drivers/slotcarn.cpp6
-rw-r--r--src/mame/drivers/smc777.cpp39
-rw-r--r--src/mame/drivers/sms.cpp2
-rw-r--r--src/mame/drivers/smsmcorp.cpp26
-rw-r--r--src/mame/drivers/snes.cpp1
-rw-r--r--src/mame/drivers/snesb.cpp12
-rw-r--r--src/mame/drivers/snk.cpp107
-rw-r--r--src/mame/drivers/snookr10.cpp36
-rw-r--r--src/mame/drivers/snowbros.cpp19
-rw-r--r--src/mame/drivers/softbox.cpp6
-rw-r--r--src/mame/drivers/sonson.cpp4
-rw-r--r--src/mame/drivers/spaceg.cpp2
-rw-r--r--src/mame/drivers/spc1000.cpp34
-rw-r--r--src/mame/drivers/spc1500.cpp973
-rw-r--r--src/mame/drivers/spdodgeb.cpp5
-rw-r--r--src/mame/drivers/spectra.cpp2
-rw-r--r--src/mame/drivers/speedbal.cpp10
-rw-r--r--src/mame/drivers/speglsht.cpp4
-rw-r--r--src/mame/drivers/spiders.cpp2
-rw-r--r--src/mame/drivers/splash.cpp4
-rw-r--r--src/mame/drivers/splus.cpp66
-rw-r--r--src/mame/drivers/spoker.cpp26
-rw-r--r--src/mame/drivers/spool99.cpp2
-rw-r--r--src/mame/drivers/sprint2.cpp12
-rw-r--r--src/mame/drivers/sprint4.cpp12
-rw-r--r--src/mame/drivers/sprint8.cpp4
-rw-r--r--src/mame/drivers/spy.cpp4
-rw-r--r--src/mame/drivers/squale.cpp458
-rw-r--r--src/mame/drivers/srmp2.cpp12
-rw-r--r--src/mame/drivers/srmp5.cpp16
-rw-r--r--src/mame/drivers/srmp6.cpp18
-rw-r--r--src/mame/drivers/srumbler.cpp2
-rw-r--r--src/mame/drivers/sslam.cpp2
-rw-r--r--src/mame/drivers/sspeedr.cpp12
-rw-r--r--src/mame/drivers/ssv.cpp18
-rw-r--r--src/mame/drivers/st17xx.cpp186
-rw-r--r--src/mame/drivers/st_mp100.cpp12
-rw-r--r--src/mame/drivers/st_mp200.cpp38
-rw-r--r--src/mame/drivers/stactics.cpp2
-rw-r--r--src/mame/drivers/starshp1.cpp8
-rw-r--r--src/mame/drivers/starwars.cpp4
-rw-r--r--src/mame/drivers/stratos.cpp8
-rw-r--r--src/mame/drivers/studio2.cpp32
-rw-r--r--src/mame/drivers/stuntair.cpp4
-rw-r--r--src/mame/drivers/stv.cpp19
-rw-r--r--src/mame/drivers/su2000.cpp8
-rw-r--r--src/mame/drivers/subsino.cpp88
-rw-r--r--src/mame/drivers/subsino2.cpp162
-rw-r--r--src/mame/drivers/sun3.cpp84
-rw-r--r--src/mame/drivers/suna16.cpp18
-rw-r--r--src/mame/drivers/suna8.cpp75
-rw-r--r--src/mame/drivers/supdrapo.cpp4
-rw-r--r--src/mame/drivers/super80.cpp1
-rw-r--r--src/mame/drivers/superchs.cpp8
-rw-r--r--src/mame/drivers/supercon.cpp28
-rw-r--r--src/mame/drivers/superdq.cpp4
-rw-r--r--src/mame/drivers/superqix.cpp16
-rw-r--r--src/mame/drivers/supertnk.cpp8
-rw-r--r--src/mame/drivers/superwng.cpp4
-rw-r--r--src/mame/drivers/suprgolf.cpp24
-rw-r--r--src/mame/drivers/suprnova.cpp8
-rw-r--r--src/mame/drivers/suprridr.cpp2
-rw-r--r--src/mame/drivers/surpratk.cpp4
-rw-r--r--src/mame/drivers/svmu.cpp8
-rw-r--r--src/mame/drivers/swtpc.cpp1
-rw-r--r--src/mame/drivers/sym1.cpp2
-rw-r--r--src/mame/drivers/system1.cpp18
-rw-r--r--src/mame/drivers/system16.cpp12
-rw-r--r--src/mame/drivers/taito.cpp4
-rw-r--r--src/mame/drivers/taito_b.cpp10
-rw-r--r--src/mame/drivers/taito_f2.cpp41
-rw-r--r--src/mame/drivers/taito_f3.cpp59
-rw-r--r--src/mame/drivers/taito_l.cpp8
-rw-r--r--src/mame/drivers/taito_x.cpp16
-rw-r--r--src/mame/drivers/taito_z.cpp36
-rw-r--r--src/mame/drivers/taitojc.cpp77
-rw-r--r--src/mame/drivers/taitopjc.cpp457
-rw-r--r--src/mame/drivers/taitosj.cpp12
-rw-r--r--src/mame/drivers/taitotz.cpp709
-rw-r--r--src/mame/drivers/taitowlf.cpp8
-rw-r--r--src/mame/drivers/tamag1.cpp6
-rw-r--r--src/mame/drivers/tank8.cpp4
-rw-r--r--src/mame/drivers/tankbatt.cpp10
-rw-r--r--src/mame/drivers/tankbust.cpp4
-rw-r--r--src/mame/drivers/targeth.cpp8
-rw-r--r--src/mame/drivers/tasman.cpp87
-rw-r--r--src/mame/drivers/tavernie.cpp3
-rw-r--r--src/mame/drivers/tb303.cpp38
-rw-r--r--src/mame/drivers/tbowl.cpp2
-rw-r--r--src/mame/drivers/tec1.cpp4
-rw-r--r--src/mame/drivers/techno.cpp4
-rw-r--r--src/mame/drivers/tecnbras.cpp4
-rw-r--r--src/mame/drivers/tek405x.cpp6
-rw-r--r--src/mame/drivers/tekxp33x.cpp46
-rw-r--r--src/mame/drivers/tempest.cpp10
-rw-r--r--src/mame/drivers/tetrisp2.cpp38
-rw-r--r--src/mame/drivers/thayers.cpp6
-rw-r--r--src/mame/drivers/thedealr.cpp24
-rw-r--r--src/mame/drivers/thoop2.cpp7
-rw-r--r--src/mame/drivers/thunderj.cpp2
-rw-r--r--src/mame/drivers/thunderx.cpp12
-rw-r--r--src/mame/drivers/ti74.cpp2
-rw-r--r--src/mame/drivers/ti99_4p.cpp11
-rw-r--r--src/mame/drivers/ti99_4x.cpp10
-rw-r--r--src/mame/drivers/tiamc1.cpp4
-rw-r--r--src/mame/drivers/ticalc1x.cpp275
-rw-r--r--src/mame/drivers/tiki100.cpp4
-rw-r--r--src/mame/drivers/timeplt.cpp2
-rw-r--r--src/mame/drivers/timex.cpp8
-rw-r--r--src/mame/drivers/tispeak.cpp466
-rw-r--r--src/mame/drivers/tispellb.cpp437
-rw-r--r--src/mame/drivers/tk80.cpp4
-rw-r--r--src/mame/drivers/tm990189.cpp6
-rw-r--r--src/mame/drivers/tmc1800.cpp6
-rw-r--r--src/mame/drivers/tmc2000e.cpp2
-rw-r--r--src/mame/drivers/tmmjprd.cpp29
-rw-r--r--src/mame/drivers/tnzs.cpp6
-rw-r--r--src/mame/drivers/toaplan2.cpp14
-rw-r--r--src/mame/drivers/tomcat.cpp8
-rw-r--r--src/mame/drivers/tonton.cpp4
-rw-r--r--src/mame/drivers/toratora.cpp4
-rw-r--r--src/mame/drivers/tourtabl.cpp12
-rw-r--r--src/mame/drivers/tourvis.cpp676
-rw-r--r--src/mame/drivers/toypop.cpp6
-rw-r--r--src/mame/drivers/tp84.cpp7
-rw-r--r--src/mame/drivers/tr606.cpp130
-rw-r--r--src/mame/drivers/trackfld.cpp2
-rw-r--r--src/mame/drivers/triplhnt.cpp8
-rw-r--r--src/mame/drivers/trvquest.cpp2
-rw-r--r--src/mame/drivers/ts803.cpp531
-rw-r--r--src/mame/drivers/tsamurai.cpp2
-rw-r--r--src/mame/drivers/ttchamp.cpp7
-rw-r--r--src/mame/drivers/tubep.cpp6
-rw-r--r--src/mame/drivers/tumbleb.cpp13
-rw-r--r--src/mame/drivers/tunhunt.cpp6
-rw-r--r--src/mame/drivers/turbo.cpp22
-rw-r--r--src/mame/drivers/turrett.cpp8
-rw-r--r--src/mame/drivers/tutankhm.cpp2
-rw-r--r--src/mame/drivers/tvcapcom.cpp84
-rw-r--r--src/mame/drivers/twin16.cpp10
-rw-r--r--src/mame/drivers/twinkle.cpp24
-rw-r--r--src/mame/drivers/tx1.cpp12
-rw-r--r--src/mame/drivers/uapce.cpp2
-rw-r--r--src/mame/drivers/ultratnk.cpp10
-rw-r--r--src/mame/drivers/ultrsprt.cpp15
-rw-r--r--src/mame/drivers/umipoker.cpp24
-rw-r--r--src/mame/drivers/undrfire.cpp30
-rw-r--r--src/mame/drivers/unico.cpp12
-rw-r--r--src/mame/drivers/univac.cpp1
-rw-r--r--src/mame/drivers/unixpc.cpp8
-rw-r--r--src/mame/drivers/upscope.cpp2
-rw-r--r--src/mame/drivers/usgames.cpp10
-rw-r--r--src/mame/drivers/vamphalf.cpp12
-rw-r--r--src/mame/drivers/vboy.cpp32
-rw-r--r--src/mame/drivers/vcombat.cpp32
-rw-r--r--src/mame/drivers/vcs80.cpp2
-rw-r--r--src/mame/drivers/vd.cpp10
-rw-r--r--src/mame/drivers/vegaeo.cpp6
-rw-r--r--src/mame/drivers/vendetta.cpp4
-rw-r--r--src/mame/drivers/vicdual.cpp66
-rw-r--r--src/mame/drivers/victory.cpp8
-rw-r--r--src/mame/drivers/videopin.cpp14
-rw-r--r--src/mame/drivers/videopkr.cpp39
-rw-r--r--src/mame/drivers/vigilant.cpp8
-rw-r--r--src/mame/drivers/vii.cpp2
-rw-r--r--src/mame/drivers/vip.cpp6
-rw-r--r--src/mame/drivers/viper.cpp60
-rw-r--r--src/mame/drivers/vk100.cpp31
-rw-r--r--src/mame/drivers/vlc.cpp2
-rw-r--r--src/mame/drivers/voyager.cpp8
-rw-r--r--src/mame/drivers/vpoker.cpp8
-rw-r--r--src/mame/drivers/vsnes.cpp34
-rw-r--r--src/mame/drivers/vt100.cpp32
-rw-r--r--src/mame/drivers/vt240.cpp2
-rw-r--r--src/mame/drivers/wacky_gator.cpp12
-rw-r--r--src/mame/drivers/wallc.cpp4
-rw-r--r--src/mame/drivers/wangpc.cpp4
-rw-r--r--src/mame/drivers/warpwarp.cpp20
-rw-r--r--src/mame/drivers/wecleman.cpp4
-rw-r--r--src/mame/drivers/wheelfir.cpp22
-rw-r--r--src/mame/drivers/whitestar.cpp384
-rw-r--r--src/mame/drivers/wicat.cpp12
-rw-r--r--src/mame/drivers/wico.cpp10
-rw-r--r--src/mame/drivers/wildfire.cpp4
-rw-r--r--src/mame/drivers/wildpkr.cpp66
-rw-r--r--src/mame/drivers/williams.cpp24
-rw-r--r--src/mame/drivers/wink.cpp2
-rw-r--r--src/mame/drivers/witch.cpp45
-rw-r--r--src/mame/drivers/wiz.cpp2
-rw-r--r--src/mame/drivers/wolfpack.cpp23
-rw-r--r--src/mame/drivers/wpc_95.cpp6
-rw-r--r--src/mame/drivers/wpc_an.cpp40
-rw-r--r--src/mame/drivers/wpc_dot.cpp2
-rw-r--r--src/mame/drivers/wyvernf0.cpp12
-rw-r--r--src/mame/drivers/x07.cpp5
-rw-r--r--src/mame/drivers/x1.cpp48
-rw-r--r--src/mame/drivers/x68k.cpp30
-rw-r--r--src/mame/drivers/xain.cpp52
-rw-r--r--src/mame/drivers/xerox820.cpp3
-rw-r--r--src/mame/drivers/xexex.cpp4
-rw-r--r--src/mame/drivers/xmen.cpp2
-rw-r--r--src/mame/drivers/xtheball.cpp2
-rw-r--r--src/mame/drivers/xtom3d.cpp56
-rw-r--r--src/mame/drivers/xyonix.cpp8
-rw-r--r--src/mame/drivers/z100.cpp4
-rw-r--r--src/mame/drivers/z80dev.cpp2
-rw-r--r--src/mame/drivers/z9001.cpp3
-rw-r--r--src/mame/drivers/zac_1.cpp2
-rw-r--r--src/mame/drivers/zac_2.cpp2
-rw-r--r--src/mame/drivers/zac_proto.cpp6
-rw-r--r--src/mame/drivers/zaccaria.cpp4
-rw-r--r--src/mame/drivers/zapcomputer.cpp12
-rw-r--r--src/mame/drivers/zaxxon.cpp14
-rw-r--r--src/mame/drivers/zn.cpp8
-rw-r--r--src/mame/drivers/zodiack.cpp4
-rw-r--r--src/mame/drivers/zorba.cpp3
-rw-r--r--src/mame/drivers/zr107.cpp4
-rw-r--r--src/mame/drivers/zrt80.cpp3
-rw-r--r--src/mame/etc/template_cpu.cpp2
-rw-r--r--src/mame/etc/template_cpu.h24
-rw-r--r--src/mame/etc/template_driver.cpp4
-rw-r--r--src/mame/etc/template_readme.txt5
-rw-r--r--src/mame/includes/1942.h2
-rw-r--r--src/mame/includes/1943.h2
-rw-r--r--src/mame/includes/20pacgal.h1
-rw-r--r--src/mame/includes/3do.h6
-rw-r--r--src/mame/includes/40love.h14
-rw-r--r--src/mame/includes/4enraya.h19
-rw-r--r--src/mame/includes/8080bw.h5
-rw-r--r--src/mame/includes/abc1600.h7
-rw-r--r--src/mame/includes/abc80x.h4
-rw-r--r--src/mame/includes/aim65.h3
-rw-r--r--src/mame/includes/amstrad.h3
-rw-r--r--src/mame/includes/apollo.h12
-rw-r--r--src/mame/includes/apple2.h8
-rw-r--r--src/mame/includes/apple2gs.h4
-rw-r--r--src/mame/includes/apple3.h5
-rw-r--r--src/mame/includes/aquarium.h3
-rw-r--r--src/mame/includes/arabian.h4
-rw-r--r--src/mame/includes/arcadia.h2
-rw-r--r--src/mame/includes/argus.h5
-rw-r--r--src/mame/includes/arkanoid.h35
-rw-r--r--src/mame/includes/armedf.h2
-rw-r--r--src/mame/includes/asterix.h1
-rw-r--r--src/mame/includes/astrocde.h4
-rw-r--r--src/mame/includes/astrof.h2
-rw-r--r--src/mame/includes/at.h2
-rw-r--r--src/mame/includes/atarifb.h2
-rw-r--r--src/mame/includes/atarig1.h3
-rw-r--r--src/mame/includes/atarig42.h1
-rw-r--r--src/mame/includes/atarist.h1
-rw-r--r--src/mame/includes/atarisy1.h1
-rw-r--r--src/mame/includes/atom.h3
-rw-r--r--src/mame/includes/banctec.h2
-rw-r--r--src/mame/includes/battlane.h2
-rw-r--r--src/mame/includes/bbc.h10
-rw-r--r--src/mame/includes/beathead.h3
-rw-r--r--src/mame/includes/bebox.h2
-rw-r--r--src/mame/includes/bfm_sc45.h2
-rw-r--r--src/mame/includes/bigevglf.h4
-rw-r--r--src/mame/includes/bionicc.h5
-rw-r--r--src/mame/includes/bking.h7
-rw-r--r--src/mame/includes/blktiger.h4
-rw-r--r--src/mame/includes/blstroid.h1
-rw-r--r--src/mame/includes/brkthru.h1
-rw-r--r--src/mame/includes/btime.h42
-rw-r--r--src/mame/includes/bullet.h5
-rw-r--r--src/mame/includes/bwing.h1
-rw-r--r--src/mame/includes/cabal.h2
-rw-r--r--src/mame/includes/carpolo.h10
-rw-r--r--src/mame/includes/cave.h3
-rw-r--r--src/mame/includes/cbasebal.h5
-rw-r--r--src/mame/includes/cbm2.h2
-rw-r--r--src/mame/includes/ccastles.h4
-rw-r--r--src/mame/includes/cclimber.h2
-rw-r--r--src/mame/includes/cdi.h91
-rw-r--r--src/mame/includes/changela.h6
-rw-r--r--src/mame/includes/cheekyms.h2
-rw-r--r--src/mame/includes/chihiro.h19
-rw-r--r--src/mame/includes/cidelsa.h4
-rw-r--r--src/mame/includes/cischeat.h37
-rw-r--r--src/mame/includes/cloak.h6
-rw-r--r--src/mame/includes/cloud9.h2
-rw-r--r--src/mame/includes/coco.h1
-rw-r--r--src/mame/includes/combatsc.h2
-rw-r--r--src/mame/includes/compis.h8
-rw-r--r--src/mame/includes/comquest.h2
-rw-r--r--src/mame/includes/contra.h4
-rw-r--r--src/mame/includes/cosmic.h1
-rw-r--r--src/mame/includes/cps1.h27
-rw-r--r--src/mame/includes/cps3.h53
-rw-r--r--src/mame/includes/crgolf.h4
-rw-r--r--src/mame/includes/crshrace.h1
-rw-r--r--src/mame/includes/cvs.h1
-rw-r--r--src/mame/includes/cyberbal.h3
-rw-r--r--src/mame/includes/cybiko.h1
-rw-r--r--src/mame/includes/darius.h3
-rw-r--r--src/mame/includes/dbz.h1
-rw-r--r--src/mame/includes/dc.h1
-rw-r--r--src/mame/includes/dcheese.h2
-rw-r--r--src/mame/includes/ddragon3.h1
-rw-r--r--src/mame/includes/deco32.h4
-rw-r--r--src/mame/includes/deco_mlc.h7
-rw-r--r--src/mame/includes/dgn_beta.h1
-rw-r--r--src/mame/includes/dkong.h60
-rw-r--r--src/mame/includes/dogfgt.h2
-rw-r--r--src/mame/includes/dooyong.h9
-rw-r--r--src/mame/includes/dragrace.h2
-rw-r--r--src/mame/includes/drmicro.h2
-rw-r--r--src/mame/includes/dynax.h45
-rw-r--r--src/mame/includes/einstein.h2
-rw-r--r--src/mame/includes/eolith.h2
-rw-r--r--src/mame/includes/ep64.h2
-rw-r--r--src/mame/includes/equites.h2
-rw-r--r--src/mame/includes/esripsys.h16
-rw-r--r--src/mame/includes/exedexes.h2
-rw-r--r--src/mame/includes/exerion.h2
-rw-r--r--src/mame/includes/exidy440.h4
-rw-r--r--src/mame/includes/exp85.h1
-rw-r--r--src/mame/includes/exprraid.h1
-rw-r--r--src/mame/includes/fgoal.h2
-rw-r--r--src/mame/includes/fidelz80.h98
-rw-r--r--src/mame/includes/flower.h5
-rw-r--r--src/mame/includes/fm7.h134
-rw-r--r--src/mame/includes/fmtowns.h11
-rw-r--r--src/mame/includes/fromanc2.h4
-rw-r--r--src/mame/includes/fromance.h4
-rw-r--r--src/mame/includes/fuukifg3.h1
-rw-r--r--src/mame/includes/gaelco2.h13
-rw-r--r--src/mame/includes/gaelco3d.h10
-rw-r--r--src/mame/includes/galastrm.h5
-rw-r--r--src/mame/includes/galaxian.h4
-rw-r--r--src/mame/includes/galaxold.h7
-rw-r--r--src/mame/includes/gameplan.h2
-rw-r--r--src/mame/includes/gb.h2
-rw-r--r--src/mame/includes/gba.h6
-rw-r--r--src/mame/includes/gcpinbal.h3
-rw-r--r--src/mame/includes/glass.h2
-rw-r--r--src/mame/includes/goal92.h2
-rw-r--r--src/mame/includes/goldstar.h1
-rw-r--r--src/mame/includes/gomoku.h4
-rw-r--r--src/mame/includes/gottlieb.h2
-rw-r--r--src/mame/includes/gp32.h6
-rw-r--r--src/mame/includes/grchamp.h3
-rw-r--r--src/mame/includes/gridlee.h4
-rw-r--r--src/mame/includes/groundfx.h2
-rw-r--r--src/mame/includes/gstriker.h1
-rw-r--r--src/mame/includes/gsword.h1
-rw-r--r--src/mame/includes/gunbustr.h2
-rw-r--r--src/mame/includes/gunsmoke.h2
-rw-r--r--src/mame/includes/harddriv.h396
-rw-r--r--src/mame/includes/hh_tms1k.h8
-rw-r--r--src/mame/includes/hng64.h30
-rw-r--r--src/mame/includes/hp48.h3
-rw-r--r--src/mame/includes/huebler.h1
-rw-r--r--src/mame/includes/hyprduel.h8
-rw-r--r--src/mame/includes/intv.h18
-rw-r--r--src/mame/includes/inufuku.h2
-rw-r--r--src/mame/includes/irobot.h4
-rw-r--r--src/mame/includes/itech32.h6
-rw-r--r--src/mame/includes/jackal.h5
-rw-r--r--src/mame/includes/jaguar.h6
-rw-r--r--src/mame/includes/jpmimpct.h5
-rw-r--r--src/mame/includes/jpmsys5.h4
-rw-r--r--src/mame/includes/kaneko16.h5
-rw-r--r--src/mame/includes/kangaroo.h2
-rw-r--r--src/mame/includes/karnov.h2
-rw-r--r--src/mame/includes/kaypro.h1
-rw-r--r--src/mame/includes/kc.h1
-rw-r--r--src/mame/includes/kickgoal.h2
-rw-r--r--src/mame/includes/konamigx.h24
-rw-r--r--src/mame/includes/ladyfrog.h3
-rw-r--r--src/mame/includes/laserbat.h290
-rw-r--r--src/mame/includes/legionna.h12
-rw-r--r--src/mame/includes/leland.h6
-rw-r--r--src/mame/includes/lethalj.h2
-rw-r--r--src/mame/includes/liberate.h4
-rw-r--r--src/mame/includes/liberatr.h24
-rw-r--r--src/mame/includes/lisa.h3
-rw-r--r--src/mame/includes/lockon.h6
-rw-r--r--src/mame/includes/lordgun.h2
-rw-r--r--src/mame/includes/lwings.h2
-rw-r--r--src/mame/includes/m10.h2
-rw-r--r--src/mame/includes/m107.h25
-rw-r--r--src/mame/includes/m58.h14
-rw-r--r--src/mame/includes/m72.h5
-rw-r--r--src/mame/includes/m90.h1
-rw-r--r--src/mame/includes/m92.h2
-rw-r--r--src/mame/includes/mac.h7
-rw-r--r--src/mame/includes/macpci.h5
-rw-r--r--src/mame/includes/macrossp.h5
-rw-r--r--src/mame/includes/madalien.h2
-rw-r--r--src/mame/includes/magmax.h2
-rw-r--r--src/mame/includes/mappy.h2
-rw-r--r--src/mame/includes/matmania.h4
-rw-r--r--src/mame/includes/maygay1b.h4
-rw-r--r--src/mame/includes/mbc55x.h2
-rw-r--r--src/mame/includes/mc1000.h2
-rw-r--r--src/mame/includes/mcatadv.h5
-rw-r--r--src/mame/includes/mcr3.h1
-rw-r--r--src/mame/includes/mcr68.h2
-rw-r--r--src/mame/includes/md_cons.h9
-rw-r--r--src/mame/includes/megadriv.h3
-rw-r--r--src/mame/includes/megasys1.h18
-rw-r--r--src/mame/includes/megazone.h2
-rw-r--r--src/mame/includes/metlclsh.h2
-rw-r--r--src/mame/includes/metro.h4
-rw-r--r--src/mame/includes/mexico86.h1
-rw-r--r--src/mame/includes/micro3d.h8
-rw-r--r--src/mame/includes/microtan.h2
-rw-r--r--src/mame/includes/midtunit.h2
-rw-r--r--src/mame/includes/midvunit.h2
-rw-r--r--src/mame/includes/midyunit.h6
-rw-r--r--src/mame/includes/mikromik.h2
-rw-r--r--src/mame/includes/mitchell.h1
-rw-r--r--src/mame/includes/model1.h13
-rw-r--r--src/mame/includes/model2.h19
-rw-r--r--src/mame/includes/model3.h20
-rw-r--r--src/mame/includes/moo.h2
-rw-r--r--src/mame/includes/mpu4.h7
-rw-r--r--src/mame/includes/mpz80.h1
-rw-r--r--src/mame/includes/ms32.h2
-rw-r--r--src/mame/includes/msisaac.h5
-rw-r--r--src/mame/includes/mugsmash.h1
-rw-r--r--src/mame/includes/munchmo.h2
-rw-r--r--src/mame/includes/mw8080bw.h4
-rw-r--r--src/mame/includes/mystwarr.h1
-rw-r--r--src/mame/includes/mz700.h4
-rw-r--r--src/mame/includes/n64.h59
-rw-r--r--src/mame/includes/namcofl.h2
-rw-r--r--src/mame/includes/namcos2.h7
-rw-r--r--src/mame/includes/namcos21.h16
-rw-r--r--src/mame/includes/namcos22.h20
-rw-r--r--src/mame/includes/namcos86.h22
-rw-r--r--src/mame/includes/nb1414m4.h2
-rw-r--r--src/mame/includes/nbmj8688.h6
-rw-r--r--src/mame/includes/nbmj8891.h22
-rw-r--r--src/mame/includes/nbmj8900.h12
-rw-r--r--src/mame/includes/nbmj8991.h4
-rw-r--r--src/mame/includes/nbmj9195.h6
-rw-r--r--src/mame/includes/nc.h4
-rw-r--r--src/mame/includes/neogeo.h1
-rw-r--r--src/mame/includes/nes.h2
-rw-r--r--src/mame/includes/next.h4
-rw-r--r--src/mame/includes/ninjakd2.h8
-rw-r--r--src/mame/includes/niyanpai.h8
-rw-r--r--src/mame/includes/nmk16.h11
-rw-r--r--src/mame/includes/norautp.h2
-rw-r--r--src/mame/includes/nycaptor.h1
-rw-r--r--src/mame/includes/opwolf.h2
-rw-r--r--src/mame/includes/orbit.h2
-rw-r--r--src/mame/includes/othunder.h2
-rw-r--r--src/mame/includes/overdriv.h2
-rw-r--r--src/mame/includes/p2000t.h2
-rw-r--r--src/mame/includes/pacland.h2
-rw-r--r--src/mame/includes/pastelg.h2
-rw-r--r--src/mame/includes/pc1512.h4
-rw-r--r--src/mame/includes/pc8001.h1
-rw-r--r--src/mame/includes/pcw.h2
-rw-r--r--src/mame/includes/pcw16.h14
-rw-r--r--src/mame/includes/pdp1.h2
-rw-r--r--src/mame/includes/pecom.h2
-rw-r--r--src/mame/includes/pgm.h7
-rw-r--r--src/mame/includes/phoenix.h6
-rw-r--r--src/mame/includes/pitnrun.h2
-rw-r--r--src/mame/includes/pk8020.h2
-rw-r--r--src/mame/includes/playch10.h28
-rw-r--r--src/mame/includes/plus4.h3
-rw-r--r--src/mame/includes/poisk1.h2
-rw-r--r--src/mame/includes/policetr.h2
-rw-r--r--src/mame/includes/polyplay.h2
-rw-r--r--src/mame/includes/poolshrk.h2
-rw-r--r--src/mame/includes/popeye.h9
-rw-r--r--src/mame/includes/psikyo.h4
-rw-r--r--src/mame/includes/psikyosh.h4
-rw-r--r--src/mame/includes/psion.h2
-rw-r--r--src/mame/includes/px8.h1
-rw-r--r--src/mame/includes/qix.h7
-rw-r--r--src/mame/includes/ql.h2
-rw-r--r--src/mame/includes/quasar.h2
-rw-r--r--src/mame/includes/quizdna.h4
-rw-r--r--src/mame/includes/radio86.h2
-rw-r--r--src/mame/includes/raiden.h4
-rw-r--r--src/mame/includes/raiden2.h7
-rw-r--r--src/mame/includes/rastan.h2
-rw-r--r--src/mame/includes/rbisland.h2
-rw-r--r--src/mame/includes/realbrk.h4
-rw-r--r--src/mame/includes/redalert.h2
-rw-r--r--src/mame/includes/rltennis.h2
-rw-r--r--src/mame/includes/rm380z.h4
-rw-r--r--src/mame/includes/rmnimbus.h1
-rw-r--r--src/mame/includes/rungun.h31
-rw-r--r--src/mame/includes/s11.h4
-rw-r--r--src/mame/includes/sage2.h2
-rw-r--r--src/mame/includes/scramble.h4
-rw-r--r--src/mame/includes/segahang.h1
-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/segas32.h12
-rw-r--r--src/mame/includes/segaxbd.h3
-rw-r--r--src/mame/includes/segaybd.h5
-rw-r--r--src/mame/includes/seibuspi.h10
-rw-r--r--src/mame/includes/seta2.h2
-rw-r--r--src/mame/includes/shadfrce.h2
-rw-r--r--src/mame/includes/sidearms.h2
-rw-r--r--src/mame/includes/simpl156.h6
-rw-r--r--src/mame/includes/simple_st0016.h1
-rw-r--r--src/mame/includes/simpsons.h5
-rw-r--r--src/mame/includes/skyraid.h2
-rw-r--r--src/mame/includes/slapshot.h4
-rw-r--r--src/mame/includes/sms.h4
-rw-r--r--src/mame/includes/snes.h4
-rw-r--r--src/mame/includes/sorcerer.h1
-rw-r--r--src/mame/includes/spacefb.h2
-rw-r--r--src/mame/includes/special.h2
-rw-r--r--src/mame/includes/speedatk.h2
-rw-r--r--src/mame/includes/sprint4.h3
-rw-r--r--src/mame/includes/sprint8.h2
-rw-r--r--src/mame/includes/srumbler.h2
-rw-r--r--src/mame/includes/sspeedr.h2
-rw-r--r--src/mame/includes/ssrj.h2
-rw-r--r--src/mame/includes/ssv.h7
-rw-r--r--src/mame/includes/ssystem3.h2
-rw-r--r--src/mame/includes/starcrus.h8
-rw-r--r--src/mame/includes/starshp1.h4
-rw-r--r--src/mame/includes/starwars.h8
-rw-r--r--src/mame/includes/stv.h25
-rw-r--r--src/mame/includes/suna16.h2
-rw-r--r--src/mame/includes/suna8.h4
-rw-r--r--src/mame/includes/super6.h1
-rw-r--r--src/mame/includes/super80.h1
-rw-r--r--src/mame/includes/superchs.h2
-rw-r--r--src/mame/includes/superqix.h4
-rw-r--r--src/mame/includes/suprslam.h1
-rw-r--r--src/mame/includes/svi318.h2
-rw-r--r--src/mame/includes/swtpc09.h3
-rw-r--r--src/mame/includes/system1.h8
-rw-r--r--src/mame/includes/system16.h1
-rw-r--r--src/mame/includes/taito_b.h10
-rw-r--r--src/mame/includes/taito_f2.h6
-rw-r--r--src/mame/includes/taito_f3.h18
-rw-r--r--src/mame/includes/taito_l.h1
-rw-r--r--src/mame/includes/taito_z.h3
-rw-r--r--src/mame/includes/taitoair.h6
-rw-r--r--src/mame/includes/taitojc.h62
-rw-r--r--src/mame/includes/tank8.h2
-rw-r--r--src/mame/includes/tankbust.h3
-rw-r--r--src/mame/includes/taotaido.h8
-rw-r--r--src/mame/includes/tatsumi.h6
-rw-r--r--src/mame/includes/tceptor.h4
-rw-r--r--src/mame/includes/tecmo.h1
-rw-r--r--src/mame/includes/tetrisp2.h2
-rw-r--r--src/mame/includes/thepit.h2
-rw-r--r--src/mame/includes/thief.h6
-rw-r--r--src/mame/includes/thomson.h3
-rw-r--r--src/mame/includes/thoop2.h2
-rw-r--r--src/mame/includes/ti85.h4
-rw-r--r--src/mame/includes/tiamc1.h3
-rw-r--r--src/mame/includes/tmnt.h1
-rw-r--r--src/mame/includes/tnzs.h5
-rw-r--r--src/mame/includes/toaplan1.h14
-rw-r--r--src/mame/includes/toaplan2.h1
-rw-r--r--src/mame/includes/tp84.h4
-rw-r--r--src/mame/includes/triplhnt.h2
-rw-r--r--src/mame/includes/trs80m2.h4
-rw-r--r--src/mame/includes/tryout.h4
-rw-r--r--src/mame/includes/tubep.h5
-rw-r--r--src/mame/includes/tumbleb.h1
-rw-r--r--src/mame/includes/tumblep.h4
-rw-r--r--src/mame/includes/turbo.h3
-rw-r--r--src/mame/includes/turrett.h4
-rw-r--r--src/mame/includes/twincobr.h8
-rw-r--r--src/mame/includes/tx0.h1
-rw-r--r--src/mame/includes/tx1.h8
-rw-r--r--src/mame/includes/ultratnk.h2
-rw-r--r--src/mame/includes/undrfire.h2
-rw-r--r--src/mame/includes/unico.h6
-rw-r--r--src/mame/includes/ut88.h2
-rw-r--r--src/mame/includes/v1050.h4
-rw-r--r--src/mame/includes/vc4000.h2
-rw-r--r--src/mame/includes/vertigo.h2
-rw-r--r--src/mame/includes/vic10.h5
-rw-r--r--src/mame/includes/vic20.h3
-rw-r--r--src/mame/includes/vicdual.h3
-rw-r--r--src/mame/includes/victory.h10
-rw-r--r--src/mame/includes/vigilant.h2
-rw-r--r--src/mame/includes/volfied.h4
-rw-r--r--src/mame/includes/vsnes.h27
-rw-r--r--src/mame/includes/wangpc.h1
-rw-r--r--src/mame/includes/williams.h8
-rw-r--r--src/mame/includes/wiz.h2
-rw-r--r--src/mame/includes/wolfpack.h15
-rw-r--r--src/mame/includes/wpc_pin.h1
-rw-r--r--src/mame/includes/wswan.h2
-rw-r--r--src/mame/includes/x1.h18
-rw-r--r--src/mame/includes/x68k.h11
-rw-r--r--src/mame/includes/xbox.h22
-rw-r--r--src/mame/includes/xerox820.h2
-rw-r--r--src/mame/includes/xexex.h2
-rw-r--r--src/mame/includes/xmen.h4
-rw-r--r--src/mame/includes/xor100.h1
-rw-r--r--src/mame/includes/zaxxon.h1
-rw-r--r--src/mame/includes/zx.h5
-rw-r--r--src/mame/layout/captflag.lay107
-rw-r--r--src/mame/layout/fidel_cc.lay69
-rw-r--r--src/mame/layout/fidel_fev.lay40
-rw-r--r--src/mame/layout/fidel_sc12.lay39
-rw-r--r--src/mame/layout/fidel_vbrc.lay (renamed from src/mame/layout/bridgec3.lay)48
-rw-r--r--src/mame/layout/fidel_vcc.lay67
-rw-r--r--src/mame/layout/fidel_vsc.lay (renamed from src/mame/layout/vsc.lay)136
-rw-r--r--src/mame/layout/fidelz80.lay62
-rw-r--r--src/mame/layout/lantutor.lay2
-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/prophet600.lay35
-rw-r--r--src/mame/layout/rungun_dual.lay34
-rw-r--r--src/mame/layout/snspell.lay2
-rw-r--r--src/mame/layout/spellb.lay67
-rw-r--r--src/mame/layout/ti1250.lay42
-rw-r--r--src/mame/layout/tr606.lay20
-rw-r--r--src/mame/machine/315-5881_crypt.cpp31
-rw-r--r--src/mame/machine/315-5881_crypt.h4
-rw-r--r--src/mame/machine/3do.cpp18
-rw-r--r--src/mame/machine/6883sam.cpp1
-rw-r--r--src/mame/machine/aim65.cpp12
-rw-r--r--src/mame/machine/ajax.cpp20
-rw-r--r--src/mame/machine/alpha8201.cpp4
-rw-r--r--src/mame/machine/alpha8201.h2
-rw-r--r--src/mame/machine/amiga.cpp4
-rw-r--r--src/mame/machine/amigakbd.cpp2
-rw-r--r--src/mame/machine/amigakbd.h1
-rw-r--r--src/mame/machine/amstrad.cpp75
-rw-r--r--src/mame/machine/apollo.cpp32
-rw-r--r--src/mame/machine/apollo_dbg.h20
-rw-r--r--src/mame/machine/apollo_kbd.cpp9
-rw-r--r--src/mame/machine/apollo_kbd.h3
-rw-r--r--src/mame/machine/apple2.cpp6
-rw-r--r--src/mame/machine/apple2gs.cpp8
-rw-r--r--src/mame/machine/arkanoid.cpp171
-rw-r--r--src/mame/machine/asic65.h1
-rw-r--r--src/mame/machine/asteroid.cpp6
-rw-r--r--src/mame/machine/atarifb.cpp36
-rw-r--r--src/mame/machine/atarifdc.cpp6
-rw-r--r--src/mame/machine/atarifdc.h2
-rw-r--r--src/mame/machine/atarigen.cpp50
-rw-r--r--src/mame/machine/atarigen.h20
-rw-r--r--src/mame/machine/awboard.cpp4
-rw-r--r--src/mame/machine/balsente.cpp2
-rw-r--r--src/mame/machine/bbc.cpp33
-rw-r--r--src/mame/machine/bfm_bd1.cpp2
-rw-r--r--src/mame/machine/bfm_bda.cpp4
-rw-r--r--src/mame/machine/bigevglf.cpp2
-rw-r--r--src/mame/machine/bonzeadv.cpp8
-rw-r--r--src/mame/machine/bsktball.cpp4
-rw-r--r--src/mame/machine/bublbobl.cpp2
-rw-r--r--src/mame/machine/carpolo.cpp2
-rw-r--r--src/mame/machine/cchip.cpp8
-rw-r--r--src/mame/machine/cdi070.cpp182
-rw-r--r--src/mame/machine/cdi070.h5
-rw-r--r--src/mame/machine/cdicdic.cpp112
-rw-r--r--src/mame/machine/cdicdic.h6
-rw-r--r--src/mame/machine/cdislave.cpp52
-rw-r--r--src/mame/machine/cdislave.h1
-rw-r--r--src/mame/machine/compiskb.cpp2
-rw-r--r--src/mame/machine/cps2crpt.cpp2
-rw-r--r--src/mame/machine/cps2crypt.h1
-rw-r--r--src/mame/machine/dec_lk201.cpp10
-rw-r--r--src/mame/machine/docg3.cpp42
-rw-r--r--src/mame/machine/docg3.h2
-rw-r--r--src/mame/machine/electron.cpp4
-rw-r--r--src/mame/machine/esqvfd.cpp2
-rw-r--r--src/mame/machine/fd1094.cpp1
-rw-r--r--src/mame/machine/fddebug.cpp6
-rw-r--r--src/mame/machine/gaelco2.cpp46
-rw-r--r--src/mame/machine/galaxold.cpp10
-rw-r--r--src/mame/machine/gamecom.cpp4
-rw-r--r--src/mame/machine/gdrom.cpp146
-rw-r--r--src/mame/machine/harddriv.cpp4
-rw-r--r--src/mame/machine/hp48.cpp29
-rw-r--r--src/mame/machine/irobot.cpp4
-rw-r--r--src/mame/machine/k573dio.cpp4
-rw-r--r--src/mame/machine/k573dio.h2
-rw-r--r--src/mame/machine/kay_kbd.cpp9
-rw-r--r--src/mame/machine/kaypro.cpp8
-rw-r--r--src/mame/machine/kc.cpp2
-rw-r--r--src/mame/machine/konppc.cpp14
-rw-r--r--src/mame/machine/konppc.h6
-rw-r--r--src/mame/machine/leland.cpp6
-rw-r--r--src/mame/machine/lisa.cpp8
-rw-r--r--src/mame/machine/llc.cpp2
-rw-r--r--src/mame/machine/mac.cpp8
-rw-r--r--src/mame/machine/mboard.cpp10
-rw-r--r--src/mame/machine/mega32x.cpp28
-rw-r--r--src/mame/machine/mega32x.h8
-rw-r--r--src/mame/machine/megacd.cpp54
-rw-r--r--src/mame/machine/megacd.h2
-rw-r--r--src/mame/machine/megadriv.cpp8
-rw-r--r--src/mame/machine/meters.cpp137
-rw-r--r--src/mame/machine/meters.h43
-rw-r--r--src/mame/machine/mhavoc.cpp14
-rw-r--r--src/mame/machine/microdrv.cpp12
-rw-r--r--src/mame/machine/microdrv.h4
-rw-r--r--src/mame/machine/microtan.cpp4
-rw-r--r--src/mame/machine/midwayic.cpp16
-rw-r--r--src/mame/machine/midxunit.cpp12
-rw-r--r--src/mame/machine/midyunit.cpp28
-rw-r--r--src/mame/machine/model1.cpp14
-rw-r--r--src/mame/machine/ms7004.cpp2
-rw-r--r--src/mame/machine/msx.cpp4
-rw-r--r--src/mame/machine/mz700.cpp31
-rw-r--r--src/mame/machine/n64.cpp276
-rw-r--r--src/mame/machine/namco62.h4
-rw-r--r--src/mame/machine/namcos2.cpp6
-rw-r--r--src/mame/machine/naomi.cpp21
-rw-r--r--src/mame/machine/naomigd.cpp80
-rw-r--r--src/mame/machine/naomim1.cpp8
-rw-r--r--src/mame/machine/naomim1.h2
-rw-r--r--src/mame/machine/naomim2.cpp6
-rw-r--r--src/mame/machine/naomim2.h2
-rw-r--r--src/mame/machine/naomim4.cpp10
-rw-r--r--src/mame/machine/naomim4.h4
-rw-r--r--src/mame/machine/nb1413m3.cpp6
-rw-r--r--src/mame/machine/nb1414m4.cpp3
-rw-r--r--src/mame/machine/nes.cpp6
-rw-r--r--src/mame/machine/nextkbd.h2
-rw-r--r--src/mame/machine/nitedrvr.cpp2
-rw-r--r--src/mame/machine/ns10crypt.cpp2
-rw-r--r--src/mame/machine/ns10crypt.h2
-rw-r--r--src/mame/machine/opwolf.cpp12
-rw-r--r--src/mame/machine/p2000t.cpp2
-rw-r--r--src/mame/machine/pc1512kb.cpp4
-rw-r--r--src/mame/machine/pc9801_118.cpp4
-rw-r--r--src/mame/machine/pc9801_86.cpp192
-rw-r--r--src/mame/machine/pc9801_86.h28
-rw-r--r--src/mame/machine/pce_cd.cpp32
-rw-r--r--src/mame/machine/pce_cd.h12
-rw-r--r--src/mame/machine/pgmprot_igs027a_type3.cpp16
-rw-r--r--src/mame/machine/playch10.cpp58
-rw-r--r--src/mame/machine/pmd85.cpp8
-rw-r--r--src/mame/machine/psxcd.h1
-rw-r--r--src/mame/machine/qix.cpp15
-rw-r--r--src/mame/machine/radio86.cpp4
-rw-r--r--src/mame/machine/raiden2cop.h2
-rw-r--r--src/mame/machine/rbisland.cpp26
-rw-r--r--src/mame/machine/scramble.cpp15
-rw-r--r--src/mame/machine/simpsons.cpp8
-rw-r--r--src/mame/machine/smartmed.cpp20
-rw-r--r--src/mame/machine/smartmed.h8
-rw-r--r--src/mame/machine/sms.cpp31
-rw-r--r--src/mame/machine/snes.cpp4
-rw-r--r--src/mame/machine/st0016.cpp16
-rw-r--r--src/mame/machine/st0016.h5
-rw-r--r--src/mame/machine/starwars.cpp18
-rw-r--r--src/mame/machine/stfight.cpp4
-rw-r--r--src/mame/machine/subs.cpp4
-rw-r--r--src/mame/machine/subsino.cpp6
-rw-r--r--src/mame/machine/svi318.cpp22
-rw-r--r--src/mame/machine/taitoio.cpp24
-rw-r--r--src/mame/machine/taitosj.cpp2
-rw-r--r--src/mame/machine/tandy2kb.cpp4
-rw-r--r--src/mame/machine/thomson.cpp2
-rw-r--r--src/mame/machine/ti85.cpp14
-rw-r--r--src/mame/machine/ticket.cpp6
-rw-r--r--src/mame/machine/tnzs.cpp44
-rw-r--r--src/mame/machine/toaplan1.cpp50
-rw-r--r--src/mame/machine/trs80m2kb.cpp4
-rw-r--r--src/mame/machine/twincobr.cpp16
-rw-r--r--src/mame/machine/ut88.cpp2
-rw-r--r--src/mame/machine/v1050kb.cpp2
-rw-r--r--src/mame/machine/victor9k_fdc.cpp4
-rw-r--r--src/mame/machine/volfied.cpp12
-rw-r--r--src/mame/machine/vsnes.cpp111
-rw-r--r--src/mame/machine/wangpckb.cpp2
-rw-r--r--src/mame/machine/williams.cpp14
-rw-r--r--src/mame/machine/wpc_lamp.cpp2
-rw-r--r--src/mame/machine/wpc_out.cpp6
-rw-r--r--src/mame/machine/wrally.cpp4
-rw-r--r--src/mame/machine/wswan.cpp4
-rw-r--r--src/mame/machine/x68k_kbd.cpp14
-rw-r--r--src/mame/machine/xbox.cpp228
-rw-r--r--src/mame/machine/xevious.cpp10
-rw-r--r--src/mame/machine/z80ne.cpp10
-rw-r--r--src/mame/mame.cpp4
-rw-r--r--src/mame/mess.cpp4
-rw-r--r--src/mame/mess.lst120
-rw-r--r--src/mame/video/1942.cpp4
-rw-r--r--src/mame/video/1943.cpp6
-rw-r--r--src/mame/video/40love.cpp46
-rw-r--r--src/mame/video/733_asr.cpp2
-rw-r--r--src/mame/video/733_asr.h2
-rw-r--r--src/mame/video/911_vdt.cpp4
-rw-r--r--src/mame/video/alesis.cpp100
-rw-r--r--src/mame/video/antic.cpp18
-rw-r--r--src/mame/video/antic.h8
-rw-r--r--src/mame/video/apollo.cpp10
-rw-r--r--src/mame/video/apple2.cpp10
-rw-r--r--src/mame/video/apple2.h4
-rw-r--r--src/mame/video/apple2gs.cpp4
-rw-r--r--src/mame/video/apple3.cpp2
-rw-r--r--src/mame/video/aquarium.cpp2
-rw-r--r--src/mame/video/arabian.cpp8
-rw-r--r--src/mame/video/arcadia.cpp2
-rw-r--r--src/mame/video/argus.cpp18
-rw-r--r--src/mame/video/arkanoid.cpp8
-rw-r--r--src/mame/video/armedf.cpp12
-rw-r--r--src/mame/video/astrocde.cpp6
-rw-r--r--src/mame/video/atari.cpp4
-rw-r--r--src/mame/video/atarifb.cpp2
-rw-r--r--src/mame/video/atarisy1.cpp6
-rw-r--r--src/mame/video/avgdvg.cpp15
-rw-r--r--src/mame/video/avgdvg.h4
-rw-r--r--src/mame/video/awpvid.cpp8
-rw-r--r--src/mame/video/awpvid.h2
-rw-r--r--src/mame/video/batman.cpp28
-rw-r--r--src/mame/video/battlane.cpp2
-rw-r--r--src/mame/video/battlex.cpp6
-rw-r--r--src/mame/video/bfm_adr2.h2
-rw-r--r--src/mame/video/bfm_dm01.cpp2
-rw-r--r--src/mame/video/bigevglf.cpp6
-rw-r--r--src/mame/video/bionicc.cpp9
-rw-r--r--src/mame/video/bking.cpp2
-rw-r--r--src/mame/video/blktiger.cpp10
-rw-r--r--src/mame/video/btime.cpp50
-rw-r--r--src/mame/video/buggychl.cpp4
-rw-r--r--src/mame/video/c116.cpp2
-rw-r--r--src/mame/video/c45.cpp7
-rw-r--r--src/mame/video/carpolo.cpp10
-rw-r--r--src/mame/video/cave.cpp6
-rw-r--r--src/mame/video/cbasebal.cpp8
-rw-r--r--src/mame/video/ccastles.cpp4
-rw-r--r--src/mame/video/changela.cpp20
-rw-r--r--src/mame/video/cheekyms.cpp2
-rw-r--r--src/mame/video/chihiro.cpp587
-rw-r--r--src/mame/video/cidelsa.cpp8
-rw-r--r--src/mame/video/cinemat.cpp20
-rw-r--r--src/mame/video/cischeat.cpp39
-rw-r--r--src/mame/video/cloak.cpp18
-rw-r--r--src/mame/video/cloud9.cpp6
-rw-r--r--src/mame/video/combatsc.cpp28
-rw-r--r--src/mame/video/commando.cpp4
-rw-r--r--src/mame/video/contra.cpp20
-rw-r--r--src/mame/video/cop01.cpp4
-rw-r--r--src/mame/video/cps1.cpp43
-rw-r--r--src/mame/video/crgolf.cpp8
-rw-r--r--src/mame/video/crt.cpp2
-rw-r--r--src/mame/video/crt.h2
-rw-r--r--src/mame/video/cvs.cpp4
-rw-r--r--src/mame/video/cyberbal.cpp4
-rw-r--r--src/mame/video/darius.cpp2
-rw-r--r--src/mame/video/dcheese.cpp2
-rw-r--r--src/mame/video/dday.cpp4
-rw-r--r--src/mame/video/decbac06.cpp16
-rw-r--r--src/mame/video/decbac06.h5
-rw-r--r--src/mame/video/deco16ic.cpp12
-rw-r--r--src/mame/video/deco16ic.h5
-rw-r--r--src/mame/video/deco32.cpp24
-rw-r--r--src/mame/video/deco_mlc.cpp18
-rw-r--r--src/mame/video/decocomn.cpp4
-rw-r--r--src/mame/video/decocomn.h2
-rw-r--r--src/mame/video/decodmd1.h1
-rw-r--r--src/mame/video/decodmd2.h2
-rw-r--r--src/mame/video/deniam.cpp2
-rw-r--r--src/mame/video/dogfgt.cpp8
-rw-r--r--src/mame/video/dooyong.cpp72
-rw-r--r--src/mame/video/dragrace.cpp2
-rw-r--r--src/mame/video/drmicro.cpp4
-rw-r--r--src/mame/video/dynax.cpp236
-rw-r--r--src/mame/video/electron.cpp47
-rw-r--r--src/mame/video/eolith.cpp4
-rw-r--r--src/mame/video/epos.cpp6
-rw-r--r--src/mame/video/equites.cpp8
-rw-r--r--src/mame/video/esripsys.cpp40
-rw-r--r--src/mame/video/excellent_spr.cpp6
-rw-r--r--src/mame/video/excellent_spr.h4
-rw-r--r--src/mame/video/exedexes.cpp10
-rw-r--r--src/mame/video/exerion.cpp15
-rw-r--r--src/mame/video/exidy440.cpp8
-rw-r--r--src/mame/video/fgoal.cpp2
-rw-r--r--src/mame/video/flkatck.cpp2
-rw-r--r--src/mame/video/fmtowns.cpp4
-rw-r--r--src/mame/video/fromanc2.cpp52
-rw-r--r--src/mame/video/fromance.cpp12
-rw-r--r--src/mame/video/fuukifg.cpp20
-rw-r--r--src/mame/video/fuukifg.h6
-rw-r--r--src/mame/video/fuukifg3.cpp4
-rw-r--r--src/mame/video/gaelco3d.cpp24
-rw-r--r--src/mame/video/galastrm.cpp20
-rw-r--r--src/mame/video/galaxian.cpp2
-rw-r--r--src/mame/video/galaxold.cpp6
-rw-r--r--src/mame/video/galivan.cpp8
-rw-r--r--src/mame/video/gameplan.cpp6
-rw-r--r--src/mame/video/gb_lcd.cpp104
-rw-r--r--src/mame/video/gb_lcd.h7
-rw-r--r--src/mame/video/gime.h1
-rw-r--r--src/mame/video/glass.cpp2
-rw-r--r--src/mame/video/goal92.cpp8
-rw-r--r--src/mame/video/gp9001.cpp18
-rw-r--r--src/mame/video/gp9001.h2
-rw-r--r--src/mame/video/grchamp.cpp2
-rw-r--r--src/mame/video/gridlee.cpp4
-rw-r--r--src/mame/video/groundfx.cpp6
-rw-r--r--src/mame/video/gunbustr.cpp6
-rw-r--r--src/mame/video/gunsmoke.cpp6
-rw-r--r--src/mame/video/higemaru.cpp4
-rw-r--r--src/mame/video/hng64.cpp4
-rw-r--r--src/mame/video/hng64_3d.cpp2
-rw-r--r--src/mame/video/hyprduel.cpp26
-rw-r--r--src/mame/video/igs017_igs031.cpp4
-rw-r--r--src/mame/video/igs017_igs031.h2
-rw-r--r--src/mame/video/inufuku.cpp6
-rw-r--r--src/mame/video/irobot.cpp16
-rw-r--r--src/mame/video/ironhors.cpp4
-rw-r--r--src/mame/video/itech32.cpp4
-rw-r--r--src/mame/video/jackal.cpp7
-rw-r--r--src/mame/video/jalblend.cpp6
-rw-r--r--src/mame/video/jalblend.h2
-rw-r--r--src/mame/video/k001005.cpp36
-rw-r--r--src/mame/video/k001005.h14
-rw-r--r--src/mame/video/k001006.cpp22
-rw-r--r--src/mame/video/k001006.h8
-rw-r--r--src/mame/video/k001604.cpp29
-rw-r--r--src/mame/video/k001604.h6
-rw-r--r--src/mame/video/k007121.cpp7
-rw-r--r--src/mame/video/k007121.h2
-rw-r--r--src/mame/video/k007342.cpp8
-rw-r--r--src/mame/video/k007342.h4
-rw-r--r--src/mame/video/k007420.cpp4
-rw-r--r--src/mame/video/k007420.h2
-rw-r--r--src/mame/video/k037122.cpp26
-rw-r--r--src/mame/video/k037122.h6
-rw-r--r--src/mame/video/k051316.cpp2
-rw-r--r--src/mame/video/k051316.h2
-rw-r--r--src/mame/video/k051960.cpp18
-rw-r--r--src/mame/video/k051960.h2
-rw-r--r--src/mame/video/k052109.cpp6
-rw-r--r--src/mame/video/k052109.h2
-rw-r--r--src/mame/video/k053244_k053245.cpp22
-rw-r--r--src/mame/video/k053244_k053245.h4
-rw-r--r--src/mame/video/k053246_k053247_k055673.cpp20
-rw-r--r--src/mame/video/k053246_k053247_k055673.h2
-rw-r--r--src/mame/video/k053250.cpp2
-rw-r--r--src/mame/video/k053936.cpp23
-rw-r--r--src/mame/video/k053936.h6
-rw-r--r--src/mame/video/k054156_k054157_k056832.cpp23
-rw-r--r--src/mame/video/k054338.cpp14
-rw-r--r--src/mame/video/k054338.h2
-rw-r--r--src/mame/video/k055555.cpp19
-rw-r--r--src/mame/video/k057714.cpp12
-rw-r--r--src/mame/video/k057714.h2
-rw-r--r--src/mame/video/k1ge.cpp6
-rw-r--r--src/mame/video/k1ge.h4
-rw-r--r--src/mame/video/kan_pand.cpp8
-rw-r--r--src/mame/video/kan_pand.h4
-rw-r--r--src/mame/video/kaneko16.cpp8
-rw-r--r--src/mame/video/kaneko_grap2.cpp18
-rw-r--r--src/mame/video/kaneko_grap2.h8
-rw-r--r--src/mame/video/kaneko_spr.cpp17
-rw-r--r--src/mame/video/kaneko_spr.h4
-rw-r--r--src/mame/video/kaneko_tmap.cpp20
-rw-r--r--src/mame/video/kaneko_tmap.h6
-rw-r--r--src/mame/video/kangaroo.cpp4
-rw-r--r--src/mame/video/karnov.cpp4
-rw-r--r--src/mame/video/kncljoe.cpp4
-rw-r--r--src/mame/video/konami_helper.cpp2
-rw-r--r--src/mame/video/konamigx.cpp65
-rw-r--r--src/mame/video/ladyfrog.cpp4
-rw-r--r--src/mame/video/laserbat.cpp377
-rw-r--r--src/mame/video/lastduel.cpp8
-rw-r--r--src/mame/video/legionna.cpp45
-rw-r--r--src/mame/video/leland.cpp8
-rw-r--r--src/mame/video/lethalj.cpp4
-rw-r--r--src/mame/video/liberate.cpp4
-rw-r--r--src/mame/video/liberatr.cpp2
-rw-r--r--src/mame/video/lockon.cpp12
-rw-r--r--src/mame/video/lordgun.cpp2
-rw-r--r--src/mame/video/lwings.cpp2
-rw-r--r--src/mame/video/m10.cpp7
-rw-r--r--src/mame/video/m107.cpp13
-rw-r--r--src/mame/video/m52.cpp4
-rw-r--r--src/mame/video/m57.cpp4
-rw-r--r--src/mame/video/m58.cpp42
-rw-r--r--src/mame/video/m62.cpp4
-rw-r--r--src/mame/video/m72.cpp26
-rw-r--r--src/mame/video/macrossp.cpp16
-rw-r--r--src/mame/video/madalien.cpp2
-rw-r--r--src/mame/video/magmax.cpp2
-rw-r--r--src/mame/video/matmania.cpp4
-rw-r--r--src/mame/video/mb60553.cpp8
-rw-r--r--src/mame/video/mb60553.h4
-rw-r--r--src/mame/video/mcatadv.cpp16
-rw-r--r--src/mame/video/mcd212.cpp120
-rw-r--r--src/mame/video/mcr68.cpp16
-rw-r--r--src/mame/video/megasys1.cpp192
-rw-r--r--src/mame/video/megazone.cpp2
-rw-r--r--src/mame/video/metlclsh.cpp6
-rw-r--r--src/mame/video/metro.cpp4
-rw-r--r--src/mame/video/micro3d.cpp10
-rw-r--r--src/mame/video/microtan.cpp4
-rw-r--r--src/mame/video/midtunit.cpp6
-rw-r--r--src/mame/video/midvunit.cpp2
-rw-r--r--src/mame/video/midyunit.cpp12
-rw-r--r--src/mame/video/mitchell.cpp6
-rw-r--r--src/mame/video/mjkjidai.cpp2
-rw-r--r--src/mame/video/model1.cpp12
-rw-r--r--src/mame/video/model2.cpp6
-rw-r--r--src/mame/video/model3.cpp28
-rw-r--r--src/mame/video/msisaac.cpp2
-rw-r--r--src/mame/video/munchmo.cpp2
-rw-r--r--src/mame/video/mystston.cpp4
-rw-r--r--src/mame/video/mystwarr.cpp8
-rw-r--r--src/mame/video/n64.cpp114
-rw-r--r--src/mame/video/n64.h49
-rw-r--r--src/mame/video/namcos21.cpp34
-rw-r--r--src/mame/video/namcos22.cpp26
-rw-r--r--src/mame/video/nbmj8688.cpp10
-rw-r--r--src/mame/video/nbmj8891.cpp41
-rw-r--r--src/mame/video/nbmj8900.cpp22
-rw-r--r--src/mame/video/nbmj8991.cpp10
-rw-r--r--src/mame/video/nbmj9195.cpp32
-rw-r--r--src/mame/video/nemesis.cpp4
-rw-r--r--src/mame/video/neogeo_spr.cpp16
-rw-r--r--src/mame/video/neogeo_spr.h4
-rw-r--r--src/mame/video/newport.cpp4
-rw-r--r--src/mame/video/newport.h2
-rw-r--r--src/mame/video/nick.cpp1
-rw-r--r--src/mame/video/nick.h3
-rw-r--r--src/mame/video/ninjakd2.cpp18
-rw-r--r--src/mame/video/niyanpai.cpp40
-rw-r--r--src/mame/video/nmk16.cpp26
-rw-r--r--src/mame/video/offtwall.cpp8
-rw-r--r--src/mame/video/ojankohs.cpp10
-rw-r--r--src/mame/video/opwolf.cpp6
-rw-r--r--src/mame/video/orbit.cpp2
-rw-r--r--src/mame/video/othunder.cpp6
-rw-r--r--src/mame/video/p2000m.cpp2
-rw-r--r--src/mame/video/pacland.cpp6
-rw-r--r--src/mame/video/pastelg.cpp4
-rw-r--r--src/mame/video/pc080sn.cpp12
-rw-r--r--src/mame/video/pc080sn.h3
-rw-r--r--src/mame/video/pc090oj.cpp8
-rw-r--r--src/mame/video/pc090oj.h4
-rw-r--r--src/mame/video/pcd.cpp2
-rw-r--r--src/mame/video/pcw.cpp2
-rw-r--r--src/mame/video/pecom.cpp4
-rw-r--r--src/mame/video/pgm.cpp14
-rw-r--r--src/mame/video/phoenix.cpp18
-rw-r--r--src/mame/video/pitnrun.cpp8
-rw-r--r--src/mame/video/plygonet.cpp2
-rw-r--r--src/mame/video/poisk1.cpp8
-rw-r--r--src/mame/video/policetr.cpp2
-rw-r--r--src/mame/video/polyplay.cpp2
-rw-r--r--src/mame/video/poolshrk.cpp2
-rw-r--r--src/mame/video/popeye.cpp17
-rw-r--r--src/mame/video/powervr2.cpp2
-rw-r--r--src/mame/video/powervr2.h7
-rw-r--r--src/mame/video/ppu2c0x.cpp18
-rw-r--r--src/mame/video/ppu2c0x.h8
-rw-r--r--src/mame/video/prehisle.cpp4
-rw-r--r--src/mame/video/psikyo.cpp16
-rw-r--r--src/mame/video/psikyosh.cpp4
-rw-r--r--src/mame/video/psychic5.cpp2
-rw-r--r--src/mame/video/qix.cpp7
-rw-r--r--src/mame/video/quasar.cpp4
-rw-r--r--src/mame/video/quizdna.cpp10
-rw-r--r--src/mame/video/raiden.cpp4
-rw-r--r--src/mame/video/rastan.cpp10
-rw-r--r--src/mame/video/rdptpipe.cpp2
-rw-r--r--src/mame/video/realbrk.cpp8
-rw-r--r--src/mame/video/redalert.cpp4
-rw-r--r--src/mame/video/relief.cpp10
-rw-r--r--src/mame/video/rltennis.cpp8
-rw-r--r--src/mame/video/route16.cpp2
-rw-r--r--src/mame/video/rungun.cpp20
-rw-r--r--src/mame/video/scotrsht.cpp4
-rw-r--r--src/mame/video/sega16sp.cpp7
-rw-r--r--src/mame/video/sega16sp.h3
-rw-r--r--src/mame/video/segaic16.cpp6
-rw-r--r--src/mame/video/segaic16.h2
-rw-r--r--src/mame/video/segaic16_road.cpp22
-rw-r--r--src/mame/video/segaic16_road.h4
-rw-r--r--src/mame/video/segaic24.cpp32
-rw-r--r--src/mame/video/segaic24.h5
-rw-r--r--src/mame/video/segas16b.cpp4
-rw-r--r--src/mame/video/segas32.cpp14
-rw-r--r--src/mame/video/segaybd.cpp4
-rw-r--r--src/mame/video/seibu_crtc.cpp23
-rw-r--r--src/mame/video/seibu_crtc.h12
-rw-r--r--src/mame/video/seibuspi.cpp18
-rw-r--r--src/mame/video/seta.cpp15
-rw-r--r--src/mame/video/seta2.cpp6
-rw-r--r--src/mame/video/shadfrce.cpp6
-rw-r--r--src/mame/video/shuuz.cpp8
-rw-r--r--src/mame/video/sidearms.cpp14
-rw-r--r--src/mame/video/simpl156.cpp18
-rw-r--r--src/mame/video/skydiver.cpp30
-rw-r--r--src/mame/video/skyraid.cpp2
-rw-r--r--src/mame/video/slapshot.cpp10
-rw-r--r--src/mame/video/spacefb.cpp6
-rw-r--r--src/mame/video/special.cpp2
-rw-r--r--src/mame/video/sprint4.cpp2
-rw-r--r--src/mame/video/sprint8.cpp2
-rw-r--r--src/mame/video/srumbler.cpp6
-rw-r--r--src/mame/video/sspeedr.cpp2
-rw-r--r--src/mame/video/ssrj.cpp4
-rw-r--r--src/mame/video/ssv.cpp8
-rw-r--r--src/mame/video/ssystem3.cpp2
-rw-r--r--src/mame/video/st0020.cpp46
-rw-r--r--src/mame/video/st0020.h8
-rw-r--r--src/mame/video/stactics.cpp30
-rw-r--r--src/mame/video/starcrus.cpp12
-rw-r--r--src/mame/video/starshp1.cpp8
-rw-r--r--src/mame/video/suna16.cpp2
-rw-r--r--src/mame/video/super80.cpp10
-rw-r--r--src/mame/video/superchs.cpp6
-rw-r--r--src/mame/video/superqix.cpp8
-rw-r--r--src/mame/video/suprloco.cpp4
-rw-r--r--src/mame/video/system1.cpp24
-rw-r--r--src/mame/video/tagteam.cpp4
-rw-r--r--src/mame/video/taito_b.cpp10
-rw-r--r--src/mame/video/taito_f2.cpp32
-rw-r--r--src/mame/video/taito_f3.cpp60
-rw-r--r--src/mame/video/taitoair.cpp6
-rw-r--r--src/mame/video/taitojc.cpp421
-rw-r--r--src/mame/video/tank8.cpp2
-rw-r--r--src/mame/video/tankbust.cpp2
-rw-r--r--src/mame/video/taotaido.cpp18
-rw-r--r--src/mame/video/tatsumi.cpp16
-rw-r--r--src/mame/video/tc0080vco.cpp30
-rw-r--r--src/mame/video/tc0080vco.h2
-rw-r--r--src/mame/video/tc0100scn.cpp34
-rw-r--r--src/mame/video/tc0100scn.h2
-rw-r--r--src/mame/video/tc0110pcr.cpp4
-rw-r--r--src/mame/video/tc0110pcr.h2
-rw-r--r--src/mame/video/tc0180vcu.cpp8
-rw-r--r--src/mame/video/tc0180vcu.h4
-rw-r--r--src/mame/video/tc0280grd.cpp4
-rw-r--r--src/mame/video/tc0280grd.h2
-rw-r--r--src/mame/video/tc0480scp.cpp2
-rw-r--r--src/mame/video/tc0780fpa.cpp502
-rw-r--r--src/mame/video/tc0780fpa.h81
-rw-r--r--src/mame/video/tceptor.cpp34
-rw-r--r--src/mame/video/tecmo_mix.cpp6
-rw-r--r--src/mame/video/tecmo_mix.h2
-rw-r--r--src/mame/video/tehkanwc.cpp4
-rw-r--r--src/mame/video/terracre.cpp4
-rw-r--r--src/mame/video/tetrisp2.cpp24
-rw-r--r--src/mame/video/thepit.cpp4
-rw-r--r--src/mame/video/thief.cpp12
-rw-r--r--src/mame/video/thomson.cpp6
-rw-r--r--src/mame/video/thoop2.cpp2
-rw-r--r--src/mame/video/thunderj.cpp28
-rw-r--r--src/mame/video/ti85.cpp18
-rw-r--r--src/mame/video/tia.cpp8
-rw-r--r--src/mame/video/tia.h4
-rw-r--r--src/mame/video/tiamc1.cpp20
-rw-r--r--src/mame/video/tigeroad.cpp8
-rw-r--r--src/mame/video/tmnt.cpp26
-rw-r--r--src/mame/video/toaplan1.cpp58
-rw-r--r--src/mame/video/toaplan_scu.cpp4
-rw-r--r--src/mame/video/tp84.cpp4
-rw-r--r--src/mame/video/travrusa.cpp4
-rw-r--r--src/mame/video/triplhnt.cpp2
-rw-r--r--src/mame/video/tryout.cpp10
-rw-r--r--src/mame/video/tubep.cpp8
-rw-r--r--src/mame/video/turbo.cpp4
-rw-r--r--src/mame/video/turrett.cpp2
-rw-r--r--src/mame/video/twincobr.cpp12
-rw-r--r--src/mame/video/tx1.cpp58
-rw-r--r--src/mame/video/ultraman.cpp4
-rw-r--r--src/mame/video/ultratnk.cpp2
-rw-r--r--src/mame/video/undrfire.cpp10
-rw-r--r--src/mame/video/unico.cpp16
-rw-r--r--src/mame/video/vc4000.cpp2
-rw-r--r--src/mame/video/victory.cpp16
-rw-r--r--src/mame/video/vigilant.cpp2
-rw-r--r--src/mame/video/volfied.cpp6
-rw-r--r--src/mame/video/vrender0.h2
-rw-r--r--src/mame/video/vs920a.cpp4
-rw-r--r--src/mame/video/vs920a.h2
-rw-r--r--src/mame/video/vulgus.cpp4
-rw-r--r--src/mame/video/wecleman.cpp4
-rw-r--r--src/mame/video/williams.cpp12
-rw-r--r--src/mame/video/wolfpack.cpp4
-rw-r--r--src/mame/video/x68k.cpp71
-rw-r--r--src/mame/video/xmen.cpp8
-rw-r--r--src/mame/video/yiear.cpp4
-rw-r--r--src/mame/video/zac2650.cpp2
-rw-r--r--src/mame/video/zx.cpp4
-rw-r--r--src/osd/modules/debugger/debugint.cpp437
-rw-r--r--src/osd/modules/debugger/debugqt.cpp35
-rw-r--r--src/osd/modules/debugger/osx/disassemblyviewer.mm4
-rw-r--r--src/osd/modules/debugger/osx/memoryview.mm16
-rw-r--r--src/osd/modules/debugger/qt/breakpointswindow.cpp8
-rw-r--r--src/osd/modules/debugger/qt/breakpointswindow.h2
-rw-r--r--src/osd/modules/debugger/qt/dasmwindow.cpp24
-rw-r--r--src/osd/modules/debugger/qt/dasmwindow.h3
-rw-r--r--src/osd/modules/debugger/qt/debuggerview.cpp131
-rw-r--r--src/osd/modules/debugger/qt/debuggerview.h2
-rw-r--r--src/osd/modules/debugger/qt/deviceinformationwindow.cpp4
-rw-r--r--src/osd/modules/debugger/qt/deviceinformationwindow.h2
-rw-r--r--src/osd/modules/debugger/qt/deviceswindow.cpp6
-rw-r--r--src/osd/modules/debugger/qt/deviceswindow.h2
-rw-r--r--src/osd/modules/debugger/qt/logwindow.cpp2
-rw-r--r--src/osd/modules/debugger/qt/logwindow.h2
-rw-r--r--src/osd/modules/debugger/qt/mainwindow.cpp28
-rw-r--r--src/osd/modules/debugger/qt/mainwindow.h8
-rw-r--r--src/osd/modules/debugger/qt/memorywindow.cpp25
-rw-r--r--src/osd/modules/debugger/qt/memorywindow.h3
-rw-r--r--src/osd/modules/debugger/qt/windowqt.cpp37
-rw-r--r--src/osd/modules/debugger/qt/windowqt.h2
-rw-r--r--src/osd/modules/debugger/win/debugviewinfo.cpp2
-rw-r--r--src/osd/modules/debugger/win/disasmbasewininfo.cpp4
-rw-r--r--src/osd/modules/lib/osdobj_common.cpp10
-rw-r--r--src/osd/modules/lib/osdobj_common.h5
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp38
-rw-r--r--src/osd/modules/render/drawd3d.cpp4
-rw-r--r--src/osd/modules/render/drawsdl.cpp8
-rw-r--r--src/osd/modules/sound/coreaudio_sound.cpp6
-rw-r--r--src/osd/modules/sound/sdl_sound.cpp2
-rw-r--r--src/osd/modules/sound/xaudio2_sound.cpp731
-rw-r--r--src/osd/osdcore.cpp6
-rw-r--r--src/osd/osdcore.h11
-rw-r--r--src/osd/osdmini/minimisc.cpp12
-rw-r--r--src/osd/osdnet.cpp2
-rw-r--r--src/osd/sdl/input.cpp16
-rw-r--r--src/osd/sdl/osdsdl.h6
-rw-r--r--src/osd/sdl/output.cpp2
-rw-r--r--src/osd/sdl/sdlfile.cpp85
-rw-r--r--src/osd/sdl/sdlsocket.cpp1
-rw-r--r--src/osd/sdl/video.cpp16
-rw-r--r--src/osd/windows/input.cpp4
-rw-r--r--src/osd/windows/ledutil.cpp2
-rw-r--r--src/osd/windows/output.cpp28
-rw-r--r--src/osd/windows/video.cpp8
-rw-r--r--src/osd/windows/window.cpp12
-rw-r--r--src/osd/windows/winfile.cpp7
-rw-r--r--src/osd/windows/winmain.cpp2
-rw-r--r--src/osd/windows/winmain.h4
-rw-r--r--src/osd/windows/winutil.cpp14
-rw-r--r--src/tools/chdman.cpp31
-rw-r--r--src/tools/regrep.cpp6
-rw-r--r--src/version.cpp2
2999 files changed, 50971 insertions, 32553 deletions
diff --git a/src/devices/bus/a7800/a78_slot.cpp b/src/devices/bus/a7800/a78_slot.cpp
index 7fda107b70c..0509753a1c3 100644
--- a/src/devices/bus/a7800/a78_slot.cpp
+++ b/src/devices/bus/a7800/a78_slot.cpp
@@ -115,7 +115,7 @@ void device_a78_cart_interface::nvram_alloc(UINT32 size)
a78_cart_slot_device::a78_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, A78_CART_SLOT, "Atari 7800 Cartridge Slot", tag, owner, clock, "a78_cart_slot", __FILE__),
device_image_interface(mconfig, *this),
- device_slot_interface(mconfig, *this), m_cart(nullptr), m_type(0), m_stick_type(0)
+ device_slot_interface(mconfig, *this), m_cart(nullptr), m_type(0)
{
}
@@ -500,7 +500,7 @@ void a78_cart_slot_device::call_unload()
bool a78_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -528,11 +528,11 @@ int a78_cart_slot_device::verify_header(char *header)
get default card software
-------------------------------------------------*/
-void a78_cart_slot_device::get_default_card_software(std::string &result)
+std::string a78_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "a78_rom";
+ const char *slot_string;
dynamic_buffer head(128);
int type = A78_TYPE0, mapper;
@@ -586,10 +586,10 @@ void a78_cart_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
+ return std::string(slot_string);
}
else
- software_get_default_slot(result, "a78_rom");
+ return software_get_default_slot("a78_rom");
}
diff --git a/src/devices/bus/a7800/a78_slot.h b/src/devices/bus/a7800/a78_slot.h
index 4d006c7d94d..cbdc38741f2 100644
--- a/src/devices/bus/a7800/a78_slot.h
+++ b/src/devices/bus/a7800/a78_slot.h
@@ -99,7 +99,6 @@ public:
virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override;
int get_cart_type() { return m_type; };
- int identify_cart_type(UINT8 *ROM, UINT32 len);
bool has_cart() { return m_cart != nullptr; }
virtual iodevice_t image_type() const override { return IO_CARTSLOT; }
@@ -114,7 +113,7 @@ public:
virtual device_image_partialhash_func get_partial_hash() const override { return &a78_partialhash; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_04xx);
@@ -129,7 +128,6 @@ public:
private:
device_a78_cart_interface* m_cart;
int m_type;
- int m_stick_type;
int verify_header(char *header);
int validate_header(int head, bool log);
diff --git a/src/devices/bus/a800/a800_slot.cpp b/src/devices/bus/a800/a800_slot.cpp
index 148ab38ed03..b2e46a421da 100644
--- a/src/devices/bus/a800/a800_slot.cpp
+++ b/src/devices/bus/a800/a800_slot.cpp
@@ -305,7 +305,7 @@ void a800_cart_slot_device::call_unload()
bool a800_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -406,11 +406,11 @@ int a800_cart_slot_device::identify_cart_type(UINT8 *header)
get default card software
-------------------------------------------------*/
-void a800_cart_slot_device::get_default_card_software(std::string &result)
+std::string a800_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "a800_8k";
+ const char *slot_string;
dynamic_buffer head(0x10);
UINT32 len = core_fsize(m_file);
int type = A800_8K;
@@ -436,18 +436,18 @@ void a800_cart_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
+ return std::string(slot_string);
}
else
- software_get_default_slot(result, "a800_8k");
+ return software_get_default_slot("a800_8k");
}
-void a5200_cart_slot_device::get_default_card_software(std::string &result)
+std::string a5200_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "a5200";
+ const char *slot_string;
dynamic_buffer head(0x10);
UINT32 len = core_fsize(m_file);
int type = A5200_8K;
@@ -469,18 +469,18 @@ void a5200_cart_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
+ return std::string(slot_string);
}
else
- software_get_default_slot(result, "a5200");
+ return software_get_default_slot("a5200");
}
-void xegs_cart_slot_device::get_default_card_software(std::string &result)
+std::string xegs_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "xegs";
+ const char *slot_string;
dynamic_buffer head(0x10);
UINT32 len = core_fsize(m_file);
int type = A800_8K;
@@ -504,10 +504,10 @@ void xegs_cart_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
+ return std::string(slot_string);
}
else
- software_get_default_slot(result, "xegs");
+ return software_get_default_slot("xegs");
}
diff --git a/src/devices/bus/a800/a800_slot.h b/src/devices/bus/a800/a800_slot.h
index 95948109653..6efdd0839e9 100644
--- a/src/devices/bus/a800/a800_slot.h
+++ b/src/devices/bus/a800/a800_slot.h
@@ -113,7 +113,7 @@ public:
virtual const char *file_extensions() const override { return "bin,rom,car"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_80xx);
@@ -142,7 +142,7 @@ public:
virtual const char *file_extensions() const override { return "bin,rom,car,a52"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
};
// ======================> xegs_cart_slot_device
@@ -157,7 +157,7 @@ public:
virtual const char *file_extensions() const override { return "bin,rom,car"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
};
// device type definition
diff --git a/src/devices/bus/abckb/abc99.cpp b/src/devices/bus/abckb/abc99.cpp
index 01fd743d3eb..8dc4d9e75c7 100644
--- a/src/devices/bus/abckb/abc99.cpp
+++ b/src/devices/bus/abckb/abc99.cpp
@@ -588,14 +588,14 @@ WRITE8_MEMBER( abc99_device::z2_led_w )
{
if (m_led_en) return;
- output_set_led_value(LED_1, BIT(data, 0));
- output_set_led_value(LED_2, BIT(data, 1));
- output_set_led_value(LED_3, BIT(data, 2));
- output_set_led_value(LED_4, BIT(data, 3));
- output_set_led_value(LED_5, BIT(data, 4));
- output_set_led_value(LED_6, BIT(data, 5));
- output_set_led_value(LED_7, BIT(data, 6));
- output_set_led_value(LED_8, BIT(data, 7));
+ machine().output().set_led_value(LED_1, BIT(data, 0));
+ machine().output().set_led_value(LED_2, BIT(data, 1));
+ machine().output().set_led_value(LED_3, BIT(data, 2));
+ machine().output().set_led_value(LED_4, BIT(data, 3));
+ machine().output().set_led_value(LED_5, BIT(data, 4));
+ machine().output().set_led_value(LED_6, BIT(data, 5));
+ machine().output().set_led_value(LED_7, BIT(data, 6));
+ machine().output().set_led_value(LED_8, BIT(data, 7));
}
@@ -631,9 +631,9 @@ WRITE8_MEMBER( abc99_device::z2_p1_w )
m_t1_z5 = BIT(data, 2);
// key LEDs
- output_set_led_value(LED_INS, BIT(data, 3));
- output_set_led_value(LED_ALT, BIT(data, 4));
- output_set_led_value(LED_CAPS_LOCK, BIT(data, 5));
+ machine().output().set_led_value(LED_INS, BIT(data, 3));
+ machine().output().set_led_value(LED_ALT, BIT(data, 4));
+ machine().output().set_led_value(LED_CAPS_LOCK, BIT(data, 5));
// speaker output
m_speaker->level_w(!BIT(data, 6));
diff --git a/src/devices/bus/adam/exp.cpp b/src/devices/bus/adam/exp.cpp
index a8ac09cf676..3c43a400ff0 100644
--- a/src/devices/bus/adam/exp.cpp
+++ b/src/devices/bus/adam/exp.cpp
@@ -90,7 +90,7 @@ bool adam_expansion_slot_device::call_load()
{
if (m_card)
{
- size_t size = 0;
+ size_t size;
if (software_entry() == nullptr)
{
@@ -114,7 +114,7 @@ bool adam_expansion_slot_device::call_load()
bool adam_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -124,9 +124,9 @@ bool adam_expansion_slot_device::call_softlist_load(software_list_device &swlist
// get_default_card_software -
//-------------------------------------------------
-void adam_expansion_slot_device::get_default_card_software(std::string &result)
+std::string adam_expansion_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h
index 0ede272e340..bd764c667c9 100644
--- a/src/devices/bus/adam/exp.h
+++ b/src/devices/bus/adam/exp.h
@@ -87,7 +87,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
devcb_write_line m_write_irq;
diff --git a/src/devices/bus/amiga/zorro/buddha.cpp b/src/devices/bus/amiga/zorro/buddha.cpp
index 7ea65396afa..6f21e86d9be 100644
--- a/src/devices/bus/amiga/zorro/buddha.cpp
+++ b/src/devices/bus/amiga/zorro/buddha.cpp
@@ -220,7 +220,7 @@ WRITE_LINE_MEMBER( buddha_device::ide_1_interrupt_w)
READ16_MEMBER( buddha_device::ide_0_interrupt_r )
{
- UINT16 data = 0xffff;
+ UINT16 data;
data = m_ide_0_interrupt << 15;
@@ -234,7 +234,7 @@ READ16_MEMBER( buddha_device::ide_0_interrupt_r )
READ16_MEMBER( buddha_device::ide_1_interrupt_r )
{
- UINT16 data = 0xffff;
+ UINT16 data;
data = m_ide_1_interrupt << 15;
@@ -255,7 +255,7 @@ WRITE16_MEMBER( buddha_device::ide_interrupt_enable_w )
READ16_MEMBER( buddha_device::ide_0_cs0_r )
{
- UINT16 data = 0xffff;
+ UINT16 data;
mem_mask = (mem_mask << 8) | (mem_mask >> 8);
data = m_ata_0->read_cs0(space, (offset >> 1) & 0x07, mem_mask);
@@ -279,7 +279,7 @@ WRITE16_MEMBER( buddha_device::ide_0_cs0_w )
READ16_MEMBER( buddha_device::ide_0_cs1_r )
{
- UINT16 data = 0xffff;
+ UINT16 data;
mem_mask = (mem_mask << 8) | (mem_mask >> 8);
data = m_ata_0->read_cs1(space, (offset >> 1) & 0x07, mem_mask);
@@ -303,7 +303,7 @@ WRITE16_MEMBER( buddha_device::ide_0_cs1_w )
READ16_MEMBER( buddha_device::ide_1_cs0_r )
{
- UINT16 data = 0xffff;
+ UINT16 data;
mem_mask = (mem_mask << 8) | (mem_mask >> 8);
data = m_ata_1->read_cs0(space, (offset >> 1) & 0x07, mem_mask);
@@ -327,7 +327,7 @@ WRITE16_MEMBER( buddha_device::ide_1_cs0_w )
READ16_MEMBER( buddha_device::ide_1_cs1_r )
{
- UINT16 data = 0xffff;
+ UINT16 data;
mem_mask = (mem_mask << 8) | (mem_mask >> 8);
data = m_ata_1->read_cs1(space, (offset >> 1) & 0x07, mem_mask);
diff --git a/src/devices/bus/apf/slot.cpp b/src/devices/bus/apf/slot.cpp
index b94f286798c..eb2e17d9f80 100644
--- a/src/devices/bus/apf/slot.cpp
+++ b/src/devices/bus/apf/slot.cpp
@@ -212,7 +212,7 @@ bool apf_cart_slot_device::call_load()
bool apf_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -221,11 +221,11 @@ bool apf_cart_slot_device::call_softlist_load(software_list_device &swlist, cons
get default card software
-------------------------------------------------*/
-void apf_cart_slot_device::get_default_card_software(std::string &result)
+std::string apf_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "std";
+ const char *slot_string;
UINT32 size = core_fsize(m_file);
int type = APF_STD;
@@ -240,11 +240,10 @@ void apf_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "std");
+ return software_get_default_slot("std");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/apf/slot.h b/src/devices/bus/apf/slot.h
index 15d2c8500a9..e8260ab55bc 100644
--- a/src/devices/bus/apf/slot.h
+++ b/src/devices/bus/apf/slot.h
@@ -84,7 +84,7 @@ public:
virtual const char *file_extensions() const override { return "bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
diff --git a/src/devices/bus/arcadia/slot.cpp b/src/devices/bus/arcadia/slot.cpp
index eec8c412775..3a6aee846ab 100644
--- a/src/devices/bus/arcadia/slot.cpp
+++ b/src/devices/bus/arcadia/slot.cpp
@@ -220,7 +220,7 @@ bool arcadia_cart_slot_device::call_load()
bool arcadia_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -230,9 +230,9 @@ bool arcadia_cart_slot_device::call_softlist_load(software_list_device &swlist,
get default card software
-------------------------------------------------*/
-void arcadia_cart_slot_device::get_default_card_software(std::string &result)
+std::string arcadia_cart_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "std");
+ return software_get_default_slot("std");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/arcadia/slot.h b/src/devices/bus/arcadia/slot.h
index b4777024f2c..e018b40595d 100644
--- a/src/devices/bus/arcadia/slot.h
+++ b/src/devices/bus/arcadia/slot.h
@@ -73,7 +73,7 @@ public:
virtual const char *file_extensions() const override { return "bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
diff --git a/src/devices/bus/astrocde/slot.cpp b/src/devices/bus/astrocde/slot.cpp
index 877df4773a0..8ae7bbe8c15 100644
--- a/src/devices/bus/astrocde/slot.cpp
+++ b/src/devices/bus/astrocde/slot.cpp
@@ -189,7 +189,7 @@ bool astrocade_cart_slot_device::call_load()
bool astrocade_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -198,11 +198,11 @@ bool astrocade_cart_slot_device::call_softlist_load(software_list_device &swlist
get default card software
-------------------------------------------------*/
-void astrocade_cart_slot_device::get_default_card_software(std::string &result)
+std::string astrocade_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "rom";
+ const char *slot_string;
UINT32 size = core_fsize(m_file);
int type = ASTROCADE_STD;
@@ -216,11 +216,10 @@ void astrocade_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "rom");
+ return software_get_default_slot("rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/astrocde/slot.h b/src/devices/bus/astrocde/slot.h
index 42e8026305e..1a28ccf4b96 100644
--- a/src/devices/bus/astrocde/slot.h
+++ b/src/devices/bus/astrocde/slot.h
@@ -30,7 +30,6 @@ public:
virtual DECLARE_READ8_MEMBER(read_rom) { return 0xff; }
void rom_alloc(UINT32 size, const char *tag);
- void ram_alloc(UINT32 size);
UINT8* get_rom_base() { return m_rom; }
UINT32 get_rom_size() { return m_rom_size; }
@@ -74,7 +73,7 @@ public:
virtual const char *file_extensions() const override { return "bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
diff --git a/src/devices/bus/c64/exp.cpp b/src/devices/bus/c64/exp.cpp
index 1155cf54d69..47e2a20cc14 100644
--- a/src/devices/bus/c64/exp.cpp
+++ b/src/devices/bus/c64/exp.cpp
@@ -117,7 +117,7 @@ bool c64_expansion_slot_device::call_load()
{
if (m_card)
{
- size_t size = 0;
+ size_t size;
if (software_entry() == nullptr)
{
@@ -207,7 +207,7 @@ bool c64_expansion_slot_device::call_load()
bool c64_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -217,20 +217,17 @@ bool c64_expansion_slot_device::call_softlist_load(software_list_device &swlist,
// get_default_card_software -
//-------------------------------------------------
-void c64_expansion_slot_device::get_default_card_software(std::string &result)
+std::string c64_expansion_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
if (!core_stricmp(filetype(), "crt"))
- {
- cbm_crt_get_card(result, m_file);
- return;
- }
+ return cbm_crt_get_card(m_file);
clear();
}
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h
index 1e3c4ad049c..d72a91475be 100644
--- a/src/devices/bus/c64/exp.h
+++ b/src/devices/bus/c64/exp.h
@@ -149,7 +149,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
devcb_read8 m_read_dma_cd;
devcb_write8 m_write_dma_cd;
diff --git a/src/devices/bus/c64/geocable.h b/src/devices/bus/c64/geocable.h
index 373fcd25a73..6b823b9a668 100644
--- a/src/devices/bus/c64/geocable.h
+++ b/src/devices/bus/c64/geocable.h
@@ -51,8 +51,6 @@ protected:
private:
required_device<centronics_device> m_centronics;
-
- void update_output();
};
diff --git a/src/devices/bus/c64/magic_voice.h b/src/devices/bus/c64/magic_voice.h
index cfcd2aaded8..f5e8af19e59 100644
--- a/src/devices/bus/c64/magic_voice.h
+++ b/src/devices/bus/c64/magic_voice.h
@@ -40,8 +40,6 @@ public:
DECLARE_WRITE8_MEMBER( tpi_pa_w );
DECLARE_READ8_MEMBER( tpi_pb_r );
DECLARE_WRITE8_MEMBER( tpi_pb_w );
- DECLARE_READ8_MEMBER( tpi_pc_r );
- DECLARE_WRITE8_MEMBER( tpi_pc_w );
DECLARE_WRITE_LINE_MEMBER( tpi_ca_w );
DECLARE_WRITE_LINE_MEMBER( tpi_cb_w );
diff --git a/src/devices/bus/cbm2/exp.cpp b/src/devices/bus/cbm2/exp.cpp
index 4eb95e81bb2..fd4993760c3 100644
--- a/src/devices/bus/cbm2/exp.cpp
+++ b/src/devices/bus/cbm2/exp.cpp
@@ -103,7 +103,7 @@ void cbm2_expansion_slot_device::device_reset()
bool cbm2_expansion_slot_device::call_load()
{
- size_t size = 0;
+ size_t size;
if (m_card)
{
@@ -145,7 +145,7 @@ bool cbm2_expansion_slot_device::call_load()
bool cbm2_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -155,9 +155,9 @@ bool cbm2_expansion_slot_device::call_softlist_load(software_list_device &swlist
// get_default_card_software -
//-------------------------------------------------
-void cbm2_expansion_slot_device::get_default_card_software(std::string &result)
+std::string cbm2_expansion_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/cbm2/exp.h b/src/devices/bus/cbm2/exp.h
index 771a66604cc..ce5daf10dbb 100644
--- a/src/devices/bus/cbm2/exp.h
+++ b/src/devices/bus/cbm2/exp.h
@@ -96,7 +96,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
device_cbm2_expansion_card_interface *m_card;
};
diff --git a/src/devices/bus/cbm2/hrg.cpp b/src/devices/bus/cbm2/hrg.cpp
index cb489ec359f..bb0e38a22cb 100644
--- a/src/devices/bus/cbm2/hrg.cpp
+++ b/src/devices/bus/cbm2/hrg.cpp
@@ -14,6 +14,7 @@
- version A (EF9365, 512x512 interlaced, 1 page)
- version B (EF9366, 512x256 non-interlaced, 2 pages)
+ - 256KB version ROM
*/
@@ -26,7 +27,7 @@
//**************************************************************************
#define EF9365_TAG "ef9365"
-#define EF9366_TAG "ef9366"
+#define EF9366_TAG EF9365_TAG
#define SCREEN_TAG "screen"
@@ -35,8 +36,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-const device_type CBM2_HRG_A = &device_creator<cbm2_graphic_cartridge_a_device>;
-const device_type CBM2_HRG_B = &device_creator<cbm2_graphic_cartridge_b_device>;
+const device_type CBM2_HRG_A = &device_creator<cbm2_hrg_a_t>;
+const device_type CBM2_HRG_B = &device_creator<cbm2_hrg_b_t>;
//-------------------------------------------------
@@ -53,25 +54,50 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
-const rom_entry *cbm2_graphic_cartridge_device::device_rom_region() const
+const rom_entry *cbm2_hrg_t::device_rom_region() const
{
return ROM_NAME( cbm2_hrg );
}
//-------------------------------------------------
+// ADDRESS_MAP( hrg_a_map )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( hrg_a_map, AS_0, 8, cbm2_hrg_a_t )
+ ADDRESS_MAP_GLOBAL_MASK(0x7fff)
+ AM_RANGE(0x0000, 0x7fff) AM_RAM
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// ADDRESS_MAP( hrg_b_map )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( hrg_b_map, AS_0, 8, cbm2_hrg_b_t )
+ ADDRESS_MAP_GLOBAL_MASK(0x3fff)
+ AM_RANGE(0x0000, 0x3fff) AM_RAM
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( cbm2_hrg_a )
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_a )
-/* MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
- MCFG_SCREEN_UPDATE_DEVICE(EF9365_TAG, ef9365_device, screen_update)
- MCFG_SCREEN_SIZE(512, 512)
- MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_REFRESH_RATE(50)
-
- MCFG_EF9365_ADD(EF9365_TAG, gdp_intf)*/
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE(EF9365_TAG, ef9365_device, screen_update)
+ 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_DEVICE_ADD(EF9365_TAG, EF9365, 1750000)
+ MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_a_map)
+ MCFG_EF936X_PALETTE("palette")
+ MCFG_EF936X_BITPLANES_CNT(1);
+ MCFG_EF936X_DISPLAYMODE(EF936X_512x512_DISPLAY_MODE);
MACHINE_CONFIG_END
@@ -80,14 +106,19 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_b )
-/* MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
- MCFG_SCREEN_UPDATE_DEVICE(EF9366_TAG, ef9366_device, screen_update)
- MCFG_SCREEN_SIZE(512, 256)
- MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_REFRESH_RATE(50)
-
- MCFG_EF9366_ADD(EF9366_TAG, gdp_intf)*/
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_UPDATE_DEVICE(EF9366_TAG, ef9365_device, screen_update)
+ 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_DEVICE_ADD(EF9366_TAG, EF9365, 1750000)
+ MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_b_map)
+ MCFG_EF936X_PALETTE("palette")
+ MCFG_EF936X_BITPLANES_CNT(1);
+ MCFG_EF936X_DISPLAYMODE(EF936X_512x256_DISPLAY_MODE);
MACHINE_CONFIG_END
@@ -96,12 +127,12 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
-machine_config_constructor cbm2_graphic_cartridge_a_device::device_mconfig_additions() const
+machine_config_constructor cbm2_hrg_a_t::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cbm2_hrg_a );
}
-machine_config_constructor cbm2_graphic_cartridge_b_device::device_mconfig_additions() const
+machine_config_constructor cbm2_hrg_b_t::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cbm2_hrg_b );
}
@@ -113,25 +144,24 @@ machine_config_constructor cbm2_graphic_cartridge_b_device::device_mconfig_addit
//**************************************************************************
//-------------------------------------------------
-// cbm2_graphic_cartridge_device - constructor
+// cbm2_hrg_t - constructor
//-------------------------------------------------
-cbm2_graphic_cartridge_device::cbm2_graphic_cartridge_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) :
+cbm2_hrg_t::cbm2_hrg_t(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_cbm2_expansion_card_interface(mconfig, *this),
+ m_gdc(*this, EF9366_TAG),
m_bank3(*this, "bank3")
{
}
-cbm2_graphic_cartridge_a_device::cbm2_graphic_cartridge_a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
- cbm2_graphic_cartridge_device(mconfig, CBM2_HRG_A, "CBM 500/600/700 High Resolution Graphics (A)", tag, owner, clock, "cbm2_hrga", __FILE__)
- //m_gdc(*this, EF9365_TAG)
+cbm2_hrg_a_t::cbm2_hrg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ cbm2_hrg_t(mconfig, CBM2_HRG_A, "CBM 500/600/700 High Resolution Graphics (A)", tag, owner, clock, "cbm2_hrga", __FILE__)
{
}
-cbm2_graphic_cartridge_b_device::cbm2_graphic_cartridge_b_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
- cbm2_graphic_cartridge_device(mconfig, CBM2_HRG_B, "CBM 500/600/700 High Resolution Graphics (B)", tag, owner, clock, "cbm2_hrgb", __FILE__)
- //m_gdc(*this, EF9366_TAG)
+cbm2_hrg_b_t::cbm2_hrg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ cbm2_hrg_t(mconfig, CBM2_HRG_B, "CBM 500/600/700 High Resolution Graphics (B)", tag, owner, clock, "cbm2_hrgb", __FILE__)
{
}
@@ -140,7 +170,7 @@ cbm2_graphic_cartridge_b_device::cbm2_graphic_cartridge_b_device(const machine_c
// device_start - device-specific startup
//-------------------------------------------------
-void cbm2_graphic_cartridge_device::device_start()
+void cbm2_hrg_t::device_start()
{
}
@@ -149,9 +179,9 @@ void cbm2_graphic_cartridge_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
-void cbm2_graphic_cartridge_device::device_reset()
+void cbm2_hrg_t::device_reset()
{
- //m_gdc->reset();
+ m_gdc->reset();
}
@@ -159,7 +189,7 @@ void cbm2_graphic_cartridge_device::device_reset()
// cbm2_bd_r - cartridge data read
//-------------------------------------------------
-UINT8 cbm2_graphic_cartridge_device::cbm2_bd_r(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
+UINT8 cbm2_hrg_t::cbm2_bd_r(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
{
if (!csbank3)
{
@@ -190,7 +220,7 @@ UINT8 cbm2_graphic_cartridge_device::cbm2_bd_r(address_space &space, offs_t offs
}
else if (offset >= 0x7ff0)
{
- //data = m_gdc->data_r(space, offset & 0x07);
+ data = m_gdc->data_r(space, offset & 0x0f);
}
}
@@ -202,7 +232,7 @@ UINT8 cbm2_graphic_cartridge_device::cbm2_bd_r(address_space &space, offs_t offs
// cbm2_bd_w - cartridge data write
//-------------------------------------------------
-void cbm2_graphic_cartridge_device::cbm2_bd_w(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
+void cbm2_hrg_t::cbm2_bd_w(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
{
if (!csbank3)
{
@@ -225,7 +255,7 @@ void cbm2_graphic_cartridge_device::cbm2_bd_w(address_space &space, offs_t offse
}
else if (offset >= 0x7ff0)
{
- //m_gdc->data_w(space, offset & 0x07, data);
+ m_gdc->data_w(space, offset & 0x0f, data);
}
}
}
diff --git a/src/devices/bus/cbm2/hrg.h b/src/devices/bus/cbm2/hrg.h
index 604229e9da4..c93b806b3e1 100644
--- a/src/devices/bus/cbm2/hrg.h
+++ b/src/devices/bus/cbm2/hrg.h
@@ -13,6 +13,7 @@
#include "emu.h"
#include "exp.h"
+#include "video/ef9365.h"
@@ -20,15 +21,14 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> cbm2_graphic_cartridge_device
+// ======================> cbm2_hrg_t
-class cbm2_graphic_cartridge_device : public device_t,
- public device_cbm2_expansion_card_interface
+class cbm2_hrg_t : public device_t,
+ public device_cbm2_expansion_card_interface
{
public:
// construction/destruction
- cbm2_graphic_cartridge_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);
- cbm2_graphic_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ cbm2_hrg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
@@ -43,31 +43,31 @@ protected:
virtual void cbm2_bd_w(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3) override;
private:
- //required_device<ef9365_device> m_gdc;
+ required_device<ef9365_device> m_gdc;
required_memory_region m_bank3;
};
-// ======================> cbm2_graphic_cartridge_a_device
+// ======================> cbm2_hrg_a_t
-class cbm2_graphic_cartridge_a_device : public cbm2_graphic_cartridge_device
+class cbm2_hrg_a_t : public cbm2_hrg_t
{
public:
// construction/destruction
- cbm2_graphic_cartridge_a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ cbm2_hrg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
};
-// ======================> cbm2_graphic_cartridge_b_device
+// ======================> cbm2_hrg_b_t
-class cbm2_graphic_cartridge_b_device : public cbm2_graphic_cartridge_device
+class cbm2_hrg_b_t : public cbm2_hrg_t
{
public:
// construction/destruction
- cbm2_graphic_cartridge_b_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ cbm2_hrg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp
index a25aa7a434f..6e1be701b64 100644
--- a/src/devices/bus/cbmiec/c1541.cpp
+++ b/src/devices/bus/cbmiec/c1541.cpp
@@ -590,7 +590,7 @@ READ8_MEMBER( c1541_base_t::via0_pb_r )
*/
- UINT8 data = 0;
+ UINT8 data;
// data in
data = !m_bus->data_r() && !m_ga->atn_r();
@@ -722,7 +722,7 @@ WRITE8_MEMBER( c1541_base_t::via1_pb_w )
m_ga->stp_w(data & 0x03);
// activity LED
- output_set_led_value(LED_ACT, BIT(data, 3));
+ machine().output().set_led_value(LED_ACT, BIT(data, 3));
// density select
m_ga->ds_w((data >> 5) & 0x03);
diff --git a/src/devices/bus/cbmiec/c1571.cpp b/src/devices/bus/cbmiec/c1571.cpp
index 97ec044b271..976455387ae 100644
--- a/src/devices/bus/cbmiec/c1571.cpp
+++ b/src/devices/bus/cbmiec/c1571.cpp
@@ -303,7 +303,7 @@ READ8_MEMBER( c1571_t::via0_pb_r )
*/
- UINT8 data = 0;
+ UINT8 data;
// data in
data = !m_bus->data_r();
@@ -456,7 +456,7 @@ WRITE8_MEMBER( c1571_t::via1_pb_w )
m_ga->stp_w(data & 0x03); // TODO actually STP1=0, STP0=!(PB0^PB1), Y0=PB1, Y2=!PB1
// activity LED
- output_set_led_value(LED_ACT, BIT(data, 3));
+ machine().output().set_led_value(LED_ACT, BIT(data, 3));
// density select
m_ga->ds_w((data >> 5) & 0x03);
diff --git a/src/devices/bus/cbmiec/c1571.h b/src/devices/bus/cbmiec/c1571.h
index fde13dd0b66..cd0da9a3a3d 100644
--- a/src/devices/bus/cbmiec/c1571.h
+++ b/src/devices/bus/cbmiec/c1571.h
@@ -73,8 +73,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( byte_w );
- DECLARE_WRITE_LINE_MEMBER( wpt_w );
-
DECLARE_FLOPPY_FORMATS( floppy_formats );
void wpt_callback(floppy_image_device *floppy, int state);
diff --git a/src/devices/bus/cbmiec/c1581.cpp b/src/devices/bus/cbmiec/c1581.cpp
index 33bc082241e..e13317654a2 100644
--- a/src/devices/bus/cbmiec/c1581.cpp
+++ b/src/devices/bus/cbmiec/c1581.cpp
@@ -169,10 +169,10 @@ WRITE8_MEMBER( c1581_t::cia_pa_w )
m_floppy->mon_w(BIT(data, 2));
// power led
- output_set_led_value(LED_POWER, BIT(data, 5));
+ machine().output().set_led_value(LED_POWER, BIT(data, 5));
// activity led
- output_set_led_value(LED_ACT, BIT(data, 6));
+ machine().output().set_led_value(LED_ACT, BIT(data, 6));
}
READ8_MEMBER( c1581_t::cia_pb_r )
@@ -192,7 +192,7 @@ READ8_MEMBER( c1581_t::cia_pb_r )
*/
- UINT8 data = 0;
+ UINT8 data;
// data in
data = !m_bus->data_r();
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_ex800.h b/src/devices/bus/centronics/epson_ex800.h
index 23d960a055a..2b28229c0df 100644
--- a/src/devices/bus/centronics/epson_ex800.h
+++ b/src/devices/bus/centronics/epson_ex800.h
@@ -30,7 +30,6 @@ class epson_ex800_t : public device_t,
public:
// construction/destruction
epson_ex800_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- epson_ex800_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/centronics/epson_lx800.cpp b/src/devices/bus/centronics/epson_lx800.cpp
index cfcffb7329c..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); /* ? */
}
@@ -295,7 +294,7 @@ WRITE8_MEMBER( epson_lx800_t::portc_w )
logerror("%s: lx800_portc_w(%02x): %02x\n", machine().describe_context(), offset, data);
logerror("--> err: %d, ack: %d, fire: %d, buzzer: %d\n", BIT(data, 4), BIT(data, 5), BIT(data, 6), BIT(data, 7));
- output_set_value("online_led", !BIT(data, 2));
+ machine().output().set_value("online_led", !BIT(data, 2));
m_beep->set_state(!BIT(data, 7));
}
@@ -348,7 +347,7 @@ WRITE_LINE_MEMBER( epson_lx800_t::centronics_pe_w )
WRITE_LINE_MEMBER( epson_lx800_t::paperempty_led_w )
{
logerror("setting paperout led: %d\n", state);
- output_set_value("paperout_led", state);
+ machine().output().set_value("paperout_led", state);
}
WRITE_LINE_MEMBER( epson_lx800_t::reset_w )
diff --git a/src/devices/bus/centronics/epson_lx810l.cpp b/src/devices/bus/centronics/epson_lx810l.cpp
index 56e606d576f..fc7d557d928 100644
--- a/src/devices/bus/centronics/epson_lx810l.cpp
+++ b/src/devices/bus/centronics/epson_lx810l.cpp
@@ -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")
@@ -502,7 +502,7 @@ WRITE8_MEMBER( epson_lx810l_t::portc_w )
m_eeprom->clk_write(m_93c06_clk ? ASSERT_LINE : CLEAR_LINE);
m_eeprom->cs_write (m_93c06_cs ? ASSERT_LINE : CLEAR_LINE);
- output_set_value("online_led", !BIT(data, 2));
+ machine().output().set_value("online_led", !BIT(data, 2));
}
diff --git a/src/devices/bus/cgenie/expansion/floppy.h b/src/devices/bus/cgenie/expansion/floppy.h
index a85f26a68fe..540b2febebe 100644
--- a/src/devices/bus/cgenie/expansion/floppy.h
+++ b/src/devices/bus/cgenie/expansion/floppy.h
@@ -50,8 +50,6 @@ protected:
virtual void device_reset() override;
private:
- void update_irq();
-
required_device<fd1793_t> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
diff --git a/src/devices/bus/chanf/slot.cpp b/src/devices/bus/chanf/slot.cpp
index f46abf3b7c3..72045151cca 100644
--- a/src/devices/bus/chanf/slot.cpp
+++ b/src/devices/bus/chanf/slot.cpp
@@ -207,7 +207,7 @@ bool channelf_cart_slot_device::call_load()
bool channelf_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -217,11 +217,11 @@ bool channelf_cart_slot_device::call_softlist_load(software_list_device &swlist,
get default card software
-------------------------------------------------*/
-void channelf_cart_slot_device::get_default_card_software(std::string &result)
+std::string channelf_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "chess";
+ const char *slot_string;
UINT32 len = core_fsize(m_file);
int type;
@@ -235,10 +235,9 @@ void channelf_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "chess");
+ return software_get_default_slot("chess");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/chanf/slot.h b/src/devices/bus/chanf/slot.h
index cd20ce557c4..78ee692640e 100644
--- a/src/devices/bus/chanf/slot.h
+++ b/src/devices/bus/chanf/slot.h
@@ -87,7 +87,7 @@ public:
virtual const char *file_extensions() const override { return "bin,chf"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
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/coco/coco_fdc.cpp b/src/devices/bus/coco/coco_fdc.cpp
index f510993473d..6e434ea3e0a 100644
--- a/src/devices/bus/coco/coco_fdc.cpp
+++ b/src/devices/bus/coco/coco_fdc.cpp
@@ -266,7 +266,7 @@ void coco_fdc_device::update_lines()
void coco_fdc_device::dskreg_w(UINT8 data)
{
UINT8 drive = 0;
- UINT8 head = 0;
+ UINT8 head;
if (LOG_FDC)
{
diff --git a/src/devices/bus/coco/cococart.cpp b/src/devices/bus/coco/cococart.cpp
index e3f25389eb1..66cbc1dc121 100644
--- a/src/devices/bus/coco/cococart.cpp
+++ b/src/devices/bus/coco/cococart.cpp
@@ -160,7 +160,7 @@ WRITE8_MEMBER(cococart_slot_device::write)
static const char *line_value_string(cococart_line_value value)
{
- const char *s = nullptr;
+ const char *s;
switch(value)
{
case COCOCART_LINE_VALUE_CLEAR:
@@ -326,7 +326,7 @@ bool cococart_slot_device::call_load()
{
if (m_cart)
{
- offs_t read_length = 0;
+ offs_t read_length;
if (software_entry() == nullptr)
{
read_length = fread(m_cart->get_cart_base(), 0x8000);
@@ -354,7 +354,7 @@ bool cococart_slot_device::call_load()
bool cococart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
@@ -364,9 +364,9 @@ bool cococart_slot_device::call_softlist_load(software_list_device &swlist, cons
// get_default_card_software
//-------------------------------------------------
-void cococart_slot_device::get_default_card_software(std::string &result)
+std::string cococart_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "pak");
+ return software_get_default_slot("pak");
}
diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h
index ac53c52a0da..f92459b4388 100644
--- a/src/devices/bus/coco/cococart.h
+++ b/src/devices/bus/coco/cococart.h
@@ -102,7 +102,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing to $FF40-$FF7F
DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/bus/coleco/exp.cpp b/src/devices/bus/coleco/exp.cpp
index bf79854d857..05a53b584a5 100644
--- a/src/devices/bus/coleco/exp.cpp
+++ b/src/devices/bus/coleco/exp.cpp
@@ -102,7 +102,7 @@ bool colecovision_cartridge_slot_device::call_load()
bool colecovision_cartridge_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -112,18 +112,15 @@ bool colecovision_cartridge_slot_device::call_softlist_load(software_list_device
// get_default_card_software -
//-------------------------------------------------
-void colecovision_cartridge_slot_device::get_default_card_software(std::string &result)
+std::string colecovision_cartridge_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
UINT32 length = core_fsize(m_file);
if (length == 0x100000 || length == 0x200000)
- {
- software_get_default_slot(result, "xin1");
- return;
- }
+ return software_get_default_slot("xin1");
}
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/coleco/exp.h b/src/devices/bus/coleco/exp.h
index c70b06959a0..e64e3c8d6d1 100644
--- a/src/devices/bus/coleco/exp.h
+++ b/src/devices/bus/coleco/exp.h
@@ -93,7 +93,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
device_colecovision_cartridge_interface *m_card;
};
diff --git a/src/devices/bus/cpc/cpc_rom.cpp b/src/devices/bus/cpc/cpc_rom.cpp
index a60b8e35c0b..d0d59ea4452 100644
--- a/src/devices/bus/cpc/cpc_rom.cpp
+++ b/src/devices/bus/cpc/cpc_rom.cpp
@@ -110,15 +110,15 @@ bool rom_image_device::call_load()
device_image_interface* image = this;
UINT64 size = image->length();
- m_base = global_alloc_array(UINT8, 16384);
+ m_base = std::make_unique<UINT8[]>(16384);
if(size <= 16384)
{
- image->fread(m_base,size);
+ image->fread(m_base.get(),size);
}
else
{
image->fseek(size-16384,SEEK_SET);
- image->fread(m_base,16384);
+ image->fread(m_base.get(),16384);
}
return IMAGE_INIT_PASS;
@@ -130,6 +130,5 @@ bool rom_image_device::call_load()
-------------------------------------------------*/
void rom_image_device::call_unload()
{
- global_free_array(m_base);
m_base = nullptr;
}
diff --git a/src/devices/bus/cpc/cpc_rom.h b/src/devices/bus/cpc/cpc_rom.h
index b53a94d49d3..ee758aba761 100644
--- a/src/devices/bus/cpc/cpc_rom.h
+++ b/src/devices/bus/cpc/cpc_rom.h
@@ -39,7 +39,7 @@ public:
virtual const char *file_extensions() const override { return "rom,bin"; }
virtual const option_guide *create_option_guide() const override { return nullptr; }
- UINT8* base() { return m_base; }
+ UINT8* base() { return m_base.get(); }
protected:
// device-level overrides
@@ -47,7 +47,7 @@ protected:
virtual void device_start() override;
private:
- UINT8* m_base;
+ std::unique_ptr<UINT8[]> m_base;
};
diff --git a/src/devices/bus/cpc/mface2.cpp b/src/devices/bus/cpc/mface2.cpp
index 3bb01352876..bb4354041bc 100644
--- a/src/devices/bus/cpc/mface2.cpp
+++ b/src/devices/bus/cpc/mface2.cpp
@@ -107,9 +107,9 @@ void cpc_multiface2_device::multiface_rethink_memory()
{
/* set bank addressess */
machine().root_device().membank("bank1")->set_base(multiface_rom);
- machine().root_device().membank("bank2")->set_base(m_multiface_ram);
+ machine().root_device().membank("bank2")->set_base(m_multiface_ram.get());
machine().root_device().membank("bank9")->set_base(multiface_rom);
- machine().root_device().membank("bank10")->set_base(m_multiface_ram);
+ machine().root_device().membank("bank10")->set_base(m_multiface_ram.get());
}
}
@@ -326,7 +326,7 @@ void cpc_multiface2_device::device_start()
m_multiface_flags = MULTIFACE_VISIBLE;
/* allocate ram */
- m_multiface_ram = auto_alloc_array(machine(), UINT8, 8192);
+ m_multiface_ram = std::make_unique<UINT8[]>(8192);
}
//-------------------------------------------------
diff --git a/src/devices/bus/cpc/mface2.h b/src/devices/bus/cpc/mface2.h
index c54e38ec889..c64872af18b 100644
--- a/src/devices/bus/cpc/mface2.h
+++ b/src/devices/bus/cpc/mface2.h
@@ -59,7 +59,7 @@ private:
DIRECT_UPDATE_MEMBER( amstrad_default );
DIRECT_UPDATE_MEMBER( amstrad_multiface_directoverride );
- unsigned char *m_multiface_ram;
+ std::unique_ptr<UINT8[]> m_multiface_ram;
unsigned long m_multiface_flags;
UINT8 m_romdis;
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 adb3a152557..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
@@ -61,7 +61,7 @@ void cpc_transtape_device::device_start()
m_cpu = static_cast<cpu_device*>(machine().device("maincpu"));
m_space = &m_cpu->space(AS_IO);
- m_ram = auto_alloc_array_clear(machine(), UINT8, 0x2000);
+ m_ram = make_unique_clear<UINT8[]>(0x2000);
m_space->install_write_handler(0xfbf0,0xfbf0,0,0,write8_delegate(FUNC(cpc_transtape_device::output_w),this));
m_space->install_read_handler(0xfbff,0xfbff,0,0,read8_delegate(FUNC(cpc_transtape_device::input_r),this));
@@ -88,10 +88,10 @@ void cpc_transtape_device::map_enable()
}
if(m_output & 0x01) // RAM enable
{
- membank(":bank7")->set_base(m_ram);
- membank(":bank15")->set_base(m_ram);
- membank(":bank8")->set_base(m_ram); // repeats in second 8kB
- membank(":bank16")->set_base(m_ram);
+ membank(":bank7")->set_base(m_ram.get());
+ membank(":bank15")->set_base(m_ram.get());
+ membank(":bank8")->set_base(m_ram.get()); // repeats in second 8kB
+ membank(":bank16")->set_base(m_ram.get());
}
}
diff --git a/src/devices/bus/cpc/transtape.h b/src/devices/bus/cpc/transtape.h
index ec177f8ed7e..bb1a70e6ecc 100644
--- a/src/devices/bus/cpc/transtape.h
+++ b/src/devices/bus/cpc/transtape.h
@@ -41,7 +41,7 @@ private:
cpc_expansion_slot_device *m_slot;
cpu_device* m_cpu;
address_space* m_space;
- UINT8* m_ram; // 8kB internal RAM
+ std::unique_ptr<UINT8[]> m_ram; // 8kB internal RAM
bool m_rom_active;
bool m_romen;
UINT8 m_output;
diff --git a/src/devices/bus/crvision/slot.cpp b/src/devices/bus/crvision/slot.cpp
index 207105ea1d6..74c9eb28645 100644
--- a/src/devices/bus/crvision/slot.cpp
+++ b/src/devices/bus/crvision/slot.cpp
@@ -220,7 +220,7 @@ bool crvision_cart_slot_device::call_load()
bool crvision_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -229,11 +229,11 @@ bool crvision_cart_slot_device::call_softlist_load(software_list_device &swlist,
get default card software
-------------------------------------------------*/
-void crvision_cart_slot_device::get_default_card_software(std::string &result)
+std::string crvision_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "crv_rom4k";
+ const char *slot_string;
UINT32 size = core_fsize(m_file);
int type = CRV_4K;
@@ -267,11 +267,10 @@ void crvision_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "crv_rom4k");
+ return software_get_default_slot("crv_rom4k");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/crvision/slot.h b/src/devices/bus/crvision/slot.h
index b6da6c165df..d3bb02d6790 100644
--- a/src/devices/bus/crvision/slot.h
+++ b/src/devices/bus/crvision/slot.h
@@ -78,7 +78,7 @@ public:
virtual const char *file_extensions() const override { return "bin,rom"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom40);
diff --git a/src/devices/bus/dmv/k220.cpp b/src/devices/bus/dmv/k220.cpp
index 65e278943e1..cd1c55a39a6 100644
--- a/src/devices/bus/dmv/k220.cpp
+++ b/src/devices/bus/dmv/k220.cpp
@@ -236,8 +236,8 @@ WRITE8_MEMBER( dmv_k220_device::porta_w )
// 74LS247 BCD-to-Seven-Segment Decoder
static UINT8 bcd2hex[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x58, 0x4c, 0x62, 0x69, 0x78, 0x00 };
- output_set_digit_value(0, bcd2hex[(data >> 4) & 0x0f]);
- output_set_digit_value(1, bcd2hex[data & 0x0f]);
+ machine().output().set_digit_value(0, bcd2hex[(data >> 4) & 0x0f]);
+ machine().output().set_digit_value(1, bcd2hex[data & 0x0f]);
}
diff --git a/src/devices/bus/econet/e01.cpp b/src/devices/bus/econet/e01.cpp
index 162e8c7f6d6..ed60ccc2d28 100644
--- a/src/devices/bus/econet/e01.cpp
+++ b/src/devices/bus/econet/e01.cpp
@@ -482,7 +482,7 @@ void e01_device::device_timer(emu_timer &timer, device_timer_id id, int param, v
READ8_MEMBER( e01_device::read )
{
- UINT8 data = 0;
+ UINT8 data;
if (m_ram_en)
{
@@ -563,7 +563,7 @@ WRITE8_MEMBER( e01_device::floppy_w )
// TODO floppy test
// mode LED
- output_set_value("led_0", BIT(data, 7));
+ machine().output().set_value("led_0", BIT(data, 7));
}
diff --git a/src/devices/bus/econet/e01.h b/src/devices/bus/econet/e01.h
index 07c84969239..e83b9a0b6bd 100644
--- a/src/devices/bus/econet/e01.h
+++ b/src/devices/bus/econet/e01.h
@@ -47,7 +47,6 @@ public:
DECLARE_WRITE8_MEMBER( network_irq_enable_w );
DECLARE_READ8_MEMBER( hdc_data_r );
DECLARE_WRITE8_MEMBER( hdc_data_w );
- DECLARE_READ8_MEMBER( hdc_status_r );
DECLARE_WRITE8_MEMBER( hdc_select_w );
DECLARE_WRITE8_MEMBER( hdc_irq_enable_w );
DECLARE_READ8_MEMBER( rtc_address_r );
diff --git a/src/devices/bus/gameboy/gb_slot.cpp b/src/devices/bus/gameboy/gb_slot.cpp
index e70eb07c6d2..55555a8d4b2 100644
--- a/src/devices/bus/gameboy/gb_slot.cpp
+++ b/src/devices/bus/gameboy/gb_slot.cpp
@@ -262,7 +262,7 @@ bool base_gb_cart_slot_device::call_load()
{
if (m_cart)
{
- UINT32 offset = 0;
+ UINT32 offset;
UINT32 len = (software_entry() == nullptr) ? length() : get_software_region_length("rom");
UINT8 *ROM;
int rambanks = 0;
@@ -457,7 +457,7 @@ void base_gb_cart_slot_device::setup_ram(UINT8 banks)
bool base_gb_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -600,11 +600,11 @@ int base_gb_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len)
get default card software
-------------------------------------------------*/
-void base_gb_cart_slot_device::get_default_card_software(std::string &result)
+std::string base_gb_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "rom";
+ const char *slot_string;
UINT32 len = core_fsize(m_file), offset = 0;
dynamic_buffer rom(len);
int type;
@@ -623,23 +623,19 @@ void base_gb_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "rom");
+ return software_get_default_slot("rom");
}
-void megaduck_cart_slot_device::get_default_card_software(std::string &result)
+std::string megaduck_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
- {
- result.assign("rom");
- return;
- }
+ return std::string("rom");
- software_get_default_slot(result, "rom");
+ return software_get_default_slot("rom");
}
@@ -793,7 +789,7 @@ void base_gb_cart_slot_device::internal_header_logging(UINT8 *ROM, UINT32 len)
static const int ramsize[8] = { 0, 2, 8, 32, 128, 64, 0, 0 };
char soft[17];
- UINT32 tmp = 0;
+ UINT32 tmp;
int csum = 0, i = 0;
int rom_banks;
diff --git a/src/devices/bus/gameboy/gb_slot.h b/src/devices/bus/gameboy/gb_slot.h
index 3d37b7b11ec..a0108ec03c7 100644
--- a/src/devices/bus/gameboy/gb_slot.h
+++ b/src/devices/bus/gameboy/gb_slot.h
@@ -141,7 +141,7 @@ public:
virtual const char *file_extensions() const override { return "bin,gb,gbc"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
@@ -182,7 +182,7 @@ public:
virtual const char *file_extensions() const override { return "bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
};
diff --git a/src/devices/bus/gameboy/rom.h b/src/devices/bus/gameboy/rom.h
index 80fedd7a838..343d30195b0 100644
--- a/src/devices/bus/gameboy/rom.h
+++ b/src/devices/bus/gameboy/rom.h
@@ -44,7 +44,7 @@ public:
virtual DECLARE_READ8_MEMBER(read_rom) override;
virtual DECLARE_READ8_MEMBER(read_ram) override;
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
-
+
UINT16 m_tama5_data, m_tama5_addr, m_tama5_cmd;
UINT8 m_regs[32];
UINT8 m_rtc_reg;
diff --git a/src/devices/bus/gba/gba_slot.cpp b/src/devices/bus/gba/gba_slot.cpp
index 4e7c9f62060..217f3f9e954 100644
--- a/src/devices/bus/gba/gba_slot.cpp
+++ b/src/devices/bus/gba/gba_slot.cpp
@@ -245,7 +245,7 @@ void gba_cart_slot_device::call_unload()
bool gba_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -400,11 +400,11 @@ int gba_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len)
get default card software
-------------------------------------------------*/
-void gba_cart_slot_device::get_default_card_software(std::string &result)
+std::string gba_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "gba_rom";
+ const char *slot_string;
UINT32 len = core_fsize(m_file);
dynamic_buffer rom(len);
int type;
@@ -417,11 +417,10 @@ void gba_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "gba_rom");
+ return software_get_default_slot("gba_rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/gba/gba_slot.h b/src/devices/bus/gba/gba_slot.h
index 107334004ac..9d9a6a48be7 100644
--- a/src/devices/bus/gba/gba_slot.h
+++ b/src/devices/bus/gba/gba_slot.h
@@ -76,7 +76,6 @@ public:
int get_type() { return m_type; }
int get_cart_type(UINT8 *ROM, UINT32 len);
- void setup_ram(UINT8 banks);
void internal_header_logging(UINT8 *ROM, UINT32 len);
void save_nvram() { if (m_cart && m_cart->get_nvram_size()) m_cart->save_nvram(); }
@@ -92,7 +91,7 @@ public:
virtual const char *file_extensions() const override { return "gba,bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ32_MEMBER(read_rom);
diff --git a/src/devices/bus/generic/slot.cpp b/src/devices/bus/generic/slot.cpp
index 40a32ffcecd..4f3af4df411 100644
--- a/src/devices/bus/generic/slot.cpp
+++ b/src/devices/bus/generic/slot.cpp
@@ -169,7 +169,7 @@ void generic_slot_device::call_unload()
bool generic_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -179,9 +179,9 @@ bool generic_slot_device::call_softlist_load(software_list_device &swlist, const
get default card software
-------------------------------------------------*/
-void generic_slot_device::get_default_card_software(std::string &result)
+std::string generic_slot_device::get_default_card_software()
{
- software_get_default_slot(result, m_default_card);
+ return software_get_default_slot(m_default_card);
}
diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h
index bf3833558da..6a12c1cd84c 100644
--- a/src/devices/bus/generic/slot.h
+++ b/src/devices/bus/generic/slot.h
@@ -124,7 +124,7 @@ public:
virtual const char *file_extensions() const override { return m_extensions; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
diff --git a/src/devices/bus/ieee488/c2031.cpp b/src/devices/bus/ieee488/c2031.cpp
index 0cc16925615..0e455c35b67 100644
--- a/src/devices/bus/ieee488/c2031.cpp
+++ b/src/devices/bus/ieee488/c2031.cpp
@@ -259,7 +259,7 @@ WRITE8_MEMBER( c2031_device::via1_pb_w )
m_ga->stp_w(data & 0x03);
// activity LED
- output_set_led_value(LED_ACT, BIT(data, 3));
+ machine().output().set_led_value(LED_ACT, BIT(data, 3));
// density select
m_ga->ds_w((data >> 5) & 0x03);
diff --git a/src/devices/bus/ieee488/c2040.cpp b/src/devices/bus/ieee488/c2040.cpp
index 7b73a31ed2d..55dd8f9a072 100644
--- a/src/devices/bus/ieee488/c2040.cpp
+++ b/src/devices/bus/ieee488/c2040.cpp
@@ -363,13 +363,13 @@ WRITE8_MEMBER( c2040_t::riot1_pb_w )
*/
// activity led 1
- output_set_led_value(LED_ACT1, BIT(data, 3));
+ machine().output().set_led_value(LED_ACT1, BIT(data, 3));
// activity led 0
- output_set_led_value(LED_ACT0, BIT(data, 4));
+ machine().output().set_led_value(LED_ACT0, BIT(data, 4));
// error led
- output_set_led_value(LED_ERR, BIT(data, 5));
+ machine().output().set_led_value(LED_ERR, BIT(data, 5));
}
diff --git a/src/devices/bus/ieee488/c2040.h b/src/devices/bus/ieee488/c2040.h
index ef62555f1b9..74539e6524d 100644
--- a/src/devices/bus/ieee488/c2040.h
+++ b/src/devices/bus/ieee488/c2040.h
@@ -47,8 +47,6 @@ public:
DECLARE_READ8_MEMBER( riot1_pb_r );
DECLARE_WRITE8_MEMBER( riot1_pb_w );
DECLARE_WRITE8_MEMBER( via_pb_w );
- DECLARE_WRITE_LINE_MEMBER( mode_sel_w );
- DECLARE_WRITE_LINE_MEMBER( rw_sel_w );
DECLARE_FLOPPY_FORMATS( floppy_formats );
diff --git a/src/devices/bus/ieee488/c8050.cpp b/src/devices/bus/ieee488/c8050.cpp
index 4884e214bcd..ead9fad37a5 100644
--- a/src/devices/bus/ieee488/c8050.cpp
+++ b/src/devices/bus/ieee488/c8050.cpp
@@ -410,13 +410,13 @@ WRITE8_MEMBER( c8050_t::riot1_pb_w )
*/
// activity led 1
- output_set_led_value(LED_ACT1, BIT(data, 3));
+ machine().output().set_led_value(LED_ACT1, BIT(data, 3));
// activity led 0
- output_set_led_value(LED_ACT0, BIT(data, 4));
+ machine().output().set_led_value(LED_ACT0, BIT(data, 4));
// error led
- output_set_led_value(LED_ERR, BIT(data, 5));
+ machine().output().set_led_value(LED_ERR, BIT(data, 5));
}
WRITE8_MEMBER( c8050_t::via_pb_w )
diff --git a/src/devices/bus/ieee488/c8050.h b/src/devices/bus/ieee488/c8050.h
index 3dd65dfc742..71bd9ae42cf 100644
--- a/src/devices/bus/ieee488/c8050.h
+++ b/src/devices/bus/ieee488/c8050.h
@@ -47,8 +47,6 @@ public:
DECLARE_READ8_MEMBER( riot1_pb_r );
DECLARE_WRITE8_MEMBER( riot1_pb_w );
DECLARE_WRITE8_MEMBER( via_pb_w );
- DECLARE_READ8_MEMBER( pi_r );
- DECLARE_WRITE8_MEMBER( pi_w );
DECLARE_FLOPPY_FORMATS( floppy_formats );
diff --git a/src/devices/bus/ieee488/c8280.cpp b/src/devices/bus/ieee488/c8280.cpp
index 29ade86c570..05c39c7ffdd 100644
--- a/src/devices/bus/ieee488/c8280.cpp
+++ b/src/devices/bus/ieee488/c8280.cpp
@@ -266,13 +266,13 @@ WRITE8_MEMBER( c8280_t::riot1_pb_w )
*/
// activity led 1
- output_set_led_value(LED_ACT1, BIT(data, 3));
+ machine().output().set_led_value(LED_ACT1, BIT(data, 3));
// activity led 0
- output_set_led_value(LED_ACT0, BIT(data, 4));
+ machine().output().set_led_value(LED_ACT0, BIT(data, 4));
// error led
- output_set_led_value(LED_ERR, BIT(data, 5));
+ machine().output().set_led_value(LED_ERR, BIT(data, 5));
}
static SLOT_INTERFACE_START( c8280_floppies )
diff --git a/src/devices/bus/ieee488/d9060.cpp b/src/devices/bus/ieee488/d9060.cpp
index 3260ab80a08..68b63589ed9 100644
--- a/src/devices/bus/ieee488/d9060.cpp
+++ b/src/devices/bus/ieee488/d9060.cpp
@@ -302,13 +302,13 @@ WRITE8_MEMBER( d9060_base_t::riot1_pb_w )
*/
// ready led
- output_set_led_value(LED_READY, BIT(data, 4));
+ machine().output().set_led_value(LED_READY, BIT(data, 4));
// power led
- output_set_led_value(LED_POWER, BIT(data, 5));
+ machine().output().set_led_value(LED_POWER, BIT(data, 5));
// error led
- output_set_led_value(LED_ERROR, !BIT(data, 5));
+ machine().output().set_led_value(LED_ERROR, !BIT(data, 5));
}
diff --git a/src/devices/bus/ieee488/d9060.h b/src/devices/bus/ieee488/d9060.h
index e5681dae310..104daec4a11 100644
--- a/src/devices/bus/ieee488/d9060.h
+++ b/src/devices/bus/ieee488/d9060.h
@@ -52,7 +52,6 @@ public:
DECLARE_WRITE8_MEMBER( riot1_pa_w );
DECLARE_READ8_MEMBER( riot1_pb_r );
DECLARE_WRITE8_MEMBER( riot1_pb_w );
- DECLARE_READ8_MEMBER( via_pb_r );
DECLARE_WRITE8_MEMBER( via_pb_w );
DECLARE_WRITE_LINE_MEMBER( ack_w );
DECLARE_WRITE_LINE_MEMBER( enable_w );
diff --git a/src/devices/bus/ieee488/hardbox.cpp b/src/devices/bus/ieee488/hardbox.cpp
index 83dc8caa150..c03f147250d 100644
--- a/src/devices/bus/ieee488/hardbox.cpp
+++ b/src/devices/bus/ieee488/hardbox.cpp
@@ -254,9 +254,9 @@ WRITE8_MEMBER( hardbox_device::ppi1_pc_w )
*/
- output_set_led_value(LED_A, !BIT(data, 0));
- output_set_led_value(LED_B, !BIT(data, 1));
- output_set_led_value(LED_READY, !BIT(data, 2));
+ machine().output().set_led_value(LED_A, !BIT(data, 0));
+ machine().output().set_led_value(LED_B, !BIT(data, 1));
+ machine().output().set_led_value(LED_READY, !BIT(data, 2));
}
//-------------------------------------------------
diff --git a/src/devices/bus/ieee488/softbox.cpp b/src/devices/bus/ieee488/softbox.cpp
index 02d75d19a34..0536b4aba07 100644
--- a/src/devices/bus/ieee488/softbox.cpp
+++ b/src/devices/bus/ieee488/softbox.cpp
@@ -212,9 +212,9 @@ WRITE8_MEMBER( softbox_device::ppi1_pc_w )
*/
- output_set_led_value(LED_A, !BIT(data, 0));
- output_set_led_value(LED_B, !BIT(data, 1));
- output_set_led_value(LED_READY, !BIT(data, 2));
+ machine().output().set_led_value(LED_A, !BIT(data, 0));
+ machine().output().set_led_value(LED_B, !BIT(data, 1));
+ machine().output().set_led_value(LED_READY, !BIT(data, 2));
}
static DEVICE_INPUT_DEFAULTS_START( terminal )
diff --git a/src/devices/bus/imi7000/imi7000.h b/src/devices/bus/imi7000/imi7000.h
index 391899a63f9..e374fedb6d9 100644
--- a/src/devices/bus/imi7000/imi7000.h
+++ b/src/devices/bus/imi7000/imi7000.h
@@ -76,8 +76,6 @@ public:
// construction/destruction
imi7000_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- void add_device(imi7000_slot_device *slot, device_t *target);
-
protected:
// device-level overrides
virtual void device_start() override;
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/intv/slot.cpp b/src/devices/bus/intv/slot.cpp
index 05e55e49318..87f36e14bac 100644
--- a/src/devices/bus/intv/slot.cpp
+++ b/src/devices/bus/intv/slot.cpp
@@ -409,8 +409,8 @@ bool intv_cart_slot_device::call_load()
if (m_type == INTV_WSMLB)
extra_bank = true;
- UINT32 size = 0;
- UINT16 address = 0;
+ UINT32 size;
+ UINT16 address;
UINT8 *ROM, *region;
m_cart->rom_alloc(extra_bank ? 0x22000 : 0x20000, tag());
@@ -450,7 +450,7 @@ bool intv_cart_slot_device::call_load()
bool intv_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -459,11 +459,11 @@ bool intv_cart_slot_device::call_softlist_load(software_list_device &swlist, con
get default card software
-------------------------------------------------*/
-void intv_cart_slot_device::get_default_card_software(std::string &result)
+std::string intv_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "intv_rom";
+ const char *slot_string;
UINT32 len = core_fsize(m_file);
dynamic_buffer rom(len);
int type = INTV_STD;
@@ -503,10 +503,9 @@ void intv_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "intv_rom");
+ return software_get_default_slot("intv_rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/intv/slot.h b/src/devices/bus/intv/slot.h
index 865866ca2e0..7d970f18a52 100644
--- a/src/devices/bus/intv/slot.h
+++ b/src/devices/bus/intv/slot.h
@@ -120,7 +120,7 @@ public:
virtual const char *file_extensions() const override { return "bin,int,rom,itv"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ16_MEMBER(read_rom04) { if (m_cart) return m_cart->read_rom04(space, offset, mem_mask); else return 0xffff; }
diff --git a/src/devices/bus/iq151/iq151.cpp b/src/devices/bus/iq151/iq151.cpp
index de7f9355cb3..3d4ef7abe05 100644
--- a/src/devices/bus/iq151/iq151.cpp
+++ b/src/devices/bus/iq151/iq151.cpp
@@ -167,7 +167,7 @@ bool iq151cart_slot_device::call_load()
{
if (m_cart)
{
- offs_t read_length = 0;
+ offs_t read_length;
UINT8 *cart_base = m_cart->get_cart_base();
if (cart_base != nullptr)
@@ -196,7 +196,7 @@ bool iq151cart_slot_device::call_load()
bool iq151cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
@@ -204,7 +204,7 @@ bool iq151cart_slot_device::call_softlist_load(software_list_device &swlist, con
get default card software
-------------------------------------------------*/
-void iq151cart_slot_device::get_default_card_software(std::string &result)
+std::string iq151cart_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "basic6");
+ return software_get_default_slot("basic6");
}
diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h
index c88948c925c..292362f0d45 100644
--- a/src/devices/bus/iq151/iq151.h
+++ b/src/devices/bus/iq151/iq151.h
@@ -106,7 +106,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual void read(offs_t offset, UINT8 &data);
diff --git a/src/devices/bus/iq151/minigraf.cpp b/src/devices/bus/iq151/minigraf.cpp
index ca4ffdcc463..1a8e9d182a0 100644
--- a/src/devices/bus/iq151/minigraf.cpp
+++ b/src/devices/bus/iq151/minigraf.cpp
@@ -62,7 +62,7 @@ void iq151_minigraf_device::device_start()
m_rom = (UINT8*)memregion("minigraf")->base();
// allocate a bitmap for represent the paper
- m_paper = auto_bitmap_ind16_alloc(machine(), PAPER_WIDTH, PAPER_HEIGHT);
+ m_paper = std::make_unique<bitmap_ind16>(PAPER_WIDTH, PAPER_HEIGHT);
m_paper->fill(0);
m_pen = 0;
diff --git a/src/devices/bus/iq151/minigraf.h b/src/devices/bus/iq151/minigraf.h
index 311d79e97f1..6632fa31aa4 100644
--- a/src/devices/bus/iq151/minigraf.h
+++ b/src/devices/bus/iq151/minigraf.h
@@ -46,7 +46,7 @@ private:
UINT8 m_pen;
UINT8 m_control;
- bitmap_ind16 * m_paper;
+ std::unique_ptr<bitmap_ind16> m_paper;
};
diff --git a/src/devices/bus/iq151/ms151a.cpp b/src/devices/bus/iq151/ms151a.cpp
index 1a4ee73d586..99da92c6d61 100644
--- a/src/devices/bus/iq151/ms151a.cpp
+++ b/src/devices/bus/iq151/ms151a.cpp
@@ -61,7 +61,7 @@ void iq151_ms151a_device::device_start()
m_rom = (UINT8*)memregion("ms151a")->base();
// allocate a bitmap for represent the paper
- m_paper = auto_bitmap_ind16_alloc(machine(), PAPER_WIDTH, PAPER_HEIGHT);
+ m_paper = std::make_unique<bitmap_ind16>(PAPER_WIDTH, PAPER_HEIGHT);
m_paper->fill(0);
m_pen = 0;
diff --git a/src/devices/bus/iq151/ms151a.h b/src/devices/bus/iq151/ms151a.h
index 528ce9a9554..1d794e1081d 100644
--- a/src/devices/bus/iq151/ms151a.h
+++ b/src/devices/bus/iq151/ms151a.h
@@ -46,7 +46,7 @@ private:
INT32 m_posy;
UINT8 m_pen;
- bitmap_ind16 * m_paper;
+ std::unique_ptr<bitmap_ind16> m_paper;
};
diff --git a/src/devices/bus/iq151/video32.cpp b/src/devices/bus/iq151/video32.cpp
index b5d6a76681f..a5ce59a51db 100644
--- a/src/devices/bus/iq151/video32.cpp
+++ b/src/devices/bus/iq151/video32.cpp
@@ -75,7 +75,7 @@ void iq151_video32_device::device_start()
m_videoram = (UINT8*)memregion("videoram")->base();
m_chargen = (UINT8*)memregion("chargen")->base();
- m_gfxdecode->set_gfx(0, global_alloc(gfx_element(m_palette, iq151_video32_charlayout, m_chargen, 0, 1, 0)));
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, iq151_video32_charlayout, m_chargen, 0, 1, 0));
}
//-------------------------------------------------
diff --git a/src/devices/bus/iq151/video64.cpp b/src/devices/bus/iq151/video64.cpp
index ec5e82ff645..d58cca76aec 100644
--- a/src/devices/bus/iq151/video64.cpp
+++ b/src/devices/bus/iq151/video64.cpp
@@ -74,7 +74,7 @@ void iq151_video64_device::device_start()
m_videoram = (UINT8*)memregion("videoram")->base();
m_chargen = (UINT8*)memregion("chargen")->base();
- m_gfxdecode->set_gfx(0,global_alloc(gfx_element(m_palette, iq151_video64_charlayout, m_chargen, 0, 1, 0)));
+ m_gfxdecode->set_gfx(0,std::make_unique<gfx_element>(m_palette, iq151_video64_charlayout, m_chargen, 0, 1, 0));
}
//-------------------------------------------------
diff --git a/src/devices/bus/isa/3c505.h b/src/devices/bus/isa/3c505.h
index 36b90369540..e31317792da 100644
--- a/src/devices/bus/isa/3c505.h
+++ b/src/devices/bus/isa/3c505.h
@@ -212,8 +212,6 @@ private:
void log_command();
void log_response();
- void log_tx_data();
- void log_rx_data();
void do_receive_command();
void set_command_pending(int onoff);
diff --git a/src/devices/bus/isa/aga.cpp b/src/devices/bus/isa/aga.cpp
index 8149486ae7e..9146f2ce581 100644
--- a/src/devices/bus/isa/aga.cpp
+++ b/src/devices/bus/isa/aga.cpp
@@ -107,7 +107,7 @@ void isa8_aga_device::device_start()
m_mode = AGA_COLOR;
m_mda_chr_gen = memregion("gfx1")->base() + 0x1000;
m_cga_chr_gen = memregion("gfx1")->base();
- m_videoram = auto_alloc_array(machine(), UINT8, 0x10000);
+ m_videoram = std::make_unique<UINT8[]>(0x10000);
set_isa_device();
m_isa->install_memory(0xb0000, 0xbffff, 0, 0, read8_delegate(FUNC(isa8_aga_device::pc_aga_videoram_r),this), write8_delegate(FUNC(isa8_aga_device::pc_aga_videoram_w),this));
@@ -194,7 +194,7 @@ void isa8_aga_pc200_device::device_start()
m_mode = AGA_COLOR;
m_mda_chr_gen = memregion("gfx1")->base();
m_cga_chr_gen = memregion("gfx1")->base() + 0x1000;
- m_videoram = auto_alloc_array(machine(), UINT8, 0x10000);
+ m_videoram = std::make_unique<UINT8[]>(0x10000);
set_isa_device();
m_isa->install_memory(0xb0000, 0xbffff, 0, 0, read8_delegate(FUNC(isa8_aga_pc200_device::pc200_videoram_r),this), write8_delegate(FUNC(isa8_aga_pc200_device::pc200_videoram_w),this));
@@ -315,7 +315,7 @@ machine_config_constructor isa8_aga_device::device_mconfig_additions() const
MC6845_UPDATE_ROW( isa8_aga_device::mda_text_inten_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
UINT32 *p = &bitmap.pix32(y);
UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra;
int i;
@@ -375,7 +375,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::mda_text_inten_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::mda_text_blink_update_row )
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
const rgb_t *palette = m_palette->palette()->entry_list_raw();
UINT32 *p = &bitmap.pix32(y);
UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra;
@@ -437,7 +437,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::mda_text_blink_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::cga_text_inten_update_row )
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
const rgb_t *palette = m_palette->palette()->entry_list_raw();
UINT32 *p = &bitmap.pix32(y);
int i;
@@ -469,7 +469,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::cga_text_inten_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::cga_text_inten_alt_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
UINT32 *p = &bitmap.pix32(y);
int i;
@@ -499,7 +499,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::cga_text_inten_alt_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::cga_text_blink_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
UINT32 *p = &bitmap.pix32(y);
int i;
@@ -533,7 +533,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::cga_text_blink_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::cga_text_blink_alt_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
UINT32 *p = &bitmap.pix32(y);
int i;
@@ -569,7 +569,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::cga_text_blink_alt_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_4bppl_update_row )
{
const rgb_t *palette = m_palette->palette()->entry_list_raw();
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
UINT32 *p = &bitmap.pix32(y);
int i;
@@ -594,7 +594,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_4bppl_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_4bpph_update_row )
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
const rgb_t *palette = m_palette->palette()->entry_list_raw();
UINT32 *p = &bitmap.pix32(y);
int i;
@@ -628,7 +628,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_4bpph_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_2bpp_update_row )
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
const rgb_t *palette = m_palette->palette()->entry_list_raw();
UINT32 *p = &bitmap.pix32(y);
int i;
@@ -654,7 +654,7 @@ MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_2bpp_update_row )
MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_1bpp_update_row )
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
const rgb_t *palette = m_palette->palette()->entry_list_raw();
UINT32 *p = &bitmap.pix32(y);
UINT8 fg = m_cga_color_select & 0x0F;
@@ -985,7 +985,7 @@ WRITE8_MEMBER( isa8_aga_pc200_device::pc200_cga_w )
READ8_MEMBER ( isa8_aga_pc200_device::pc200_cga_r )
{
- UINT8 result = 0xff;
+ UINT8 result;
switch(offset) {
case 8:
diff --git a/src/devices/bus/isa/aga.h b/src/devices/bus/isa/aga.h
index 5ed2e560287..c0c80ac29bb 100644
--- a/src/devices/bus/isa/aga.h
+++ b/src/devices/bus/isa/aga.h
@@ -93,7 +93,7 @@ public:
UINT8 m_cga_palette_lut_2bpp[4];
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
};
// device type definition
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/isa/ega.cpp b/src/devices/bus/isa/ega.cpp
index 762f1d05a77..85d943b92ac 100644
--- a/src/devices/bus/isa/ega.cpp
+++ b/src/devices/bus/isa/ega.cpp
@@ -854,7 +854,7 @@ CRTC_EGA_ROW_UPDATE( isa8_ega_device::pc_ega_text )
UINT16 offset = ma + i;
UINT8 chr = m_plane[0][ offset ];
UINT8 attr = m_plane[1][ offset ];
- UINT8 data = 0;
+ UINT8 data;
UINT16 fg = m_attribute.data[ attr & 0x07 ];
UINT16 bg = m_attribute.data[ ( attr >> 4 ) & 0x07 ];
@@ -1329,7 +1329,7 @@ WRITE8_MEMBER(isa8_ega_device::pc_ega8_3c0_w )
0x0F, 0x0F, 0x0F, 0x1F, 0x07, 0x3F, 0x0F, 0x0F,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
- int index = 0;
+ int index;
if ( VERBOSE_EGA )
{
diff --git a/src/devices/bus/isa/gus.cpp b/src/devices/bus/isa/gus.cpp
index 2a8edf69145..2928aaa252c 100644
--- a/src/devices/bus/isa/gus.cpp
+++ b/src/devices/bus/isa/gus.cpp
@@ -479,7 +479,7 @@ WRITE8_MEMBER(gf1_device::global_reg_select_w)
READ8_MEMBER(gf1_device::global_reg_data_r)
{
- UINT16 ret = 0x00;
+ UINT16 ret;
switch(m_current_reg)
{
@@ -1430,7 +1430,7 @@ READ8_MEMBER(isa16_gus_device::joy_r)
{
if(offset == 1)
{
- UINT8 data = 0;
+ UINT8 data;
int delta;
attotime new_time = machine().time();
diff --git a/src/devices/bus/isa/hdc.cpp b/src/devices/bus/isa/hdc.cpp
index e7b386b2f7b..7708d341abd 100644
--- a/src/devices/bus/isa/hdc.cpp
+++ b/src/devices/bus/isa/hdc.cpp
@@ -430,7 +430,7 @@ void xt_hdc_device::dack_ws(int data)
void xt_hdc_device::execute_read()
{
- hard_disk_file *disk = nullptr;
+ hard_disk_file *disk;
int size = sector_cnt[drv] * 512;
int read_ = 0;
@@ -460,7 +460,7 @@ void xt_hdc_device::execute_read()
void xt_hdc_device::execute_write()
{
- hard_disk_file *disk = nullptr;
+ hard_disk_file *disk;
int size = sector_cnt[drv] * 512;
int write_ = 512;
diff --git a/src/devices/bus/isa/ibm_mfc.cpp b/src/devices/bus/isa/ibm_mfc.cpp
index 2bc6c513ace..b6445c9385f 100644
--- a/src/devices/bus/isa/ibm_mfc.cpp
+++ b/src/devices/bus/isa/ibm_mfc.cpp
@@ -313,7 +313,7 @@ MACHINE_CONFIG_END
READ8_MEMBER( isa8_ibm_mfc_device::ibm_mfc_r )
{
- UINT8 val = 0xff;
+ UINT8 val;
switch (offset)
{
diff --git a/src/devices/bus/isa/mda.cpp b/src/devices/bus/isa/mda.cpp
index 713891a5186..c8456886f02 100644
--- a/src/devices/bus/isa/mda.cpp
+++ b/src/devices/bus/isa/mda.cpp
@@ -799,15 +799,15 @@ void isa8_ec1840_0002_device::device_start()
{
isa8_mda_device::device_start();
- m_soft_chr_gen = auto_alloc_array(machine(), UINT8, 0x2000);
- m_isa->install_bank(0xdc000, 0xddfff, 0, 0x2000, "bank_chargen", m_soft_chr_gen);
+ m_soft_chr_gen = std::make_unique<UINT8[]>(0x2000);
+ m_isa->install_bank(0xdc000, 0xddfff, 0, 0x2000, "bank_chargen", m_soft_chr_gen.get());
}
void isa8_ec1840_0002_device::device_reset()
{
isa8_mda_device::device_reset();
- m_chr_gen = m_soft_chr_gen;
+ m_chr_gen = m_soft_chr_gen.get();
}
diff --git a/src/devices/bus/isa/mda.h b/src/devices/bus/isa/mda.h
index cba94767b40..c6cf72b29ad 100644
--- a/src/devices/bus/isa/mda.h
+++ b/src/devices/bus/isa/mda.h
@@ -120,7 +120,7 @@ protected:
virtual void device_reset() override;
public:
- UINT8 *m_soft_chr_gen;
+ std::unique_ptr<UINT8[]> m_soft_chr_gen;
};
diff --git a/src/devices/bus/isa/omti8621.cpp b/src/devices/bus/isa/omti8621.cpp
index 3df6cb77b66..5f42c31200b 100644
--- a/src/devices/bus/isa/omti8621.cpp
+++ b/src/devices/bus/isa/omti8621.cpp
@@ -231,13 +231,8 @@ FLOPPY_FORMATS_END
ROM_START( omti8621 )
ROM_REGION(0x4000, OMTI_CPU_REGION, 0) // disassembles fine as Z8 code
ROM_LOAD( "omti_8621_102640-b.bin", 0x000000, 0x004000, CRC(e6f20dbb) SHA1(cf1990ad72eac6b296485410f5fa3309a0d6d078) )
-
-#if 1
- // OMTI 8621 boards for Apollo workstations never use a BIOS ROM
- // They don't even have a socket for the BIOS ROM
ROM_REGION(0x1000, OMTI_BIOS_REGION, 0)
ROM_LOAD_OPTIONAL("omti_bios", 0x0000, 0x1000, NO_DUMP)
-#endif
ROM_END
static INPUT_PORTS_START( omti_port )
@@ -274,6 +269,13 @@ const rom_entry *omti8621_device::device_rom_region() const
return ROM_NAME( omti8621 );
}
+const rom_entry *omti8621_apollo_device::device_rom_region() const
+{
+ // OMTI 8621 boards for Apollo workstations never use a BIOS ROM
+ // They don't even have a socket for the BIOS ROM
+ return nullptr;
+}
+
ioport_constructor omti8621_device::device_input_ports() const
{
return INPUT_PORTS_NAME( omti_port );
@@ -369,10 +371,22 @@ void omti8621_device::device_reset()
alternate_track_address[1] = 0;
}
-const device_type ISA16_OMTI8621 = &device_creator<omti8621_device>;
+const device_type ISA16_OMTI8621 = &device_creator<omti8621_pc_device>;
+
+omti8621_pc_device::omti8621_pc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : omti8621_device(mconfig, ISA16_OMTI8621, tag, owner, clock)
+{
+}
+
+const device_type ISA16_OMTI8621_APOLLO = &device_creator<omti8621_apollo_device>;
+
+omti8621_apollo_device::omti8621_apollo_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : omti8621_device(mconfig, ISA16_OMTI8621_APOLLO, tag, owner, clock)
+{
+}
-omti8621_device::omti8621_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, ISA16_OMTI8621, "OMTI 8621 ESDI/floppy controller", tag, owner, clock, "omti8621", __FILE__),
+omti8621_device::omti8621_device(const machine_config &mconfig, device_type type,const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, type, "OMTI 8621 ESDI/floppy controller", tag, owner, clock, "omti8621", __FILE__),
device_isa16_card_interface(mconfig, *this),
m_fdc(*this, OMTI_FDC_TAG),
m_iobase(*this, "IO_BASE"),
@@ -679,80 +693,83 @@ void omti8621_device::log_command(const UINT8 cdb[], const UINT16 cdb_length)
{
if (verbose > 0) {
int i;
- logerror("%s: OMTI command ", cpu_context(this));
+ char sb[100];
+ std::string text(cpu_context(this));
+ text += ": OMTI command ";
switch (cdb[0]) {
case OMTI_CMD_TEST_DRIVE_READY: // 0x00
- logerror("Test Drive Ready");
+ text += "Test Drive Ready";
break;
case OMTI_CMD_RECALIBRATE: // 0x01
- logerror("Recalibrate");
+ text += "Recalibrate";
break;
case OMTI_CMD_REQUEST_SENSE: // 0x03
- logerror("Request Sense");
+ text += "Request Sense";
break;
case OMTI_CMD_READ_VERIFY: // 0x05
- logerror("Read Verify");
+ text += "Read Verify";
break;
case OMTI_CMD_FORMAT_TRACK: // 0x06
- logerror("Format Track");
+ text += "Format Track";
break;
case OMTI_CMD_FORMAT_BAD_TRACK: // 0x07
- logerror("Format Bad Track");
+ text += "Format Bad Track";
break;
case OMTI_CMD_READ: // 0x08
- logerror("Read");
+ text += "Read";
break;
case OMTI_CMD_WRITE: // 0x0A
- logerror("Write");
+ text += "Write";
break;
case OMTI_CMD_SEEK: // 0x0B
- logerror("Seek");
+ text += "Seek";
break;
case OMTI_CMD_READ_SECTOR_BUFFER: // 0x0E
- logerror("Read Sector Buffer");
+ text += "Read Sector Buffer";
break;
case OMTI_CMD_WRITE_SECTOR_BUFFER: // 0x0F
- logerror("Write Sector Buffer");
+ text += "Write Sector Buffer";
break;
case OMTI_CMD_ASSIGN_ALTERNATE_TRACK: // 0x11
- logerror("Assign Alternate Track");
+ text += "Assign Alternate Track";
break;
case OMTI_CMD_READ_DATA_TO_BUFFER: // 0x1E
- logerror("Read Data to Buffer");
+ text += "Read Data to Buffer";
break;
case OMTI_CMD_WRITE_DATA_FROM_BUFFER: // 0x1F
- logerror("Write Data from Buffer");
+ text += "Write Data from Buffer";
break;
case OMTI_CMD_COPY: // 0x20
- logerror("Copy");
+ text += "Copy";
break;
case OMTI_CMD_READ_ESDI_DEFECT_LIST: // 0x37
- logerror("Read ESDI Defect List");
+ text += "Read ESDI Defect List";
break;
case OMTI_CMD_RAM_DIAGNOSTICS: // 0xE0
- logerror("RAM. Diagnostic");
+ text += "RAM. Diagnostic";
break;
case OMTI_CMD_CONTROLLER_INT_DIAGNOSTIC: // 0xE4
- logerror("Controller Int. Diagnostic");
+ text += "Controller Int. Diagnostic";
break;
case OMTI_CMD_READ_LONG: // 0xE5
- logerror("Read Long");
+ text += "Read Long";
break;
case OMTI_CMD_WRITE_LONG: // 0xE6
- logerror("Write Long");
+ text += "Write Long";
break;
case OMTI_CMD_READ_CONFIGURATION: // 0xEC
- logerror("Read Configuration");
+ text += "Read Configuration";
break;
case OMTI_CMD_INVALID_COMMAND: // 0xFF
- logerror("Invalid Command");
+ text += "Invalid Command";
break;
default:
- logerror("!!! Unexpected Command !!!");
+ text += "!!! Unexpected Command !!!";
}
// logerror(" (%02x, length=%02x)", cdb[0], cdb_length);
for (i = 0; i < cdb_length; i++) {
- logerror(" %02x", cdb[i]);
+ sprintf(sb, " %02x", cdb[i]);
+ text += sb;
}
switch (cdb[0]) {
@@ -763,10 +780,12 @@ void omti8621_device::log_command(const UINT8 cdb[], const UINT16 cdb_length)
case OMTI_CMD_READ_DATA_TO_BUFFER: // 0x1E
case OMTI_CMD_WRITE_DATA_FROM_BUFFER: // 0x1F
case OMTI_CMD_COPY: // 0x20
- logerror(" (diskaddr=%x count=%x)", get_disk_address(cdb), cdb[4]);
+ sprintf(sb, " (diskaddr=%x count=%x)", get_disk_address(cdb), cdb[4]);
+ text += sb;
break;
}
- logerror("\n");
+ text += "\n";
+ logerror(text.c_str());
}
}
@@ -776,18 +795,25 @@ void omti8621_device::log_command(const UINT8 cdb[], const UINT16 cdb_length)
void omti8621_device::log_data()
{
- if (verbose > 0) {
+ if (verbose > 0)
+ {
int i;
- logerror("%s: OMTI data (length=%02x)", cpu_context(this),
+ char sb[100];
+ sprintf(sb, "%s: OMTI data (length=%02x)", cpu_context(this),
data_length);
- for (i = 0; i < data_length && i < OMTI_DISK_SECTOR_SIZE; i++) {
- logerror(" %02x", data_buffer[i]);
+ std::string text(sb);
+ for (i = 0; i < data_length && i < OMTI_DISK_SECTOR_SIZE; i++)
+ {
+ sprintf(sb, " %02x", data_buffer[i]);
+ text += sb;
}
- if (i < data_length) {
- logerror(" ...");
+ if (i < data_length)
+ {
+ text += " ...";
}
- logerror("\n");
+ text += "\n";
+ logerror(text.c_str());
}
}
@@ -1209,13 +1235,11 @@ void omti8621_device::set_verbose(int on_off)
get_sector - get sector diskaddr of logical unit lun into data_buffer
***************************************************************************/
-// FIXME: this will work, but is not supported by MESS
-#if 0 // APOLLO_XXL
-UINT32 omti8621_device::get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 length, UINT8 lun)
+UINT32 omti8621_apollo_device::get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 length, UINT8 lun)
{
- omti_disk_image_device *disk = omti8621_device_1->our_disks[lun];
+ omti_disk_image_device *disk = our_disks[lun];
- if (disk == NULL || disk->m_image == NULL || !disk->m_image->exists())
+ if (disk == nullptr || disk->m_image == nullptr || !disk->m_image->exists())
{
return 0;
}
@@ -1232,10 +1256,9 @@ UINT32 omti8621_device::get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 le
return length;
}
}
-#endif
/***************************************************************************
- omti_set_jumper - set OMI jumpers
+ omti_set_jumper - set OMTI jumpers
***************************************************************************/
void omti8621_device::set_jumper(UINT16 disk_type)
diff --git a/src/devices/bus/isa/omti8621.h b/src/devices/bus/isa/omti8621.h
index 4bc92a3a5de..04dff836316 100644
--- a/src/devices/bus/isa/omti8621.h
+++ b/src/devices/bus/isa/omti8621.h
@@ -33,7 +33,7 @@ class omti_disk_image_device;
class omti8621_device : public device_t, public device_isa16_card_interface
{
public:
- omti8621_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ omti8621_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock);
~omti8621_device() {}
DECLARE_READ16_MEMBER(read);
@@ -41,9 +41,6 @@ public:
static void set_verbose(int on_off);
- // get sector diskaddr of logical unit lun into data_buffer
- static UINT32 get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 length, UINT8 lun);
-
required_device<pc_fdc_interface> m_fdc;
required_ioport m_iobase;
required_ioport m_biosopts;
@@ -68,9 +65,9 @@ protected:
void set_interrupt(enum line_state line_state);
-private:
omti_disk_image_device *our_disks[OMTI_MAX_LUN+1];
+private:
UINT16 jumper;
UINT8 omti_state;
@@ -128,8 +125,31 @@ private:
DECLARE_WRITE8_MEMBER(write8);
};
+/* ----- omti8621 for PC device interface ----- */
+
+class omti8621_pc_device : public omti8621_device
+{
+public:
+ omti8621_pc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
extern const device_type ISA16_OMTI8621;
+/* ----- omti8621 for apollo device interface ----- */
+
+class omti8621_apollo_device : public omti8621_device
+{
+public:
+ omti8621_apollo_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // get sector diskaddr of logical unit lun into data_buffer
+ UINT32 get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 length, UINT8 lun);
+protected:
+ virtual const rom_entry *device_rom_region() const override;
+};
+
+extern const device_type ISA16_OMTI8621_APOLLO;
+
//###############################################################
#endif /* OMTI8621_H_ */
diff --git a/src/devices/bus/isa/pgc.cpp b/src/devices/bus/isa/pgc.cpp
index f551a0fc2ec..c22631d405b 100644
--- a/src/devices/bus/isa/pgc.cpp
+++ b/src/devices/bus/isa/pgc.cpp
@@ -237,14 +237,14 @@ void isa8_pgc_device::device_start()
m_palette->set_pen_color( i, 0, 0, 0 );
}
- m_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_bitmap = std::make_unique<bitmap_ind16>(width, height);
m_bitmap->fill(0);
- m_vram = auto_alloc_array(machine(), UINT8, 0x78000);
+ m_vram = std::make_unique<UINT8[]>(0x78000);
space.install_readwrite_bank(0x80000, 0xf7fff, "vram");
- membank("vram")->set_base(m_vram);
+ membank("vram")->set_base(m_vram.get());
- m_eram = auto_alloc_array(machine(), UINT8, 0x8000);
+ m_eram = std::make_unique<UINT8[]>(0x8000);
machine().add_notifier(MACHINE_NOTIFY_RESET, machine_notify_delegate(FUNC(isa8_pgc_device::reset_common), this));
}
@@ -325,7 +325,7 @@ READ8_MEMBER( isa8_pgc_device::init_r ) {
DBG_LOG(1,"INIT",("mapping emulator RAM\n"));
space.install_readwrite_bank(0xf8000, 0xfffff, "eram");
- membank("eram")->set_base(m_eram);
+ membank("eram")->set_base(m_eram.get());
DBG_LOG(1,"INIT",("mapping LUT\n"));
space.install_write_handler(0xf8400, 0xf85ff,
diff --git a/src/devices/bus/isa/pgc.h b/src/devices/bus/isa/pgc.h
index 45eb4bfb25a..cf83eb8ae1d 100644
--- a/src/devices/bus/isa/pgc.h
+++ b/src/devices/bus/isa/pgc.h
@@ -55,11 +55,11 @@ private:
required_device<palette_device> m_palette;
UINT8 *m_commarea;
- UINT8 *m_vram;
- UINT8 *m_eram;
+ std::unique_ptr<UINT8[]> m_vram;
+ std::unique_ptr<UINT8[]> m_eram;
UINT8 m_stateparam[16];
UINT8 m_lut[256*3];
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
};
diff --git a/src/devices/bus/isa/sc499.cpp b/src/devices/bus/isa/sc499.cpp
index 0e0c6438410..4effacb3394 100644
--- a/src/devices/bus/isa/sc499.cpp
+++ b/src/devices/bus/isa/sc499.cpp
@@ -16,7 +16,6 @@
#include "sc499.h"
#include "formats/ioprocs.h"
-#include "image.h"
#define VERBOSE 0
@@ -321,7 +320,7 @@ sc499_device::sc499_device(const machine_config &mconfig, const char *tag, devic
m_iobase(*this, "IO_BASE"),
m_irqdrq(*this, "IRQ_DRQ"), m_data(0), m_command(0), m_status(0), m_control(0), m_has_cartridge(0), m_is_writable(0), m_current_command(0), m_first_block_hack(0), m_nasty_readahead(0), m_read_block_pending(0),
m_data_index(0), m_tape_status(0), m_data_error_counter(0), m_underrun_counter(0), m_tape_pos(0), m_ctape_block_count(0), m_ctape_block_index(0), m_image_length(0),
- m_image(*this, SC499_CTAPE_TAG), irq_state(), dma_drq_state(), m_timer(nullptr), m_timer1(nullptr), m_timer_type(0), m_irq(0), m_drq(0), m_installed(false)
+ m_image(*this, SC499_CTAPE_TAG), irq_state(), dma_drq_state(), m_timer(nullptr), m_timer1(nullptr), m_irq(0), m_drq(0), m_installed(false)
{
}
@@ -1085,7 +1084,7 @@ void sc499_device::eop_w(int state)
UINT8 sc499_device::dack_r(int line)
{
- UINT8 data = 0xff;
+ UINT8 data;
// set_dma_drq(CLEAR_LINE);
diff --git a/src/devices/bus/isa/sc499.h b/src/devices/bus/isa/sc499.h
index d8c347e2859..8c63f810073 100644
--- a/src/devices/bus/isa/sc499.h
+++ b/src/devices/bus/isa/sc499.h
@@ -63,8 +63,6 @@ public:
// construction/destruction
sc499_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- int sc499_receive(const UINT8 data[], int length);
-
required_ioport m_iobase;
required_ioport m_irqdrq;
@@ -146,7 +144,6 @@ private:
emu_timer * m_timer; // timer to delay functions
emu_timer * m_timer1; // timer to delay functions
- int m_timer_type;
int m_irq, m_drq;
bool m_installed;
diff --git a/src/devices/bus/isa/trident.cpp b/src/devices/bus/isa/trident.cpp
index 03f646139be..4f47bdd7212 100644
--- a/src/devices/bus/isa/trident.cpp
+++ b/src/devices/bus/isa/trident.cpp
@@ -195,7 +195,7 @@ void trident_vga_device::device_reset()
UINT32 trident_vga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- UINT8 cur_mode = 0;
+ UINT8 cur_mode;
svga_device::screen_update(screen,bitmap,cliprect);
cur_mode = pc_vga_choosevideomode();
diff --git a/src/devices/bus/kc/kc.cpp b/src/devices/bus/kc/kc.cpp
index b87e3f34314..a5a46802998 100644
--- a/src/devices/bus/kc/kc.cpp
+++ b/src/devices/bus/kc/kc.cpp
@@ -333,7 +333,7 @@ bool kccart_slot_device::call_load()
{
if (m_cart)
{
- offs_t read_length = 0;
+ offs_t read_length;
UINT8 *cart_base = m_cart->get_cart_base();
if (cart_base != nullptr)
@@ -362,7 +362,7 @@ bool kccart_slot_device::call_load()
bool kccart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
@@ -370,7 +370,7 @@ bool kccart_slot_device::call_softlist_load(software_list_device &swlist, const
get default card software
-------------------------------------------------*/
-void kccart_slot_device::get_default_card_software(std::string &result)
+std::string kccart_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/kc/kc.h b/src/devices/bus/kc/kc.h
index 85146d4cfe8..e31007ea85e 100644
--- a/src/devices/bus/kc/kc.h
+++ b/src/devices/bus/kc/kc.h
@@ -104,7 +104,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
};
// device type definition
diff --git a/src/devices/bus/lpci/i82439tx.cpp b/src/devices/bus/lpci/i82439tx.cpp
index ceee9a4a032..e2c64f49473 100644
--- a/src/devices/bus/lpci/i82439tx.cpp
+++ b/src/devices/bus/lpci/i82439tx.cpp
@@ -55,7 +55,7 @@ void i82439tx_device::i82439tx_configure_memory(UINT8 val, offs_t begin, offs_t
UINT32 i82439tx_device::pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask)
{
- UINT32 result = 0;
+ UINT32 result;
if (function != 0)
return 0;
diff --git a/src/devices/bus/macpds/macpds.h b/src/devices/bus/macpds/macpds.h
index f1a67dfc1be..db572d553f2 100644
--- a/src/devices/bus/macpds/macpds.h
+++ b/src/devices/bus/macpds/macpds.h
@@ -118,7 +118,6 @@ public:
void set_macpds_device();
// helper functions for card devices
- void install_declaration_rom(device_t *dev, const char *romregion, bool mirror_all_mb = false, bool reverse_rom = false);
void install_bank(offs_t start, offs_t end, offs_t mask, offs_t mirror, const char *tag, UINT8 *data);
void install_rom(device_t *dev, const char *romregion, UINT32 addr);
diff --git a/src/devices/bus/macpds/pds_tpdfpd.cpp b/src/devices/bus/macpds/pds_tpdfpd.cpp
index 968eed3564f..f89a210888f 100644
--- a/src/devices/bus/macpds/pds_tpdfpd.cpp
+++ b/src/devices/bus/macpds/pds_tpdfpd.cpp
@@ -115,10 +115,10 @@ void macpds_sedisplay_device::device_start()
install_rom(this, SEDISPLAY_ROM_REGION, 0xc00000);
install_rom(this, SEDISPLAY_ROM_REGION, 0xf80000);
- m_vram = auto_alloc_array(machine(), UINT8, VRAM_SIZE);
+ m_vram = std::make_unique<UINT8[]>(VRAM_SIZE);
static const char bankname[] = { "radpds_ram" };
- m_macpds->install_bank(0xc40000, 0xc40000+VRAM_SIZE-1, 0, 0, bankname, m_vram);
+ m_macpds->install_bank(0xc40000, 0xc40000+VRAM_SIZE-1, 0, 0, bankname, m_vram.get());
m_macpds->install_device(0x770000, 0x77000f, read16_delegate(FUNC(macpds_sedisplay_device::ramdac_r), this), write16_delegate(FUNC(macpds_sedisplay_device::ramdac_w), this));
m_macpds->install_device(0xc10000, 0xc2ffff, read16_delegate(FUNC(macpds_sedisplay_device::sedisplay_r), this), write16_delegate(FUNC(macpds_sedisplay_device::sedisplay_w), this));
@@ -136,7 +136,7 @@ void macpds_sedisplay_device::device_reset()
m_count = 0;
m_clutoffs = 0;
m_vbl_disable = 1;
- memset(m_vram, 0, VRAM_SIZE);
+ memset(m_vram.get(), 0, VRAM_SIZE);
memset(m_palette, 0, sizeof(m_palette));
m_palette[0] = rgb_t(0, 0, 0);
@@ -166,7 +166,7 @@ UINT32 macpds_sedisplay_device::screen_update(screen_device &screen, bitmap_rgb3
int x, y;
UINT8 pixels, *vram;
- vram = m_vram;
+ vram = m_vram.get();
for (y = 0; y < 870; y++)
{
diff --git a/src/devices/bus/macpds/pds_tpdfpd.h b/src/devices/bus/macpds/pds_tpdfpd.h
index 0adf48c2765..218c30f959b 100644
--- a/src/devices/bus/macpds/pds_tpdfpd.h
+++ b/src/devices/bus/macpds/pds_tpdfpd.h
@@ -41,7 +41,7 @@ protected:
DECLARE_WRITE16_MEMBER(ramdac_w);
public:
- UINT8 *m_vram;
+ std::unique_ptr<UINT8[]> m_vram;
UINT32 m_vbl_disable;
UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs;
emu_timer *m_timer;
diff --git a/src/devices/bus/megadrive/md_slot.cpp b/src/devices/bus/megadrive/md_slot.cpp
index 2d0ff90acb6..a2674838914 100644
--- a/src/devices/bus/megadrive/md_slot.cpp
+++ b/src/devices/bus/megadrive/md_slot.cpp
@@ -677,7 +677,7 @@ void base_md_cart_slot_device::setup_nvram()
bool base_md_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -900,11 +900,11 @@ int base_md_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len)
get default card software
-------------------------------------------------*/
-void base_md_cart_slot_device::get_default_card_software(std::string &result)
+std::string base_md_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "rom";
+ const char *slot_string;
UINT32 len = core_fsize(m_file), offset = 0;
dynamic_buffer rom(len);
int type;
@@ -919,10 +919,10 @@ void base_md_cart_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
+ return std::string(slot_string);
}
else
- software_get_default_slot(result, "rom");
+ return software_get_default_slot("rom");
}
diff --git a/src/devices/bus/megadrive/md_slot.h b/src/devices/bus/megadrive/md_slot.h
index 2adac9e01d0..086d02bc79f 100644
--- a/src/devices/bus/megadrive/md_slot.h
+++ b/src/devices/bus/megadrive/md_slot.h
@@ -161,7 +161,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
int get_type() { return m_type; }
diff --git a/src/devices/bus/megadrive/rom.cpp b/src/devices/bus/megadrive/rom.cpp
index 5af9f0a64a2..2ce6d353e35 100644
--- a/src/devices/bus/megadrive/rom.cpp
+++ b/src/devices/bus/megadrive/rom.cpp
@@ -597,7 +597,7 @@ READ16_MEMBER(md_rom_chinf3_device::read)
and the writes made at the start of the game.. */
if (offset >= 0x400000/2 && offset < 0x500000/2)
{
- UINT32 retdat = 0;
+ UINT32 retdat;
/*
04dc10 chifi3, prot_r? 2800
04cefa chifi3, prot_r? 65262
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/msx_cart/disk.cpp b/src/devices/bus/msx_cart/disk.cpp
index 5d973a2fd17..11789e0a79f 100644
--- a/src/devices/bus/msx_cart/disk.cpp
+++ b/src/devices/bus/msx_cart/disk.cpp
@@ -335,7 +335,7 @@ void msx_cart_disk_type1::set_control(UINT8 data)
if ((old_m_control ^ m_control) & 0x40)
{
- set_led_status(machine(), 0, !(m_control & 0x40));
+ machine().output().set_led_value(0, !(m_control & 0x40));
}
}
@@ -495,7 +495,7 @@ void msx_cart_disk_type2::set_control(UINT8 data)
if ((old_m_control ^ m_control) & 0x40)
{
- set_led_status(machine(), 0, !(m_control & 0x40));
+ machine().output().set_led_value(0, !(m_control & 0x40));
}
}
diff --git a/src/devices/bus/msx_slot/cartridge.cpp b/src/devices/bus/msx_slot/cartridge.cpp
index 43a92a94906..c24df3bf1fb 100644
--- a/src/devices/bus/msx_slot/cartridge.cpp
+++ b/src/devices/bus/msx_slot/cartridge.cpp
@@ -200,7 +200,7 @@ void msx_slot_cartridge_device::call_unload()
bool msx_slot_cartridge_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -278,7 +278,7 @@ int msx_slot_cartridge_device::get_cart_type(UINT8 *rom, UINT32 length)
}
-void msx_slot_cartridge_device::get_default_card_software(std::string &result)
+std::string msx_slot_cartridge_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
@@ -337,10 +337,9 @@ void msx_slot_cartridge_device::get_default_card_software(std::string &result)
slot_string = msx_cart_get_slot_option(type);
}
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "nomapper");
+ return software_get_default_slot("nomapper");
}
diff --git a/src/devices/bus/msx_slot/cartridge.h b/src/devices/bus/msx_slot/cartridge.h
index 7eaaf7a3242..ce8303ff3d4 100644
--- a/src/devices/bus/msx_slot/cartridge.h
+++ b/src/devices/bus/msx_slot/cartridge.h
@@ -55,7 +55,7 @@ public:
virtual const char *file_extensions() const override { return "mx1,bin,rom"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// msx_internal_slot-level overrides
virtual DECLARE_READ8_MEMBER(read) override;
diff --git a/src/devices/bus/msx_slot/disk.cpp b/src/devices/bus/msx_slot/disk.cpp
index 24a1b5c95c1..ea4313f6ac5 100644
--- a/src/devices/bus/msx_slot/disk.cpp
+++ b/src/devices/bus/msx_slot/disk.cpp
@@ -200,7 +200,7 @@ void msx_slot_disk1_device::set_control(UINT8 data)
if ((old_m_control ^ m_control) & 0x40)
{
- set_led_status(machine(), 0, !(m_control & 0x40));
+ machine().output().set_led_value(0, !(m_control & 0x40));
}
}
@@ -349,7 +349,7 @@ void msx_slot_disk2_device::set_control(UINT8 data)
if ((old_m_control ^ m_control) & 0x40)
{
- set_led_status(machine(), 0, !(m_control & 0x40));
+ machine().output().set_led_value(0, !(m_control & 0x40));
}
}
diff --git a/src/devices/bus/neogeo/bootleg_prot.cpp b/src/devices/bus/neogeo/bootleg_prot.cpp
index a577528e271..8c023f00091 100644
--- a/src/devices/bus/neogeo/bootleg_prot.cpp
+++ b/src/devices/bus/neogeo/bootleg_prot.cpp
@@ -1033,7 +1033,7 @@ void ngbootleg_prot_device::matrimbl_decrypt(UINT8* sprrom, UINT32 sprrom_size,
/* decrypt Z80 */
UINT8 *rom = audiorom+0x10000;
dynamic_buffer buf( 0x20000 );
- int i, j=0;
+ int i, j;
memcpy( &buf[0], rom, 0x20000 );
for( i=0x00000; i<0x20000; i++ )
{
diff --git a/src/devices/bus/neogeo/neogeo_intf.h b/src/devices/bus/neogeo/neogeo_intf.h
index 5c6947ff52d..54ef30ce722 100644
--- a/src/devices/bus/neogeo/neogeo_intf.h
+++ b/src/devices/bus/neogeo/neogeo_intf.h
@@ -38,7 +38,7 @@ public:
UINT32 get_audio_size() { return m_audio.size(); }
void audiocrypt_alloc(UINT32 size) { m_audiocrypt.resize(size); }
- UINT8* get_audiocrypt_base() { return &m_audiocrypt[0]; }
+ UINT8* get_audiocrypt_base() { if (m_audiocrypt.size() == 0) return nullptr; else return &m_audiocrypt[0]; }
UINT32 get_audiocrypt_size() { return m_audiocrypt.size(); }
void sprites_alloc(UINT32 size) { m_sprites.resize(size); }
diff --git a/src/devices/bus/neogeo/neogeo_slot.cpp b/src/devices/bus/neogeo/neogeo_slot.cpp
index 100e53e6e18..fac43eda050 100644
--- a/src/devices/bus/neogeo/neogeo_slot.cpp
+++ b/src/devices/bus/neogeo/neogeo_slot.cpp
@@ -195,7 +195,7 @@ void neogeo_cart_slot_device::call_unload()
bool neogeo_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
@@ -204,9 +204,9 @@ bool neogeo_cart_slot_device::call_softlist_load(software_list_device &swlist, c
get default card software
-------------------------------------------------*/
-void neogeo_cart_slot_device::get_default_card_software(std::string &result)
+std::string neogeo_cart_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "rom");
+ return software_get_default_slot("rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/neogeo/neogeo_slot.h b/src/devices/bus/neogeo/neogeo_slot.h
index ae46e619f0e..1b037103165 100644
--- a/src/devices/bus/neogeo/neogeo_slot.h
+++ b/src/devices/bus/neogeo/neogeo_slot.h
@@ -41,7 +41,7 @@ public:
virtual const char *file_extensions() const override { return "bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ16_MEMBER(read_rom);
diff --git a/src/devices/bus/nes/act53.cpp b/src/devices/bus/nes/act53.cpp
index b0f7a8dae23..225be65d449 100644
--- a/src/devices/bus/nes/act53.cpp
+++ b/src/devices/bus/nes/act53.cpp
@@ -105,7 +105,7 @@ void nes_action53_device::pcb_reset()
void nes_action53_device::update_prg()
{
- UINT8 prg_lo = 0, prg_hi = 0, helper = 0;
+ UINT8 prg_lo, prg_hi, helper;
UINT8 out = (m_reg[3] & 0x3f) << 1; // Outer PRG reg
UINT8 size = (m_reg[2] & 0x30) >> 4; // Game size
UINT8 mask = (1 << (size + 1)) - 1; // Bits to be taken from PRG reg
diff --git a/src/devices/bus/nes/aladdin.cpp b/src/devices/bus/nes/aladdin.cpp
index 3022bd49f0a..bad863b9255 100644
--- a/src/devices/bus/nes/aladdin.cpp
+++ b/src/devices/bus/nes/aladdin.cpp
@@ -97,7 +97,7 @@ bool nes_aladdin_slot_device::call_load()
if (m_cart)
{
UINT8 *ROM = m_cart->get_cart_base();
- UINT32 size = 0;
+ UINT32 size;
if (!ROM)
return IMAGE_INIT_FAIL;
@@ -138,11 +138,11 @@ bool nes_aladdin_slot_device::call_load()
bool nes_aladdin_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
-void nes_aladdin_slot_device::get_default_card_software(std::string &result)
+std::string nes_aladdin_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
@@ -163,10 +163,10 @@ void nes_aladdin_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
+ return std::string(slot_string);
}
else
- software_get_default_slot(result, "algn");
+ return software_get_default_slot("algn");
}
diff --git a/src/devices/bus/nes/aladdin.h b/src/devices/bus/nes/aladdin.h
index ad6b7a4a796..20786c3cab3 100644
--- a/src/devices/bus/nes/aladdin.h
+++ b/src/devices/bus/nes/aladdin.h
@@ -65,7 +65,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
virtual DECLARE_READ8_MEMBER(read);
void write_prg(UINT32 offset, UINT8 data) { if (m_cart) m_cart->write_prg(offset, data); }
diff --git a/src/devices/bus/nes/bootleg.cpp b/src/devices/bus/nes/bootleg.cpp
index 87910440771..5ae9729db14 100644
--- a/src/devices/bus/nes/bootleg.cpp
+++ b/src/devices/bus/nes/bootleg.cpp
@@ -978,7 +978,7 @@ WRITE8_MEMBER(nes_smb2j_device::write_ex)
if (offset == 2)
{
- int temp = 0;
+ int temp;
// According to hardware tests
if (data & 1)
diff --git a/src/devices/bus/nes/datach.cpp b/src/devices/bus/nes/datach.cpp
index e0629f74fd3..cdb41e16830 100644
--- a/src/devices/bus/nes/datach.cpp
+++ b/src/devices/bus/nes/datach.cpp
@@ -139,14 +139,14 @@ bool nes_datach_slot_device::call_load()
bool nes_datach_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
-void nes_datach_slot_device::get_default_card_software(std::string &result)
+std::string nes_datach_slot_device::get_default_card_software()
{
// any way to detect the game with X24C01?
- software_get_default_slot(result, "datach_rom");
+ return software_get_default_slot("datach_rom");
}
diff --git a/src/devices/bus/nes/datach.h b/src/devices/bus/nes/datach.h
index 3fe70c2a531..bda9edfe50e 100644
--- a/src/devices/bus/nes/datach.h
+++ b/src/devices/bus/nes/datach.h
@@ -67,7 +67,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
virtual DECLARE_READ8_MEMBER(read);
void write_prg_bank(UINT8 bank) { if (m_cart) m_cart->write_prg_bank(bank); }
diff --git a/src/devices/bus/nes/disksys.cpp b/src/devices/bus/nes/disksys.cpp
index e89429dc0c4..38b24438408 100644
--- a/src/devices/bus/nes/disksys.cpp
+++ b/src/devices/bus/nes/disksys.cpp
@@ -289,7 +289,7 @@ WRITE8_MEMBER(nes_disksys_device::write_ex)
READ8_MEMBER(nes_disksys_device::read_ex)
{
LOG_MMC(("Famicom Disk System read_ex, offset: %04x\n", offset));
- UINT8 ret = 0x00;
+ UINT8 ret;
if (offset >= 0x20 && offset < 0x60)
{
@@ -416,11 +416,11 @@ void nes_disksys_device::load_disk(device_image_interface &image)
m_fds_sides = (image.length() - header) / 65500;
if (!m_fds_data)
- m_fds_data = auto_alloc_array(machine(), UINT8, m_fds_sides * 65500);
+ m_fds_data = std::make_unique<UINT8[]>(m_fds_sides * 65500);
// if there is an header, skip it
image.fseek(header, SEEK_SET);
- image.fread(m_fds_data, 65500 * m_fds_sides);
+ image.fread(m_fds_data.get(), 65500 * m_fds_sides);
return;
}
diff --git a/src/devices/bus/nes/disksys.h b/src/devices/bus/nes/disksys.h
index 821cfb5614b..7dbefa37ee4 100644
--- a/src/devices/bus/nes/disksys.h
+++ b/src/devices/bus/nes/disksys.h
@@ -38,7 +38,7 @@ public:
private:
UINT8 *m_2c33_rom;
- UINT8 *m_fds_data; // here, we store a copy of the disk
+ std::unique_ptr<UINT8[]> m_fds_data; // here, we store a copy of the disk
required_device<legacy_floppy_image_device> m_disk;
static const device_timer_id TIMER_IRQ = 0;
diff --git a/src/devices/bus/nes/karastudio.cpp b/src/devices/bus/nes/karastudio.cpp
index 9342f18dd40..d9d0e26a2cf 100644
--- a/src/devices/bus/nes/karastudio.cpp
+++ b/src/devices/bus/nes/karastudio.cpp
@@ -128,13 +128,13 @@ bool nes_kstudio_slot_device::call_load()
bool nes_kstudio_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
-void nes_kstudio_slot_device::get_default_card_software(std::string &result)
+std::string nes_kstudio_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "ks_exp");
+ return software_get_default_slot("ks_exp");
}
diff --git a/src/devices/bus/nes/karastudio.h b/src/devices/bus/nes/karastudio.h
index c39020d38ce..3a2f0c6d919 100644
--- a/src/devices/bus/nes/karastudio.h
+++ b/src/devices/bus/nes/karastudio.h
@@ -64,7 +64,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
virtual DECLARE_READ8_MEMBER(read);
void write_prg_bank(UINT8 bank) { if (m_cart) m_cart->write_prg_bank(bank); }
diff --git a/src/devices/bus/nes/mmc5.h b/src/devices/bus/nes/mmc5.h
index 9bf73c9ac4b..44569d3d561 100644
--- a/src/devices/bus/nes/mmc5.h
+++ b/src/devices/bus/nes/mmc5.h
@@ -32,7 +32,6 @@ public:
protected:
void set_mirror(int page, int src);
- void update_render_mode();
void update_prg();
inline UINT8 base_chr_r(int bank, UINT32 offset);
diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp
index 7a4065a6d80..05adca0f9ae 100644
--- a/src/devices/bus/nes/nes_slot.cpp
+++ b/src/devices/bus/nes/nes_slot.cpp
@@ -904,7 +904,7 @@ void nes_cart_slot_device::call_unload()
bool nes_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -912,7 +912,7 @@ bool nes_cart_slot_device::call_softlist_load(software_list_device &swlist, cons
get default card software
-------------------------------------------------*/
-void nes_cart_slot_device::get_default_card_software(std::string &result)
+std::string nes_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
@@ -930,10 +930,10 @@ void nes_cart_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
+ return std::string(slot_string);
}
else
- software_get_default_slot(result, "nrom");
+ return software_get_default_slot("nrom");
}
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index 975357c81aa..ad2a1b1c28a 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -363,7 +363,7 @@ public:
virtual device_image_partialhash_func get_partial_hash() const override { return &nes_partialhash; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
const char * get_default_card_ines(UINT8 *ROM, UINT32 len);
const char * get_default_card_unif(UINT8 *ROM, UINT32 len);
const char * nes_get_slot(int pcb_id);
diff --git a/src/devices/bus/nes/sunsoft_dcs.cpp b/src/devices/bus/nes/sunsoft_dcs.cpp
index 8be24a9c66d..25d1a1db623 100644
--- a/src/devices/bus/nes/sunsoft_dcs.cpp
+++ b/src/devices/bus/nes/sunsoft_dcs.cpp
@@ -107,13 +107,13 @@ bool nes_ntb_slot_device::call_load()
bool nes_ntb_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
-void nes_ntb_slot_device::get_default_card_software(std::string &result)
+std::string nes_ntb_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "ntbrom");
+ return software_get_default_slot("ntbrom");
}
//-----------------------------------------------
diff --git a/src/devices/bus/nes/sunsoft_dcs.h b/src/devices/bus/nes/sunsoft_dcs.h
index a6437cb4638..83393719cf7 100644
--- a/src/devices/bus/nes/sunsoft_dcs.h
+++ b/src/devices/bus/nes/sunsoft_dcs.h
@@ -61,7 +61,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
virtual DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/bus/nes_ctrl/arkpaddle.cpp b/src/devices/bus/nes_ctrl/arkpaddle.cpp
index 5e7e6bc992e..15755d283ca 100644
--- a/src/devices/bus/nes_ctrl/arkpaddle.cpp
+++ b/src/devices/bus/nes_ctrl/arkpaddle.cpp
@@ -103,7 +103,7 @@ UINT8 nes_vaus_device::read_bit34()
UINT8 nes_vausfc_device::read_exp(offs_t offset)
{
- UINT8 ret = 0;
+ UINT8 ret;
if (offset == 0) //$4016
ret = m_button->read() << 1;
else //$4017
diff --git a/src/devices/bus/nubus/nubus_image.cpp b/src/devices/bus/nubus/nubus_image.cpp
index e9c94e9c891..412925fc351 100644
--- a/src/devices/bus/nubus/nubus_image.cpp
+++ b/src/devices/bus/nubus/nubus_image.cpp
@@ -58,7 +58,7 @@ public:
virtual void device_reset() override;
public:
UINT32 m_size;
- UINT8 *m_data;
+ std::unique_ptr<UINT8[]> m_data;
bool m_ejected;
};
@@ -86,7 +86,7 @@ void messimg_disk_image_device::device_config_complete()
void messimg_disk_image_device::device_start()
{
- m_data = (UINT8 *)nullptr;
+ m_data = nullptr;
if (exists() && fseek(0, SEEK_END) == 0)
{
@@ -105,9 +105,9 @@ bool messimg_disk_image_device::call_load()
return IMAGE_INIT_FAIL;
}
- m_data = (UINT8 *)auto_alloc_array_clear(machine(), UINT32, m_size/sizeof(UINT32));
+ m_data = make_unique_clear<UINT8[]>(m_size);
fseek(0, SEEK_SET);
- fread(m_data, m_size);
+ fread(m_data.get(), m_size);
m_ejected = false;
return IMAGE_INIT_PASS;
@@ -117,7 +117,7 @@ void messimg_disk_image_device::call_unload()
{
// TODO: track dirty sectors and only write those
fseek(0, SEEK_SET);
- fwrite(m_data, m_size);
+ fwrite(m_data.get(), m_size);
m_size = 0;
//free(m_data);
}
@@ -255,7 +255,7 @@ READ32_MEMBER( nubus_image_device::image_r )
WRITE32_MEMBER( nubus_image_device::image_super_w )
{
- UINT32 *image = (UINT32*)m_image->m_data;
+ UINT32 *image = (UINT32*)m_image->m_data.get();
data = ((data & 0xff) << 24) | ((data & 0xff00) << 8) | ((data & 0xff0000) >> 8) | ((data & 0xff000000) >> 24);
mem_mask = ((mem_mask & 0xff) << 24) | ((mem_mask & 0xff00) << 8) | ((mem_mask & 0xff0000) >> 8) | ((mem_mask & 0xff000000) >> 24);
@@ -264,14 +264,14 @@ WRITE32_MEMBER( nubus_image_device::image_super_w )
READ32_MEMBER( nubus_image_device::image_super_r )
{
- UINT32 *image = (UINT32*)m_image->m_data;
+ UINT32 *image = (UINT32*)m_image->m_data.get();
UINT32 data = image[offset];
return ((data & 0xff) << 24) | ((data & 0xff00) << 8) | ((data & 0xff0000) >> 8) | ((data & 0xff000000) >> 24);
}
WRITE32_MEMBER( nubus_image_device::file_cmd_w )
{
- const osd_directory_entry *dp = nullptr;
+ const osd_directory_entry *dp;
char fullpath[1024];
UINT64 filesize;
diff --git a/src/devices/bus/odyssey2/slot.cpp b/src/devices/bus/odyssey2/slot.cpp
index e4d3f4c8d3c..0a6e35028b9 100644
--- a/src/devices/bus/odyssey2/slot.cpp
+++ b/src/devices/bus/odyssey2/slot.cpp
@@ -200,7 +200,7 @@ bool o2_cart_slot_device::call_load()
bool o2_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -209,11 +209,11 @@ bool o2_cart_slot_device::call_softlist_load(software_list_device &swlist, const
get default card software
-------------------------------------------------*/
-void o2_cart_slot_device::get_default_card_software(std::string &result)
+std::string o2_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "o2_rom";
+ const char *slot_string;
UINT32 size = core_fsize(m_file);
int type = O2_STD;
@@ -227,11 +227,10 @@ void o2_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "o2_rom");
+ return software_get_default_slot("o2_rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/odyssey2/slot.h b/src/devices/bus/odyssey2/slot.h
index 59b576af30f..6634ed57c61 100644
--- a/src/devices/bus/odyssey2/slot.h
+++ b/src/devices/bus/odyssey2/slot.h
@@ -84,7 +84,7 @@ public:
virtual const char *file_extensions() const override { return "bin,rom"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom04);
diff --git a/src/devices/bus/pc_kbd/pcat84.cpp b/src/devices/bus/pc_kbd/pcat84.cpp
index 471333e9d18..eeaf9494fd3 100644
--- a/src/devices/bus/pc_kbd/pcat84.cpp
+++ b/src/devices/bus/pc_kbd/pcat84.cpp
@@ -580,9 +580,9 @@ WRITE8_MEMBER( ibm_pc_at_84_keyboard_device::p2_w )
*/
- output_set_led_value(LED_SCROLL, BIT(data, 0));
- output_set_led_value(LED_NUM, BIT(data, 1));
- output_set_led_value(LED_CAPS, BIT(data, 2));
+ machine().output().set_led_value(LED_SCROLL, BIT(data, 0));
+ machine().output().set_led_value(LED_NUM, BIT(data, 1));
+ machine().output().set_led_value(LED_CAPS, BIT(data, 2));
m_pc_kbdc->data_write_from_kb(!BIT(data, 7));
m_pc_kbdc->clock_write_from_kb(!BIT(data, 6));
diff --git a/src/devices/bus/pce/pce_slot.cpp b/src/devices/bus/pce/pce_slot.cpp
index 254993a4714..4fffa5172fc 100644
--- a/src/devices/bus/pce/pce_slot.cpp
+++ b/src/devices/bus/pce/pce_slot.cpp
@@ -226,7 +226,7 @@ bool pce_cart_slot_device::call_load()
{
if (m_cart)
{
- UINT32 offset = 0;
+ UINT32 offset;
UINT32 len = (software_entry() == nullptr) ? length() : get_software_region_length("rom");
UINT8 *ROM;
@@ -300,7 +300,7 @@ void pce_cart_slot_device::call_unload()
bool pce_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -339,11 +339,11 @@ int pce_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len)
get default card software
-------------------------------------------------*/
-void pce_cart_slot_device::get_default_card_software(std::string &result)
+std::string pce_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "rom";
+ const char *slot_string;
UINT32 len = core_fsize(m_file);
dynamic_buffer rom(len);
int type;
@@ -356,11 +356,10 @@ void pce_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "rom");
+ return software_get_default_slot("rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/pce/pce_slot.h b/src/devices/bus/pce/pce_slot.h
index cb9036b02c7..e680ef7b950 100644
--- a/src/devices/bus/pce/pce_slot.h
+++ b/src/devices/bus/pce/pce_slot.h
@@ -73,7 +73,6 @@ public:
int get_type() { return m_type; }
int get_cart_type(UINT8 *ROM, UINT32 len);
- void setup_ram(UINT8 banks);
void internal_header_logging(UINT8 *ROM, UINT32 len);
void set_intf(const char * interface) { m_interface = interface; }
@@ -89,7 +88,7 @@ public:
virtual const char *file_extensions() const override { return "pce,bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart);
diff --git a/src/devices/bus/pet/64k.cpp b/src/devices/bus/pet/64k.cpp
index 4bc9c01d596..dfdc278a77d 100644
--- a/src/devices/bus/pet/64k.cpp
+++ b/src/devices/bus/pet/64k.cpp
@@ -28,7 +28,7 @@ const device_type PET_64K = &device_creator<pet_64k_expansion_device>;
inline UINT8 pet_64k_expansion_device::read_ram(offs_t offset)
{
- UINT8 data = 0;
+ UINT8 data;
if (offset < 0xc000)
{
diff --git a/src/devices/bus/pet/hsg.cpp b/src/devices/bus/pet/hsg.cpp
index 5f2d7d1df9d..d0bd43d0020 100644
--- a/src/devices/bus/pet/hsg.cpp
+++ b/src/devices/bus/pet/hsg.cpp
@@ -26,7 +26,7 @@
//**************************************************************************
#define EF9365_TAG "ef9365"
-#define EF9366_TAG "ef9366"
+#define EF9366_TAG EF9365_TAG
#define SCREEN_TAG "screen"
@@ -63,13 +63,23 @@ const rom_entry *cbm8000_hsg_t::device_rom_region() const
//-------------------------------------------------
-// screen_update -
+// ADDRESS_MAP( hsg_a_map )
//-------------------------------------------------
-UINT32 cbm8000_hsg_t::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return 0;
-}
+static ADDRESS_MAP_START( hsg_a_map, AS_0, 8, cbm8000_hsg_a_t )
+ ADDRESS_MAP_GLOBAL_MASK(0x7fff)
+ AM_RANGE(0x0000, 0x7fff) AM_RAM
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// ADDRESS_MAP( hsg_b_map )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( hsg_b_map, AS_0, 8, cbm8000_hsg_b_t )
+ ADDRESS_MAP_GLOBAL_MASK(0x3fff)
+ AM_RANGE(0x0000, 0x3fff) AM_RAM
+ADDRESS_MAP_END
//-------------------------------------------------
@@ -78,13 +88,18 @@ UINT32 cbm8000_hsg_t::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_a )
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
- MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, cbm8000_hsg_t, screen_update)
+ MCFG_SCREEN_UPDATE_DEVICE(EF9365_TAG, ef9365_device, screen_update)
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_DEVICE_ADD(EF9365_TAG, EF9365, 0)
+ MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000)
+ MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_a_map)
+ MCFG_EF936X_PALETTE("palette")
+ MCFG_EF936X_BITPLANES_CNT(1);
+ MCFG_EF936X_DISPLAYMODE(EF936X_512x512_DISPLAY_MODE);
MACHINE_CONFIG_END
@@ -94,13 +109,18 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_b )
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
- MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, cbm8000_hsg_t, screen_update)
+ MCFG_SCREEN_UPDATE_DEVICE(EF9366_TAG, ef9365_device, screen_update)
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_DEVICE_ADD(EF9366_TAG, EF9366, 0)
+ MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000)
+ MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_b_map)
+ MCFG_EF936X_PALETTE("palette")
+ MCFG_EF936X_BITPLANES_CNT(1);
+ MCFG_EF936X_DISPLAYMODE(EF936X_512x256_DISPLAY_MODE);
MACHINE_CONFIG_END
@@ -132,6 +152,7 @@ machine_config_constructor cbm8000_hsg_b_t::device_mconfig_additions() const
cbm8000_hsg_t::cbm8000_hsg_t(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_pet_expansion_card_interface(mconfig, *this),
+ m_gdc(*this, EF9365_TAG),
m_9000(*this, "9000"),
m_a000(*this, "a000")
{
@@ -139,13 +160,11 @@ cbm8000_hsg_t::cbm8000_hsg_t(const machine_config &mconfig, device_type type, co
cbm8000_hsg_a_t::cbm8000_hsg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
cbm8000_hsg_t(mconfig, CBM8000_HSG_A, "CBM 8000 High Speed Graphics (A)", tag, owner, clock, "cbm8000_hsg_a", __FILE__)
- //m_gdc(*this, EF9365_TAG)
{
}
cbm8000_hsg_b_t::cbm8000_hsg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
cbm8000_hsg_t(mconfig, CBM8000_HSG_B, "CBM 8000 High Speed Graphics (B)", tag, owner, clock, "cbm8000_hsg_b", __FILE__)
- //m_gdc(*this, EF9366_TAG)
{
}
@@ -165,7 +184,7 @@ void cbm8000_hsg_t::device_start()
void cbm8000_hsg_t::device_reset()
{
- //m_gdc->reset();
+ m_gdc->reset();
}
@@ -219,7 +238,7 @@ UINT8 cbm8000_hsg_t::pet_bd_r(address_space &space, offs_t offset, UINT8 data, i
}
else if (offset >= 0xaf70 && offset < 0xaf80)
{
- //data = m_gdc->data_r(space, offset & 0x0f);
+ data = m_gdc->data_r(space, offset & 0x0f);
}
break;
}
@@ -253,6 +272,6 @@ void cbm8000_hsg_t::pet_bd_w(address_space &space, offs_t offset, UINT8 data, in
}
else if (offset >= 0xaf70 && offset < 0xaf80)
{
- //m_gdc->data_w(space, offset & 0x0f, data);
+ m_gdc->data_w(space, offset & 0x0f, data);
}
}
diff --git a/src/devices/bus/pet/hsg.h b/src/devices/bus/pet/hsg.h
index 3b5dcaeb9ee..c8d81463b5b 100644
--- a/src/devices/bus/pet/hsg.h
+++ b/src/devices/bus/pet/hsg.h
@@ -13,6 +13,7 @@
#include "emu.h"
#include "exp.h"
+#include "video/ef9365.h"
@@ -28,7 +29,6 @@ class cbm8000_hsg_t : public device_t,
public:
// construction/destruction
cbm8000_hsg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
- cbm8000_hsg_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
@@ -46,7 +46,7 @@ protected:
virtual void device_reset() override;
private:
- //required_device<ef9365_device> m_gdc;
+ required_device<ef9365_device> m_gdc;
required_memory_region m_9000;
required_memory_region m_a000;
};
diff --git a/src/devices/bus/plus4/c1551.cpp b/src/devices/bus/plus4/c1551.cpp
index 4e10f777702..4e24bb153e9 100644
--- a/src/devices/bus/plus4/c1551.cpp
+++ b/src/devices/bus/plus4/c1551.cpp
@@ -108,7 +108,7 @@ WRITE8_MEMBER( c1551_t::port_w )
m_ga->mtr_w(BIT(data, 2));
// activity LED
- output_set_led_value(LED_ACT, BIT(data, 3));
+ machine().output().set_led_value(LED_ACT, BIT(data, 3));
// density select
m_ga->ds_w((data >> 5) & 0x03);
diff --git a/src/devices/bus/plus4/c1551.h b/src/devices/bus/plus4/c1551.h
index 04a8a1a7a47..af10e75daed 100644
--- a/src/devices/bus/plus4/c1551.h
+++ b/src/devices/bus/plus4/c1551.h
@@ -45,13 +45,9 @@ public:
DECLARE_WRITE8_MEMBER( tcbm_data_w );
DECLARE_READ8_MEMBER( tpi0_r );
DECLARE_WRITE8_MEMBER( tpi0_w );
- DECLARE_READ8_MEMBER( yb_r );
- DECLARE_WRITE8_MEMBER( yb_w );
DECLARE_READ8_MEMBER( tpi0_pc_r );
DECLARE_WRITE8_MEMBER( tpi0_pc_w );
- DECLARE_READ8_MEMBER( tpi1_pa_r );
- DECLARE_WRITE8_MEMBER( tpi1_pa_w );
DECLARE_READ8_MEMBER( tpi1_pb_r );
DECLARE_READ8_MEMBER( tpi1_pc_r );
DECLARE_WRITE8_MEMBER( tpi1_pc_w );
diff --git a/src/devices/bus/plus4/exp.cpp b/src/devices/bus/plus4/exp.cpp
index 5ea6289b2cc..47f404cacf4 100644
--- a/src/devices/bus/plus4/exp.cpp
+++ b/src/devices/bus/plus4/exp.cpp
@@ -147,7 +147,7 @@ bool plus4_expansion_slot_device::call_load()
bool plus4_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -157,9 +157,9 @@ bool plus4_expansion_slot_device::call_softlist_load(software_list_device &swlis
// get_default_card_software -
//-------------------------------------------------
-void plus4_expansion_slot_device::get_default_card_software(std::string &result)
+std::string plus4_expansion_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h
index 616857711c8..3595b013f98 100644
--- a/src/devices/bus/plus4/exp.h
+++ b/src/devices/bus/plus4/exp.h
@@ -135,7 +135,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
devcb_write_line m_write_irq;
devcb_read8 m_read_dma_cd;
diff --git a/src/devices/bus/ql/cst_q_plus4.h b/src/devices/bus/ql/cst_q_plus4.h
index 29437632b1a..eba0f3ac712 100644
--- a/src/devices/bus/ql/cst_q_plus4.h
+++ b/src/devices/bus/ql/cst_q_plus4.h
@@ -28,7 +28,6 @@ class cst_q_plus4_t : public device_t,
public:
// construction/destruction
cst_q_plus4_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- cst_q_plus4_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/cst_qdisc.h b/src/devices/bus/ql/cst_qdisc.h
index ec9f5a253e9..d2ddae10b2e 100644
--- a/src/devices/bus/ql/cst_qdisc.h
+++ b/src/devices/bus/ql/cst_qdisc.h
@@ -27,7 +27,6 @@ class cst_ql_disc_interface_t : public device_t,
public:
// construction/destruction
cst_ql_disc_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- cst_ql_disc_interface_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/cumana_fdi.h b/src/devices/bus/ql/cumana_fdi.h
index fa3d0d0a7ae..9ac1b9ba01e 100644
--- a/src/devices/bus/ql/cumana_fdi.h
+++ b/src/devices/bus/ql/cumana_fdi.h
@@ -27,7 +27,6 @@ class cumana_floppy_disk_interface_t : public device_t,
public:
// construction/destruction
cumana_floppy_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- cumana_floppy_disk_interface_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/kempston_di.h b/src/devices/bus/ql/kempston_di.h
index f0fe15a0f34..041bdc65544 100644
--- a/src/devices/bus/ql/kempston_di.h
+++ b/src/devices/bus/ql/kempston_di.h
@@ -27,7 +27,6 @@ class kempston_disk_interface_t : public device_t,
public:
// construction/destruction
kempston_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- kempston_disk_interface_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/miracle_gold_card.h b/src/devices/bus/ql/miracle_gold_card.h
index 694ce2af578..176f7556fdf 100644
--- a/src/devices/bus/ql/miracle_gold_card.h
+++ b/src/devices/bus/ql/miracle_gold_card.h
@@ -27,7 +27,6 @@ class miracle_gold_card_t : public device_t,
public:
// construction/destruction
miracle_gold_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- miracle_gold_card_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/miracle_hd.h b/src/devices/bus/ql/miracle_hd.h
index df4dc99a47b..c4aeaa6d74b 100644
--- a/src/devices/bus/ql/miracle_hd.h
+++ b/src/devices/bus/ql/miracle_hd.h
@@ -27,7 +27,6 @@ class miracle_hard_disk_t : public device_t,
public:
// construction/destruction
miracle_hard_disk_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- miracle_hard_disk_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/mp_fdi.h b/src/devices/bus/ql/mp_fdi.h
index d5e485ba3af..57681f30d28 100644
--- a/src/devices/bus/ql/mp_fdi.h
+++ b/src/devices/bus/ql/mp_fdi.h
@@ -27,7 +27,6 @@ class micro_peripherals_floppy_disk_interface_t : public device_t,
public:
// construction/destruction
micro_peripherals_floppy_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- micro_peripherals_floppy_disk_interface_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/opd_basic_master.h b/src/devices/bus/ql/opd_basic_master.h
index 3edf027fe92..16608210cf2 100644
--- a/src/devices/bus/ql/opd_basic_master.h
+++ b/src/devices/bus/ql/opd_basic_master.h
@@ -27,7 +27,6 @@ class opd_basic_master_t : public device_t,
public:
// construction/destruction
opd_basic_master_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- opd_basic_master_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/pcml_qdisk.h b/src/devices/bus/ql/pcml_qdisk.h
index a4062c8ab9f..29a011b7455 100644
--- a/src/devices/bus/ql/pcml_qdisk.h
+++ b/src/devices/bus/ql/pcml_qdisk.h
@@ -27,7 +27,6 @@ class pcml_q_disk_interface_t : public device_t,
public:
// construction/destruction
pcml_q_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- pcml_q_disk_interface_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/qubide.h b/src/devices/bus/ql/qubide.h
index 29e1fde3fa8..f8a363b55a2 100644
--- a/src/devices/bus/ql/qubide.h
+++ b/src/devices/bus/ql/qubide.h
@@ -28,7 +28,6 @@ class qubide_t : public device_t,
public:
// construction/destruction
qubide_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- qubide_t(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 ram_size);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
diff --git a/src/devices/bus/ql/rom.cpp b/src/devices/bus/ql/rom.cpp
index 6474957a7da..bd17b2cb1b8 100644
--- a/src/devices/bus/ql/rom.cpp
+++ b/src/devices/bus/ql/rom.cpp
@@ -79,7 +79,7 @@ bool ql_rom_cartridge_slot_t::call_load()
{
if (m_card)
{
- size_t size = 0;
+ size_t size;
if (software_entry() == nullptr)
{
@@ -104,7 +104,7 @@ bool ql_rom_cartridge_slot_t::call_load()
bool ql_rom_cartridge_slot_t::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -114,9 +114,9 @@ bool ql_rom_cartridge_slot_t::call_softlist_load(software_list_device &swlist, c
// get_default_card_software -
//-------------------------------------------------
-void ql_rom_cartridge_slot_t::get_default_card_software(std::string &result)
+std::string ql_rom_cartridge_slot_t::get_default_card_software()
{
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/ql/rom.h b/src/devices/bus/ql/rom.h
index e2c9a89818e..282c47cac3d 100644
--- a/src/devices/bus/ql/rom.h
+++ b/src/devices/bus/ql/rom.h
@@ -110,7 +110,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
device_ql_rom_cartridge_card_interface *m_card;
};
diff --git a/src/devices/bus/rs232/keyboard.h b/src/devices/bus/rs232/keyboard.h
index 38d9dfbc56e..37e2097b8fb 100644
--- a/src/devices/bus/rs232/keyboard.h
+++ b/src/devices/bus/rs232/keyboard.h
@@ -18,7 +18,6 @@ public:
serial_keyboard_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);
virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) override { device_serial_interface::rx_w(state); }
- DECLARE_READ_LINE_MEMBER(tx_r);
virtual ioport_constructor device_input_ports() const override;
diff --git a/src/devices/bus/rs232/xvd701.h b/src/devices/bus/rs232/xvd701.h
index 5f7b6a7ba64..29f6dd0a5a9 100644
--- a/src/devices/bus/rs232/xvd701.h
+++ b/src/devices/bus/rs232/xvd701.h
@@ -14,9 +14,6 @@ public:
virtual machine_config_constructor device_mconfig_additions() const override;
virtual WRITE_LINE_MEMBER( input_txd ) override { device_serial_interface::rx_w(state); }
-
- DECLARE_WRITE_LINE_MEMBER(update_serial);
-
protected:
virtual ioport_constructor device_input_ports() const override;
virtual void device_start() override;
diff --git a/src/devices/bus/saturn/sat_slot.cpp b/src/devices/bus/saturn/sat_slot.cpp
index 7e1f0cd1233..dba415c8a47 100644
--- a/src/devices/bus/saturn/sat_slot.cpp
+++ b/src/devices/bus/saturn/sat_slot.cpp
@@ -210,7 +210,7 @@ void sat_cart_slot_device::call_unload()
bool sat_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -219,9 +219,9 @@ bool sat_cart_slot_device::call_softlist_load(software_list_device &swlist, cons
get default card software
-------------------------------------------------*/
-void sat_cart_slot_device::get_default_card_software(std::string &result)
+std::string sat_cart_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "rom");
+ return software_get_default_slot("rom");
}
diff --git a/src/devices/bus/saturn/sat_slot.h b/src/devices/bus/saturn/sat_slot.h
index 075848ee409..e8a711c3a0b 100644
--- a/src/devices/bus/saturn/sat_slot.h
+++ b/src/devices/bus/saturn/sat_slot.h
@@ -89,7 +89,7 @@ public:
virtual const char *file_extensions() const override { return "bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ32_MEMBER(read_rom);
diff --git a/src/devices/bus/scv/slot.cpp b/src/devices/bus/scv/slot.cpp
index e29221b411a..15495afe918 100644
--- a/src/devices/bus/scv/slot.cpp
+++ b/src/devices/bus/scv/slot.cpp
@@ -216,7 +216,7 @@ bool scv_cart_slot_device::call_load()
bool scv_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -259,11 +259,11 @@ int scv_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len)
get default card software
-------------------------------------------------*/
-void scv_cart_slot_device::get_default_card_software(std::string &result)
+std::string scv_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "rom8k";
+ const char *slot_string;
UINT32 len = core_fsize(m_file);
dynamic_buffer rom(len);
int type;
@@ -276,11 +276,10 @@ void scv_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "rom8k");
+ return software_get_default_slot("rom8k");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/scv/slot.h b/src/devices/bus/scv/slot.h
index 1befef08f28..3fa5a02578a 100644
--- a/src/devices/bus/scv/slot.h
+++ b/src/devices/bus/scv/slot.h
@@ -88,7 +88,7 @@ public:
virtual const char *file_extensions() const override { return "bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart);
diff --git a/src/devices/bus/sega8/sega8_slot.cpp b/src/devices/bus/sega8/sega8_slot.cpp
index c88be013d3f..df3c59adc05 100644
--- a/src/devices/bus/sega8/sega8_slot.cpp
+++ b/src/devices/bus/sega8/sega8_slot.cpp
@@ -421,7 +421,7 @@ void sega8_cart_slot_device::call_unload()
bool sega8_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -603,11 +603,11 @@ int sega8_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len)
get default card software
-------------------------------------------------*/
-void sega8_cart_slot_device::get_default_card_software(std::string &result)
+std::string sega8_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "rom";
+ const char *slot_string;
UINT32 len = core_fsize(m_file), offset = 0;
dynamic_buffer rom(len);
int type;
@@ -623,11 +623,10 @@ void sega8_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "rom");
+ return software_get_default_slot("rom");
}
@@ -725,7 +724,7 @@ void sega8_cart_slot_device::internal_header_logging(UINT8 *ROM, UINT32 len, UIN
char reserved[10];
UINT8 version, csum_size, region, serial[3];
UINT16 checksum, csum = 0;
- UINT32 csum_end = 0;
+ UINT32 csum_end;
// LOG FILE DETAILS
logerror("FILE DETAILS\n" );
diff --git a/src/devices/bus/sega8/sega8_slot.h b/src/devices/bus/sega8/sega8_slot.h
index 64f332e5e81..439bc3be7a2 100644
--- a/src/devices/bus/sega8/sega8_slot.h
+++ b/src/devices/bus/sega8/sega8_slot.h
@@ -71,9 +71,6 @@ public:
UINT32 get_rom_size() { return m_rom_size; }
UINT32 get_ram_size() { return m_ram.size(); }
- void rom_map_setup(UINT32 size);
- void ram_map_setup(UINT8 banks);
-
void save_ram() { device().save_item(NAME(m_ram)); }
//private:
@@ -140,7 +137,7 @@ public:
virtual const char *file_extensions() const override { return m_extensions; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart);
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/rfu.cpp b/src/devices/bus/sms_ctrl/rfu.cpp
index 3da326aa378..2b43b31a6b8 100644
--- a/src/devices/bus/sms_ctrl/rfu.cpp
+++ b/src/devices/bus/sms_ctrl/rfu.cpp
@@ -81,7 +81,7 @@ void sms_rapid_fire_device::device_start()
UINT8 sms_rapid_fire_device::peripheral_r()
{
- UINT8 data = 0xff;
+ UINT8 data;
int num_intervals = (machine().time() - m_start_time).as_double() / m_interval.as_double();
m_read_state = num_intervals & 1;
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/snes/bsx.cpp b/src/devices/bus/snes/bsx.cpp
index 450bcadcbce..a534018f78d 100644
--- a/src/devices/bus/snes/bsx.cpp
+++ b/src/devices/bus/snes/bsx.cpp
@@ -70,7 +70,7 @@ sns_rom_bsmempak_device::sns_rom_bsmempak_device(const machine_config &mconfig,
void sns_rom_bsx_device::device_start()
{
- m_base_unit = auto_alloc(machine(), BSX_base(machine()));
+ m_base_unit = std::make_unique<BSX_base>(machine());
m_base_unit->init();
memset(m_cart_regs, 0x00, sizeof(m_cart_regs));
diff --git a/src/devices/bus/snes/bsx.h b/src/devices/bus/snes/bsx.h
index d4df9529326..43ee42f7b4a 100644
--- a/src/devices/bus/snes/bsx.h
+++ b/src/devices/bus/snes/bsx.h
@@ -51,7 +51,7 @@ public:
virtual DECLARE_WRITE8_MEMBER(chip_write) override;
// base regs
- BSX_base *m_base_unit;
+ std::unique_ptr<BSX_base> m_base_unit;
// cart regs
UINT8 m_cart_regs[16];
diff --git a/src/devices/bus/snes/rom.cpp b/src/devices/bus/snes/rom.cpp
index daac69bbc72..3763f11ed91 100644
--- a/src/devices/bus/snes/rom.cpp
+++ b/src/devices/bus/snes/rom.cpp
@@ -377,7 +377,7 @@ WRITE8_MEMBER( sns_rom_tekken2_device::chip_write )
// Banks $c0-$ff return open bus.
READ8_MEMBER( sns_rom_soulblad_device::chip_read )
{
- UINT8 value = 0;
+ UINT8 value;
offset &= 3;
switch (offset)
{
diff --git a/src/devices/bus/snes/sa1.cpp b/src/devices/bus/snes/sa1.cpp
index be4f4c039fe..b22af792a97 100644
--- a/src/devices/bus/snes/sa1.cpp
+++ b/src/devices/bus/snes/sa1.cpp
@@ -819,8 +819,8 @@ void sns_sa1_device::write_iram(UINT32 offset, UINT8 data)
UINT8 sns_sa1_device::read_bwram(UINT32 offset)
{
- int shift = 0;
- UINT8 mask = 0xff;
+ int shift;
+ UINT8 mask;
if (m_nvram.empty())
return 0xff; // this should probably never happen, or are there SA-1 games with no BWRAM?
@@ -852,7 +852,7 @@ UINT8 sns_sa1_device::read_bwram(UINT32 offset)
void sns_sa1_device::write_bwram(UINT32 offset, UINT8 data)
{
- UINT8 mask = 0xff;
+ UINT8 mask;
if (m_nvram.empty())
return; // this should probably never happen, or are there SA-1 games with no BWRAM?
@@ -894,7 +894,7 @@ void sns_sa1_device::write_bwram(UINT32 offset, UINT8 data)
READ8_MEMBER(sns_sa1_device::read_l)
{
- int bank = 0;
+ int bank;
if (offset == 0xffea && BIT(m_scpu_ctrl, 4)) return (m_nmi_vector >> 0) & 0xff;
if (offset == 0xffeb && BIT(m_scpu_ctrl, 4)) return (m_nmi_vector >> 8) & 0xff;
@@ -929,7 +929,7 @@ READ8_MEMBER(sns_sa1_device::read_l)
READ8_MEMBER(sns_sa1_device::read_h)
{
- int bank = 0;
+ int bank;
// ROM is mapped to [80-bf][8000-ffff] & [c0-ff][0000-ffff]
if (offset < 0x200000)
diff --git a/src/devices/bus/snes/sdd1.cpp b/src/devices/bus/snes/sdd1.cpp
index 56376641705..9570b5110ad 100644
--- a/src/devices/bus/snes/sdd1.cpp
+++ b/src/devices/bus/snes/sdd1.cpp
@@ -256,7 +256,7 @@ UINT8 SDD1_CM::CM_getBit(UINT8 *ROM, UINT32 *mmc)
{
UINT8 currContext;
UINT16 *context_bits;
- UINT8 bit = 0;
+ UINT8 bit;
switch (m_bitplanesInfo)
{
@@ -319,7 +319,7 @@ void SDD1_OL::OL_prepareDecomp(UINT8 *ROM, UINT32 *mmc, UINT32 first_byte, UINT1
void SDD1_OL::OL_launch(UINT8 *ROM, UINT32 *mmc)
{
UINT8 i;
- UINT8 register1 = 0, register2 = 0;
+ UINT8 register1, register2 = 0;
switch (m_bitplanesInfo)
{
@@ -369,20 +369,20 @@ void SDD1_OL::OL_launch(UINT8 *ROM, UINT32 *mmc)
SDD1_emu::SDD1_emu(running_machine &machine)
: m_machine(machine)
{
- m_IM = auto_alloc(machine, SDD1_IM());
- m_GCD = auto_alloc(machine, SDD1_GCD(m_IM));
- m_BG0 = auto_alloc(machine, SDD1_BG(m_GCD, 0));
- m_BG1 = auto_alloc(machine, SDD1_BG(m_GCD, 1));
- m_BG2 = auto_alloc(machine, SDD1_BG(m_GCD, 2));
- m_BG3 = auto_alloc(machine, SDD1_BG(m_GCD, 3));
- m_BG4 = auto_alloc(machine, SDD1_BG(m_GCD, 4));
- m_BG5 = auto_alloc(machine, SDD1_BG(m_GCD, 5));
- m_BG6 = auto_alloc(machine, SDD1_BG(m_GCD, 6));
- m_BG7 = auto_alloc(machine, SDD1_BG(m_GCD, 7));
- m_PEM = auto_alloc(machine, SDD1_PEM(m_BG0, m_BG1, m_BG2, m_BG3,
- m_BG4, m_BG5, m_BG6, m_BG7));
- m_CM = auto_alloc(machine, SDD1_CM(m_PEM));
- m_OL = auto_alloc(machine, SDD1_OL(m_CM));
+ m_IM = std::make_unique<SDD1_IM>();
+ m_GCD = std::make_unique<SDD1_GCD>(m_IM.get());
+ m_BG0 = std::make_unique<SDD1_BG>(m_GCD.get(), 0);
+ m_BG1 = std::make_unique<SDD1_BG>(m_GCD.get(), 1);
+ m_BG2 = std::make_unique<SDD1_BG>(m_GCD.get(), 2);
+ m_BG3 = std::make_unique<SDD1_BG>(m_GCD.get(), 3);
+ m_BG4 = std::make_unique<SDD1_BG>(m_GCD.get(), 4);
+ m_BG5 = std::make_unique<SDD1_BG>(m_GCD.get(), 5);
+ m_BG6 = std::make_unique<SDD1_BG>(m_GCD.get(), 6);
+ m_BG7 = std::make_unique<SDD1_BG>(m_GCD.get(), 7);
+ m_PEM = std::make_unique<SDD1_PEM>(m_BG0.get(), m_BG1.get(), m_BG2.get(), m_BG3.get(),
+ m_BG4.get(), m_BG5.get(), m_BG6.get(), m_BG7.get());
+ m_CM = std::make_unique<SDD1_CM>(m_PEM.get());
+ m_OL = std::make_unique<SDD1_OL>(m_CM.get());
}
void SDD1_emu::SDD1emu_decompress(UINT8 *ROM, UINT32 *mmc, UINT32 in_buf, UINT16 out_len, UINT8 *out_buf)
@@ -426,9 +426,9 @@ sns_rom_sdd1_device::sns_rom_sdd1_device(const machine_config &mconfig, const ch
void sns_rom_sdd1_device::device_start()
{
- m_sdd1emu = auto_alloc(machine(), SDD1_emu(machine()));
+ m_sdd1emu = std::make_unique<SDD1_emu>(machine());
- m_buffer.data = (UINT8*)auto_alloc_array(machine(), UINT8, 0x10000);
+ m_buffer.data = std::make_unique<UINT8[]>(0x10000);
m_buffer.ready = 0;
save_item(NAME(m_sdd1_enable));
@@ -441,7 +441,7 @@ void sns_rom_sdd1_device::device_start()
save_item(NAME(m_dma[i].size), i);
}
- save_pointer(NAME(m_buffer.data), 0x10000);
+ save_pointer(NAME(m_buffer.data.get()), 0x10000);
save_item(NAME(m_buffer.offset));
save_item(NAME(m_buffer.size));
save_item(NAME(m_buffer.ready));
@@ -567,7 +567,7 @@ UINT8 sns_rom_sdd1_device::read_helper(UINT32 addr)
// SDD1_emu calls this function; it needs to access uncompressed data;
// so temporarily disable decompression mode for decompress() call.
- m_sdd1emu->SDD1emu_decompress(m_rom, m_mmc, addr, m_buffer.size, m_buffer.data);
+ m_sdd1emu->SDD1emu_decompress(m_rom, m_mmc, addr, m_buffer.size, m_buffer.data.get());
m_buffer.ready = 1;
}
diff --git a/src/devices/bus/snes/sdd1.h b/src/devices/bus/snes/sdd1.h
index 24e8ecaf47a..e9dcc9e71e1 100644
--- a/src/devices/bus/snes/sdd1.h
+++ b/src/devices/bus/snes/sdd1.h
@@ -126,13 +126,19 @@ public:
running_machine &machine() const { return m_machine; }
- SDD1_IM* m_IM;
- SDD1_GCD* m_GCD;
- SDD1_BG* m_BG0; SDD1_BG* m_BG1; SDD1_BG* m_BG2; SDD1_BG* m_BG3;
- SDD1_BG* m_BG4; SDD1_BG* m_BG5; SDD1_BG* m_BG6; SDD1_BG* m_BG7;
- SDD1_PEM* m_PEM;
- SDD1_CM* m_CM;
- SDD1_OL* m_OL;
+ std::unique_ptr<SDD1_IM> m_IM;
+ std::unique_ptr<SDD1_GCD> m_GCD;
+ std::unique_ptr<SDD1_BG> m_BG0;
+ std::unique_ptr<SDD1_BG> m_BG1;
+ std::unique_ptr<SDD1_BG> m_BG2;
+ std::unique_ptr<SDD1_BG> m_BG3;
+ std::unique_ptr<SDD1_BG> m_BG4;
+ std::unique_ptr<SDD1_BG> m_BG5;
+ std::unique_ptr<SDD1_BG> m_BG6;
+ std::unique_ptr<SDD1_BG> m_BG7;
+ std::unique_ptr<SDD1_PEM> m_PEM;
+ std::unique_ptr<SDD1_CM> m_CM;
+ std::unique_ptr<SDD1_OL> m_OL;
void SDD1emu_decompress(UINT8 *ROM, UINT32 *mmc, UINT32 in_buf, UINT16 out_len, UINT8 *out_buf);
@@ -176,11 +182,11 @@ public:
UINT16 size; // $43x5-$43x6 -- DMA transfer size
} m_dma[8];
- SDD1_emu* m_sdd1emu;
+ std::unique_ptr<SDD1_emu> m_sdd1emu;
struct
{
- UINT8 *data; // pointer to decompressed S-DD1 data (65536 bytes)
+ std::unique_ptr<UINT8[]> data; // pointer to decompressed S-DD1 data (65536 bytes)
UINT16 offset; // read index into S-DD1 decompression buffer
UINT32 size; // length of data buffer; reads decrement counter, set ready to false at 0
UINT8 ready; // 1 when data[] is valid; 0 to invoke sdd1emu.decompress()
diff --git a/src/devices/bus/snes/snes_slot.cpp b/src/devices/bus/snes/snes_slot.cpp
index 10add2da1cc..65c2fffdb4d 100644
--- a/src/devices/bus/snes/snes_slot.cpp
+++ b/src/devices/bus/snes/snes_slot.cpp
@@ -797,7 +797,7 @@ void base_sns_cart_slot_device::setup_addon_from_fullpath()
if (!m_cart->get_addon_bios_size())
{
std::string region = std::string(m_cart->device().tag()).append(":addon");
- UINT8 *ROM = nullptr;
+ UINT8 *ROM;
switch (m_addon)
{
@@ -886,7 +886,7 @@ void base_sns_cart_slot_device::setup_nvram()
bool base_sns_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
@@ -999,14 +999,14 @@ void base_sns_cart_slot_device::get_cart_type_addon(UINT8 *ROM, UINT32 len, int
get default card software
-------------------------------------------------*/
-void base_sns_cart_slot_device::get_default_card_software(std::string &result)
+std::string base_sns_cart_slot_device::get_default_card_software()
{
bool fullpath = open_image_file(mconfig().options());
if (fullpath)
{
- const char *slot_string = "lorom";
- UINT32 offset = 0;
+ const char *slot_string;
+ UINT32 offset;
UINT32 len = core_fsize(m_file);
dynamic_buffer rom(len);
int type = 0, addon = 0;
@@ -1058,11 +1058,10 @@ void base_sns_cart_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "lorom");
+ return software_get_default_slot("lorom");
}
diff --git a/src/devices/bus/snes/snes_slot.h b/src/devices/bus/snes/snes_slot.h
index 8b433d1128a..02b00a1cb87 100644
--- a/src/devices/bus/snes/snes_slot.h
+++ b/src/devices/bus/snes/snes_slot.h
@@ -180,7 +180,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_l);
diff --git a/src/devices/bus/snes/spc7110.cpp b/src/devices/bus/snes/spc7110.cpp
index a6ebbdab2df..b9b0ee77cd3 100644
--- a/src/devices/bus/snes/spc7110.cpp
+++ b/src/devices/bus/snes/spc7110.cpp
@@ -50,7 +50,7 @@ sns_rom_spc7110rtc_device::sns_rom_spc7110rtc_device(const machine_config &mconf
void sns_rom_spc7110_device::spc7110_start()
{
- m_decomp = auto_alloc(machine(), SPC7110_Decomp(machine()));
+ m_decomp = std::make_unique<SPC7110_Decomp>(machine());
// The SPC7110 works in conjunction with 0x2000 of RAM, which is battery backed up (and hence emulated by our m_nvram)
@@ -300,7 +300,7 @@ static const UINT8 spc7110_mode2_context_table[32][2] =
SPC7110_Decomp::SPC7110_Decomp(running_machine &machine)
: m_machine(machine)
{
- m_decomp_buffer = (UINT8*)auto_alloc_array(machine, UINT8, SPC7110_DECOMP_BUFFER_SIZE);
+ m_decomp_buffer = std::make_unique<UINT8[]>(SPC7110_DECOMP_BUFFER_SIZE);
reset();
for (int i = 0; i < 256; i++)
@@ -325,7 +325,7 @@ SPC7110_Decomp::SPC7110_Decomp(running_machine &machine)
m_machine.save().save_item(m_decomp_mode, "SNES_SPC7110/m_decomp_mode");
m_machine.save().save_item(m_decomp_offset, "SNES_SPC7110/m_decomp_offset");
- m_machine.save().save_pointer(m_decomp_buffer, "SNES_SPC7110/m_decomp_buffer", SPC7110_DECOMP_BUFFER_SIZE);
+ m_machine.save().save_pointer(m_decomp_buffer.get(), "SNES_SPC7110/m_decomp_buffer", SPC7110_DECOMP_BUFFER_SIZE);
m_machine.save().save_item(m_decomp_buffer_rdoffset, "SNES_SPC7110/m_decomp_buffer_rdoffset");
m_machine.save().save_item(m_decomp_buffer_wroffset, "SNES_SPC7110/m_decomp_buffer_wroffset");
m_machine.save().save_item(m_decomp_buffer_length, "SNES_SPC7110/m_decomp_buffer_length");
@@ -1233,7 +1233,7 @@ READ8_MEMBER(sns_rom_spc7110_device::chip_read)
case 0x4840: return m_r4840;
case 0x4841:
{
- UINT8 data = 0;
+ UINT8 data;
if (m_rtc_state == RTCS_Inactive || m_rtc_state == RTCS_ModeSelect)
return 0x00;
diff --git a/src/devices/bus/snes/spc7110.h b/src/devices/bus/snes/spc7110.h
index ba356790d2f..33d7170d02c 100644
--- a/src/devices/bus/snes/spc7110.h
+++ b/src/devices/bus/snes/spc7110.h
@@ -50,7 +50,7 @@ private:
UINT32 m_decomp_mode;
UINT32 m_decomp_offset;
- UINT8 *m_decomp_buffer;
+ std::unique_ptr<UINT8[]> m_decomp_buffer;
UINT32 m_decomp_buffer_rdoffset;
UINT32 m_decomp_buffer_wroffset;
UINT32 m_decomp_buffer_length;
@@ -130,7 +130,7 @@ public:
UINT8 m_r480b; // decompression control register
UINT8 m_r480c; // decompression status
- SPC7110_Decomp* m_decomp;
+ std::unique_ptr<SPC7110_Decomp> m_decomp;
UINT8 m_r4811; // data pointer low
UINT8 m_r4812; // data pointer high
diff --git a/src/devices/bus/ti99_peb/bwg.cpp b/src/devices/bus/ti99_peb/bwg.cpp
index 89c0b5d69ea..4085dcfe230 100644
--- a/src/devices/bus/ti99_peb/bwg.cpp
+++ b/src/devices/bus/ti99_peb/bwg.cpp
@@ -338,7 +338,7 @@ WRITE8_MEMBER(snug_bwg_device::write)
*/
READ8Z_MEMBER(snug_bwg_device::crureadz)
{
- UINT8 reply = 0;
+ UINT8 reply;
if ((offset & 0xff00)==m_cru_base)
{
diff --git a/src/devices/bus/ti99_peb/bwg.h b/src/devices/bus/ti99_peb/bwg.h
index db0ba735792..6a301b5cb59 100644
--- a/src/devices/bus/ti99_peb/bwg.h
+++ b/src/devices/bus/ti99_peb/bwg.h
@@ -28,9 +28,6 @@ public:
DECLARE_WRITE8_MEMBER(write) override;
DECLARE_SETADDRESS_DBIN_MEMBER(setaddress_dbin) override;
- DECLARE_WRITE_LINE_MEMBER( intrq_w );
- DECLARE_WRITE_LINE_MEMBER( drq_w );
-
DECLARE_READ8Z_MEMBER(crureadz) override;
DECLARE_WRITE8_MEMBER(cruwrite) override;
diff --git a/src/devices/bus/ti99_peb/evpc.cpp b/src/devices/bus/ti99_peb/evpc.cpp
index ee7b4cd77a2..6945df0dcc6 100644
--- a/src/devices/bus/ti99_peb/evpc.cpp
+++ b/src/devices/bus/ti99_peb/evpc.cpp
@@ -41,7 +41,7 @@ snug_enhanced_video_device::snug_enhanced_video_device(const machine_config &mco
void snug_enhanced_video_device::nvram_default()
{
- memset(m_novram, 0, NOVRAM_SIZE);
+ memset(m_novram.get(), 0, NOVRAM_SIZE);
}
//-------------------------------------------------
@@ -51,7 +51,7 @@ void snug_enhanced_video_device::nvram_default()
void snug_enhanced_video_device::nvram_read(emu_file &file)
{
- file.read(m_novram, NOVRAM_SIZE);
+ file.read(m_novram.get(), NOVRAM_SIZE);
}
//-------------------------------------------------
@@ -61,7 +61,7 @@ void snug_enhanced_video_device::nvram_read(emu_file &file)
void snug_enhanced_video_device::nvram_write(emu_file &file)
{
- file.write(m_novram, NOVRAM_SIZE);
+ file.write(m_novram.get(), NOVRAM_SIZE);
}
@@ -312,7 +312,7 @@ WRITE8_MEMBER(snug_enhanced_video_device::cruwrite)
void snug_enhanced_video_device::device_start()
{
m_dsrrom = memregion(DSRROM)->base();
- m_novram = global_alloc_array(UINT8, NOVRAM_SIZE);
+ m_novram = std::make_unique<UINT8[]>(NOVRAM_SIZE);
}
void snug_enhanced_video_device::device_reset()
@@ -327,7 +327,7 @@ void snug_enhanced_video_device::device_reset()
void snug_enhanced_video_device::device_stop()
{
- global_free_array(m_novram);
+ m_novram = nullptr;
}
ROM_START( ti99_evpc )
diff --git a/src/devices/bus/ti99_peb/evpc.h b/src/devices/bus/ti99_peb/evpc.h
index 5fbc9a73e38..2b67fd272fc 100644
--- a/src/devices/bus/ti99_peb/evpc.h
+++ b/src/devices/bus/ti99_peb/evpc.h
@@ -55,7 +55,7 @@ private:
UINT8* m_dsrrom;
bool m_RAMEN;
int m_dsr_page;
- UINT8* m_novram; /* NOVRAM area */
+ std::unique_ptr<UINT8[]> m_novram; /* NOVRAM area */
evpc_palette m_palette;
};
diff --git a/src/devices/bus/ti99_peb/hfdc.cpp b/src/devices/bus/ti99_peb/hfdc.cpp
index 6e2e11fe628..c3e4779c1ef 100644
--- a/src/devices/bus/ti99_peb/hfdc.cpp
+++ b/src/devices/bus/ti99_peb/hfdc.cpp
@@ -91,7 +91,7 @@ myarc_hfdc_device::myarc_hfdc_device(const machine_config &mconfig, const char *
: ti_expansion_card_device(mconfig, TI99_HFDC, "Myarc Hard and Floppy Disk Controller", tag, owner, clock, "ti99_hfdc", __FILE__), m_motor_on_timer(nullptr),
m_hdc9234(*this, FDC_TAG),
m_clock(*this, CLOCK_TAG), m_current_floppy(nullptr), m_current_harddisk(nullptr), m_see_switches(false), m_irq(), m_dip(), m_motor_running(false),
- m_inDsrArea(false), m_HDCsel(false), m_RTCsel(false), m_tapesel(false), m_RAMsel(false), m_ROMsel(false), m_address(0), m_dma_in_progress(false),
+ m_inDsrArea(false), m_HDCsel(false), m_RTCsel(false), m_tapesel(false), m_RAMsel(false), m_ROMsel(false), m_address(0),
m_wait_for_hd1(false), m_dsrrom(nullptr), m_rom_page(0), m_buffer_ram(nullptr), m_status_latch(0), m_dma_address(0), m_output1_latch(0), m_output2_latch(0), m_lastval(0), m_MOTOR_ON(), m_readyflags(0)
{
}
diff --git a/src/devices/bus/ti99_peb/hfdc.h b/src/devices/bus/ti99_peb/hfdc.h
index 7e62a22f253..ec51e3122d6 100644
--- a/src/devices/bus/ti99_peb/hfdc.h
+++ b/src/devices/bus/ti99_peb/hfdc.h
@@ -139,9 +139,6 @@ private:
// Recent address
int m_address;
- // DMA in progress
- bool m_dma_in_progress;
-
// Wait for HD. This was an addition in later cards.
bool m_wait_for_hd1;
@@ -182,7 +179,6 @@ private:
void set_bits(UINT8& byte, int mask, bool set);
// Joined ready line towards the controller
- void set_ready(int dev, bool ready);
int m_readyflags;
};
#endif
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/ti99_peb/hsgpl.cpp b/src/devices/bus/ti99_peb/hsgpl.cpp
index 7f75f23ca25..42ec9360ad3 100644
--- a/src/devices/bus/ti99_peb/hsgpl.cpp
+++ b/src/devices/bus/ti99_peb/hsgpl.cpp
@@ -613,8 +613,8 @@ void snug_high_speed_gpl_device::grom_write(address_space& space, offs_t offset,
void snug_high_speed_gpl_device::device_start()
{
- m_ram6_memory = global_alloc_array(UINT8, RAMSIZE);
- m_gram_memory = global_alloc_array(UINT8, GRAMSIZE);
+ m_ram6_memory = std::make_unique<UINT8[]>(RAMSIZE);
+ m_gram_memory = std::make_unique<UINT8[]>(GRAMSIZE);
}
void snug_high_speed_gpl_device::device_reset()
@@ -651,8 +651,8 @@ void snug_high_speed_gpl_device::device_config_complete(void)
void snug_high_speed_gpl_device::device_stop()
{
- global_free_array(m_ram6_memory);
- global_free_array(m_gram_memory);
+ m_ram6_memory = nullptr;
+ m_gram_memory = nullptr;
}
// Flash setting is used to flash an empty HSGPL DSR ROM
diff --git a/src/devices/bus/ti99_peb/hsgpl.h b/src/devices/bus/ti99_peb/hsgpl.h
index 9cebf4bdb13..dfb755c67b4 100644
--- a/src/devices/bus/ti99_peb/hsgpl.h
+++ b/src/devices/bus/ti99_peb/hsgpl.h
@@ -47,8 +47,8 @@ private:
at29c040a_device* m_grom_a_eeprom;
at29c040a_device* m_grom_b_eeprom;
- UINT8* m_ram6_memory;
- UINT8* m_gram_memory;
+ std::unique_ptr<UINT8[]> m_ram6_memory;
+ std::unique_ptr<UINT8[]> m_gram_memory;
void dsrspace_readz(address_space& space, offs_t offset, UINT8* value, UINT8 mem_mask);
void cartspace_readz(address_space& space, offs_t offset, UINT8* value, UINT8 mem_mask);
diff --git a/src/devices/bus/ti99_peb/memex.cpp b/src/devices/bus/ti99_peb/memex.cpp
index 17cc6fe4283..66dd2f7b291 100644
--- a/src/devices/bus/ti99_peb/memex.cpp
+++ b/src/devices/bus/ti99_peb/memex.cpp
@@ -48,7 +48,7 @@ bool geneve_memex_device::access_enabled(offs_t offset)
// Some traditional cards will not decode the AMx lines, so
// we may have to lock out those areas
int page = (offset >> 13)&0xff;
- int index = 0;
+ int index;
// SW2: "off" locks
// 10xxx010
diff --git a/src/devices/bus/ti99_peb/myarcmem.cpp b/src/devices/bus/ti99_peb/myarcmem.cpp
index 159152ddef5..08e8f893a95 100644
--- a/src/devices/bus/ti99_peb/myarcmem.cpp
+++ b/src/devices/bus/ti99_peb/myarcmem.cpp
@@ -52,7 +52,7 @@ m_ram(nullptr), m_dsrrom(nullptr), m_bank(0), m_size(0)
int myarc_memory_expansion_device::get_base(int offset)
{
- int base = 0;
+ int base;
if (m_size == SIZE_128)
{
base = ((m_bank & 0x03) << 15);
diff --git a/src/devices/bus/ti99_peb/samsmem.cpp b/src/devices/bus/ti99_peb/samsmem.cpp
index 3951294f3c7..0ff3e27d928 100644
--- a/src/devices/bus/ti99_peb/samsmem.cpp
+++ b/src/devices/bus/ti99_peb/samsmem.cpp
@@ -37,7 +37,7 @@ sams_memory_expansion_device::sams_memory_expansion_device(const machine_config
*/
READ8Z_MEMBER(sams_memory_expansion_device::readz)
{
- int base = 0;
+ int base;
if (m_access_mapper && ((offset & 0xe000)==0x4000))
{
@@ -61,7 +61,7 @@ READ8Z_MEMBER(sams_memory_expansion_device::readz)
WRITE8_MEMBER(sams_memory_expansion_device::write)
{
- int base = 0;
+ int base;
if (m_access_mapper && ((offset & 0xe000)==0x4000))
{
diff --git a/src/devices/bus/ti99_peb/spchsyn.h b/src/devices/bus/ti99_peb/spchsyn.h
index 38af09dd6d7..44e7aca54c4 100644
--- a/src/devices/bus/ti99_peb/spchsyn.h
+++ b/src/devices/bus/ti99_peb/spchsyn.h
@@ -32,10 +32,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( speech_ready );
- DECLARE_READ8_MEMBER( spchrom_read );
- DECLARE_WRITE8_MEMBER( spchrom_load_address );
- DECLARE_WRITE8_MEMBER( spchrom_read_and_branch );
-
protected:
virtual void device_start() override;
virtual void device_reset(void) override;
diff --git a/src/devices/bus/ti99_peb/ti_fdc.h b/src/devices/bus/ti99_peb/ti_fdc.h
index ababee22aae..ed1082d3b0a 100644
--- a/src/devices/bus/ti99_peb/ti_fdc.h
+++ b/src/devices/bus/ti99_peb/ti_fdc.h
@@ -27,9 +27,6 @@ public:
DECLARE_WRITE8_MEMBER(write) override;
DECLARE_SETADDRESS_DBIN_MEMBER(setaddress_dbin) override;
- DECLARE_WRITE_LINE_MEMBER( intrq_w );
- DECLARE_WRITE_LINE_MEMBER( drq_w );
-
DECLARE_READ8Z_MEMBER(crureadz) override;
DECLARE_WRITE8_MEMBER(cruwrite) override;
diff --git a/src/devices/bus/ti99_peb/ti_rs232.cpp b/src/devices/bus/ti99_peb/ti_rs232.cpp
index af23d59a445..e93bb86d015 100644
--- a/src/devices/bus/ti99_peb/ti_rs232.cpp
+++ b/src/devices/bus/ti99_peb/ti_rs232.cpp
@@ -176,7 +176,7 @@ int ti_rs232_attached_device::get_index_from_tagname()
*/
bool ti_rs232_attached_device::call_load()
{
- tms9902_device* tms9902 = nullptr;
+ tms9902_device* tms9902;
// ti_rs232_pio_device* card = static_cast<ti_rs232_pio_device*>(owner());
int devnumber = get_index_from_tagname();
@@ -206,7 +206,7 @@ bool ti_rs232_attached_device::call_load()
void ti_rs232_attached_device::call_unload()
{
- tms9902_device* tms9902 = nullptr;
+ tms9902_device* tms9902;
int devnumber = get_index_from_tagname();
if (devnumber==0)
@@ -705,7 +705,7 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind)
if (m_bufpos[uartind] == m_buflen[uartind])
{
// Get all out of sdlsocket
- m_buflen[uartind] = serial->fread(m_recvbuf[uartind], 512);
+ m_buflen[uartind] = serial->fread(m_recvbuf[uartind].get(), 512);
m_bufpos[uartind] = 0;
if (m_buflen[uartind]==0) return;
}
@@ -1023,8 +1023,8 @@ void ti_rs232_pio_device::device_start()
m_serdev[1] = subdevice<ti_rs232_attached_device>("serdev1");
m_piodev = subdevice<ti_pio_attached_device>("piodev");
// Prepare the receive buffers
- m_recvbuf[0] = global_alloc_array(UINT8, 512);
- m_recvbuf[1] = global_alloc_array(UINT8, 512);
+ m_recvbuf[0] = std::make_unique<UINT8[]>(512);
+ m_recvbuf[1] = std::make_unique<UINT8[]>(512);
m_pio_write = true; // required for call_load of pio_attached_device
m_pio_writable = false;
m_pio_handshakein = false;
@@ -1032,8 +1032,8 @@ void ti_rs232_pio_device::device_start()
void ti_rs232_pio_device::device_stop()
{
- if (m_recvbuf[0] != nullptr) global_free_array(m_recvbuf[0]);
- if (m_recvbuf[1] != nullptr) global_free_array(m_recvbuf[1]);
+ m_recvbuf[0] = nullptr;
+ m_recvbuf[1] = nullptr;
}
void ti_rs232_pio_device::device_reset()
diff --git a/src/devices/bus/ti99_peb/ti_rs232.h b/src/devices/bus/ti99_peb/ti_rs232.h
index df1a7bb3a69..24c190aac2d 100644
--- a/src/devices/bus/ti99_peb/ti_rs232.h
+++ b/src/devices/bus/ti99_peb/ti_rs232.h
@@ -45,7 +45,6 @@ public:
DECLARE_WRITE8_MEMBER( xmit1_callback );
DECLARE_WRITE8_MEMBER( ctrl0_callback );
DECLARE_WRITE8_MEMBER( ctrl1_callback );
- DECLARE_WRITE_LINE_MEMBER( senila );
protected:
virtual void device_start(void) override;
@@ -80,7 +79,7 @@ private:
// Input buffer for each UART. We have to copy the contents of sdlsocket here
// because the buffer in corefile will be lost on the next write operation
- UINT8* m_recvbuf[2];
+ std::unique_ptr<UINT8[]> m_recvbuf[2];
int m_bufpos[2], m_buflen[2];
// Latches the state of the output lines for UART0/UART1
diff --git a/src/devices/bus/ti99x/998board.cpp b/src/devices/bus/ti99x/998board.cpp
index d59313bc57c..6df84271cc4 100644
--- a/src/devices/bus/ti99x/998board.cpp
+++ b/src/devices/bus/ti99x/998board.cpp
@@ -295,7 +295,7 @@ void mainboard8_device::PTGE_set(bool state)
READ8_MEMBER( mainboard8_device::readm )
{
UINT8 value = 0;
- bool found = false;
+ bool found;
if (TRACE_MEM) logerror("%s: read from %04x\n", tag(), offset);
found = access_logical_r(space, offset, &value, mem_mask);
m_waitcount = 2;
@@ -323,7 +323,7 @@ READ8_MEMBER( mainboard8_device::readm )
WRITE8_MEMBER( mainboard8_device::writem )
{
- bool found = false;
+ bool found;
// Look for components responding to the logical address
found = access_logical_w(space, offset, data, mem_mask);
@@ -485,7 +485,7 @@ bool mainboard8_device::access_logical_r(address_space& space, offs_t offset, UI
{
bool found = false;
logically_addressed_device *ldev = m_logcomp.first();
- bus8z_device *bdev = nullptr;
+ bus8z_device *bdev;
if (TRACE_MEM) logerror("%s: offset=%04x; CRUS=%d, PTGEN=%d\n", tag(), offset, m_CRUS? 1:0, m_PTGE? 0:1);
while (ldev != nullptr)
@@ -531,7 +531,7 @@ bool mainboard8_device::access_logical_w(address_space& space, offs_t offset, UI
{
bool found = false;
logically_addressed_device *ldev = m_logcomp.first();
- bus8z_device *bdev = nullptr;
+ bus8z_device *bdev;
while (ldev != nullptr)
{
@@ -573,7 +573,7 @@ bool mainboard8_device::access_logical_w(address_space& space, offs_t offset, UI
void mainboard8_device::access_physical_r( address_space& space, offs_t pas_address, UINT8 *value, UINT8 mem_mask )
{
physically_addressed_device *pdev = m_physcomp.first();
- bus8z_device *bdev = nullptr;
+ bus8z_device *bdev;
while (pdev != nullptr)
{
@@ -621,7 +621,7 @@ void mainboard8_device::access_physical_r( address_space& space, offs_t pas_addr
void mainboard8_device::access_physical_w( address_space& space, offs_t pas_address, UINT8 data, UINT8 mem_mask )
{
physically_addressed_device *pdev = m_physcomp.first();
- bus8z_device *bdev = nullptr;
+ bus8z_device *bdev;
while (pdev != nullptr)
{
diff --git a/src/devices/bus/ti99x/998board.h b/src/devices/bus/ti99x/998board.h
index d7f8e5f7fc7..9231d9be647 100644
--- a/src/devices/bus/ti99x/998board.h
+++ b/src/devices/bus/ti99x/998board.h
@@ -157,10 +157,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( speech8_ready );
- DECLARE_READ8_MEMBER( spchrom_read );
- DECLARE_WRITE8_MEMBER( spchrom_load_address );
- DECLARE_WRITE8_MEMBER( spchrom_read_and_branch );
-
protected:
virtual void device_start() override;
virtual void device_reset(void) override;
diff --git a/src/devices/bus/ti99x/datamux.cpp b/src/devices/bus/ti99x/datamux.cpp
index a9b60f30c47..1b8ec8de02f 100644
--- a/src/devices/bus/ti99x/datamux.cpp
+++ b/src/devices/bus/ti99x/datamux.cpp
@@ -393,7 +393,7 @@ void ti99_datamux_device::device_start(void)
void ti99_datamux_device::device_stop(void)
{
- if (m_ram16b) global_free_array(m_ram16b);
+ m_ram16b = nullptr;
}
void ti99_datamux_device::device_reset(void)
@@ -411,7 +411,7 @@ void ti99_datamux_device::device_reset(void)
// better use a region?
if (m_ram16b==nullptr)
{
- m_ram16b = global_alloc_array_clear(UINT16, 32768/2);
+ m_ram16b = make_unique_clear<UINT16[]>(32768/2);
}
// Now building the list of active devices at this databus multiplex.
@@ -429,7 +429,7 @@ void ti99_datamux_device::device_reset(void)
}
else
{
- UINT32 set = 0;
+ UINT32 set;
bool active_device = true;
if (list[i].setting!=nullptr)
{
diff --git a/src/devices/bus/ti99x/datamux.h b/src/devices/bus/ti99x/datamux.h
index a93fd6b4740..604dfb2e62f 100644
--- a/src/devices/bus/ti99x/datamux.h
+++ b/src/devices/bus/ti99x/datamux.h
@@ -134,7 +134,7 @@ private:
int m_waitcount;
/* Memory expansion (internal, 16 bit). */
- UINT16 *m_ram16b;
+ std::unique_ptr<UINT16[]> m_ram16b;
/* Use the memory expansion? */
bool m_use32k;
diff --git a/src/devices/bus/ti99x/genboard.cpp b/src/devices/bus/ti99x/genboard.cpp
index 1817aad95a2..9d6aeef7e76 100644
--- a/src/devices/bus/ti99x/genboard.cpp
+++ b/src/devices/bus/ti99x/genboard.cpp
@@ -1186,7 +1186,7 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read
*/
READ8_MEMBER( geneve_mapper_device::read_from_pfm )
{
- UINT8 value = 0;
+ UINT8 value;
if (!m_pfm_output_enable) return 0;
int address = (offset & 0x01ffff) | (m_pfm_bank<<17);
diff --git a/src/devices/bus/ti99x/gromport.cpp b/src/devices/bus/ti99x/gromport.cpp
index d75ca72d469..9e1533cb9a8 100644
--- a/src/devices/bus/ti99x/gromport.cpp
+++ b/src/devices/bus/ti99x/gromport.cpp
@@ -134,6 +134,52 @@
#define GKRACKER_ROM_TAG "gkracker_rom"
#define GKRACKER_NVRAM_TAG "gkracker_nvram"
+/*-------------------------------------------------
+ image_battery_load_by_name - retrieves the battery
+ backed RAM for an image. A filename may be supplied
+ to the function.
+
+ The function comes in two flavors, depending on
+ what should happen when no battery is available:
+ we could fill the memory with a given value, or
+ pass a default battery (for a pre-initialized
+ battery from factory)
+-------------------------------------------------*/
+
+static void image_battery_load_by_name(emu_options &options, const char *filename, void *buffer, int length, int fill)
+{
+ file_error filerr;
+ int bytes_read = 0;
+
+ assert_always(buffer && (length > 0), "Must specify sensical buffer/length");
+
+ /* try to open the battery file and read it in, if possible */
+ emu_file file(options.nvram_directory(), OPEN_FLAG_READ);
+ filerr = file.open(filename);
+ if (filerr == FILERR_NONE)
+ bytes_read = file.read(buffer, length);
+
+ /* fill remaining bytes (if necessary) */
+ memset(((char *) buffer) + bytes_read, fill, length - bytes_read);
+}
+
+/*-------------------------------------------------
+ image_battery_save_by_name - stores the battery
+ backed RAM for an image. A filename may be supplied
+ to the function.
+-------------------------------------------------*/
+static void image_battery_save_by_name(emu_options &options, const char *filename, const void *buffer, int length)
+{
+ assert_always(buffer && (length > 0), "Must specify sensical buffer/length");
+
+ /* try to open the battery file and write it out, if possible */
+ emu_file file(options.nvram_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ file_error filerr = file.open(filename);
+ if (filerr == FILERR_NONE)
+ file.write(buffer, length);
+}
+
+
gromport_device::gromport_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: bus8z_device(mconfig, GROMPORT, "Cartridge port", tag, owner, clock, "gromport", __FILE__),
device_slot_interface(mconfig, *this),
@@ -1347,7 +1393,7 @@ void ti99_cartridge_device::set_slot(int i)
bool ti99_cartridge_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
if (TRACE_CONFIG) logerror("%s: swlist = %s, swname = %s\n", tag(), swlist.list_name(), swname);
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
m_softlist = true;
m_rpk = nullptr;
return true;
@@ -1796,7 +1842,7 @@ WRITE8_MEMBER(ti99_mbx_cartridge::write)
*/
int ti99_paged379i_cartridge::get_paged379i_bank(int rompage)
{
- int mask = 0;
+ int mask;
if (m_rom_size > 16384)
{
if (m_rom_size > 32768)
@@ -2260,7 +2306,7 @@ rpk_socket* rpk_reader::load_rom_resource(zip_file* zip, xml_data_node* rom_reso
length = header->uncompressed_length;
// Allocate storage
- contents = global_alloc_array_clear(UINT8, length);
+ contents = global_alloc_array_clear<UINT8>(length);
if (contents==nullptr) throw rpk_exception(RPK_OUT_OF_MEMORY);
// and unzip file from the zip file
@@ -2326,7 +2372,7 @@ rpk_socket* rpk_reader::load_ram_resource(emu_options &options, xml_data_node* r
}
// Allocate memory for this resource
- contents = global_alloc_array_clear(UINT8, length);
+ contents = global_alloc_array_clear<UINT8>(length);
if (contents==nullptr) throw rpk_exception(RPK_OUT_OF_MEMORY);
//if (TRACE_RPK) logerror("gromport/RPK: Allocating RAM buffer (%d bytes) for socket '%s'\n", length, socketname);
diff --git a/src/devices/bus/ti99x/gromport.h b/src/devices/bus/ti99x/gromport.h
index 768bf7d51e8..7655173b10d 100644
--- a/src/devices/bus/ti99x/gromport.h
+++ b/src/devices/bus/ti99x/gromport.h
@@ -208,7 +208,6 @@ private:
void set_slot(int slotnumber);
int get_active_slot(bool changebase, offs_t offset);
- void change_slot(bool inserted, int index);
};
/*
@@ -370,8 +369,6 @@ public:
~ti99_paged378_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
-private:
- int get_paged378_bank(int rompage);
};
/********************** Paged 377 ************************************/
@@ -382,8 +379,6 @@ public:
~ti99_paged377_cartridge() { };
DECLARE_READ8Z_MEMBER(readz) override;
DECLARE_WRITE8_MEMBER(write) override;
-private:
- int get_paged377_bank(int rompage);
};
/********************** Paged CRU ************************************/
diff --git a/src/devices/bus/ti99x/handset.h b/src/devices/bus/ti99x/handset.h
index 17b2eac8190..3f9de1b6221 100644
--- a/src/devices/bus/ti99x/handset.h
+++ b/src/devices/bus/ti99x/handset.h
@@ -73,7 +73,6 @@ class ti99_twin_joystick : public joyport_attached_device
{
public:
ti99_twin_joystick(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- DECLARE_READ8_MEMBER( read );
virtual void device_start(void) override;
UINT8 read_dev() override;
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/vboy/slot.cpp b/src/devices/bus/vboy/slot.cpp
index 88ef2ce7a2f..4b8fc1bf4d2 100644
--- a/src/devices/bus/vboy/slot.cpp
+++ b/src/devices/bus/vboy/slot.cpp
@@ -223,7 +223,7 @@ void vboy_cart_slot_device::call_unload()
bool vboy_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -233,9 +233,9 @@ bool vboy_cart_slot_device::call_softlist_load(software_list_device &swlist, con
get default card software
-------------------------------------------------*/
-void vboy_cart_slot_device::get_default_card_software(std::string &result)
+std::string vboy_cart_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "vb_rom");
+ return software_get_default_slot("vb_rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/vboy/slot.h b/src/devices/bus/vboy/slot.h
index 3f2b15698ce..ca9e784ad8c 100644
--- a/src/devices/bus/vboy/slot.h
+++ b/src/devices/bus/vboy/slot.h
@@ -69,7 +69,6 @@ public:
virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override;
int get_type() { return m_type; }
- int get_cart_type(UINT8 *ROM, UINT32 len);
void save_eeprom() { if (m_cart && m_cart->get_eeprom_size()) m_cart->save_eeprom(); }
@@ -84,7 +83,7 @@ public:
virtual const char *file_extensions() const override { return "vb,bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ32_MEMBER(read_cart);
diff --git a/src/devices/bus/vc4000/slot.cpp b/src/devices/bus/vc4000/slot.cpp
index ecfc63b42dd..0b67a264c34 100644
--- a/src/devices/bus/vc4000/slot.cpp
+++ b/src/devices/bus/vc4000/slot.cpp
@@ -226,7 +226,7 @@ bool vc4000_cart_slot_device::call_load()
bool vc4000_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -235,11 +235,11 @@ bool vc4000_cart_slot_device::call_softlist_load(software_list_device &swlist, c
get default card software
-------------------------------------------------*/
-void vc4000_cart_slot_device::get_default_card_software(std::string &result)
+std::string vc4000_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "std";
+ const char *slot_string;
UINT32 size = core_fsize(m_file);
int type = VC4000_STD;
@@ -254,11 +254,10 @@ void vc4000_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "std");
+ return software_get_default_slot("std");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/vc4000/slot.h b/src/devices/bus/vc4000/slot.h
index 089bdf5fc3a..6b40c6cbcbe 100644
--- a/src/devices/bus/vc4000/slot.h
+++ b/src/devices/bus/vc4000/slot.h
@@ -85,7 +85,7 @@ public:
virtual const char *file_extensions() const override { return "bin,rom"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
diff --git a/src/devices/bus/vcs/vcs_slot.cpp b/src/devices/bus/vcs/vcs_slot.cpp
index caa46ef358b..b946c8051e7 100755
--- a/src/devices/bus/vcs/vcs_slot.cpp
+++ b/src/devices/bus/vcs/vcs_slot.cpp
@@ -333,7 +333,7 @@ void vcs_cart_slot_device::call_unload()
bool vcs_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
@@ -781,11 +781,11 @@ int vcs_cart_slot_device::identify_cart_type(UINT8 *ROM, UINT32 len)
get default card software
-------------------------------------------------*/
-void vcs_cart_slot_device::get_default_card_software(std::string &result)
+std::string vcs_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "a26_4k";
+ const char *slot_string;
UINT32 len = core_fsize(m_file);
dynamic_buffer rom(len);
int type;
@@ -797,10 +797,10 @@ void vcs_cart_slot_device::get_default_card_software(std::string &result)
clear();
- result.assign(slot_string);
+ return std::string(slot_string);
}
else
- software_get_default_slot(result, "a26_4k");
+ return software_get_default_slot("a26_4k");
}
diff --git a/src/devices/bus/vcs/vcs_slot.h b/src/devices/bus/vcs/vcs_slot.h
index f77eda9056c..984cf5c9d12 100755
--- a/src/devices/bus/vcs/vcs_slot.h
+++ b/src/devices/bus/vcs/vcs_slot.h
@@ -112,7 +112,7 @@ public:
virtual const char *file_extensions() const override { return "bin,a26"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
diff --git a/src/devices/bus/vcs_ctrl/ctrl.h b/src/devices/bus/vcs_ctrl/ctrl.h
index bdcc9f5abe0..41f7c12e75a 100644
--- a/src/devices/bus/vcs_ctrl/ctrl.h
+++ b/src/devices/bus/vcs_ctrl/ctrl.h
@@ -95,7 +95,6 @@ public:
DECLARE_READ8_MEMBER( pot_y_r ) { return pot_y_r(); }
void joy_w( UINT8 data ) { if ( exists() ) m_device->vcs_joy_w( data ); }
- DECLARE_WRITE8_MEMBER( joy_w );
bool exists() { return m_device != nullptr; }
bool has_pot_x() { return exists() && m_device->has_pot_x(); }
diff --git a/src/devices/bus/vectrex/slot.cpp b/src/devices/bus/vectrex/slot.cpp
index a7322b0b994..1a9bbed7d29 100644
--- a/src/devices/bus/vectrex/slot.cpp
+++ b/src/devices/bus/vectrex/slot.cpp
@@ -208,7 +208,7 @@ bool vectrex_cart_slot_device::call_load()
bool vectrex_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -217,11 +217,11 @@ bool vectrex_cart_slot_device::call_softlist_load(software_list_device &swlist,
get default card software
-------------------------------------------------*/
-void vectrex_cart_slot_device::get_default_card_software(std::string &result)
+std::string vectrex_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "vec_rom";
+ const char *slot_string;
UINT32 size = core_fsize(m_file);
dynamic_buffer rom(size);
int type = VECTREX_STD;
@@ -238,11 +238,10 @@ void vectrex_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "vec_rom");
+ return software_get_default_slot("vec_rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/vectrex/slot.h b/src/devices/bus/vectrex/slot.h
index f9007ca01a6..5a1bf306213 100644
--- a/src/devices/bus/vectrex/slot.h
+++ b/src/devices/bus/vectrex/slot.h
@@ -84,7 +84,7 @@ public:
virtual const char *file_extensions() const override { return "bin,gam,vec"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom);
diff --git a/src/devices/bus/vic10/exp.cpp b/src/devices/bus/vic10/exp.cpp
index 23c20e6b93f..1aa6f2e6363 100644
--- a/src/devices/bus/vic10/exp.cpp
+++ b/src/devices/bus/vic10/exp.cpp
@@ -113,7 +113,7 @@ bool vic10_expansion_slot_device::call_load()
{
if (m_card)
{
- size_t size = 0;
+ size_t size;
if (software_entry() == nullptr)
{
@@ -172,7 +172,7 @@ bool vic10_expansion_slot_device::call_load()
bool vic10_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -182,20 +182,17 @@ bool vic10_expansion_slot_device::call_softlist_load(software_list_device &swlis
// get_default_card_software -
//-------------------------------------------------
-void vic10_expansion_slot_device::get_default_card_software(std::string &result)
+std::string vic10_expansion_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
if (!core_stricmp(filetype(), "crt"))
- {
- cbm_crt_get_card(result, m_file);
- return;
- }
+ return cbm_crt_get_card(m_file);
clear();
}
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h
index f334668ada8..9ca71e33653 100644
--- a/src/devices/bus/vic10/exp.h
+++ b/src/devices/bus/vic10/exp.h
@@ -134,7 +134,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
devcb_write_line m_write_irq;
devcb_write_line m_write_res;
diff --git a/src/devices/bus/vic20/exp.cpp b/src/devices/bus/vic20/exp.cpp
index 42907bbb0d9..37761ab7d14 100644
--- a/src/devices/bus/vic20/exp.cpp
+++ b/src/devices/bus/vic20/exp.cpp
@@ -157,7 +157,7 @@ bool vic20_expansion_slot_device::call_load()
bool vic20_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -167,9 +167,9 @@ bool vic20_expansion_slot_device::call_softlist_load(software_list_device &swlis
// get_default_card_software -
//-------------------------------------------------
-void vic20_expansion_slot_device::get_default_card_software(std::string &result)
+std::string vic20_expansion_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h
index ddcffa82569..15d67b00e53 100644
--- a/src/devices/bus/vic20/exp.h
+++ b/src/devices/bus/vic20/exp.h
@@ -125,7 +125,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
devcb_write_line m_write_irq;
devcb_write_line m_write_nmi;
diff --git a/src/devices/bus/vidbrain/exp.cpp b/src/devices/bus/vidbrain/exp.cpp
index a100e4eeebe..2b4ac800ff3 100644
--- a/src/devices/bus/vidbrain/exp.cpp
+++ b/src/devices/bus/vidbrain/exp.cpp
@@ -116,7 +116,7 @@ bool videobrain_expansion_slot_device::call_load()
{
if (m_cart)
{
- size_t size = 0;
+ size_t size;
if (software_entry() == nullptr)
{
@@ -144,7 +144,7 @@ bool videobrain_expansion_slot_device::call_load()
bool videobrain_expansion_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return true;
}
@@ -154,9 +154,9 @@ bool videobrain_expansion_slot_device::call_softlist_load(software_list_device &
// get_default_card_software -
//-------------------------------------------------
-void videobrain_expansion_slot_device::get_default_card_software(std::string &result)
+std::string videobrain_expansion_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "standard");
+ return software_get_default_slot("standard");
}
diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h
index 2579d92a08d..e431ff3f1a6 100644
--- a/src/devices/bus/vidbrain/exp.h
+++ b/src/devices/bus/vidbrain/exp.h
@@ -150,7 +150,7 @@ protected:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
devcb_write_line m_write_extres;
diff --git a/src/devices/bus/wangpc/tig.cpp b/src/devices/bus/wangpc/tig.cpp
index 47bda2c6747..efadfc332dc 100644
--- a/src/devices/bus/wangpc/tig.cpp
+++ b/src/devices/bus/wangpc/tig.cpp
@@ -282,7 +282,7 @@ void wangpc_tig_device::wangpcbus_aiowc_w(address_space &space, offs_t offset, U
UINT8 wangpc_tig_device::wangpcbus_dack_r(address_space &space, int line)
{
- UINT8 data = 0;
+ UINT8 data;
if (DMA_GRAPHICS)
{
diff --git a/src/devices/bus/wswan/slot.cpp b/src/devices/bus/wswan/slot.cpp
index 749f82596e1..b5b95851f00 100644
--- a/src/devices/bus/wswan/slot.cpp
+++ b/src/devices/bus/wswan/slot.cpp
@@ -243,7 +243,7 @@ void ws_cart_slot_device::call_unload()
bool ws_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry);
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry);
return TRUE;
}
@@ -306,11 +306,11 @@ int ws_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len, UINT32 &nvram_len
get default card software
-------------------------------------------------*/
-void ws_cart_slot_device::get_default_card_software(std::string &result)
+std::string ws_cart_slot_device::get_default_card_software()
{
if (open_image_file(mconfig().options()))
{
- const char *slot_string = "ws_rom";
+ const char *slot_string;
UINT32 size = core_fsize(m_file);
dynamic_buffer rom(size);
int type;
@@ -325,11 +325,10 @@ void ws_cart_slot_device::get_default_card_software(std::string &result)
//printf("type: %s\n", slot_string);
clear();
- result.assign(slot_string);
- return;
+ return std::string(slot_string);
}
- software_get_default_slot(result, "ws_rom");
+ return software_get_default_slot("ws_rom");
}
/*-------------------------------------------------
diff --git a/src/devices/bus/wswan/slot.h b/src/devices/bus/wswan/slot.h
index 59dd49550ca..ae5ab7d81d6 100644
--- a/src/devices/bus/wswan/slot.h
+++ b/src/devices/bus/wswan/slot.h
@@ -96,7 +96,7 @@ public:
virtual const char *file_extensions() const override { return "ws,wsc,bin"; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read_rom20);
diff --git a/src/devices/bus/z88/z88.cpp b/src/devices/bus/z88/z88.cpp
index 2cbc97c53dd..62313b76dd3 100644
--- a/src/devices/bus/z88/z88.cpp
+++ b/src/devices/bus/z88/z88.cpp
@@ -121,7 +121,7 @@ bool z88cart_slot_device::call_load()
{
if (m_cart)
{
- offs_t read_length = 0;
+ offs_t read_length;
UINT8 *cart_base = m_cart->get_cart_base();
if (cart_base != nullptr)
@@ -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);
@@ -174,7 +178,7 @@ void z88cart_slot_device::call_unload()
bool z88cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- load_software_part_region(*this, swlist, swname, start_entry );
+ machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry );
return TRUE;
}
@@ -182,9 +186,9 @@ bool z88cart_slot_device::call_softlist_load(software_list_device &swlist, const
get default card software
-------------------------------------------------*/
-void z88cart_slot_device::get_default_card_software(std::string &result)
+std::string z88cart_slot_device::get_default_card_software()
{
- software_get_default_slot(result, "128krom");
+ return software_get_default_slot("128krom");
}
diff --git a/src/devices/bus/z88/z88.h b/src/devices/bus/z88/z88.h
index 19785d4a7b1..0c39edd5e24 100644
--- a/src/devices/bus/z88/z88.h
+++ b/src/devices/bus/z88/z88.h
@@ -109,7 +109,7 @@ public:
virtual const option_guide *create_option_guide() const override { return nullptr; }
// slot interface overrides
- virtual void get_default_card_software(std::string &result) override;
+ virtual std::string get_default_card_software() override;
// reading and writing
virtual DECLARE_READ8_MEMBER(read);
diff --git a/src/devices/cpu/8x300/8x300.cpp b/src/devices/cpu/8x300/8x300.cpp
index bf6a5148ca5..a18f4d50c73 100644
--- a/src/devices/cpu/8x300/8x300.cpp
+++ b/src/devices/cpu/8x300/8x300.cpp
@@ -145,7 +145,7 @@ void n8x300_cpu_device::device_start()
m_icountptr = &m_icount;
}
-void n8x300_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void n8x300_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -168,7 +168,7 @@ void n8x300_cpu_device::execute_run()
do
{
UINT16 opcode;
- UINT8 src = 0;
+ UINT8 src;
UINT8 dst;
UINT8 rotlen; // rotate amount or I/O field length
UINT8 mask;
diff --git a/src/devices/cpu/8x300/8x300.h b/src/devices/cpu/8x300/8x300.h
index fe6b95259b0..dd236372e5d 100644
--- a/src/devices/cpu/8x300/8x300.h
+++ b/src/devices/cpu/8x300/8x300.h
@@ -66,7 +66,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/adsp2100/adsp2100.cpp b/src/devices/cpu/adsp2100/adsp2100.cpp
index e0e38ef3264..63788892288 100644
--- a/src/devices/cpu/adsp2100/adsp2100.cpp
+++ b/src/devices/cpu/adsp2100/adsp2100.cpp
@@ -368,7 +368,7 @@ void adsp2181_device::idma_data_w(UINT16 data)
UINT16 adsp2181_device::idma_data_r()
{
- UINT16 result = 0xffff;
+ UINT16 result;
// program memory?
if (!(m_idma_addr & 0x4000))
@@ -544,15 +544,14 @@ void adsp21xx_device::device_start()
state_add(ADSP2100_SR0_SEC, "SR0_SEC", m_alt.sr.srx.sr0.u);
state_add(ADSP2100_SR1_SEC, "SR1_SEC", m_alt.sr.srx.sr1.u);
- std::string tempstring;
for (int ireg = 0; ireg < 8; ireg++)
- state_add(ADSP2100_I0 + ireg, strformat(tempstring, "I%d", ireg).c_str(), m_i[ireg]).mask(0x3fff).callimport();
+ state_add(ADSP2100_I0 + ireg, strformat("I%d", ireg).c_str(), m_i[ireg]).mask(0x3fff).callimport();
for (int lreg = 0; lreg < 8; lreg++)
- state_add(ADSP2100_L0 + lreg, strformat(tempstring, "L%d", lreg).c_str(), m_l[lreg]).mask(0x3fff).callimport();
+ state_add(ADSP2100_L0 + lreg, strformat("L%d", lreg).c_str(), m_l[lreg]).mask(0x3fff).callimport();
for (int mreg = 0; mreg < 8; mreg++)
- state_add(ADSP2100_M0 + mreg, strformat(tempstring, "M%d", mreg).c_str(), m_m[mreg]).signed_mask(0x3fff);
+ state_add(ADSP2100_M0 + mreg, strformat("M%d", mreg).c_str(), m_m[mreg]).signed_mask(0x3fff);
state_add(ADSP2100_PX, "PX", m_px);
state_add(ADSP2100_CNTR, "CNTR", m_cntr).mask(0x3fff);
@@ -571,7 +570,7 @@ void adsp21xx_device::device_start()
for (int irqnum = 0; irqnum < 4; irqnum++)
if (irqnum < 4 || m_chip_type == CHIP_TYPE_ADSP2100)
- state_add(ADSP2100_IRQSTATE0 + irqnum, strformat(tempstring, "IRQ%d", irqnum).c_str(), m_irq_state[irqnum]).mask(1).callimport();
+ state_add(ADSP2100_IRQSTATE0 + irqnum, strformat("IRQ%d", irqnum).c_str(), m_irq_state[irqnum]).mask(1).callimport();
state_add(ADSP2100_FLAGIN, "FLAGIN", m_flagin).mask(1);
state_add(ADSP2100_FLAGOUT, "FLAGOUT", m_flagout).mask(1);
@@ -720,7 +719,7 @@ void adsp21xx_device::state_import(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void adsp21xx_device::state_string_export(const device_state_entry &entry, std::string &str)
+void adsp21xx_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h
index 816255eea4a..f2393f986d2 100644
--- a/src/devices/cpu/adsp2100/adsp2100.h
+++ b/src/devices/cpu/adsp2100/adsp2100.h
@@ -237,7 +237,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/alph8201/alph8201.cpp b/src/devices/cpu/alph8201/alph8201.cpp
index 06c4deb020e..9c40d8d55ee 100644
--- a/src/devices/cpu/alph8201/alph8201.cpp
+++ b/src/devices/cpu/alph8201/alph8201.cpp
@@ -527,7 +527,7 @@ void alpha8201_cpu_device::state_export(const device_state_entry &entry)
}
-void alpha8201_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void alpha8201_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/alph8201/alph8201.h b/src/devices/cpu/alph8201/alph8201.h
index 740bd1b1042..22130bc5464 100644
--- a/src/devices/cpu/alph8201/alph8201.h
+++ b/src/devices/cpu/alph8201/alph8201.h
@@ -75,7 +75,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/alto2/a2disk.cpp b/src/devices/cpu/alto2/a2disk.cpp
index 8075ae3ed39..f6de163d745 100644
--- a/src/devices/cpu/alto2/a2disk.cpp
+++ b/src/devices/cpu/alto2/a2disk.cpp
@@ -1600,7 +1600,7 @@ void alto2_cpu_device::disk_bitclk(void* ptr, INT32 arg)
(void)ptr;
diablo_hd_device* dhd = m_drive[m_dsk.drive];
int clk = arg & 1;
- int bit = 0;
+ int bit;
/**
* The source for BITCLK and DATAIN depends on disk controller part #65
diff --git a/src/devices/cpu/alto2/a2disp.cpp b/src/devices/cpu/alto2/a2disp.cpp
index 82b0e083cf8..30f38f94fa4 100644
--- a/src/devices/cpu/alto2/a2disp.cpp
+++ b/src/devices/cpu/alto2/a2disp.cpp
@@ -286,7 +286,7 @@ void alto2_cpu_device::unload_word()
m_unload_time = -1;
return;
}
- UINT16* bitmap = m_dsp.raw_bitmap + y * ALTO2_DISPLAY_SCANLINE_WORDS;
+ UINT16* bitmap = m_dsp.raw_bitmap.get() + y * ALTO2_DISPLAY_SCANLINE_WORDS;
UINT16 word = m_dsp.inverse;
UINT8 a38 = m_disp_a38[m_dsp.ra * 16 + m_dsp.wa];
if (FIFO_MBEMPTY(a38))
@@ -532,12 +532,12 @@ void alto2_cpu_device::init_disp()
m_dsp.hlc = ALTO2_DISPLAY_HLC_START;
- m_dsp.raw_bitmap = auto_alloc_array(machine(), UINT16, ALTO2_DISPLAY_HEIGHT * ALTO2_DISPLAY_SCANLINE_WORDS);
+ m_dsp.raw_bitmap = std::make_unique<UINT16[]>(ALTO2_DISPLAY_HEIGHT * ALTO2_DISPLAY_SCANLINE_WORDS);
m_dsp.scanline = auto_alloc_array(machine(), UINT8*, ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H);
for (int y = 0; y < ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H; y++)
m_dsp.scanline[y] = auto_alloc_array(machine(), UINT8, ALTO2_DISPLAY_TOTAL_WIDTH);
- m_dsp.bitmap = auto_bitmap_ind16_alloc(machine(), ALTO2_DISPLAY_WIDTH, ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H);
+ m_dsp.bitmap = std::make_unique<bitmap_ind16>(ALTO2_DISPLAY_WIDTH, ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H);
m_dsp.state = 0;
}
@@ -567,7 +567,7 @@ void alto2_cpu_device::reset_disp()
m_dsp.curxpos = 0;
m_dsp.cursor0 = 0;
m_dsp.cursor1 = 0;
- memset(m_dsp.raw_bitmap, 0, sizeof(UINT16) * ALTO2_DISPLAY_HEIGHT * ALTO2_DISPLAY_SCANLINE_WORDS);
+ memset(m_dsp.raw_bitmap.get(), 0, sizeof(UINT16) * ALTO2_DISPLAY_HEIGHT * ALTO2_DISPLAY_SCANLINE_WORDS);
for (int y = 0; y < ALTO2_DISPLAY_HEIGHT; y++)
memset(m_dsp.scanline[y], 0, sizeof(UINT8) * ALTO2_DISPLAY_TOTAL_WIDTH);
m_dsp.odd_frame = false;
@@ -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/a2disp.h b/src/devices/cpu/alto2/a2disp.h
index 80454eb4896..a8f4568f29d 100644
--- a/src/devices/cpu/alto2/a2disp.h
+++ b/src/devices/cpu/alto2/a2disp.h
@@ -192,9 +192,9 @@ struct {
UINT32 curxpos; //!< helper: first cursor word in scanline
UINT16 cursor0; //!< helper: shifted cursor data for left word
UINT16 cursor1; //!< helper: shifted cursor data for right word
- UINT16 *raw_bitmap; //!< array of words of the raw bitmap that is displayed
+ std::unique_ptr<UINT16[]> raw_bitmap; //!< array of words of the raw bitmap that is displayed
UINT8 **scanline; //!< array of scanlines with 1 byte per pixel
- bitmap_ind16 *bitmap; //!< MAME bitmap with 16 bit indices
+ std::unique_ptr<bitmap_ind16> bitmap; //!< MAME bitmap with 16 bit indices
bool odd_frame; //!< true, if odd frame is drawn
} m_dsp;
diff --git a/src/devices/cpu/alto2/a2ether.cpp b/src/devices/cpu/alto2/a2ether.cpp
index 2cd38bb48c6..c3fd5a5c87a 100644
--- a/src/devices/cpu/alto2/a2ether.cpp
+++ b/src/devices/cpu/alto2/a2ether.cpp
@@ -600,7 +600,7 @@ void alto2_cpu_device::bs_early_eidfct()
m_eth.rx_packet[m_eth.rx_count] = r;
m_eth.rx_count++;
if (ALTO2_ETHER_PACKET_SIZE == m_eth.rx_count) {
- dump_packet(this,"RX", m_eth.rx_packet, 0, m_eth.rx_count);
+ dump_packet(this,"RX", m_eth.rx_packet.get(), 0, m_eth.rx_count);
m_eth.rx_count = 0;
}
#endif
@@ -709,7 +709,7 @@ void alto2_cpu_device::f2_late_eodfct()
m_eth.tx_packet[m_eth.tx_count] = m_bus;
m_eth.tx_count++;
if (ALTO2_ETHER_PACKET_SIZE == m_eth.tx_count) {
- dump_packet(this,"TX", m_eth.tx_packet, 0, m_eth.tx_count);
+ dump_packet(this,"TX", m_eth.tx_packet.get(), 0, m_eth.tx_count);
m_eth.tx_count = 0;
}
#endif
@@ -1338,8 +1338,8 @@ void alto2_cpu_device::init_ether(int task)
m_active_callback[task] = &alto2_cpu_device::activate_eth;
- m_eth.rx_packet = auto_alloc_array(machine(), UINT16, sizeof(UINT16)*ALTO2_ETHER_PACKET_SIZE);
- m_eth.tx_packet = auto_alloc_array(machine(), UINT16, sizeof(UINT16)*ALTO2_ETHER_PACKET_SIZE);
+ m_eth.rx_packet = std::make_unique<UINT16[]>(sizeof(UINT16)*ALTO2_ETHER_PACKET_SIZE);
+ m_eth.tx_packet = std::make_unique<UINT16[]>(sizeof(UINT16)*ALTO2_ETHER_PACKET_SIZE);
m_eth.tx_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(alto2_cpu_device::tx_packet),this));
m_eth.tx_timer->reset();
diff --git a/src/devices/cpu/alto2/a2ether.h b/src/devices/cpu/alto2/a2ether.h
index 6bdbd24ce3e..484bd187f8c 100644
--- a/src/devices/cpu/alto2/a2ether.h
+++ b/src/devices/cpu/alto2/a2ether.h
@@ -57,8 +57,8 @@ struct {
UINT16 tx_crc; //!< transmitter CRC
UINT32 rx_count; //!< received words count
UINT32 tx_count; //!< transmitted words count
- UINT16* rx_packet; //!< buffer to collect received words
- UINT16* tx_packet; //!< buffer to collect transmitted words
+ std::unique_ptr<UINT16[]> rx_packet; //!< buffer to collect received words
+ std::unique_ptr<UINT16[]> tx_packet; //!< buffer to collect transmitted words
emu_timer* rx_timer; //!< receiver timer
emu_timer* tx_timer; //!< transmitter timer
jkff_t ff_10a; //!< JK flip-flop 10a IBUSY (Sheet 13)
diff --git a/src/devices/cpu/alto2/a2mem.cpp b/src/devices/cpu/alto2/a2mem.cpp
index d4118fa70b6..e4fa65184f1 100644
--- a/src/devices/cpu/alto2/a2mem.cpp
+++ b/src/devices/cpu/alto2/a2mem.cpp
@@ -770,7 +770,7 @@ UINT16 alto2_cpu_device::debug_read_mem(UINT32 addr)
{
space(AS_2).set_debugger_access(true);
int base_addr = addr & 0177777;
- int data = 0177777;
+ int data;
if (base_addr >= ALTO2_IO_PAGE_BASE && addr < ALTO2_RAM_SIZE) {
data = m_iomem->read_word(m_iomem->address_to_byte(base_addr));
} else {
@@ -838,11 +838,9 @@ void alto2_cpu_device::exit_memory()
void alto2_cpu_device::reset_memory()
{
if (m_mem.ram) {
- auto_free(machine(), m_mem.ram);
m_mem.ram = nullptr;
}
if (m_mem.hpb) {
- auto_free(machine(), m_mem.hpb);
m_mem.hpb = nullptr;
}
// allocate 64K or 128K words of main memory
@@ -854,8 +852,8 @@ void alto2_cpu_device::reset_memory()
m_mem.size = ALTO2_RAM_SIZE;
logerror("Main memory %u KiB\n", static_cast<UINT32>(sizeof(UINT16) * m_mem.size / 1024));
- m_mem.ram = auto_alloc_array_clear(machine(), UINT32, sizeof(UINT16) * m_mem.size);
- m_mem.hpb = auto_alloc_array_clear(machine(), UINT8, sizeof(UINT16) * m_mem.size);
+ m_mem.ram = make_unique_clear<UINT32[]>(sizeof(UINT16) * m_mem.size);
+ m_mem.hpb = make_unique_clear<UINT8[]>( sizeof(UINT16) * m_mem.size);
#if USE_HAMMING_CHECK
// Initialize the hamming codes and parity bit
diff --git a/src/devices/cpu/alto2/a2mem.h b/src/devices/cpu/alto2/a2mem.h
index c450693a22b..1f6b4ac0ef5 100644
--- a/src/devices/cpu/alto2/a2mem.h
+++ b/src/devices/cpu/alto2/a2mem.h
@@ -25,8 +25,8 @@ enum {
struct {
UINT32 size; //!< main memory size (64K or 128K)
- UINT32* ram; //!< main memory organized as double-words
- UINT8* hpb; //!< Hamming Code bits (6) and Parity bits (1) per double word
+ std::unique_ptr<UINT32[]> ram; //!< main memory organized as double-words
+ std::unique_ptr<UINT8[]> hpb; //!< Hamming Code bits (6) and Parity bits (1) per double word
UINT32 mar; //!< memory address register
UINT32 rmdd; //!< read memory data double-word
UINT32 wmdd; //!< write memory data double-word
diff --git a/src/devices/cpu/alto2/a2ram.cpp b/src/devices/cpu/alto2/a2ram.cpp
index 425f3f60634..159415d0605 100644
--- a/src/devices/cpu/alto2/a2ram.cpp
+++ b/src/devices/cpu/alto2/a2ram.cpp
@@ -10,11 +10,11 @@
#define DEBUG_WRTRAM 0 //!< define to 1 to printf disassembled CRAM writes
//! direct read access to the microcode CRAM
-#define RD_CRAM(addr) (*reinterpret_cast<UINT32 *>(m_ucode_cram + addr * 4))
+#define RD_CRAM(addr) (*reinterpret_cast<UINT32 *>(m_ucode_cram.get() + addr * 4))
//! direct write access to the microcode CRAM
#define WR_CRAM(addr,data) do { \
- *reinterpret_cast<UINT32 *>(m_ucode_cram + addr * 4) = data; \
+ *reinterpret_cast<UINT32 *>(m_ucode_cram.get() + addr * 4) = data; \
} while (0)
/**
diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp
index 382732044ca..a3538dee290 100644
--- a/src/devices/cpu/alto2/alto2cpu.cpp
+++ b/src/devices/cpu/alto2/alto2cpu.cpp
@@ -819,10 +819,10 @@ void alto2_cpu_device::device_start()
m_ucode_crom = prom_load(machine(), pl_ucode, memregion("ucode_proms")->base(), ALTO2_UCODE_ROM_PAGES, 8);
// allocate micro code CRAM
- m_ucode_cram = auto_alloc_array(machine(), UINT8, sizeof(UINT32) * ALTO2_UCODE_RAM_PAGES * ALTO2_UCODE_PAGE_SIZE);
+ m_ucode_cram = std::make_unique<UINT8[]>(sizeof(UINT32) * ALTO2_UCODE_RAM_PAGES * ALTO2_UCODE_PAGE_SIZE);
// fill with the micro code inverted bits value
for (offs_t offset = 0; offset < ALTO2_UCODE_RAM_PAGES * ALTO2_UCODE_PAGE_SIZE; offset++)
- *reinterpret_cast<UINT32 *>(m_ucode_cram + offset * 4) = ALTO2_UCODE_INVERTED;
+ *reinterpret_cast<UINT32 *>(m_ucode_cram.get() + offset * 4) = ALTO2_UCODE_INVERTED;
// decode constant PROMs to m_const_data
m_const_data = prom_load(machine(), pl_const, memregion("const_proms")->base(), 1, 4);
@@ -1002,7 +1002,7 @@ void alto2_cpu_device::device_start()
// for the debugger
//-------------------------------------------------
-void alto2_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void alto2_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -1028,13 +1028,13 @@ READ32_MEMBER ( alto2_cpu_device::crom_r )
//! read microcode CRAM
READ32_MEMBER ( alto2_cpu_device::cram_r )
{
- return *reinterpret_cast<UINT32 *>(m_ucode_cram + offset * 4);
+ return *reinterpret_cast<UINT32 *>(m_ucode_cram.get() + offset * 4);
}
//! write microcode CRAM
WRITE32_MEMBER( alto2_cpu_device::cram_w )
{
- *reinterpret_cast<UINT32 *>(m_ucode_cram + offset * 4) = data;
+ *reinterpret_cast<UINT32 *>(m_ucode_cram.get() + offset * 4) = data;
}
//! read constants PROM
@@ -1046,7 +1046,7 @@ READ16_MEMBER ( alto2_cpu_device::const_r )
//! direct read access to the microcode CROM or CRAM
#define RD_UCODE(addr) (addr < ALTO2_UCODE_RAM_BASE ? \
*reinterpret_cast<UINT32 *>(m_ucode_crom + addr * 4) : \
- *reinterpret_cast<UINT32 *>(m_ucode_cram + (addr - ALTO2_UCODE_RAM_BASE) * 4))
+ *reinterpret_cast<UINT32 *>(m_ucode_cram.get() + (addr - ALTO2_UCODE_RAM_BASE) * 4))
//-------------------------------------------------
// device_reset - device-specific reset
diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h
index daa66d81658..071cbd3cb2a 100644
--- a/src/devices/cpu/alto2/alto2cpu.h
+++ b/src/devices/cpu/alto2/alto2cpu.h
@@ -213,7 +213,7 @@ protected:
//! device (P)ROMs
virtual const rom_entry *device_rom_region() const override;
//! device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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 4; }
@@ -231,7 +231,7 @@ private:
address_space* m_iomem;
UINT8* m_ucode_crom;
- UINT8* m_ucode_cram;
+ std::unique_ptr<UINT8[]> m_ucode_cram;
UINT8* m_const_data;
//! read microcode CROM
@@ -252,12 +252,6 @@ private:
//!< write i/o space RAM
DECLARE_WRITE16_MEMBER( ioram_w );
- //!< read memory mapped i/o
- DECLARE_READ16_MEMBER ( mmio_r );
-
- //!< write memory mapped i/o
- DECLARE_WRITE16_MEMBER( mmio_w );
-
int m_icount;
typedef void (alto2_cpu_device::*a2func)();
diff --git a/src/devices/cpu/am29000/am29000.cpp b/src/devices/cpu/am29000/am29000.cpp
index 27924fa163f..a31dc3b0374 100644
--- a/src/devices/cpu/am29000/am29000.cpp
+++ b/src/devices/cpu/am29000/am29000.cpp
@@ -404,7 +404,7 @@ void am29000_cpu_device::device_start()
}
-void am29000_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void am29000_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/am29000/am29000.h b/src/devices/cpu/am29000/am29000.h
index 221e7309cea..4f0c1a1a4af 100644
--- a/src/devices/cpu/am29000/am29000.h
+++ b/src/devices/cpu/am29000/am29000.h
@@ -462,7 +462,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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 4; }
diff --git a/src/devices/cpu/amis2000/amis2000.cpp b/src/devices/cpu/amis2000/amis2000.cpp
index 3082b09f14b..57ed4d99578 100644
--- a/src/devices/cpu/amis2000/amis2000.cpp
+++ b/src/devices/cpu/amis2000/amis2000.cpp
@@ -70,7 +70,7 @@ amis2152_cpu_device::amis2152_cpu_device(const machine_config &mconfig, const ch
// disasm
-void amis2000_base_device::state_string_export(const device_state_entry &entry, std::string &str)
+void amis2000_base_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h
index e30522d7719..5beee90fae9 100644
--- a/src/devices/cpu/amis2000/amis2000.h
+++ b/src/devices/cpu/amis2000/amis2000.h
@@ -89,7 +89,7 @@ protected:
virtual UINT32 disasm_min_opcode_bytes() const override { return 1; }
virtual UINT32 disasm_max_opcode_bytes() const override { return 1; }
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
address_space_config m_program_config;
address_space_config m_data_config;
diff --git a/src/devices/cpu/apexc/apexc.cpp b/src/devices/cpu/apexc/apexc.cpp
index 77e5c919f44..87c5ff9a351 100644
--- a/src/devices/cpu/apexc/apexc.cpp
+++ b/src/devices/cpu/apexc/apexc.cpp
@@ -814,7 +814,7 @@ void apexc_cpu_device::state_export(const device_state_entry &entry)
}
-void apexc_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void apexc_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h
index 99b64812702..ad07fba71c6 100644
--- a/src/devices/cpu/apexc/apexc.h
+++ b/src/devices/cpu/apexc/apexc.h
@@ -44,7 +44,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
diff --git a/src/devices/cpu/arcompact/arcompact_execute.cpp b/src/devices/cpu/arcompact/arcompact_execute.cpp
index ba3c3ea3af4..8da820fa25d 100644
--- a/src/devices/cpu/arcompact/arcompact_execute.cpp
+++ b/src/devices/cpu/arcompact/arcompact_execute.cpp
@@ -1293,7 +1293,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle01_00_01dasm(OPS_32)
ARCOMPACT_RETTYPE arcompact_device::arcompact_01_01_00_helper(OPS_32, const char* optext)
{
- int size = 4;
+ int size;
// Branch on Compare / Bit Test - Register-Register
@@ -1564,7 +1564,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle01_01_01_0f(OPS_32) { retur
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle02(OPS_32)
{
int size = 4;
- UINT32 limm = 0;
+ UINT32 limm;
int S = (op & 0x00008000) >> 15;// op &= ~0x00008000;
int s = (op & 0x00ff0000) >> 16;// op &= ~0x00ff0000;
@@ -1761,7 +1761,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle03(OPS_32)
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_helper(OPS_32, const char* optext, int ignore_dst, int b_reserved)
{
- int size = 4;
+ int size;
//UINT32 limm = 0;
int got_limm = 0;
@@ -1925,7 +1925,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_1d(OPS_32)
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_20_p00(OPS_32)
{
- int size = 4;
+ int size;
UINT32 limm = 0;
int got_limm = 0;
@@ -2011,7 +2011,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_20_p11_m0(OPS_32) // Jcc
COMMON32_GET_CONDITION;
COMMON32_GET_F
- UINT32 c = 0;
+ UINT32 c;
if (creg == LIMM_REG)
{
@@ -2127,7 +2127,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_21_p10(OPS_32)
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_21_p11_m0(OPS_32) // Jcc.D (no link, delay)
{
int size = 4;
- UINT32 limm = 0;
+ UINT32 limm;
int got_limm = 0;
COMMON32_GET_creg
@@ -2270,7 +2270,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_29(OPS_32)
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_2f_helper(OPS_32, const char* optext)
{
- int size = 4;
+ int size;
COMMON32_GET_p;
//COMMON32_GET_breg;
@@ -2330,7 +2330,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_2f_3f_05(OPS_32) { arcom
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_3x_helper(OPS_32, int dsize, int extend)
{
- int size = 4;
+ int size;
//UINT32 limm=0;
int got_limm = 0;
@@ -2406,7 +2406,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle05_29(OPS_32) { return arco
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle05_2f_0x_helper(OPS_32, const char* optext)
{
- int size = 4;
+ int size;
COMMON32_GET_p;
//COMMON32_GET_breg;
@@ -2548,7 +2548,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle0d_03(OPS_16)
ARCOMPACT_RETTYPE arcompact_device::arcompact_handle0e_0x_helper(OPS_16, const char* optext, int revop)
{
int h;// , breg;
- int size = 2;
+ int size;
GROUP_0e_GET_h;
diff --git a/src/devices/cpu/arcompact/arcompactdasm.cpp b/src/devices/cpu/arcompact/arcompactdasm.cpp
index 0b917a05d56..755106ce90c 100644
--- a/src/devices/cpu/arcompact/arcompactdasm.cpp
+++ b/src/devices/cpu/arcompact/arcompactdasm.cpp
@@ -26,7 +26,7 @@ extern char *output;
CPU_DISASSEMBLE(arcompact)
{
- int size = 2;
+ int size;
UINT32 op = oprom[0] | (oprom[1] << 8);
output = buffer;
diff --git a/src/devices/cpu/arcompact/arcompactdasm_ops.cpp b/src/devices/cpu/arcompact/arcompactdasm_ops.cpp
index eeac8cac2f8..b9cfc30b545 100644
--- a/src/devices/cpu/arcompact/arcompactdasm_ops.cpp
+++ b/src/devices/cpu/arcompact/arcompactdasm_ops.cpp
@@ -504,7 +504,7 @@ int arcompact_handle04_p01_helper_dasm(DASM_OPS_32, const char* optext, int igno
int arcompact_handle04_p10_helper_dasm(DASM_OPS_32, const char* optext, int b_reserved)
{
int size = 4;
- UINT32 limm = 0;
+ UINT32 limm;
//int got_limm = 0;
COMMON32_GET_breg;
@@ -599,7 +599,7 @@ int arcompact_handle04_p11_m0_helper_dasm(DASM_OPS_32, const char* optext, int b
int arcompact_handle04_p11_m1_helper_dasm(DASM_OPS_32, const char* optext, int b_reserved)
{
int size = 4;
- UINT32 limm = 0;
+ UINT32 limm;
//int got_limm = 0;
COMMON32_GET_breg;
diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp
index aa07ddcfecb..41724668f53 100644
--- a/src/devices/cpu/arm/arm.cpp
+++ b/src/devices/cpu/arm/arm.cpp
@@ -552,7 +552,7 @@ void arm_cpu_device::device_start()
}
-void arm_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void arm_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
static const char *s[4] = { "USER", "FIRQ", "IRQ ", "SVC " };
diff --git a/src/devices/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h
index f0639f384c1..d2f6156127b 100644
--- a/src/devices/cpu/arm/arm.h
+++ b/src/devices/cpu/arm/arm.h
@@ -61,7 +61,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp
index 346dcb1020d..828f8562811 100644
--- a/src/devices/cpu/arm7/arm7.cpp
+++ b/src/devices/cpu/arm7/arm7.cpp
@@ -564,7 +564,7 @@ void arm7_cpu_device::state_export(const device_state_entry &entry)
}
-void arm7_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void arm7_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h
index 210abe73cf6..24ab02f2b86 100644
--- a/src/devices/cpu/arm7/arm7.h
+++ b/src/devices/cpu/arm7/arm7.h
@@ -71,7 +71,7 @@ protected:
// device_state_interface overrides
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/arm7/arm7dasm.cpp b/src/devices/cpu/arm7/arm7dasm.cpp
index b749d3624a2..68a2bb38654 100644
--- a/src/devices/cpu/arm7/arm7dasm.cpp
+++ b/src/devices/cpu/arm7/arm7dasm.cpp
@@ -494,7 +494,7 @@ static UINT32 arm7_disasm( char *pBuf, UINT32 pc, UINT32 opcode )
}
else if( (opcode&0x0c000000)==0x04000000 ) //bits 27-26 == 01
{
- UINT32 rn = 0;
+ UINT32 rn;
UINT32 rnv = 0;
/* Data Transfer */
diff --git a/src/devices/cpu/arm7/arm7ops.cpp b/src/devices/cpu/arm7/arm7ops.cpp
index 07dd3c2e75c..9c1f0197764 100644
--- a/src/devices/cpu/arm7/arm7ops.cpp
+++ b/src/devices/cpu/arm7/arm7ops.cpp
@@ -637,7 +637,7 @@ void arm7_cpu_device::HandleHalfWordDT(UINT32 insn)
// Signed?
if (insn & 0x40)
{
- UINT32 newval = 0;
+ UINT32 newval;
// Signed Half Word?
if (insn & 0x20) {
@@ -822,7 +822,7 @@ void arm7_cpu_device::HandleSwap(UINT32 insn)
void arm7_cpu_device::HandlePSRTransfer(UINT32 insn)
{
int reg = (insn & 0x400000) ? SPSR : eCPSR; // Either CPSR or SPSR
- UINT32 newval, val = 0;
+ UINT32 newval, val;
int oldmode = GET_CPSR & MODE_FLAG;
// get old value of CPSR/SPSR
@@ -1195,7 +1195,7 @@ void arm7_cpu_device::HandleSMulLong(UINT32 insn)
{
INT32 rm, rs;
UINT32 rhi, rlo;
- INT64 res = 0;
+ INT64 res;
// MULL takes 1S + (m+1)I and MLAL 1S + (m+2)I cycles to execute, where m is the
// number of 8 bit multiplier array cycles required to complete the multiply, which is
@@ -1247,7 +1247,7 @@ void arm7_cpu_device::HandleUMulLong(UINT32 insn)
{
UINT32 rm, rs;
UINT32 rhi, rlo;
- UINT64 res = 0;
+ UINT64 res;
// MULL takes 1S + (m+1)I and MLAL 1S + (m+2)I cycles to execute, where m is the
// number of 8 bit multiplier array cycles required to complete the multiply, which is
diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp
index 9f36eb6116f..c22d0cdcee2 100644
--- a/src/devices/cpu/asap/asap.cpp
+++ b/src/devices/cpu/asap/asap.cpp
@@ -186,7 +186,6 @@ void asap_device::device_start()
m_direct = &m_program->direct();
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", m_pc).noshow();
state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc).noshow();
state_add(STATE_GENSP, "GENSP", m_src2val[REGBASE + 31]).noshow();
@@ -194,7 +193,7 @@ void asap_device::device_start()
state_add(ASAP_PC, "PC", m_pc);
state_add(ASAP_PS, "PS", m_flagsio).callimport().callexport();
for (int regnum = 0; regnum < 32; regnum++)
- state_add(ASAP_R0 + regnum, strformat(tempstr, "R%d", regnum).c_str(), m_src2val[REGBASE + regnum]);
+ state_add(ASAP_R0 + regnum, strformat("R%d", regnum).c_str(), m_src2val[REGBASE + regnum]);
// register our state for saving
save_item(NAME(m_pc));
@@ -281,7 +280,7 @@ void asap_device::state_export(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void asap_device::state_string_export(const device_state_entry &entry, std::string &str)
+void asap_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/asap/asap.h b/src/devices/cpu/asap/asap.h
index 287f2056af2..87d11282072 100644
--- a/src/devices/cpu/asap/asap.h
+++ b/src/devices/cpu/asap/asap.h
@@ -48,7 +48,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/avr8/avr8.cpp b/src/devices/cpu/avr8/avr8.cpp
index d043e466876..756562f0ea7 100644
--- a/src/devices/cpu/avr8/avr8.cpp
+++ b/src/devices/cpu/avr8/avr8.cpp
@@ -905,7 +905,7 @@ const address_space_config *avr8_device::memory_space_config(address_spacenum sp
// for the debugger
//-------------------------------------------------
-void avr8_device::state_string_export(const device_state_entry &entry, std::string &str)
+void avr8_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -1316,7 +1316,7 @@ void avr8_device::timer1_tick()
//UINT8 compare_mode[2] = { (m_r[AVR8_REGIDX_TCCR1A] & AVR8_TCCR1A_COM1A_MASK) >> AVR8_TCCR1A_COM1A_SHIFT,
//(m_r[AVR8_REGIDX_TCCR1A] & AVR8_TCCR1A_COM1B_MASK) >> AVR8_TCCR1A_COM1B_SHIFT };
UINT16 ocr1[2] = { static_cast<UINT16>((m_r[AVR8_REGIDX_OCR1AH] << 8) | m_r[AVR8_REGIDX_OCR1AL]),
- static_cast<UINT16>((m_r[AVR8_REGIDX_OCR1BH] << 8) | m_r[AVR8_REGIDX_OCR1BL]) };
+ static_cast<UINT16>((m_r[AVR8_REGIDX_OCR1BH] << 8) | m_r[AVR8_REGIDX_OCR1BL]) };
UINT8 ocf1[2] = { (1 << AVR8_TIFR1_OCF1A_SHIFT), (1 << AVR8_TIFR1_OCF1B_SHIFT) };
UINT8 int1[2] = { AVR8_INTIDX_OCF1A, AVR8_INTIDX_OCF1B };
INT32 increment = m_timer_increment[1];
@@ -1712,7 +1712,7 @@ void avr8_device::timer4_tick()
//UINT8 compare_mode[2] = { (m_r[AVR8_REGIDX_TCCR1A] & AVR8_TCCR1A_COM1A_MASK) >> AVR8_TCCR1A_COM1A_SHIFT,
//(m_r[AVR8_REGIDX_TCCR1A] & AVR8_TCCR1A_COM1B_MASK) >> AVR8_TCCR1A_COM1B_SHIFT };
UINT16 ocr4[2] = { static_cast<UINT16>((m_r[AVR8_REGIDX_OCR4AH] << 8) | m_r[AVR8_REGIDX_OCR4AL]),
- static_cast<UINT16>((m_r[AVR8_REGIDX_OCR4BH] << 8) | m_r[AVR8_REGIDX_OCR4BL]) };
+ static_cast<UINT16>((m_r[AVR8_REGIDX_OCR4BH] << 8) | m_r[AVR8_REGIDX_OCR4BL]) };
//TODO UINT8 ocf4[2] = { (1 << AVR8_TIFR4_OCF4A_SHIFT), (1 << AVR8_TIFR4_OCF4B_SHIFT) };
//TODO UINT8 int4[2] = { AVR8_INTIDX_OCF4A, AVR8_INTIDX_OCF4B };
INT32 increment = m_timer_increment[4];
@@ -2973,15 +2973,15 @@ void avr8_device::execute_set_input(int inputnum, int state)
void avr8_device::execute_run()
{
- UINT32 op = 0;
- INT32 offs = 0;
- UINT8 rd = 0;
- UINT8 rr = 0;
- UINT8 res = 0;
- UINT16 pd = 0;
- UINT32 pd32 = 0;
- INT16 sd = 0;
- INT32 opcycles = 1;
+ UINT32 op;
+ INT32 offs;
+ UINT8 rd;
+ UINT8 rr;
+ UINT8 res;
+ UINT16 pd;
+ UINT32 pd32;
+ INT16 sd;
+ INT32 opcycles;
while (m_icount > 0)
{
diff --git a/src/devices/cpu/avr8/avr8.h b/src/devices/cpu/avr8/avr8.h
index 715b12a0432..86207566ffc 100644
--- a/src/devices/cpu/avr8/avr8.h
+++ b/src/devices/cpu/avr8/avr8.h
@@ -79,9 +79,6 @@ class avr8_device;
class avr8_device : public cpu_device
{
public:
- // construction/destruction
- avr8_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock, const device_type type, UINT32 address_mask);
-
// inline configuration helpers
static void set_eeprom_tag(device_t &device, const char *tag) { downcast<avr8_device &>(device).m_eeprom_tag = tag; }
@@ -134,7 +131,7 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// address spaces
const address_space_config m_program_config;
@@ -188,13 +185,6 @@ protected:
UINT64 m_elapsed_cycles;
// memory access
- inline UINT8 program_read8(UINT32 addr);
- inline UINT16 program_read16(UINT32 addr);
- inline void program_write8(UINT32 addr, UINT8 data);
- inline void program_write16(UINT32 addr, UINT16 data);
- inline UINT8 io_read8(UINT16 addr);
- inline void io_write8(UINT16 addr, UINT8 data);
- inline UINT16 opcode_read();
inline void push(UINT8 val);
inline UINT8 pop();
inline bool is_long_opcode(UINT16 op);
@@ -204,7 +194,6 @@ protected:
// interrupts
void set_irq_line(UINT16 vector, int state);
- void update_interrupt_internal(int source);
// timers
void timer_tick(int cycles);
diff --git a/src/devices/cpu/avr8/avr8dasm.cpp b/src/devices/cpu/avr8/avr8dasm.cpp
index 31b149d5737..cc5fcecf3a9 100644
--- a/src/devices/cpu/avr8/avr8dasm.cpp
+++ b/src/devices/cpu/avr8/avr8dasm.cpp
@@ -31,7 +31,7 @@ CPU_DISASSEMBLE( avr8 )
int pos = 0;
UINT32 op = oprom[pos++];
op |= oprom[pos++] << 8;
- UINT32 addr = 0;
+ UINT32 addr;
const char* register_names[0x40] = {"PINA", "DDRA", "PORTA", "PINB", "DDRB", "PORTB", "PINC", "DDRC", "PORTC", "PIND", "DDRD", "PORTD", "PINE", "DDRE", "PORTE", "PINF", "DDRF", "PORTF", "PING", "DDRG", "PORTG", "TIFR0", "TIFR1", "TIFR2","TIFR3", "TIFR4", "TIFR5", "PCIFR", "EIFR", "EIMSK", "GPIOR0", "EECR", "EEDR", "EEARL", "EEARH", "GTCCR", "TCCR0A", "TCCR0B", "TCNT0", "OCR0A", "OCR0B", "0x29", "GPIOR1", "GPIOR2", "SPCR", "SPSR", "SPDR", "0x2F", "ACSR", "OCDR", "0x32", "SMCR", "MCUSR", "MCUCR", "0x36", "SPMCSR", "0x38", "0x39", "0x3A", "RAMPZ", "EIND", "SPL", "SPH", "SREG"};
const char* register_bit_names[0x40][8] = {
diff --git a/src/devices/cpu/ccpu/ccpu.cpp b/src/devices/cpu/ccpu/ccpu.cpp
index e8893580f0c..bde43753786 100644
--- a/src/devices/cpu/ccpu/ccpu.cpp
+++ b/src/devices/cpu/ccpu/ccpu.cpp
@@ -121,6 +121,7 @@ void ccpu_cpu_device::device_start()
save_item(NAME(m_drflag));
save_item(NAME(m_waiting));
save_item(NAME(m_watchdog));
+ save_item(NAME(m_extinput));
// Register state for debugger
state_add( CCPU_PC, "PC", m_PC).formatstr("%04X");
@@ -139,7 +140,7 @@ void ccpu_cpu_device::device_start()
}
-void ccpu_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void ccpu_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -149,7 +150,7 @@ void ccpu_cpu_device::state_string_export(const device_state_entry &entry, std::
TEST_NC ? 'N' : 'n',
TEST_LT ? 'L' : 'l',
TEST_EQ ? 'E' : 'e',
- m_external_input() ? 'M' : 'm',
+ m_extinput ? 'M' : 'm',
TEST_DR ? 'D' : 'd');
break;
}
@@ -206,8 +207,11 @@ void ccpu_cpu_device::execute_run()
m_nextmiflag = m_nextnextmiflag;
/* fetch the opcode */
+ opcode = READOP(m_PC);
+ if (opcode == 0x51 || opcode == 0x59)
+ m_extinput = m_external_input();
debugger_instruction_hook(this, m_PC);
- opcode = READOP(m_PC++);
+ m_PC++;
switch (opcode)
{
@@ -286,7 +290,7 @@ void ccpu_cpu_device::execute_run()
/* JMIB/JEHB */
case 0x51:
- if (m_external_input()) { m_PC = ((m_PC - 1) & 0xf000) + m_J; CYCLES(2); }
+ if (m_extinput) { m_PC = ((m_PC - 1) & 0xf000) + m_J; CYCLES(2); }
NEXT_ACC_B; CYCLES(2);
break;
@@ -333,7 +337,7 @@ void ccpu_cpu_device::execute_run()
/* JMI/JEH */
case 0x59:
- if (m_external_input()) { m_PC = ((m_PC - 1) & 0xf000) + m_J; CYCLES(2); }
+ if (m_extinput) { m_PC = ((m_PC - 1) & 0xf000) + m_J; CYCLES(2); }
NEXT_ACC_A; CYCLES(2);
break;
diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h
index 349b9e9ffc4..9247e54f16d 100644
--- a/src/devices/cpu/ccpu/ccpu.h
+++ b/src/devices/cpu/ccpu/ccpu.h
@@ -82,7 +82,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
@@ -113,6 +113,7 @@ protected:
UINT8 m_waiting;
UINT8 m_watchdog;
+ UINT8 m_extinput;
int m_icount;
diff --git a/src/devices/cpu/cop400/cop400.cpp b/src/devices/cpu/cop400/cop400.cpp
index 9f68a8c0545..ae14bd59cab 100644
--- a/src/devices/cpu/cop400/cop400.cpp
+++ b/src/devices/cpu/cop400/cop400.cpp
@@ -1205,7 +1205,7 @@ void cop400_cpu_device::state_export(const device_state_entry &entry)
}
}
-void cop400_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void cop400_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h
index 3b2cbf349bc..43e7755f1f4 100644
--- a/src/devices/cpu/cop400/cop400.h
+++ b/src/devices/cpu/cop400/cop400.h
@@ -170,7 +170,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/cosmac/cosmac.cpp b/src/devices/cpu/cosmac/cosmac.cpp
index 73170762cbf..d8e3d52c6fd 100644
--- a/src/devices/cpu/cosmac/cosmac.cpp
+++ b/src/devices/cpu/cosmac/cosmac.cpp
@@ -353,9 +353,8 @@ void cosmac_device::device_start()
state_add(COSMAC_I, "I", m_i).mask(0xf);
state_add(COSMAC_N, "N", m_n).mask(0xf);
- std::string tempstr;
for (int regnum = 0; regnum < 16; regnum++)
- state_add(COSMAC_R0 + regnum, strformat(tempstr, "R%x", regnum).c_str(), m_r[regnum]);
+ state_add(COSMAC_R0 + regnum, strformat("R%x", regnum).c_str(), m_r[regnum]);
state_add(COSMAC_DF, "DF", m_df).mask(0x1).noshow();
state_add(COSMAC_IE, "IE", m_ie).mask(0x1).noshow();
@@ -469,7 +468,7 @@ void cosmac_device::state_export(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void cosmac_device::state_string_export(const device_state_entry &entry, std::string &str)
+void cosmac_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h
index 02cd87f0668..31b1d8dc11c 100644
--- a/src/devices/cpu/cosmac/cosmac.h
+++ b/src/devices/cpu/cosmac/cosmac.h
@@ -232,7 +232,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
@@ -251,7 +251,6 @@ protected:
inline void reset();
inline void initialize();
inline void fetch_instruction();
- inline void fetch_instruction_debug();
inline void execute_instruction();
inline void dma_input();
inline void dma_output();
diff --git a/src/devices/cpu/cp1610/cp1610.cpp b/src/devices/cpu/cp1610/cp1610.cpp
index fd6fd5eceb7..a05bbbc0d49 100644
--- a/src/devices/cpu/cp1610/cp1610.cpp
+++ b/src/devices/cpu/cp1610/cp1610.cpp
@@ -3401,7 +3401,7 @@ cp1610_cpu_device::cp1610_cpu_device(const machine_config &mconfig, const char *
}
-void cp1610_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void cp1610_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/cp1610/cp1610.h b/src/devices/cpu/cp1610/cp1610.h
index ec9618eefff..84611f75a2c 100644
--- a/src/devices/cpu/cp1610/cp1610.h
+++ b/src/devices/cpu/cp1610/cp1610.h
@@ -56,7 +56,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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; }
diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
index 0582c9a2679..a657a23680e 100644
--- a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
+++ b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
@@ -347,7 +347,7 @@ void cquestrot_cpu_device::device_reset()
}
-void cquestrot_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void cquestrot_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -471,7 +471,7 @@ void cquestlin_cpu_device::device_reset()
}
-void cquestlin_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void cquestlin_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.h b/src/devices/cpu/cubeqcpu/cubeqcpu.h
index 1faa4fc5db7..23bfbf84f5b 100644
--- a/src/devices/cpu/cubeqcpu/cubeqcpu.h
+++ b/src/devices/cpu/cubeqcpu/cubeqcpu.h
@@ -232,7 +232,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 8; }
@@ -316,7 +316,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 8; }
diff --git a/src/devices/cpu/drcbeut.cpp b/src/devices/cpu/drcbeut.cpp
index 3bd0edac4a1..356045fad3b 100644
--- a/src/devices/cpu/drcbeut.cpp
+++ b/src/devices/cpu/drcbeut.cpp
@@ -359,7 +359,7 @@ UINT32 drc_map_variables::get_value(drccodeptr codebase, UINT32 mapvar) const
UINT64 *endscan = (UINT64 *)m_cache.top();
// look for the signature
- while (curscan < endscan && *curscan++ != m_uniquevalue) ;
+ while (curscan < endscan && *curscan++ != m_uniquevalue) {};
if (curscan >= endscan)
return 0;
diff --git a/src/devices/cpu/drcbex64.cpp b/src/devices/cpu/drcbex64.cpp
index b14e4cd189d..034f06def80 100644
--- a/src/devices/cpu/drcbex64.cpp
+++ b/src/devices/cpu/drcbex64.cpp
@@ -680,7 +680,7 @@ void drcbe_x64::reset()
{
// output a note to the log
if (m_log != nullptr)
- x86log_printf(m_log, "\n\n===========\nCACHE RESET\n===========\n\n");
+ x86log_printf(m_log, "%s", "\n\n===========\nCACHE RESET\n===========\n\n");
// generate a little bit of glue code to set up the environment
drccodeptr *cachetop = m_cache.begin_codegen(500);
@@ -787,7 +787,6 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, UINT3
x86code *dst = base;
// generate code
- std::string tempstring;
const char *blockname = nullptr;
for (int inum = 0; inum < numinst; inum++)
{
@@ -797,8 +796,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, UINT3
// add a comment
if (m_log != nullptr)
{
- std::string dasm;
- inst.disasm(dasm, &m_drcuml);
+ std::string dasm = inst.disasm(&m_drcuml);
x86log_add_comment(m_log, dst, "%s", dasm.c_str());
}
@@ -808,7 +806,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, UINT3
if (inst.opcode() == OP_HANDLE)
blockname = inst.param(0).handle().string();
else if (inst.opcode() == OP_HASH)
- blockname = strformat(tempstring, "Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str();
+ blockname = strformat("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str();
}
// generate code
diff --git a/src/devices/cpu/drcbex86.cpp b/src/devices/cpu/drcbex86.cpp
index 846d054bf14..3ca840e1c6f 100644
--- a/src/devices/cpu/drcbex86.cpp
+++ b/src/devices/cpu/drcbex86.cpp
@@ -594,7 +594,7 @@ void drcbe_x86::reset()
{
// output a note to the log
if (m_log != nullptr)
- x86log_printf(m_log, "\n\n===========\nCACHE RESET\n===========\n\n");
+ x86log_printf(m_log, "%s", "\n\n===========\nCACHE RESET\n===========\n\n");
// generate a little bit of glue code to set up the environment
drccodeptr *cachetop = m_cache.begin_codegen(500);
@@ -770,7 +770,6 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, UINT3
x86code *dst = base;
// generate code
- std::string tempstring;
const char *blockname = nullptr;
for (int inum = 0; inum < numinst; inum++)
{
@@ -780,8 +779,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, UINT3
// add a comment
if (m_log != nullptr)
{
- std::string dasm;
- inst.disasm(dasm, &m_drcuml);
+ std::string dasm = inst.disasm(&m_drcuml);
x86log_add_comment(m_log, dst, "%s", dasm.c_str());
}
@@ -791,7 +789,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, UINT3
if (inst.opcode() == OP_HANDLE)
blockname = inst.param(0).handle().string();
else if (inst.opcode() == OP_HASH)
- blockname = strformat(tempstring, "Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str();
+ blockname = strformat("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str();
}
// generate code
diff --git a/src/devices/cpu/drcbex86.h b/src/devices/cpu/drcbex86.h
index 33eaa65bacc..df81ee0c7c7 100644
--- a/src/devices/cpu/drcbex86.h
+++ b/src/devices/cpu/drcbex86.h
@@ -127,7 +127,6 @@ private:
void fixup_exception(drccodeptr *codeptr, void *param1, void *param2);
static void debug_log_hashjmp(int mode, offs_t pc);
- static void debug_log_hashjmp_fail();
// code generators
void op_handle(x86code *&dst, const uml::instruction &inst);
@@ -262,7 +261,6 @@ private:
void emit_sbb_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
void emit_sbb_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_cmp_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
- void emit_cmp_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_and_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
void emit_and_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_test_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
@@ -272,19 +270,12 @@ private:
void emit_xor_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
void emit_xor_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_shl_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
- void emit_shl_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_shr_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
- void emit_shr_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_sar_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
- void emit_sar_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_rol_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
- void emit_rol_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_ror_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
- void emit_ror_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_rcl_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
- void emit_rcl_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
void emit_rcr_r64_p64(x86code *&dst, UINT8 reglo, UINT8 reghi, const be_parameter &param, const uml::instruction &inst);
- void emit_rcr_m64_p64(x86code *&dst, x86_memref memref, const be_parameter &param, const uml::instruction &inst);
// floating-point code emission helpers
void emit_fld_p(x86code *&dst, int size, const be_parameter &param);
diff --git a/src/devices/cpu/drcuml.cpp b/src/devices/cpu/drcuml.cpp
index a835cb01bda..3bbd610cfa9 100644
--- a/src/devices/cpu/drcuml.cpp
+++ b/src/devices/cpu/drcuml.cpp
@@ -91,7 +91,7 @@ drcbe_interface::drcbe_interface(drcuml_state &drcuml, drc_cache &cache, device_
// find the spaces and fetch memory accessors
device_memory_interface *memory;
if (device.interface(memory))
- for (address_spacenum spacenum = AS_0; spacenum < ARRAY_LENGTH(m_space); spacenum++)
+ for (address_spacenum spacenum = AS_0; spacenum < ARRAY_LENGTH(m_space); ++spacenum)
if (memory->has_space(spacenum))
{
m_space[spacenum] = &memory->space(spacenum);
@@ -121,9 +121,10 @@ drcbe_interface::~drcbe_interface()
drcuml_state::drcuml_state(device_t &device, drc_cache &cache, UINT32 flags, int modes, int addrbits, int ignorebits)
: m_device(device),
m_cache(cache),
- m_beintf(device.machine().options().drc_use_c() ?
- *static_cast<drcbe_interface *>(auto_alloc(device.machine(), drcbe_c(*this, device, cache, flags, modes, addrbits, ignorebits))) :
- *static_cast<drcbe_interface *>(auto_alloc(device.machine(), drcbe_native(*this, device, cache, flags, modes, addrbits, ignorebits)))),
+ m_drcbe_interface(device.machine().options().drc_use_c() ?
+ std::unique_ptr<drcbe_interface>{ std::make_unique<drcbe_c>(*this, device, cache, flags, modes, addrbits, ignorebits) } :
+ std::unique_ptr<drcbe_interface>{ std::make_unique<drcbe_native>(*this, device, cache, flags, modes, addrbits, ignorebits) }),
+ m_beintf(*m_drcbe_interface.get()),
m_umllog(nullptr)
{
// if we're to log, create the logfile
@@ -141,9 +142,6 @@ drcuml_state::drcuml_state(device_t &device, drc_cache &cache, UINT32 flags, int
drcuml_state::~drcuml_state()
{
- // free the back-end
- auto_free(m_device.machine(), &m_beintf);
-
// close any files
if (m_umllog != nullptr)
fclose(m_umllog);
@@ -458,7 +456,6 @@ void drcuml_block::optimize()
void drcuml_block::disassemble()
{
std::string comment;
- std::string dasm;
// iterate over instructions and output
int firstcomment = -1;
@@ -485,7 +482,7 @@ void drcuml_block::disassemble()
// indent everything else with a tab
else
{
- m_inst[instnum].disasm(dasm, &m_drcuml);
+ std::string dasm = m_inst[instnum].disasm(&m_drcuml);
// include the first accumulated comment with this line
if (firstcomment != -1)
@@ -1121,16 +1118,14 @@ static int bevalidate_verify_state(drcuml_state *drcuml, const drcuml_machine_st
// output the error if we have one
if (errend != errorbuf)
{
- char disasm[256];
-
// disassemble the test instruction
- testinst->disasm(disasm, drcuml);
+ std::string disasm = testinst->disasm(drcuml);
// output a description of what went wrong
printf("\n");
printf("----------------------------------------------\n");
printf("Backend validation error:\n");
- printf(" %s\n", disasm);
+ printf(" %s\n", disasm.c_str());
printf("\n");
printf("Errors:\n");
printf("%s\n", errorbuf);
diff --git a/src/devices/cpu/drcuml.h b/src/devices/cpu/drcuml.h
index cb24396c655..9c13d1110b3 100644
--- a/src/devices/cpu/drcuml.h
+++ b/src/devices/cpu/drcuml.h
@@ -226,6 +226,7 @@ private:
// internal state
device_t & m_device; // CPU device we are associated with
drc_cache & m_cache; // pointer to the codegen cache
+ std::unique_ptr<drcbe_interface> m_drcbe_interface;
drcbe_interface & m_beintf; // backend interface pointer
FILE * m_umllog; // handle to the UML logfile
simple_list<drcuml_block> m_blocklist; // list of active blocks
diff --git a/src/devices/cpu/dsp16/dsp16.cpp b/src/devices/cpu/dsp16/dsp16.cpp
index f7b68e50d75..8b97ce4c064 100644
--- a/src/devices/cpu/dsp16/dsp16.cpp
+++ b/src/devices/cpu/dsp16/dsp16.cpp
@@ -214,7 +214,7 @@ const address_space_config *dsp16_device::memory_space_config(address_spacenum s
// for the debugger
//-------------------------------------------------
-void dsp16_device::state_string_export(const device_state_entry &entry, std::string &str)
+void dsp16_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/dsp16/dsp16.h b/src/devices/cpu/dsp16/dsp16.h
index f574aeae03e..6e509da0569 100644
--- a/src/devices/cpu/dsp16/dsp16.h
+++ b/src/devices/cpu/dsp16/dsp16.h
@@ -46,7 +46,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/dsp32/dsp32.cpp b/src/devices/cpu/dsp32/dsp32.cpp
index a8e65846559..f060e81d13c 100644
--- a/src/devices/cpu/dsp32/dsp32.cpp
+++ b/src/devices/cpu/dsp32/dsp32.cpp
@@ -194,14 +194,13 @@ void dsp32c_device::device_start()
m_direct = &m_program->direct();
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", m_r[15]).noshow();
state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc).noshow();
state_add(STATE_GENSP, "GENSP", m_r[21]).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_iotemp).callimport().callexport().formatstr("%6s").noshow();
state_add(DSP32_PC, "PC", m_r[15]).mask(0xffffff);
for (int regnum = 0; regnum <= 14; regnum++)
- state_add(DSP32_R0 + regnum, strformat(tempstr, "R%d", regnum).c_str(), m_r[regnum]).mask(0xffffff);
+ state_add(DSP32_R0 + regnum, strformat("R%d", regnum).c_str(), m_r[regnum]).mask(0xffffff);
state_add(DSP32_R15, "R15", m_r[17]).mask(0xffffff);
state_add(DSP32_R16, "R16", m_r[18]).mask(0xffffff);
state_add(DSP32_R17, "R17", m_r[19]).mask(0xffffff);
@@ -369,7 +368,7 @@ void dsp32c_device::state_export(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void dsp32c_device::state_string_export(const device_state_entry &entry, std::string &str)
+void dsp32c_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h
index 2b0b9e2b07e..b83888b7a6a 100644
--- a/src/devices/cpu/dsp32/dsp32.h
+++ b/src/devices/cpu/dsp32/dsp32.h
@@ -123,7 +123,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/dsp56k/dsp56k.cpp b/src/devices/cpu/dsp56k/dsp56k.cpp
index 9e151019c7e..7c4b7abd163 100644
--- a/src/devices/cpu/dsp56k/dsp56k.cpp
+++ b/src/devices/cpu/dsp56k/dsp56k.cpp
@@ -340,9 +340,9 @@ void dsp56k_device::device_start()
}
-void dsp56k_device::state_string_export(const device_state_entry &entry, std::string &str)
+void dsp56k_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
- dsp56k_core *cpustate = &m_dsp56k_core;
+ const dsp56k_core *cpustate = &m_dsp56k_core;
switch (entry.index())
{
diff --git a/src/devices/cpu/dsp56k/dsp56k.h b/src/devices/cpu/dsp56k/dsp56k.h
index 39ed11cc945..185b52dc033 100644
--- a/src/devices/cpu/dsp56k/dsp56k.h
+++ b/src/devices/cpu/dsp56k/dsp56k.h
@@ -204,8 +204,6 @@ class dsp56k_device : public cpu_device
public:
dsp56k_device(const machine_config &mconfig, const char *_tag, device_t *_owner, UINT32 _clock);
- DECLARE_READ16_MEMBER( program_r );
- DECLARE_WRITE16_MEMBER( program_w );
DECLARE_READ16_MEMBER( peripheral_register_r );
DECLARE_WRITE16_MEMBER( peripheral_register_w );
@@ -233,7 +231,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/dsp56k/dsp56pcu.cpp b/src/devices/cpu/dsp56k/dsp56pcu.cpp
index 68b35199c73..637f7b6e067 100644
--- a/src/devices/cpu/dsp56k/dsp56pcu.cpp
+++ b/src/devices/cpu/dsp56k/dsp56pcu.cpp
@@ -14,18 +14,18 @@ namespace DSP56K
/* |-------------------------------------| |-------------------------------| */
/* */
/* ************************************************************************* */
-UINT8 LF_bit(dsp56k_core* cpustate) { return (SR & 0x8000) >> 15; }
-UINT8 FV_bit(dsp56k_core* cpustate) { return (SR & 0x4000) >> 14; }
-// UINT8 S_bits(dsp56k_core* cpustate) { return (SR & 0x0c00) >> 10; }
-UINT8 I_bits(dsp56k_core* cpustate) { return (SR & 0x0300) >> 8; }
-UINT8 S_bit (dsp56k_core* cpustate) { return (SR & 0x0080) >> 7; }
-UINT8 L_bit (dsp56k_core* cpustate) { return (SR & 0x0040) >> 6; }
-UINT8 E_bit (dsp56k_core* cpustate) { return (SR & 0x0020) >> 5; }
-UINT8 U_bit (dsp56k_core* cpustate) { return (SR & 0x0010) >> 4; }
-UINT8 N_bit (dsp56k_core* cpustate) { return (SR & 0x0008) >> 3; }
-UINT8 Z_bit (dsp56k_core* cpustate) { return (SR & 0x0004) >> 2; }
-UINT8 V_bit (dsp56k_core* cpustate) { return (SR & 0x0002) >> 1; }
-UINT8 C_bit (dsp56k_core* cpustate) { return (SR & 0x0001) >> 0; }
+UINT8 LF_bit(const dsp56k_core* cpustate) { return (SR & 0x8000) >> 15; }
+UINT8 FV_bit(const dsp56k_core* cpustate) { return (SR & 0x4000) >> 14; }
+// UINT8 S_bits(const dsp56k_core* cpustate) { return (SR & 0x0c00) >> 10; }
+UINT8 I_bits(const dsp56k_core* cpustate) { return (SR & 0x0300) >> 8; }
+UINT8 S_bit (const dsp56k_core* cpustate) { return (SR & 0x0080) >> 7; }
+UINT8 L_bit (const dsp56k_core* cpustate) { return (SR & 0x0040) >> 6; }
+UINT8 E_bit (const dsp56k_core* cpustate) { return (SR & 0x0020) >> 5; }
+UINT8 U_bit (const dsp56k_core* cpustate) { return (SR & 0x0010) >> 4; }
+UINT8 N_bit (const dsp56k_core* cpustate) { return (SR & 0x0008) >> 3; }
+UINT8 Z_bit (const dsp56k_core* cpustate) { return (SR & 0x0004) >> 2; }
+UINT8 V_bit (const dsp56k_core* cpustate) { return (SR & 0x0002) >> 1; }
+UINT8 C_bit (const dsp56k_core* cpustate) { return (SR & 0x0001) >> 0; }
/* MR setters */
void LF_bit_set(dsp56k_core* cpustate, UINT8 value) { if (value) (SR |= 0x8000); else (SR &= (~0x8000)); }
@@ -54,13 +54,13 @@ void C_bit_set(dsp56k_core* cpustate, UINT8 value) { if (value) (SR |= 0x0001);
/* |---------------------------------------------------------------------| */
/* */
/* ************************************************************************* */
-// UINT8 CD_bit(dsp56k_core* cpustate) { return ((OMR & 0x0080) != 0); }
-// UINT8 SD_bit(dsp56k_core* cpustate) { return ((OMR & 0x0040) != 0); }
-// UINT8 R_bit(dsp56k_core* cpustate) { return ((OMR & 0x0020) != 0); }
-// UINT8 SA_bit(dsp56k_core* cpustate) { return ((OMR & 0x0010) != 0); }
-// UINT8 MC_bit(dsp56k_core* cpustate) { return ((OMR & 0x0004) != 0); }
-UINT8 MB_bit(dsp56k_core* cpustate) { return ((OMR & 0x0002) != 0); }
-UINT8 MA_bit(dsp56k_core* cpustate) { return ((OMR & 0x0001) != 0); }
+// UINT8 CD_bit(const dsp56k_core* cpustate) { return ((OMR & 0x0080) != 0); }
+// UINT8 SD_bit(const dsp56k_core* cpustate) { return ((OMR & 0x0040) != 0); }
+// UINT8 R_bit(const dsp56k_core* cpustate) { return ((OMR & 0x0020) != 0); }
+// UINT8 SA_bit(const dsp56k_core* cpustate) { return ((OMR & 0x0010) != 0); }
+// UINT8 MC_bit(const dsp56k_core* cpustate) { return ((OMR & 0x0004) != 0); }
+UINT8 MB_bit(const dsp56k_core* cpustate) { return ((OMR & 0x0002) != 0); }
+UINT8 MA_bit(const dsp56k_core* cpustate) { return ((OMR & 0x0001) != 0); }
void CD_bit_set(dsp56k_core* cpustate, UINT8 value) { if (value) (OMR |= 0x0080); else (OMR &= (~0x0080)); }
void SD_bit_set(dsp56k_core* cpustate, UINT8 value) { if (value) (OMR |= 0x0040); else (OMR &= (~0x0040)); }
@@ -70,7 +70,7 @@ void MC_bit_set(dsp56k_core* cpustate, UINT8 value) { if (value) (OMR |= 0x0004)
void MB_bit_set(dsp56k_core* cpustate, UINT8 value) { if (value) (OMR |= 0x0002); else (OMR &= (~0x0002)); }
void MA_bit_set(dsp56k_core* cpustate, UINT8 value) { if (value) (OMR |= 0x0001); else (OMR &= (~0x0001)); }
-UINT8 dsp56k_operating_mode(dsp56k_core* cpustate)
+UINT8 dsp56k_operating_mode(const dsp56k_core* cpustate)
{
return ((MB_bit(cpustate) << 1) | MA_bit(cpustate));
}
@@ -86,8 +86,8 @@ UINT8 dsp56k_operating_mode(dsp56k_core* cpustate)
/* |---------------------------------------------------------------------| */
/* */
/* ************************************************************************* */
-UINT8 UF_bit(dsp56k_core* cpustate) { return ((SP & 0x0020) != 0); }
-UINT8 SE_bit(dsp56k_core* cpustate) { return ((SP & 0x0010) != 0); }
+UINT8 UF_bit(const dsp56k_core* cpustate) { return ((SP & 0x0020) != 0); }
+UINT8 SE_bit(const dsp56k_core* cpustate) { return ((SP & 0x0010) != 0); }
//void UF_bit_set(dsp56k_core* cpustate, UINT8 value) {};
//void SE_bit_set(dsp56k_core* cpustate, UINT8 value) {};
diff --git a/src/devices/cpu/dsp56k/dsp56pcu.h b/src/devices/cpu/dsp56k/dsp56pcu.h
index 7463ac11d35..b3b83109a35 100644
--- a/src/devices/cpu/dsp56k/dsp56pcu.h
+++ b/src/devices/cpu/dsp56k/dsp56pcu.h
@@ -42,28 +42,28 @@ void pcu_init(dsp56k_core* cpustate, device_t *device);
/* STATUS REGISTER (SR) BITS (1-25) */
/* MR */
-UINT8 LF_bit(dsp56k_core* cpustate);
-UINT8 FV_bit(dsp56k_core* cpustate);
-//UINT8 S_bits(dsp56k_core* cpustate);
-UINT8 I_bits(dsp56k_core* cpustate);
+UINT8 LF_bit(const dsp56k_core* cpustate);
+UINT8 FV_bit(const dsp56k_core* cpustate);
+//UINT8 S_bits(const dsp56k_core* cpustate);
+UINT8 I_bits(const dsp56k_core* cpustate);
/* CCR - with macros for easy access */
#define S() (S_bit(cpustate))
-UINT8 S_bit(dsp56k_core* cpustate);
+UINT8 S_bit(const dsp56k_core* cpustate);
#define L() (L_bit(cpustate))
-UINT8 L_bit(dsp56k_core* cpustate);
+UINT8 L_bit(const dsp56k_core* cpustate);
#define E() (E_bit(cpustate))
-UINT8 E_bit(dsp56k_core* cpustate);
+UINT8 E_bit(const dsp56k_core* cpustate);
#define U() (U_bit(cpustate))
-UINT8 U_bit(dsp56k_core* cpustate);
+UINT8 U_bit(const dsp56k_core* cpustate);
#define N() (N_bit(cpustate))
-UINT8 N_bit(dsp56k_core* cpustate);
+UINT8 N_bit(const dsp56k_core* cpustate);
#define Z() (Z_bit(cpustate))
-UINT8 Z_bit(dsp56k_core* cpustate);
+UINT8 Z_bit(const dsp56k_core* cpustate);
#define V() (V_bit(cpustate))
-UINT8 V_bit(dsp56k_core* cpustate);
+UINT8 V_bit(const dsp56k_core* cpustate);
#define C() (C_bit(cpustate))
-UINT8 C_bit(dsp56k_core* cpustate);
+UINT8 C_bit(const dsp56k_core* cpustate);
/* MR setters */
void LF_bit_set(dsp56k_core* cpustate, UINT8 value);
@@ -101,13 +101,13 @@ void C_bit_set(dsp56k_core* cpustate, UINT8 value);
/* 1-28 OPERATING MODE REGISTER (OMR) BITS */
-//UINT8 CD_bit(dsp56k_core* cpustate);
-//UINT8 SD_bit(dsp56k_core* cpustate);
-//UINT8 R_bit(dsp56k_core* cpustate);
-//UINT8 SA_bit(dsp56k_core* cpustate);
-//UINT8 MC_bit(dsp56k_core* cpustate);
-UINT8 MB_bit(dsp56k_core* cpustate);
-UINT8 MA_bit(dsp56k_core* cpustate);
+//UINT8 CD_bit(const dsp56k_core* cpustate);
+//UINT8 SD_bit(const dsp56k_core* cpustate);
+//UINT8 R_bit(const dsp56k_core* cpustate);
+//UINT8 SA_bit(const dsp56k_core* cpustate);
+//UINT8 MC_bit(const dsp56k_core* cpustate);
+UINT8 MB_bit(const dsp56k_core* cpustate);
+UINT8 MA_bit(const dsp56k_core* cpustate);
void CD_bit_set(dsp56k_core* cpustate, UINT8 value);
void SD_bit_set(dsp56k_core* cpustate, UINT8 value);
@@ -118,8 +118,8 @@ void MB_bit_set(dsp56k_core* cpustate, UINT8 value);
void MA_bit_set(dsp56k_core* cpustate, UINT8 value);
/* 1-27 STACK POINTER (SP) BITS */
-UINT8 UF_bit(dsp56k_core* cpustate);
-UINT8 SE_bit(dsp56k_core* cpustate);
+UINT8 UF_bit(const dsp56k_core* cpustate);
+UINT8 SE_bit(const dsp56k_core* cpustate);
//void UF_bit_set(dsp56k_core* cpustate, UINT8 value) {};
//void SE_bit_set(dsp56k_core* cpustate, UINT8 value) {};
diff --git a/src/devices/cpu/e0c6200/e0c6200.cpp b/src/devices/cpu/e0c6200/e0c6200.cpp
index e0b6a2eb8d2..0b87b9eaa7d 100644
--- a/src/devices/cpu/e0c6200/e0c6200.cpp
+++ b/src/devices/cpu/e0c6200/e0c6200.cpp
@@ -25,7 +25,7 @@
// disasm
-void e0c6200_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void e0c6200_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/e0c6200/e0c6200.h b/src/devices/cpu/e0c6200/e0c6200.h
index c55aae83505..7e47f817380 100644
--- a/src/devices/cpu/e0c6200/e0c6200.h
+++ b/src/devices/cpu/e0c6200/e0c6200.h
@@ -44,7 +44,7 @@ protected:
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;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
address_space_config m_program_config;
address_space_config m_data_config;
diff --git a/src/devices/cpu/e0c6200/e0c6200d.cpp b/src/devices/cpu/e0c6200/e0c6200d.cpp
index 4fc0599ac24..4935b257470 100644
--- a/src/devices/cpu/e0c6200/e0c6200d.cpp
+++ b/src/devices/cpu/e0c6200/e0c6200d.cpp
@@ -114,7 +114,7 @@ CPU_DISASSEMBLE(e0c6200)
{
UINT16 op = (oprom[1] | oprom[0] << 8) & 0xfff;
- int m = -1;
+ int m;
int p1 = -1;
int p2 = -1;
diff --git a/src/devices/cpu/e132xs/32xsdasm.cpp b/src/devices/cpu/e132xs/32xsdasm.cpp
index d165f2fdc42..48f3e97968f 100644
--- a/src/devices/cpu/e132xs/32xsdasm.cpp
+++ b/src/devices/cpu/e132xs/32xsdasm.cpp
@@ -394,7 +394,7 @@ static UINT32 RRdis_format(char *source, char *dest, UINT16 op, UINT16 next_op,
unsigned dasm_hyperstone(char *buffer, unsigned pc, const UINT8 *oprom, unsigned h_flag, int private_fp)
{
- UINT16 op = 0;
+ UINT16 op;
UINT8 op_num;
UINT8 source_code, dest_code, source_bit, dest_bit;
diff --git a/src/devices/cpu/e132xs/e132xs.cpp b/src/devices/cpu/e132xs/e132xs.cpp
index 95622ee095a..afa0da8d962 100644
--- a/src/devices/cpu/e132xs/e132xs.cpp
+++ b/src/devices/cpu/e132xs/e132xs.cpp
@@ -1848,7 +1848,7 @@ const address_space_config *hyperstone_device::memory_space_config(address_space
// for the debugger
//-------------------------------------------------
-void hyperstone_device::state_string_export(const device_state_entry &entry, std::string &str)
+void hyperstone_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/e132xs/e132xs.h b/src/devices/cpu/e132xs/e132xs.h
index ccfd74f1e5e..28149e1a742 100644
--- a/src/devices/cpu/e132xs/e132xs.h
+++ b/src/devices/cpu/e132xs/e132xs.h
@@ -225,8 +225,6 @@ protected:
virtual void device_reset() override;
virtual void device_stop() override;
- void make_ops();
-
// device_execute_interface overrides
virtual UINT32 execute_min_cycles() const override;
virtual UINT32 execute_max_cycles() const override;
@@ -243,7 +241,7 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// address spaces
const address_space_config m_program_config;
@@ -494,8 +492,6 @@ private:
void ope8(); void ope9(); void opea(); void opeb(); void opec(); void oped(); void opee(); void opef();
void opf0(); void opf1(); void opf2(); void opf3(); void opf4(); void opf5(); void opf6(); void opf7();
void opf8(); void opf9(); void opfa(); void opfb(); void opfc(); void opfd(); void opfe(); void opff();
-
- void set_irq_line(int irqline, int state);
};
// device type definition
diff --git a/src/devices/cpu/esrip/esrip.cpp b/src/devices/cpu/esrip/esrip.cpp
index 4a1b27b62de..a788c2a3ab3 100644
--- a/src/devices/cpu/esrip/esrip.cpp
+++ b/src/devices/cpu/esrip/esrip.cpp
@@ -350,7 +350,7 @@ const address_space_config *esrip_device::memory_space_config(address_spacenum s
// for the debugger
//-------------------------------------------------
-void esrip_device::state_string_export(const device_state_entry &entry, std::string &str)
+void esrip_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -408,13 +408,13 @@ offs_t esrip_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *op
PRIVATE FUNCTIONS
***************************************************************************/
-int esrip_device::get_hblank()
+int esrip_device::get_hblank() const
{
return machine().first_screen()->hblank();
}
/* Return the state of the LBRM line (Y-scaling related) */
-int esrip_device::get_lbrm()
+int esrip_device::get_lbrm() const
{
int addr = ((m_y_scale & 0x3f) << 3) | ((m_line_latch >> 3) & 7);
int sel = (m_line_latch & 7);
@@ -424,7 +424,7 @@ int esrip_device::get_lbrm()
return (val >> sel) & 1;
}
-int esrip_device::check_jmp(UINT8 jmp_ctrl)
+int esrip_device::check_jmp(UINT8 jmp_ctrl) const
{
int ret = 0;
diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h
index 468139701f6..852ce65533e 100644
--- a/src/devices/cpu/esrip/esrip.h
+++ b/src/devices/cpu/esrip/esrip.h
@@ -152,7 +152,7 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// address spaces
const address_space_config m_program_config;
@@ -223,9 +223,9 @@ protected:
static const ophandler s_opcodetable[24];
private:
- int get_hblank();
- int get_lbrm();
- int check_jmp(UINT8 jmp_ctrl);
+ int get_hblank() const;
+ int get_lbrm() const;
+ int check_jmp(UINT8 jmp_ctrl) const;
// flags
void calc_z_flag(UINT16 res);
diff --git a/src/devices/cpu/f8/f8.cpp b/src/devices/cpu/f8/f8.cpp
index 182638543d7..2bc875e12ee 100644
--- a/src/devices/cpu/f8/f8.cpp
+++ b/src/devices/cpu/f8/f8.cpp
@@ -2045,7 +2045,7 @@ void f8_cpu_device::device_start()
}
-void f8_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void f8_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/f8/f8.h b/src/devices/cpu/f8/f8.h
index 277383c4fec..8afddae22bd 100644
--- a/src/devices/cpu/f8/f8.h
+++ b/src/devices/cpu/f8/f8.h
@@ -51,7 +51,7 @@ protected:
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 : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/g65816/g65816.cpp b/src/devices/cpu/g65816/g65816.cpp
index 8373ddbeecf..47b0e035798 100644
--- a/src/devices/cpu/g65816/g65816.cpp
+++ b/src/devices/cpu/g65816/g65816.cpp
@@ -952,7 +952,7 @@ void g65816_device::state_export(const device_state_entry &entry)
}
}
-void g65816_device::state_string_export(const device_state_entry &entry, std::string &str)
+void g65816_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/g65816/g65816.h b/src/devices/cpu/g65816/g65816.h
index 54294ad4f74..c04b9adf71c 100644
--- a/src/devices/cpu/g65816/g65816.h
+++ b/src/devices/cpu/g65816/g65816.h
@@ -82,7 +82,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/h6280/h6280.cpp b/src/devices/cpu/h6280/h6280.cpp
index d1be228e732..ec0b62b5076 100644
--- a/src/devices/cpu/h6280/h6280.cpp
+++ b/src/devices/cpu/h6280/h6280.cpp
@@ -2191,7 +2191,7 @@ OP(op,ff) { h6280_cycles(4); bbs(7, rd_zpg()); } // 6/8 BBS7 ZPG,REL
// for the debugger
//-------------------------------------------------
-void h6280_device::state_string_export(const device_state_entry &entry, std::string &str)
+void h6280_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/h6280/h6280.h b/src/devices/cpu/h6280/h6280.h
index a344f6392be..ecf93dee843 100644
--- a/src/devices/cpu/h6280/h6280.h
+++ b/src/devices/cpu/h6280/h6280.h
@@ -98,7 +98,7 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// opcode accessors
UINT8 program_read8(offs_t addr);
diff --git a/src/devices/cpu/h8/h8.cpp b/src/devices/cpu/h8/h8.cpp
index 2692dc4372c..bc78626b00b 100644
--- a/src/devices/cpu/h8/h8.cpp
+++ b/src/devices/cpu/h8/h8.cpp
@@ -216,7 +216,7 @@ void h8_device::state_export(const device_state_entry &entry)
{
}
-void h8_device::state_string_export(const device_state_entry &entry, std::string &str)
+void h8_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch(entry.index()) {
case STATE_GENFLAGS:
diff --git a/src/devices/cpu/h8/h8.h b/src/devices/cpu/h8/h8.h
index d55d8ea7784..8ed2bee2796 100644
--- a/src/devices/cpu/h8/h8.h
+++ b/src/devices/cpu/h8/h8.h
@@ -157,7 +157,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/h8/h83008.h b/src/devices/cpu/h8/h83008.h
index f8132f4bc37..8a19568f43f 100644
--- a/src/devices/cpu/h8/h83008.h
+++ b/src/devices/cpu/h8/h83008.h
@@ -24,7 +24,6 @@
class h83008_device : public h8h_device {
public:
- h83008_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);
h83008_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
DECLARE_READ8_MEMBER(syscr_r);
diff --git a/src/devices/cpu/h8/h8_intc.h b/src/devices/cpu/h8/h8_intc.h
index 80275d40017..b6a6da31af7 100644
--- a/src/devices/cpu/h8/h8_intc.h
+++ b/src/devices/cpu/h8/h8_intc.h
@@ -102,9 +102,6 @@ public:
DECLARE_WRITE8_MEMBER(ipr_w);
DECLARE_READ8_MEMBER(iprk_r);
DECLARE_WRITE8_MEMBER(iprk_w);
-
- void set_mode_8(bool mode_8);
-
private:
static const int vector_to_slot[];
UINT8 ipr[11];
diff --git a/src/devices/cpu/h8/h8_timer16.h b/src/devices/cpu/h8/h8_timer16.h
index c7bedbbcfe8..f8f6c1efda2 100644
--- a/src/devices/cpu/h8/h8_timer16.h
+++ b/src/devices/cpu/h8/h8_timer16.h
@@ -88,8 +88,6 @@ public:
DECLARE_WRITE8_MEMBER(tier_w);
DECLARE_READ8_MEMBER(tsr_r);
DECLARE_WRITE8_MEMBER(tsr_w);
- DECLARE_READ8_MEMBER(tocr_r);
- DECLARE_WRITE8_MEMBER(tocr_w);
DECLARE_READ16_MEMBER(tcnt_r);
DECLARE_WRITE16_MEMBER(tcnt_w);
DECLARE_READ16_MEMBER(tgr_r);
diff --git a/src/devices/cpu/hcd62121/hcd62121.cpp b/src/devices/cpu/hcd62121/hcd62121.cpp
index 692297048c0..e6104627990 100644
--- a/src/devices/cpu/hcd62121/hcd62121.cpp
+++ b/src/devices/cpu/hcd62121/hcd62121.cpp
@@ -363,7 +363,7 @@ void hcd62121_cpu_device::device_start()
}
-void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/hcd62121/hcd62121.h b/src/devices/cpu/hcd62121/hcd62121.h
index dc1c7477409..2339f2229c3 100644
--- a/src/devices/cpu/hcd62121/hcd62121.h
+++ b/src/devices/cpu/hcd62121/hcd62121.h
@@ -54,7 +54,7 @@ protected:
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 : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/hcd62121/hcd62121d.cpp b/src/devices/cpu/hcd62121/hcd62121d.cpp
index 2283c0682af..0c6bc082b11 100644
--- a/src/devices/cpu/hcd62121/hcd62121d.cpp
+++ b/src/devices/cpu/hcd62121/hcd62121d.cpp
@@ -131,7 +131,9 @@ static const hcd62121_dasm hcd62121_ops[256] =
CPU_DISASSEMBLE( hcd62121 )
{
- UINT8 op, op1=0, op2=0;
+ UINT8 op;
+ UINT8 op1;
+ UINT8 op2;
int pos = 0;
const hcd62121_dasm *inst;
diff --git a/src/devices/cpu/hd61700/hd61700.cpp b/src/devices/cpu/hd61700/hd61700.cpp
index 777a23de894..c786c7235ba 100644
--- a/src/devices/cpu/hd61700/hd61700.cpp
+++ b/src/devices/cpu/hd61700/hd61700.cpp
@@ -183,8 +183,7 @@ void hd61700_cpu_device::device_start()
for (int ireg=0; ireg<32; ireg++)
{
- std::string tmpstr;
- state_add(HD61700_MAINREG + ireg, strformat(tmpstr, "R%d", ireg).c_str(), m_regmain[ireg]).callimport().callexport().formatstr("%02X");
+ state_add(HD61700_MAINREG + ireg, strformat("R%d", ireg).c_str(), m_regmain[ireg]).callimport().callexport().formatstr("%02X");
}
state_add(STATE_GENPC, "curpc", m_curpc).callimport().callexport().formatstr("%8s").noshow();
@@ -271,7 +270,7 @@ void hd61700_cpu_device::state_import(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void hd61700_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void hd61700_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -661,7 +660,7 @@ void hd61700_cpu_device::execute_run()
case 0x1c: //gpo/gfl
{
UINT8 arg = read_op();
- UINT8 src = 0xff;
+ UINT8 src;
if (arg&0x40)
{
@@ -2255,7 +2254,7 @@ void hd61700_cpu_device::execute_run()
{
UINT8 arg = read_op();
UINT8 arg1 = read_op();
- UINT8 r1 = 0, r2 = 0, f = 0;
+ UINT8 r1 = 0, r2, f = 0;
r2 = (arg&0x40) ? 0 : 1;
@@ -2745,7 +2744,7 @@ inline void hd61700_cpu_device::set_pc(INT32 new_pc)
inline UINT8 hd61700_cpu_device::read_op()
{
- UINT16 data = 0;
+ UINT16 data;
UINT32 addr18 = make_18bit_addr((m_irq_status) ? 0 : prev_ua, m_pc);
if (m_pc <= INT_ROM)
diff --git a/src/devices/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h
index 6f99aeca899..838ea8833bb 100644
--- a/src/devices/cpu/hd61700/hd61700.h
+++ b/src/devices/cpu/hd61700/hd61700.h
@@ -92,7 +92,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ void state_string_export(const device_state_entry &entry, std::string &str) const override;
// 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 : nullptr; }
diff --git a/src/devices/cpu/hd61700/hd61700d.cpp b/src/devices/cpu/hd61700/hd61700d.cpp
index 719fade4f49..b5461ec58e8 100644
--- a/src/devices/cpu/hd61700/hd61700d.cpp
+++ b/src/devices/cpu/hd61700/hd61700d.cpp
@@ -399,7 +399,7 @@ UINT32 get_dasmflags(UINT8 op)
CPU_DISASSEMBLE( hd61700 )
{
const hd61700_dasm *inst;
- UINT32 dasmflags = 0;
+ UINT32 dasmflags;
UINT8 op, op1;
int pos = 0, type = EXT_ROM;
diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp
index c9b7220cf2a..58cd711f8da 100644
--- a/src/devices/cpu/hmcs40/hmcs40.cpp
+++ b/src/devices/cpu/hmcs40/hmcs40.cpp
@@ -133,7 +133,7 @@ hd44828_device::hd44828_device(const machine_config &mconfig, const char *tag, d
// disasm
-void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h
index a06d3848cbc..d9e30a92f72 100644
--- a/src/devices/cpu/hmcs40/hmcs40.h
+++ b/src/devices/cpu/hmcs40/hmcs40.h
@@ -175,7 +175,7 @@ protected:
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;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
address_space_config m_program_config;
address_space_config m_data_config;
diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp
index 027a37e03ed..052c7058604 100644
--- a/src/devices/cpu/hphybrid/hphybrid.cpp
+++ b/src/devices/cpu/hphybrid/hphybrid.cpp
@@ -17,7 +17,22 @@ enum {
HPHYBRID_DMAPA,
HPHYBRID_DMAMA,
HPHYBRID_DMAC,
- HPHYBRID_I
+ HPHYBRID_I,
+ HPHYBRID_W,
+ HPHYBRID_AR2,
+ HPHYBRID_AR2_2,
+ HPHYBRID_AR2_3,
+ HPHYBRID_AR2_4,
+ HPHYBRID_SE,
+ HPHYBRID_R25,
+ HPHYBRID_R26,
+ HPHYBRID_R27,
+ HPHYBRID_R32,
+ HPHYBRID_R33,
+ HPHYBRID_R34,
+ HPHYBRID_R35,
+ HPHYBRID_R36,
+ HPHYBRID_R37
};
#define BIT_MASK(n) (1U << (n))
@@ -40,13 +55,22 @@ enum {
#define HPHYBRID_IRH_SVC_BIT 10 // IRH in service
#define HPHYBRID_IRL_SVC_BIT 11 // IRL in service
#define HPHYBRID_DMAR_BIT 12 // DMA request
+#define HPHYBRID_STS_BIT 13 // Status flag
+#define HPHYBRID_FLG_BIT 14 // "Flag" flag
+#define HPHYBRID_DC_BIT 15 // Decimal carry
#define HPHYBRID_IV_MASK 0xfff0 // IV mask
+#define HP_REG_SE_MASK 0x000f
+
#define CURRENT_PA (m_reg_PA[ 0 ])
#define HP_RESET_ADDR 0x0020
+// Part of r32-r37 that is actually output as address extension (6 bits of "BSC": block select code)
+#define BSC_REG_MASK 0x3f
+
+const device_type HP_5061_3001 = &device_creator<hp_5061_3001_cpu_device>;
const device_type HP_5061_3011 = &device_creator<hp_5061_3011_cpu_device>;
WRITE_LINE_MEMBER(hp_hybrid_cpu_device::dmar_w)
@@ -58,10 +82,38 @@ WRITE_LINE_MEMBER(hp_hybrid_cpu_device::dmar_w)
}
}
-hp_hybrid_cpu_device::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)
-: cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
- m_program_config("program", ENDIANNESS_BIG, 16, 16, -1),
- m_io_config("io", ENDIANNESS_BIG, 16, 6, -1)
+WRITE_LINE_MEMBER(hp_hybrid_cpu_device::halt_w)
+{
+ if (state) {
+ BIT_SET(m_flags , HPHYBRID_HALT_BIT);
+ } else {
+ BIT_CLR(m_flags , HPHYBRID_HALT_BIT);
+ }
+}
+
+WRITE_LINE_MEMBER(hp_hybrid_cpu_device::status_w)
+{
+ if (state) {
+ BIT_SET(m_flags , HPHYBRID_STS_BIT);
+ } else {
+ BIT_CLR(m_flags , HPHYBRID_STS_BIT);
+ }
+}
+
+WRITE_LINE_MEMBER(hp_hybrid_cpu_device::flag_w)
+{
+ if (state) {
+ BIT_SET(m_flags , HPHYBRID_FLG_BIT);
+ } else {
+ BIT_CLR(m_flags , HPHYBRID_FLG_BIT);
+ }
+}
+
+hp_hybrid_cpu_device::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)
+ : cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+ m_pa_changed_func(*this),
+ m_program_config("program", ENDIANNESS_BIG, 16, addrwidth, -1),
+ m_io_config("io", ENDIANNESS_BIG, 16, 6, -1)
{
}
@@ -77,11 +129,13 @@ void hp_hybrid_cpu_device::device_start()
m_reg_PA[ 0 ] = 0;
m_reg_PA[ 1 ] = 0;
m_reg_PA[ 2 ] = 0;
+ m_reg_W = 0;
m_flags = 0;
m_dmapa = 0;
m_dmama = 0;
m_dmac = 0;
m_reg_I = 0;
+ m_forced_bsc_25 = false;
{
state_add(HPHYBRID_A, "A", m_reg_A);
@@ -89,11 +143,12 @@ void hp_hybrid_cpu_device::device_start()
state_add(HPHYBRID_C, "C", m_reg_C);
state_add(HPHYBRID_D, "D", m_reg_D);
state_add(HPHYBRID_P, "P", m_reg_P);
- state_add(STATE_GENPC, "GENPC", m_reg_P).noshow();
+ state_add(STATE_GENPC, "GENPC", m_genpc).noshow();
state_add(HPHYBRID_R, "R", m_reg_R);
state_add(STATE_GENSP, "GENSP", m_reg_R).noshow();
state_add(HPHYBRID_IV, "IV", m_reg_IV);
state_add(HPHYBRID_PA, "PA", m_reg_PA[ 0 ]);
+ state_add(HPHYBRID_W, "W", m_reg_W).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).noshow().formatstr("%9s");
state_add(HPHYBRID_DMAPA , "DMAPA" , m_dmapa).noshow();
state_add(HPHYBRID_DMAMA , "DMAMA" , m_dmama).noshow();
@@ -115,19 +170,23 @@ void hp_hybrid_cpu_device::device_start()
save_item(NAME(m_reg_PA[0]));
save_item(NAME(m_reg_PA[1]));
save_item(NAME(m_reg_PA[2]));
+ save_item(NAME(m_reg_W));
save_item(NAME(m_flags));
save_item(NAME(m_dmapa));
save_item(NAME(m_dmama));
save_item(NAME(m_dmac));
save_item(NAME(m_reg_I));
+ save_item(NAME(m_forced_bsc_25));
m_icountptr = &m_icount;
+
+ m_pa_changed_func.resolve_safe();
}
void hp_hybrid_cpu_device::device_reset()
{
m_reg_P = HP_RESET_ADDR;
- m_reg_I = RM(m_reg_P);
+ m_reg_I = fetch();
m_flags = 0;
}
@@ -137,7 +196,7 @@ void hp_hybrid_cpu_device::execute_run()
if (BIT(m_flags , HPHYBRID_DMAEN_BIT) && BIT(m_flags , HPHYBRID_DMAR_BIT)) {
handle_dma();
} else {
- debugger_instruction_hook(this, m_reg_P);
+ debugger_instruction_hook(this, m_genpc);
// Check for interrupts
check_for_interrupts();
@@ -173,7 +232,7 @@ UINT16 hp_hybrid_cpu_device::execute_one(UINT16 opcode)
return RM(opcode & 0x1f);
} else {
m_reg_P = execute_one_sub(opcode);
- return RM(m_reg_P);
+ return fetch();
}
}
@@ -186,7 +245,7 @@ UINT16 hp_hybrid_cpu_device::execute_one(UINT16 opcode)
*/
UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
{
- UINT16 ea;
+ UINT32 ea;
UINT16 tmp;
switch (opcode & 0x7800) {
@@ -247,8 +306,8 @@ UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
case 0x4000:
// JSM
m_icount -= 17;
- WM(++m_reg_R , m_reg_P);
- return get_ea(opcode);
+ WM(AEC_CASE_C , ++m_reg_R , m_reg_P);
+ return remove_mae(get_ea(opcode));
case 0x4800:
// ISZ
@@ -289,7 +348,7 @@ UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
case 0x6800:
// JMP
m_icount -= 8;
- return get_ea(opcode);
+ return remove_mae(get_ea(opcode));
default:
switch (opcode & 0xfec0) {
@@ -309,8 +368,7 @@ UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
// SFS
// SFC
m_icount -= 14;
- // TODO: read flag bit
- return get_skip_addr(opcode , true);
+ return get_skip_addr(opcode , !BIT(m_flags , HPHYBRID_FLG_BIT));
case 0x7C00:
// RZB
@@ -328,8 +386,7 @@ UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
// SSS
// SSC
m_icount -= 14;
- // TODO: read status bit
- return get_skip_addr(opcode , true);
+ return get_skip_addr(opcode , !BIT(m_flags , HPHYBRID_STS_BIT));
case 0x7cc0:
// SHS
@@ -449,12 +506,14 @@ UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
if (BIT(m_flags , HPHYBRID_IRH_SVC_BIT)) {
BIT_CLR(m_flags , HPHYBRID_IRH_SVC_BIT);
memmove(&m_reg_PA[ 0 ] , &m_reg_PA[ 1 ] , HPHYBRID_INT_LVLS);
+ m_pa_changed_func((UINT8)CURRENT_PA);
} else if (BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
BIT_CLR(m_flags , HPHYBRID_IRL_SVC_BIT);
memmove(&m_reg_PA[ 0 ] , &m_reg_PA[ 1 ] , HPHYBRID_INT_LVLS);
+ m_pa_changed_func((UINT8)CURRENT_PA);
}
}
- tmp = RM(m_reg_R--) + (opcode & 0x1f);
+ tmp = RM(AEC_CASE_C , m_reg_R--) + (opcode & 0x1f);
return BIT(opcode , 5) ? tmp - 0x20 : tmp;
} else {
switch (opcode) {
@@ -545,28 +604,27 @@ UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
break;
default:
- // Unrecognized instructions: NOP
- // Execution time is fictional
- m_icount -= 6;
+ // Unrecognized instruction: pass it on for further processing (by EMC if present)
+ return execute_no_bpc_ioc(opcode);
+ }
+ }
+ }
}
- }
}
- }
}
- }
return m_reg_P + 1;
}
-void hp_hybrid_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void hp_hybrid_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
- if (entry.index() == STATE_GENFLAGS) {
- strprintf(str, "%s %s %c %c",
- BIT(m_flags , HPHYBRID_DB_BIT) ? "Db":"..",
- BIT(m_flags , HPHYBRID_CB_BIT) ? "Cb":"..",
- BIT(m_flags , HPHYBRID_O_BIT) ? 'O':'.',
- BIT(m_flags , HPHYBRID_C_BIT) ? 'E':'.');
- }
+ if (entry.index() == STATE_GENFLAGS) {
+ strprintf(str, "%s %s %c %c",
+ BIT(m_flags , HPHYBRID_DB_BIT) ? "Db":"..",
+ BIT(m_flags , HPHYBRID_CB_BIT) ? "Cb":"..",
+ BIT(m_flags , HPHYBRID_O_BIT) ? 'O':'.',
+ BIT(m_flags , HPHYBRID_C_BIT) ? 'E':'.');
+ }
}
offs_t hp_hybrid_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
@@ -575,34 +633,206 @@ offs_t hp_hybrid_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const U
return CPU_DISASSEMBLE_NAME(hp_hybrid)(this, buffer, pc, oprom, opram, options);
}
-UINT16 hp_hybrid_cpu_device::get_ea(UINT16 opcode)
+UINT16 hp_hybrid_cpu_device::remove_mae(UINT32 addr)
{
- UINT16 base;
- UINT16 off;
+ return (UINT16)(addr & 0xffff);
+}
- if (BIT(opcode , 10)) {
- // Current page
- base = m_reg_P;
- } else {
- // Base page
- base = 0;
- }
+UINT16 hp_hybrid_cpu_device::RM(aec_cases_t aec_case , UINT16 addr)
+{
+ return RM(add_mae(aec_case , addr));
+}
+
+UINT16 hp_hybrid_cpu_device::RM(UINT32 addr)
+{
+ UINT16 tmp;
+ UINT16 addr_wo_bsc = remove_mae(addr);
+
+ if (addr_wo_bsc <= HP_REG_LAST_ADDR) {
+ // Any access to internal registers removes forcing of BSC 2x
+ m_forced_bsc_25 = false;
+
+ // Memory mapped registers that are present in both 3001 & 3011
+ switch (addr_wo_bsc) {
+ case HP_REG_A_ADDR:
+ return m_reg_A;
+
+ case HP_REG_B_ADDR:
+ return m_reg_B;
+
+ case HP_REG_P_ADDR:
+ return m_reg_P;
+
+ case HP_REG_R_ADDR:
+ return m_reg_R;
+
+ case HP_REG_R4_ADDR:
+ case HP_REG_R5_ADDR:
+ case HP_REG_R6_ADDR:
+ case HP_REG_R7_ADDR:
+ return RIO(CURRENT_PA , addr_wo_bsc - HP_REG_R4_ADDR);
+
+ case HP_REG_IV_ADDR:
+ // Correct?
+ if (!BIT(m_flags , HPHYBRID_IRH_SVC_BIT) && !BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
+ return m_reg_IV;
+ } else {
+ return m_reg_IV | CURRENT_PA;
+ }
+
+ case HP_REG_PA_ADDR:
+ return CURRENT_PA;
+
+ case HP_REG_W_ADDR:
+ return m_reg_W;
+
+ case HP_REG_DMAPA_ADDR:
+ tmp = m_dmapa & HP_REG_PA_MASK;
+ if (BIT(m_flags , HPHYBRID_CB_BIT)) {
+ BIT_SET(tmp , 15);
+ }
+ if (BIT(m_flags , HPHYBRID_DB_BIT)) {
+ BIT_SET(tmp , 14);
+ }
+ return tmp;
+
+ case HP_REG_DMAMA_ADDR:
+ return m_dmama;
+
+ case HP_REG_DMAC_ADDR:
+ return m_dmac;
+
+ case HP_REG_C_ADDR:
+ return m_reg_C;
- off = opcode & 0x3ff;
- if (off & 0x200) {
- off -= 0x400;
+ case HP_REG_D_ADDR:
+ return m_reg_D;
+
+ default:
+ return read_non_common_reg(addr_wo_bsc);
}
+ } else {
+ return m_direct->read_word(addr << 1);
+ }
+}
- base += off;
+void hp_hybrid_cpu_device::WM(aec_cases_t aec_case , UINT16 addr , UINT16 v)
+{
+ WM(add_mae(aec_case , addr) , v);
+}
- if (BIT(opcode , 15)) {
- // Indirect addressing
- m_icount -= 6;
- return RM(base);
- } else {
- // Direct addressing
- return base;
+void hp_hybrid_cpu_device::WM(UINT32 addr , UINT16 v)
+{
+ UINT16 addr_wo_bsc = remove_mae(addr);
+
+ if (addr_wo_bsc <= HP_REG_LAST_ADDR) {
+ // Any access to internal registers removes forcing of BSC 2x
+ m_forced_bsc_25 = false;
+
+ // Memory mapped registers
+ switch (addr_wo_bsc) {
+ case HP_REG_A_ADDR:
+ m_reg_A = v;
+ break;
+
+ case HP_REG_B_ADDR:
+ m_reg_B = v;
+ break;
+
+ case HP_REG_P_ADDR:
+ m_reg_P = v;
+ break;
+
+ case HP_REG_R_ADDR:
+ m_reg_R = v;
+ break;
+
+ case HP_REG_R4_ADDR:
+ case HP_REG_R5_ADDR:
+ case HP_REG_R6_ADDR:
+ case HP_REG_R7_ADDR:
+ WIO(CURRENT_PA , addr_wo_bsc - HP_REG_R4_ADDR , v);
+ break;
+
+ case HP_REG_IV_ADDR:
+ m_reg_IV = v & HP_REG_IV_MASK;
+ break;
+
+ case HP_REG_PA_ADDR:
+ CURRENT_PA = v & HP_REG_PA_MASK;
+ m_pa_changed_func((UINT8)CURRENT_PA);
+ break;
+
+ case HP_REG_W_ADDR:
+ m_reg_W = v;
+ break;
+
+ case HP_REG_DMAPA_ADDR:
+ m_dmapa = v & HP_REG_PA_MASK;
+ break;
+
+ case HP_REG_DMAMA_ADDR:
+ m_dmama = v;
+ break;
+
+ case HP_REG_DMAC_ADDR:
+ m_dmac = v;
+ break;
+
+ case HP_REG_C_ADDR:
+ m_reg_C = v;
+ break;
+
+ case HP_REG_D_ADDR:
+ m_reg_D = v;
+ break;
+
+ default:
+ write_non_common_reg(addr_wo_bsc , v);
+ break;
}
+ } else {
+ m_program->write_word(addr << 1 , v);
+ }
+}
+
+UINT16 hp_hybrid_cpu_device::fetch(void)
+{
+ m_genpc = add_mae(AEC_CASE_A , m_reg_P);
+ return RM(m_genpc);
+}
+
+UINT32 hp_hybrid_cpu_device::get_ea(UINT16 opcode)
+{
+ UINT16 base;
+ UINT16 off;
+ aec_cases_t aec;
+
+ if (BIT(opcode , 10)) {
+ // Current page
+ base = m_reg_P;
+ aec = AEC_CASE_A;
+ } else {
+ // Base page
+ base = 0;
+ aec = AEC_CASE_B;
+ }
+
+ off = opcode & 0x3ff;
+ if (off & 0x200) {
+ off -= 0x400;
+ }
+
+ base += off;
+
+ if (BIT(opcode , 15)) {
+ // Indirect addressing
+ m_icount -= 6;
+ return add_mae(AEC_CASE_C , RM(aec , base));
+ } else {
+ // Direct addressing
+ return add_mae(aec , base);
+ }
}
void hp_hybrid_cpu_device::do_add(UINT16& addend1 , UINT16 addend2)
@@ -676,7 +906,7 @@ void hp_hybrid_cpu_device::do_pw(UINT16 opcode)
if (m_flags & b_mask) {
tmp_addr |= 0x10000;
}
- tmp = RM((UINT16)(tmp_addr >> 1));
+ tmp = RM(AEC_CASE_C , (UINT16)(tmp_addr >> 1));
if (BIT(tmp_addr , 0)) {
tmp &= 0xff;
} else {
@@ -684,7 +914,7 @@ void hp_hybrid_cpu_device::do_pw(UINT16 opcode)
}
} else {
// Word
- tmp = RM(*ptr_reg);
+ tmp = RM(AEC_CASE_C , *ptr_reg);
}
WM(reg_addr , tmp);
@@ -719,10 +949,25 @@ void hp_hybrid_cpu_device::do_pw(UINT16 opcode)
if (m_flags & b_mask) {
tmp_addr |= 0x10000;
}
- WMB(tmp_addr , (UINT8)tmp);
+ if (tmp_addr <= (HP_REG_LAST_ADDR * 2 + 1)) {
+ // Single bytes can be written to registers.
+ // The addressed register gets the written byte in the proper position
+ // and a 0 in the other byte because access to registers is always done in
+ // 16 bits units.
+ if (BIT(tmp_addr , 0)) {
+ tmp &= 0xff;
+ } else {
+ tmp <<= 8;
+ }
+ WM(tmp_addr >> 1 , tmp);
+ } else {
+ // Extend address, preserve LSB & form byte address
+ tmp_addr = (add_mae(AEC_CASE_C , tmp_addr >> 1) << 1) | (tmp_addr & 1);
+ m_program->write_byte(tmp_addr , (UINT8)tmp);
+ }
} else {
// Word
- WM(*ptr_reg , tmp);
+ WM(AEC_CASE_C , *ptr_reg , tmp);
}
}
}
@@ -768,14 +1013,16 @@ void hp_hybrid_cpu_device::check_for_interrupts(void)
CURRENT_PA = new_PA;
+ m_pa_changed_func((UINT8)CURRENT_PA);
+
// Is this correct? Patent @ pg 210 suggests that the whole interrupt recognition sequence
- // lasts for 32 cycles (6 are already accounted for in get_ea for one indirection)
- m_icount -= 26;
+ // lasts for 32 cycles
+ m_icount -= 32;
// Do a double-indirect JSM IV,I instruction
- WM(++m_reg_R , m_reg_P);
- m_reg_P = RM(get_ea(0xc008));
- m_reg_I = RM(m_reg_P);
+ WM(AEC_CASE_C , ++m_reg_R , m_reg_P);
+ m_reg_P = RM(AEC_CASE_I , RM(HP_REG_IV_ADDR));
+ m_reg_I = fetch();
}
void hp_hybrid_cpu_device::handle_dma(void)
@@ -786,13 +1033,13 @@ void hp_hybrid_cpu_device::handle_dma(void)
if (BIT(m_flags , HPHYBRID_DMADIR_BIT)) {
// "Outward" DMA: memory -> peripheral
- tmp = RM(m_dmama++);
+ tmp = RM(AEC_CASE_D , m_dmama++);
WIO(m_dmapa , tc ? 2 : 0 , tmp);
m_icount -= 10;
} else {
// "Inward" DMA: peripheral -> memory
tmp = RIO(m_dmapa , tc ? 2 : 0);
- WM(m_dmama++ , tmp);
+ WM(AEC_CASE_D , m_dmama++ , tmp);
m_icount -= 9;
}
@@ -804,158 +1051,563 @@ void hp_hybrid_cpu_device::handle_dma(void)
}
}
-UINT16 hp_hybrid_cpu_device::RM(UINT16 addr)
+UINT16 hp_hybrid_cpu_device::RIO(UINT8 pa , UINT8 ic)
{
- UINT16 tmp;
+ return m_io->read_word(HP_MAKE_IOADDR(pa, ic) << 1);
+}
- if (addr <= HP_REG_LAST_ADDR) {
- // Memory mapped registers
- switch (addr) {
- case HP_REG_A_ADDR:
- return m_reg_A;
+void hp_hybrid_cpu_device::WIO(UINT8 pa , UINT8 ic , UINT16 v)
+{
+ m_io->write_word(HP_MAKE_IOADDR(pa, ic) << 1 , v);
+}
- case HP_REG_B_ADDR:
- return m_reg_B;
+hp_5061_3001_cpu_device::hp_5061_3001_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : hp_hybrid_cpu_device(mconfig, HP_5061_3001, "HP-5061-3001", tag, owner, clock, "5061-3001", 22),
+ m_boot_mode(false)
+{
+}
- case HP_REG_P_ADDR:
- return m_reg_P;
+void hp_5061_3001_cpu_device::device_start()
+{
+ hp_hybrid_cpu_device::device_start();
+
+ state_add(HPHYBRID_AR2, "Ar2" , m_reg_ar2[ 0 ]);
+ state_add(HPHYBRID_AR2_2, "Ar2_2" , m_reg_ar2[ 1 ]);
+ state_add(HPHYBRID_AR2_3, "Ar2_3" , m_reg_ar2[ 2 ]);
+ state_add(HPHYBRID_AR2_4, "Ar2_4" , m_reg_ar2[ 3 ]);
+ state_add(HPHYBRID_SE, "SE" , m_reg_se);
+ state_add(HPHYBRID_R25, "R25" , m_reg_r25).noshow();
+ state_add(HPHYBRID_R26, "R26" , m_reg_r26).noshow();
+ state_add(HPHYBRID_R27, "R27" , m_reg_r27).noshow();
+ state_add(HPHYBRID_R32, "R32" , m_reg_aec[ 0 ]);
+ state_add(HPHYBRID_R33, "R33" , m_reg_aec[ 1 ]);
+ state_add(HPHYBRID_R34, "R34" , m_reg_aec[ 2 ]);
+ state_add(HPHYBRID_R35, "R35" , m_reg_aec[ 3 ]);
+ state_add(HPHYBRID_R36, "R36" , m_reg_aec[ 4 ]);
+ state_add(HPHYBRID_R37, "R37" , m_reg_aec[ 5 ]);
+
+ save_item(NAME(m_reg_ar2[ 0 ]));
+ save_item(NAME(m_reg_ar2[ 1 ]));
+ save_item(NAME(m_reg_ar2[ 2 ]));
+ save_item(NAME(m_reg_ar2[ 3 ]));
+ save_item(NAME(m_reg_se));
+ save_item(NAME(m_reg_r25));
+ save_item(NAME(m_reg_r26));
+ save_item(NAME(m_reg_r27));
+ save_item(NAME(m_reg_aec[ 0 ]));
+ save_item(NAME(m_reg_aec[ 1 ]));
+ save_item(NAME(m_reg_aec[ 2 ]));
+ save_item(NAME(m_reg_aec[ 3 ]));
+ save_item(NAME(m_reg_aec[ 4 ]));
+ save_item(NAME(m_reg_aec[ 5 ]));
+}
- case HP_REG_R_ADDR:
- return m_reg_R;
+void hp_5061_3001_cpu_device::device_reset()
+{
+ // Initial state of AEC registers:
+ // R32 0
+ // R33 5
+ // R34 0
+ // R35 0
+ // R36 0
+ // R37 0
+ m_reg_aec[ 0 ] = 0;
+ m_reg_aec[ 1 ] = 5;
+ m_reg_aec[ 2 ] = 0;
+ m_reg_aec[ 3 ] = 0;
+ m_reg_aec[ 4 ] = 0;
+ m_reg_aec[ 5 ] = 0;
+
+ m_forced_bsc_25 = m_boot_mode;
+
+ hp_hybrid_cpu_device::device_reset();
+}
- case HP_REG_R4_ADDR:
- case HP_REG_R5_ADDR:
- case HP_REG_R6_ADDR:
- case HP_REG_R7_ADDR:
- return RIO(CURRENT_PA , addr - HP_REG_R4_ADDR);
+UINT8 hp_5061_3001_cpu_device::do_dec_shift_r(UINT8 d1 , UINT64& mantissa)
+{
+ UINT8 d12 = (UINT8)(mantissa & 0xf);
- case HP_REG_IV_ADDR:
- // Correct?
- if (!BIT(m_flags , HPHYBRID_IRH_SVC_BIT) && !BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
- return m_reg_IV;
- } else {
- return m_reg_IV | CURRENT_PA;
- }
+ mantissa = (mantissa >> 4) | ((UINT64)d1 << 44);
- case HP_REG_PA_ADDR:
- return CURRENT_PA;
+ return d12;
+}
- case HP_REG_DMAPA_ADDR:
- tmp = m_dmapa & HP_REG_PA_MASK;
- if (BIT(m_flags , HPHYBRID_CB_BIT)) {
- BIT_SET(tmp , 15);
- }
- if (BIT(m_flags , HPHYBRID_DB_BIT)) {
- BIT_SET(tmp , 14);
- }
- return tmp;
+UINT8 hp_5061_3001_cpu_device::do_dec_shift_l(UINT8 d12 , UINT64& mantissa)
+{
+ UINT8 d1 = (UINT8)((mantissa >> 44) & 0xf);
- case HP_REG_DMAMA_ADDR:
- return m_dmama;
+ mantissa = (mantissa << 4) | ((UINT64)d12);
+ mantissa &= 0xffffffffffffULL;
- case HP_REG_DMAC_ADDR:
- return m_dmac;
+ return d1;
+}
- case HP_REG_C_ADDR:
- return m_reg_C;
+UINT64 hp_5061_3001_cpu_device::get_ar1(void)
+{
+ UINT32 addr;
+ UINT64 tmp;
- case HP_REG_D_ADDR:
- return m_reg_D;
+ addr = add_mae(AEC_CASE_B , HP_REG_AR1_ADDR + 1);
+ tmp = (UINT64)RM(addr++);
+ tmp <<= 16;
+ tmp |= (UINT64)RM(addr++);
+ tmp <<= 16;
+ tmp |= (UINT64)RM(addr);
- default:
- // Unknown registers are returned as 0
- return 0;
- }
- } else {
- return m_direct->read_word((offs_t)addr << 1);
- }
+ return tmp;
}
-void hp_hybrid_cpu_device::WM(UINT16 addr , UINT16 v)
+void hp_5061_3001_cpu_device::set_ar1(UINT64 v)
{
- if (addr <= HP_REG_LAST_ADDR) {
- // Memory mapped registers
- switch (addr) {
- case HP_REG_A_ADDR:
- m_reg_A = v;
- break;
+ UINT32 addr;
+
+ addr = add_mae(AEC_CASE_B , HP_REG_AR1_ADDR + 3);
+ WM(addr-- , (UINT16)(v & 0xffff));
+ v >>= 16;
+ WM(addr-- , (UINT16)(v & 0xffff));
+ v >>= 16;
+ WM(addr , (UINT16)(v & 0xffff));
+}
- case HP_REG_B_ADDR:
- m_reg_B = v;
- break;
+UINT64 hp_5061_3001_cpu_device::get_ar2(void) const
+{
+ UINT64 tmp;
- case HP_REG_P_ADDR:
- m_reg_P = v;
- break;
+ tmp = (UINT64)m_reg_ar2[ 1 ];
+ tmp <<= 16;
+ tmp |= (UINT64)m_reg_ar2[ 2 ];
+ tmp <<= 16;
+ tmp |= (UINT64)m_reg_ar2[ 3 ];
- case HP_REG_R_ADDR:
- m_reg_R = v;
- break;
+ return tmp;
+}
- case HP_REG_R4_ADDR:
- case HP_REG_R5_ADDR:
- case HP_REG_R6_ADDR:
- case HP_REG_R7_ADDR:
- WIO(CURRENT_PA , addr - HP_REG_R4_ADDR , v);
- break;
+void hp_5061_3001_cpu_device::set_ar2(UINT64 v)
+{
+ m_reg_ar2[ 3 ] = (UINT16)(v & 0xffff);
+ v >>= 16;
+ m_reg_ar2[ 2 ] = (UINT16)(v & 0xffff);
+ v >>= 16;
+ m_reg_ar2[ 1 ] = (UINT16)(v & 0xffff);
+}
- case HP_REG_IV_ADDR:
- m_reg_IV = v & HP_REG_IV_MASK;
- break;
+UINT64 hp_5061_3001_cpu_device::do_mrxy(UINT64 ar)
+{
+ UINT8 n;
- case HP_REG_PA_ADDR:
- CURRENT_PA = v & HP_REG_PA_MASK;
- break;
+ n = m_reg_B & 0xf;
+ m_reg_A &= 0xf;
+ m_reg_se = m_reg_A;
+ while (n--) {
+ m_reg_se = do_dec_shift_r(m_reg_A , ar);
+ m_reg_A = 0;
+ m_icount -= 4;
+ }
+ m_reg_A = m_reg_se;
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
- case HP_REG_DMAPA_ADDR:
- m_dmapa = v & HP_REG_PA_MASK;
- break;
+ return ar;
+}
- case HP_REG_DMAMA_ADDR:
- m_dmama = v;
- break;
+bool hp_5061_3001_cpu_device::do_dec_add(bool carry_in , UINT64& a , UINT64 b)
+{
+ UINT64 tmp = 0;
+ unsigned i;
+ UINT8 digit_a , digit_b;
- case HP_REG_DMAC_ADDR:
- m_dmac = v;
- break;
+ for (i = 0; i < 12; i++) {
+ digit_a = (UINT8)(a & 0xf);
+ digit_b = (UINT8)(b & 0xf);
- case HP_REG_C_ADDR:
- m_reg_C = v;
- break;
+ if (carry_in) {
+ digit_a++;
+ }
- case HP_REG_D_ADDR:
- m_reg_D = v;
- break;
+ digit_a += digit_b;
- default:
- // Unknown registers are silently discarded
- break;
+ carry_in = digit_a >= 10;
+
+ if (carry_in) {
+ digit_a = (digit_a - 10) & 0xf;
+ }
+
+ tmp |= (UINT64)digit_a << (4 * i);
+
+ a >>= 4;
+ b >>= 4;
+ }
+
+ a = tmp;
+
+ return carry_in;
+}
+
+void hp_5061_3001_cpu_device::do_mpy(void)
+{
+ INT32 a = (INT16)m_reg_A;
+ INT32 b = (INT16)m_reg_B;
+ INT32 p = a * b;
+
+ m_reg_A = (UINT16)(p & 0xffff);
+ m_reg_B = (UINT16)((p >> 16) & 0xffff);
+
+ // Not entirely correct, timing depends on initial content of A register
+ m_icount -= 65;
+}
+
+UINT16 hp_5061_3001_cpu_device::execute_no_bpc_ioc(UINT16 opcode)
+{
+ // EMC instructions
+ UINT8 n;
+ UINT16 tmp1;
+ UINT16 tmp2;
+ UINT64 tmp_ar;
+ UINT64 tmp_ar2;
+ bool carry;
+
+ switch (opcode & 0xfff0) {
+ case 0x7300:
+ // XFR
+ tmp1 = m_reg_A;
+ tmp2 = m_reg_B;
+ n = (opcode & 0xf) + 1;
+ m_icount -= 21;
+ while (n--) {
+ m_icount -= 12;
+ WM(AEC_CASE_C , tmp2 , RM(AEC_CASE_C , tmp1));
+ tmp1++;
+ tmp2++;
+ }
+ break;
+
+ case 0x7380:
+ // CLR
+ tmp1 = m_reg_A;
+ n = (opcode & 0xf) + 1;
+ m_icount -= 16;
+ while (n--) {
+ m_icount -= 6;
+ WM(AEC_CASE_C , tmp1 , 0);
+ tmp1++;
+ }
+ break;
+
+ default:
+ switch (opcode) {
+ case 0x7200:
+ // MWA
+ m_icount -= 28;
+ tmp_ar2 = get_ar2();
+ carry = do_dec_add(BIT(m_flags , HPHYBRID_DC_BIT) , tmp_ar2 , m_reg_B);
+ set_ar2(tmp_ar2);
+ if (carry) {
+ BIT_SET(m_flags, HPHYBRID_DC_BIT);
+ } else {
+ BIT_CLR(m_flags, HPHYBRID_DC_BIT);
+ }
+ break;
+
+ case 0x7220:
+ // CMY
+ m_icount -= 23;
+ tmp_ar2 = get_ar2();
+ tmp_ar2 = 0x999999999999ULL - tmp_ar2;
+ do_dec_add(true , tmp_ar2 , 0);
+ set_ar2(tmp_ar2);
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
+ break;
+
+ case 0x7260:
+ // CMX
+ m_icount -= 59;
+ tmp_ar = get_ar1();
+ tmp_ar = 0x999999999999ULL - tmp_ar;
+ do_dec_add(true , tmp_ar , 0);
+ set_ar1(tmp_ar);
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
+ break;
+
+ case 0x7280:
+ // FXA
+ m_icount -= 40;
+ tmp_ar2 = get_ar2();
+ carry = do_dec_add(BIT(m_flags , HPHYBRID_DC_BIT) , tmp_ar2 , get_ar1());
+ set_ar2(tmp_ar2);
+ if (carry) {
+ BIT_SET(m_flags, HPHYBRID_DC_BIT);
+ } else {
+ BIT_CLR(m_flags, HPHYBRID_DC_BIT);
+ }
+ break;
+
+ case 0x7340:
+ // NRM
+ tmp_ar2 = get_ar2();
+ m_icount -= 23;
+ for (n = 0; n < 12 && (tmp_ar2 & 0xf00000000000ULL) == 0; n++) {
+ do_dec_shift_l(0 , tmp_ar2);
+ m_icount--;
+ }
+ m_reg_B = n;
+ if (n < 12) {
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
+ set_ar2(tmp_ar2);
+ } else {
+ BIT_SET(m_flags , HPHYBRID_DC_BIT);
+ // When ar2 is 0, total time is 69 cycles
+ // (salcazzo che cosa fa per altri 34 cicli)
+ m_icount -= 34;
+ }
+ break;
+
+ case 0x73c0:
+ // CDC
+ m_icount -= 11;
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
+ break;
+
+ case 0x7a00:
+ // FMP
+ m_icount -= 42;
+ m_reg_A = 0;
+ tmp_ar = get_ar1();
+ tmp_ar2 = get_ar2();
+ for (n = m_reg_B & 0xf; n > 0; n--) {
+ m_icount -= 13;
+ if (do_dec_add(BIT(m_flags , HPHYBRID_DC_BIT) , tmp_ar2 , tmp_ar)) {
+ m_reg_A++;
}
- } else {
- m_program->write_word((offs_t)addr << 1 , v);
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
+ }
+ set_ar2(tmp_ar2);
+ break;
+
+ case 0x7a21:
+ // FDV
+ // No doc mentions any limit on the iterations done by this instruction.
+ // Here we stop at 15 (after all there are only 4 bits in the loop counter). But is it correct?
+ m_icount -= 37;
+ m_reg_B = 0;
+ tmp_ar = get_ar1();
+ tmp_ar2 = get_ar2();
+ while (m_reg_B < 15 && !do_dec_add(BIT(m_flags , HPHYBRID_DC_BIT) , tmp_ar2 , tmp_ar)) {
+ m_icount -= 13;
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
+ m_reg_B++;
+ }
+ set_ar2(tmp_ar2);
+ break;
+
+ case 0x7b00:
+ // MRX
+ set_ar1(do_mrxy(get_ar1()));
+ m_icount -= 62;
+ break;
+
+ case 0x7b21:
+ // DRS
+ tmp_ar = get_ar1();
+ m_icount -= 56;
+ m_reg_A = m_reg_se = do_dec_shift_r(0 , tmp_ar);
+ set_ar1(tmp_ar);
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
+ break;
+
+ case 0x7b40:
+ // MRY
+ set_ar2(do_mrxy(get_ar2()));
+ m_icount -= 33;
+ break;
+
+ case 0x7b61:
+ // MLY
+ tmp_ar2 = get_ar2();
+ m_icount -= 32;
+ m_reg_A = m_reg_se = do_dec_shift_l(m_reg_A & 0xf , tmp_ar2);
+ set_ar2(tmp_ar2);
+ BIT_CLR(m_flags , HPHYBRID_DC_BIT);
+ break;
+
+ case 0x7b8f:
+ // MPY
+ do_mpy();
+ break;
+
+ default:
+ if ((opcode & 0xfec0) == 0x74c0) {
+ // SDS
+ // SDC
+ m_icount -= 14;
+ return get_skip_addr(opcode , !BIT(m_flags , HPHYBRID_DC_BIT));
+ } else {
+ // Unrecognized instructions: NOP
+ // Execution time is fictional
+ logerror("hp-5061-3001: unknown opcode %04x @ %06x\n" , opcode , m_genpc);
+ m_icount -= 6;
+ }
+ break;
}
+ }
+
+ return m_reg_P + 1;
}
-void hp_hybrid_cpu_device::WMB(UINT32 addr , UINT8 v)
+offs_t hp_5061_3001_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
{
- if (addr <= (HP_REG_LAST_ADDR * 2 + 1)) {
- // Cannot write bytes to registers
- } else {
- m_program->write_byte(addr , v);
+ extern CPU_DISASSEMBLE(hp_5061_3001);
+ return CPU_DISASSEMBLE_NAME(hp_5061_3001)(this, buffer, pc, oprom, opram, options);
+}
+
+UINT32 hp_5061_3001_cpu_device::add_mae(aec_cases_t aec_case , UINT16 addr)
+{
+ UINT16 bsc_reg;
+ bool top_half = BIT(addr , 15) != 0;
+
+ // Detect accesses to top half of base page
+ if (aec_case == AEC_CASE_C && (addr & 0xfe00) == 0xfe00) {
+ aec_case = AEC_CASE_B;
+ }
+
+ switch (aec_case) {
+ case AEC_CASE_A:
+ bsc_reg = top_half ? HP_REG_R34_ADDR : HP_REG_R33_ADDR;
+ break;
+
+ case AEC_CASE_B:
+ bsc_reg = top_half ? HP_REG_R36_ADDR : HP_REG_R33_ADDR;
+ break;
+
+ case AEC_CASE_C:
+ bsc_reg = top_half ? HP_REG_R32_ADDR : HP_REG_R35_ADDR;
+ break;
+
+ case AEC_CASE_D:
+ 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;
+
+ if (m_forced_bsc_25) {
+ aec_reg = (aec_reg & 0xf) | 0x20;
+ }
+
+ return (UINT32)addr | ((UINT32)aec_reg << 16);
}
-UINT16 hp_hybrid_cpu_device::RIO(UINT8 pa , UINT8 ic)
+UINT16 hp_5061_3001_cpu_device::read_non_common_reg(UINT16 addr)
{
- return m_io->read_word(HP_MAKE_IOADDR(pa, ic) << 1);
+ switch (addr) {
+ case HP_REG_AR2_ADDR:
+ case HP_REG_AR2_ADDR + 1:
+ case HP_REG_AR2_ADDR + 2:
+ case HP_REG_AR2_ADDR + 3:
+ return m_reg_ar2[ addr - HP_REG_AR2_ADDR ];
+
+ case HP_REG_SE_ADDR:
+ return m_reg_se;
+
+ case HP_REG_R25_ADDR:
+ return m_reg_r25;
+
+ case HP_REG_R26_ADDR:
+ return m_reg_r26;
+
+ case HP_REG_R27_ADDR:
+ return m_reg_r27;
+
+ case HP_REG_R32_ADDR:
+ case HP_REG_R33_ADDR:
+ case HP_REG_R34_ADDR:
+ case HP_REG_R35_ADDR:
+ case HP_REG_R36_ADDR:
+ case HP_REG_R37_ADDR:
+ return m_reg_aec[ addr - HP_REG_R32_ADDR ];
+
+ default:
+ return 0;
+ }
}
-void hp_hybrid_cpu_device::WIO(UINT8 pa , UINT8 ic , UINT16 v)
+void hp_5061_3001_cpu_device::write_non_common_reg(UINT16 addr , UINT16 v)
{
- m_io->write_word(HP_MAKE_IOADDR(pa, ic) << 1 , v);
+ switch (addr) {
+ case HP_REG_AR2_ADDR:
+ case HP_REG_AR2_ADDR + 1:
+ case HP_REG_AR2_ADDR + 2:
+ case HP_REG_AR2_ADDR + 3:
+ m_reg_ar2[ addr - HP_REG_AR2_ADDR ] = v;
+ break;
+
+ case HP_REG_SE_ADDR:
+ m_reg_se = v & HP_REG_SE_MASK;
+ break;
+
+ case HP_REG_R25_ADDR:
+ m_reg_r25 = v;
+ break;
+
+ case HP_REG_R26_ADDR:
+ m_reg_r26 = v;
+ break;
+
+ case HP_REG_R27_ADDR:
+ m_reg_r27 = v;
+ break;
+
+ case HP_REG_R32_ADDR:
+ case HP_REG_R33_ADDR:
+ case HP_REG_R34_ADDR:
+ case HP_REG_R35_ADDR:
+ case HP_REG_R36_ADDR:
+ case HP_REG_R37_ADDR:
+ m_reg_aec[ addr - HP_REG_R32_ADDR ] = v;
+ break;
+
+ default:
+ break;
+ }
}
hp_5061_3011_cpu_device::hp_5061_3011_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
-: hp_hybrid_cpu_device(mconfig, HP_5061_3011, "HP_5061_3011", tag, owner, clock, "5061-3011")
+ : hp_hybrid_cpu_device(mconfig, HP_5061_3011, "HP-5061-3011", tag, owner, clock, "5061-3011", 16)
+{
+}
+
+UINT16 hp_5061_3011_cpu_device::execute_no_bpc_ioc(UINT16 opcode)
+{
+ // Unrecognized instructions: NOP
+ // Execution time is fictional
+ m_icount -= 6;
+
+ return m_reg_P + 1;
+}
+
+UINT32 hp_5061_3011_cpu_device::add_mae(aec_cases_t aec_case , UINT16 addr)
+{
+ // No MAE on 3011
+ return addr;
+}
+
+UINT16 hp_5061_3011_cpu_device::read_non_common_reg(UINT16 addr)
+{
+ // Non-existing registers are returned as 0
+ return 0;
+}
+
+void hp_5061_3011_cpu_device::write_non_common_reg(UINT16 addr , UINT16 v)
{
+ // Non-existing registers are silently discarded
}
diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h
index 49d2910b4a1..97aea0febce 100644
--- a/src/devices/cpu/hphybrid/hphybrid.h
+++ b/src/devices/cpu/hphybrid/hphybrid.h
@@ -8,14 +8,15 @@
// The HP hybrid processor series is composed of a few different models with different
// capabilities. The series was derived from HP's own 2116 processor by translating a
// discrete implementation of the 1960s into a multi-chip module (hence the "hybrid" name).
-// This emulator currently supports the 5061-3011 version only.
+// This emulator currently supports both the 5061-3001 & the 5061-3011 versions.
//
// For this emulator I mainly relied on these sources:
// - http://www.hp9845.net/ website
// - HP manual "Assembly development ROM manual for the HP9845": this is the most precious
// and "enabling" resource of all
// - US Patent 4,180,854 describing the HP9845 system
-// - Study of disassembly of firmware of HP64000 system
+// - Study of disassembly of firmware of HP64000 & HP9845 systems
+// - hp9800e emulator for inspiration on implementing EMC instructions
// - A lot of "educated" guessing
#ifndef _HPHYBRID_H_
@@ -26,11 +27,6 @@
#define HPHYBRID_IRL 1 // Low-level interrupt
#define HPHYBRID_INT_LVLS 2 // Levels of interrupt
-#define HPHYBRID_DMAR 2 // DMA request
-#define HPHYBRID_HALT 3 // "Halt" input
-#define HPHYBRID_STS 4 // "Status" input
-#define HPHYBRID_FLG 5 // "Flag" input
-
// I/O addressing space (16-bit wide)
// Addresses into this space are composed as follows:
// b[5..2] = Peripheral address 0..15
@@ -52,95 +48,200 @@
#define HP_REG_R7_ADDR 0x0007
#define HP_REG_IV_ADDR 0x0008
#define HP_REG_PA_ADDR 0x0009
+#define HP_REG_W_ADDR 0x000A
#define HP_REG_DMAPA_ADDR 0x000B
#define HP_REG_DMAMA_ADDR 0x000C
#define HP_REG_DMAC_ADDR 0x000D
#define HP_REG_C_ADDR 0x000e
#define HP_REG_D_ADDR 0x000f
+#define HP_REG_AR2_ADDR 0x0010
+#define HP_REG_SE_ADDR 0x0014
+#define HP_REG_R25_ADDR 0x0015
+#define HP_REG_R26_ADDR 0x0016
+#define HP_REG_R27_ADDR 0x0017
+#define HP_REG_R32_ADDR 0x001a
+#define HP_REG_R33_ADDR 0x001b
+#define HP_REG_R34_ADDR 0x001c
+#define HP_REG_R35_ADDR 0x001d
+#define HP_REG_R36_ADDR 0x001e
+#define HP_REG_R37_ADDR 0x001f
#define HP_REG_LAST_ADDR 0x001f
+#define HP_REG_AR1_ADDR 0xfff8
#define HP_REG_IV_MASK 0xfff0
#define HP_REG_PA_MASK 0x000f
+// Set boot mode of 5061-3001: either normal (false) or as in HP9845 system (true)
+#define MCFG_HPHYBRID_SET_9845_BOOT(_mode) \
+ hp_5061_3001_cpu_device::set_boot_mode_static(*device, _mode);
+
+// PA changed callback
+#define MCFG_HPHYBRID_PA_CHANGED(_devcb) \
+ hp_hybrid_cpu_device::set_pa_changed_func(*device , DEVCB_##_devcb);
+
class hp_hybrid_cpu_device : public cpu_device
{
public:
- DECLARE_WRITE_LINE_MEMBER(dmar_w);
+ DECLARE_WRITE_LINE_MEMBER(dmar_w);
+ DECLARE_WRITE_LINE_MEMBER(halt_w);
+ DECLARE_WRITE_LINE_MEMBER(status_w);
+ DECLARE_WRITE_LINE_MEMBER(flag_w);
+
+ 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);
+ 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-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_max_cycles() const override { return 25; }
- 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;
+ // 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 execute_one(UINT16 opcode);
- UINT16 execute_one_sub(UINT16 opcode);
+ UINT16 fetch(void);
- // 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 : nullptr ); }
+ 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;
+ address_space_config m_io_config;
+
+ address_space *m_program;
+ direct_read_data *m_direct;
+ address_space *m_io;
+
+ UINT32 get_ea(UINT16 opcode);
+ void do_add(UINT16& addend1 , UINT16 addend2);
+ UINT16 get_skip_addr_sc(UINT16 opcode , UINT16& v , unsigned n);
+ void do_pw(UINT16 opcode);
+ void check_for_interrupts(void);
+ void handle_dma(void);
+
+ UINT16 RIO(UINT8 pa , UINT8 ic);
+ void WIO(UINT8 pa , UINT8 ic , UINT16 v);
+};
+
+class hp_5061_3001_cpu_device : public hp_hybrid_cpu_device
+{
+public:
+ hp_5061_3001_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- // device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ static void set_boot_mode_static(device_t &device, bool mode) { downcast<hp_5061_3001_cpu_device &>(device).m_boot_mode = mode; }
- // device_disasm_interface overrides
- virtual UINT32 disasm_min_opcode_bytes() const override { return 2; }
- virtual UINT32 disasm_max_opcode_bytes() const override { return 2; }
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual UINT32 execute_max_cycles() const override { return 237; } // FMP 15
+
+ static UINT8 do_dec_shift_r(UINT8 d1 , UINT64& mantissa);
+ static UINT8 do_dec_shift_l(UINT8 d12 , UINT64& mantissa);
+ UINT64 get_ar1(void);
+ void set_ar1(UINT64 v);
+ UINT64 get_ar2(void) const;
+ void set_ar2(UINT64 v);
+ UINT64 do_mrxy(UINT64 ar);
+ bool do_dec_add(bool carry_in , UINT64& a , UINT64 b);
+ void do_mpy(void);
+
+ virtual UINT16 execute_no_bpc_ioc(UINT16 opcode) override;
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
+ virtual UINT32 add_mae(aec_cases_t aec_case , UINT16 addr) override;
+ virtual UINT16 read_non_common_reg(UINT16 addr) override;
+ virtual void write_non_common_reg(UINT16 addr , UINT16 v) override;
private:
- address_space_config m_program_config;
- address_space_config m_io_config;
-
- address_space *m_program;
- direct_read_data *m_direct;
- address_space *m_io;
- int m_icount;
-
- // 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
- UINT8 m_reg_PA[ HPHYBRID_INT_LVLS + 1 ]; // Stack of register PA (4 bit-long)
- UINT16 m_flags; // Flags (carry, overflow, cb, db, int en, dma en, dma dir)
- UINT8 m_dmapa; // DMA peripheral address (4 bits)
- UINT16 m_dmama; // DMA address
- UINT16 m_dmac; // DMA counter
- UINT16 m_reg_I; // Instruction register
-
- UINT16 get_ea(UINT16 opcode);
- void do_add(UINT16& addend1 , UINT16 addend2);
- UINT16 get_skip_addr(UINT16 opcode , bool condition) const;
- UINT16 get_skip_addr_sc(UINT16 opcode , UINT16& v , unsigned n);
- void do_pw(UINT16 opcode);
- void check_for_interrupts(void);
- void handle_dma(void);
-
- UINT16 RM(UINT16 addr);
- void WM(UINT16 addr , UINT16 v);
- void WMB(UINT32 addr , UINT8 v);
- UINT16 RIO(UINT8 pa , UINT8 ic);
- void WIO(UINT8 pa , UINT8 ic , UINT16 v);
+ bool m_boot_mode;
+
+ // Additional state of processor
+ UINT16 m_reg_ar2[ 4 ]; // AR2 register
+ UINT16 m_reg_se; // SE register (4 bits)
+ UINT16 m_reg_r25; // R25 register
+ UINT16 m_reg_r26; // R26 register
+ UINT16 m_reg_r27; // R27 register
+ UINT16 m_reg_aec[ HP_REG_R37_ADDR - HP_REG_R32_ADDR + 1 ]; // AEC registers R32-R37
};
class hp_5061_3011_cpu_device : public hp_hybrid_cpu_device
{
public:
hp_5061_3011_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual UINT32 execute_max_cycles() const override { return 25; }
+ virtual UINT16 execute_no_bpc_ioc(UINT16 opcode) override;
+ virtual UINT32 add_mae(aec_cases_t aec_case , UINT16 addr) override;
+ virtual UINT16 read_non_common_reg(UINT16 addr) override;
+ virtual void write_non_common_reg(UINT16 addr , UINT16 v) override;
+
};
+extern const device_type HP_5061_3001;
extern const device_type HP_5061_3011;
#endif /* _HPHYBRID_H_ */
diff --git a/src/devices/cpu/hphybrid/hphybrid_dasm.cpp b/src/devices/cpu/hphybrid/hphybrid_dasm.cpp
index 2f4d1f9ef40..48b03b4afb4 100644
--- a/src/devices/cpu/hphybrid/hphybrid_dasm.cpp
+++ b/src/devices/cpu/hphybrid/hphybrid_dasm.cpp
@@ -8,7 +8,7 @@
#include "debugger.h"
#include "hphybrid.h"
-typedef void (*fn_dis_param)(char *buffer , offs_t pc , UINT16 opcode);
+typedef void (*fn_dis_param)(char *buffer , offs_t pc , UINT16 opcode , bool is_3001);
typedef struct {
UINT16 m_op_mask;
@@ -18,84 +18,160 @@ typedef struct {
UINT32 m_dasm_flags;
} dis_entry_t;
-static void addr_2_str(char *buffer , UINT16 addr , bool indirect)
+static void addr_2_str(char *buffer , UINT16 addr , bool indirect , bool is_3001)
{
- char *s = buffer + strlen(buffer);
+ char *s = buffer + strlen(buffer);
- s += sprintf(s , "$%04x" , addr);
+ s += sprintf(s , "$%04x" , addr);
- switch (addr) {
- case HP_REG_A_ADDR:
- strcpy(s , "(A)");
- break;
+ if (is_3001) {
+ switch (addr) {
+ case HP_REG_AR1_ADDR:
+ strcpy(s , "(Ar1)");
+ break;
- case HP_REG_B_ADDR:
- strcpy(s , "(B)");
- break;
+ case HP_REG_AR1_ADDR + 1:
+ strcpy(s , "(Ar1_2)");
+ break;
- case HP_REG_P_ADDR:
- strcpy(s , "(P)");
- break;
+ case HP_REG_AR1_ADDR + 2:
+ strcpy(s , "(Ar1_3)");
+ break;
- case HP_REG_R_ADDR:
- strcpy(s , "(R)");
- break;
+ case HP_REG_AR1_ADDR + 3:
+ strcpy(s , "(Ar1_4)");
+ break;
- case HP_REG_R4_ADDR:
- strcpy(s , "(R4)");
- break;
+ case HP_REG_AR2_ADDR:
+ strcpy(s , "(Ar2)");
+ break;
- case HP_REG_R5_ADDR:
- strcpy(s , "(R5)");
- break;
+ case HP_REG_AR2_ADDR + 1:
+ strcpy(s , "(Ar2_2)");
+ break;
- case HP_REG_R6_ADDR:
- strcpy(s , "(R6)");
- break;
+ case HP_REG_AR2_ADDR + 2:
+ strcpy(s , "(Ar2_3)");
+ break;
- case HP_REG_R7_ADDR:
- strcpy(s , "(R7)");
- break;
+ case HP_REG_AR2_ADDR + 3:
+ strcpy(s , "(Ar2_4)");
+ break;
- case HP_REG_IV_ADDR:
- strcpy(s , "(IV)");
- break;
+ case HP_REG_SE_ADDR:
+ strcpy(s , "(SE)");
+ break;
- case HP_REG_PA_ADDR:
- strcpy(s , "(PA)");
- break;
+ case HP_REG_R25_ADDR:
+ strcpy(s , "(R25)");
+ break;
- case HP_REG_DMAPA_ADDR:
- strcpy(s , "(DMAPA)");
- break;
+ case HP_REG_R26_ADDR:
+ strcpy(s , "(R26)");
+ break;
- case HP_REG_DMAMA_ADDR:
- strcpy(s , "(DMAMA)");
- break;
+ case HP_REG_R27_ADDR:
+ strcpy(s , "(R27)");
+ break;
- case HP_REG_DMAC_ADDR:
- strcpy(s , "(DMAC)");
- break;
+ case HP_REG_R32_ADDR:
+ strcpy(s , "(R32)");
+ break;
- case HP_REG_C_ADDR:
- strcpy(s , "(C)");
- break;
+ case HP_REG_R33_ADDR:
+ strcpy(s , "(R33)");
+ break;
- case HP_REG_D_ADDR:
- strcpy(s , "(D)");
- break;
- }
+ case HP_REG_R34_ADDR:
+ strcpy(s , "(R34)");
+ break;
- if (indirect) {
- strcat(s , ",I");
- }
+ case HP_REG_R35_ADDR:
+ strcpy(s , "(R35)");
+ break;
+
+ case HP_REG_R36_ADDR:
+ strcpy(s , "(R36)");
+ break;
+
+ case HP_REG_R37_ADDR:
+ strcpy(s , "(R37)");
+ break;
+ }
+ }
+
+ switch (addr) {
+ case HP_REG_A_ADDR:
+ strcpy(s , "(A)");
+ break;
+
+ case HP_REG_B_ADDR:
+ strcpy(s , "(B)");
+ break;
+
+ case HP_REG_P_ADDR:
+ strcpy(s , "(P)");
+ break;
+
+ case HP_REG_R_ADDR:
+ strcpy(s , "(R)");
+ break;
+
+ case HP_REG_R4_ADDR:
+ strcpy(s , "(R4)");
+ break;
+
+ case HP_REG_R5_ADDR:
+ strcpy(s , "(R5)");
+ break;
+
+ case HP_REG_R6_ADDR:
+ strcpy(s , "(R6)");
+ break;
+
+ case HP_REG_R7_ADDR:
+ strcpy(s , "(R7)");
+ break;
+
+ case HP_REG_IV_ADDR:
+ strcpy(s , "(IV)");
+ break;
+
+ case HP_REG_PA_ADDR:
+ strcpy(s , "(PA)");
+ break;
+
+ case HP_REG_DMAPA_ADDR:
+ strcpy(s , "(DMAPA)");
+ break;
+
+ case HP_REG_DMAMA_ADDR:
+ strcpy(s , "(DMAMA)");
+ break;
+
+ case HP_REG_DMAC_ADDR:
+ strcpy(s , "(DMAC)");
+ break;
+
+ case HP_REG_C_ADDR:
+ strcpy(s , "(C)");
+ break;
+
+ case HP_REG_D_ADDR:
+ strcpy(s , "(D)");
+ break;
+ }
+
+ if (indirect) {
+ strcat(s , ",I");
+ }
}
-static void param_none(char *buffer , offs_t pc , UINT16 opcode)
+static void param_none(char *buffer , offs_t pc , UINT16 opcode , bool is_3001)
{
}
-static void param_loc(char *buffer , offs_t pc , UINT16 opcode)
+static void param_loc(char *buffer , offs_t pc , UINT16 opcode , bool is_3001)
{
UINT16 base;
UINT16 off;
@@ -113,26 +189,26 @@ static void param_loc(char *buffer , offs_t pc , UINT16 opcode)
off -= 0x400;
}
- addr_2_str(buffer , base + off , (opcode & 0x8000) != 0);
+ addr_2_str(buffer , base + off , (opcode & 0x8000) != 0 , is_3001);
}
-static void param_addr32(char *buffer , offs_t pc , UINT16 opcode)
+static void param_addr32(char *buffer , offs_t pc , UINT16 opcode , bool is_3001)
{
- addr_2_str(buffer , opcode & 0x1f , (opcode & 0x8000) != 0);
+ addr_2_str(buffer , opcode & 0x1f , (opcode & 0x8000) != 0 , is_3001);
}
-static void param_skip(char *buffer , offs_t pc , UINT16 opcode)
+static void param_skip(char *buffer , offs_t pc , UINT16 opcode , bool is_3001)
{
UINT16 off = opcode & 0x3f;
if (off & 0x20) {
off -= 0x40;
}
- addr_2_str(buffer , pc + off , false);
+ addr_2_str(buffer , pc + off , false , is_3001);
}
-static void param_skip_sc(char *buffer , offs_t pc , UINT16 opcode)
+static void param_skip_sc(char *buffer , offs_t pc , UINT16 opcode , bool is_3001)
{
- param_skip(buffer, pc, opcode);
+ param_skip(buffer, pc, opcode , is_3001);
if (opcode & 0x80) {
if (opcode & 0x40) {
@@ -143,7 +219,7 @@ static void param_skip_sc(char *buffer , offs_t pc , UINT16 opcode)
}
}
-static void param_ret(char *buffer , offs_t pc , UINT16 opcode)
+static void param_ret(char *buffer , offs_t pc , UINT16 opcode , bool is_3001)
{
char *s = buffer + strlen(buffer);
@@ -159,16 +235,16 @@ static void param_ret(char *buffer , offs_t pc , UINT16 opcode)
}
}
-static void param_n16(char *buffer , offs_t pc , UINT16 opcode)
+static void param_n16(char *buffer , offs_t pc , UINT16 opcode , bool is_3001)
{
char *s = buffer + strlen(buffer);
sprintf(s , "%u" , (opcode & 0xf) + 1);
}
-static void param_reg_id(char *buffer , offs_t pc , UINT16 opcode)
+static void param_reg_id(char *buffer , offs_t pc , UINT16 opcode , bool is_3001)
{
- addr_2_str(buffer, opcode & 7, false);
+ addr_2_str(buffer, opcode & 7, false , is_3001);
if (opcode & 0x80) {
strcat(buffer , ",D");
@@ -260,22 +336,77 @@ static const dis_entry_t dis_table[] = {
{0 , 0 , nullptr , nullptr , 0 }
};
+static const dis_entry_t dis_table_emc[] = {
+ // *** EMC Instructions ***
+ {0xffff , 0x7200 , "MWA" , param_none , 0 },
+ {0xffff , 0x7220 , "CMY" , param_none , 0 },
+ {0xffff , 0x7260 , "CMX" , param_none , 0 },
+ {0xffff , 0x7280 , "FXA" , param_none , 0 },
+ {0xfff0 , 0x7300 , "XFR" , param_n16 , 0 },
+ {0xffff , 0x7340 , "NRM" , param_none , 0 },
+ {0xfff0 , 0x7380 , "CLR" , param_n16 , 0 },
+ {0xffff , 0x73c0 , "CDC" , param_none , 0 },
+ {0xffc0 , 0x74c0 , "SDS" , param_skip , 0 },
+ {0xffc0 , 0x75c0 , "SDC" , param_skip , 0 },
+ {0xffff , 0x7a00 , "FMP" , param_none , 0 },
+ {0xffff , 0x7a21 , "FDV" , param_none , 0 },
+ {0xffff , 0x7b00 , "MRX" , param_none , 0 },
+ {0xffff , 0x7b21 , "DRS" , param_none , 0 },
+ {0xffff , 0x7b40 , "MRY" , param_none , 0 },
+ {0xffff , 0x7b61 , "MLY" , param_none , 0 },
+ {0xffff , 0x7b8f , "MPY" , param_none , 0 },
+ // *** END ***
+ {0 , 0 , nullptr , nullptr , 0 }
+};
+
+static offs_t disassemble_table(UINT16 opcode , offs_t pc , const dis_entry_t *table , bool is_3001 , char *buffer)
+{
+ const dis_entry_t *p;
+
+ for (p = table; p->m_op_mask; p++) {
+ if ((opcode & p->m_op_mask) == p->m_opcode) {
+ strcpy(buffer , p->m_mnemonic);
+ strcat(buffer , " ");
+ p->m_param_fn(buffer , pc , opcode , is_3001);
+ return 1 | p->m_dasm_flags | DASMFLAG_SUPPORTED;
+ }
+ }
+
+ return 0;
+}
+
CPU_DISASSEMBLE(hp_hybrid)
{
UINT16 opcode = ((UINT16)oprom[ 0 ] << 8) | oprom[ 1 ];
- const dis_entry_t *p;
-
- for (p = dis_table; p->m_op_mask; p++) {
- if ((opcode & p->m_op_mask) == p->m_opcode) {
- strcpy(buffer , p->m_mnemonic);
- strcat(buffer , " ");
- p->m_param_fn(buffer , pc , opcode);
- return 1 | p->m_dasm_flags | DASMFLAG_SUPPORTED;
- }
+ offs_t res;
+
+ res = disassemble_table(opcode , pc , dis_table , false , buffer);
+
+ if (res == 0) {
+ // Unknown opcode
+ strcpy(buffer , "???");
+ res = 1 | DASMFLAG_SUPPORTED;
}
- // Unknown opcode
- strcpy(buffer , "???");
+ return res;
+}
+
+CPU_DISASSEMBLE(hp_5061_3001)
+{
+ UINT16 opcode = ((UINT16)oprom[ 0 ] << 8) | oprom[ 1 ];
+ offs_t res;
+
+ res = disassemble_table(opcode , pc , dis_table_emc , true , buffer);
+
+ if (res == 0) {
+ res = disassemble_table(opcode , pc , dis_table , true , buffer);
+ }
+
+ if (res == 0) {
+ // Unknown opcode
+ strcpy(buffer , "???");
+ res = 1 | DASMFLAG_SUPPORTED;
+ }
- return 1 | DASMFLAG_SUPPORTED;
+ return res;
}
diff --git a/src/devices/cpu/i386/cycles.h b/src/devices/cpu/i386/cycles.h
index a04e54da8e0..62b6da2a80a 100644
--- a/src/devices/cpu/i386/cycles.h
+++ b/src/devices/cpu/i386/cycles.h
@@ -333,7 +333,6 @@ enum X86_CYCLES
};
-#define X86_NUM_CPUS 4
#define CPU_CYCLES_I386 0
#define CPU_CYCLES_I486 1
#define CPU_CYCLES_PENTIUM 2
diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp
index 9017ffbaea7..f0d57ada9a0 100644
--- a/src/devices/cpu/i386/i386.cpp
+++ b/src/devices/cpu/i386/i386.cpp
@@ -275,7 +275,7 @@ UINT32 i386_device::i386_get_stack_ptr(UINT8 privilege)
return ret;
}
-UINT32 i386_device::get_flags()
+UINT32 i386_device::get_flags() const
{
UINT32 f = 0x2;
f |= m_CF;
@@ -475,7 +475,7 @@ void i386_device::i386_check_sreg_validity(int reg)
UINT8 CPL = m_CPL;
UINT8 DPL,RPL;
I386_SREG desc;
- int invalid = 0;
+ int invalid;
memset(&desc, 0, sizeof(desc));
desc.selector = selector;
@@ -697,7 +697,7 @@ void i386_device::i386_trap(int irq, int irq_gate, int trap_level)
UINT32 offset, oldflags = get_flags();
UINT16 segment;
int entry = irq * (PROTECTED_MODE ? 8 : 4);
- int SetRPL = 0;
+ int SetRPL;
m_lock = false;
if( !(PROTECTED_MODE) )
@@ -721,7 +721,7 @@ void i386_device::i386_trap(int irq, int irq_gate, int trap_level)
int type;
UINT16 flags;
I386_SREG desc;
- UINT8 CPL = m_CPL, DPL = 0; //, RPL = 0;
+ UINT8 CPL = m_CPL, DPL; //, RPL = 0;
/* 32-bit */
v1 = READ32PL0(m_idtr.base + entry );
@@ -1347,7 +1347,7 @@ void i386_device::i386_protected_mode_jump(UINT16 seg, UINT32 off, int indirect,
I386_SREG desc;
I386_CALL_GATE call_gate;
UINT8 CPL,DPL,RPL;
- UINT8 SetRPL = 0;
+ UINT8 SetRPL;
UINT16 segment = seg;
UINT32 offset = off;
@@ -1618,7 +1618,7 @@ void i386_device::i386_protected_mode_call(UINT16 seg, UINT32 off, int indirect,
{
I386_SREG desc;
I386_CALL_GATE gate;
- UINT8 SetRPL = 0;
+ UINT8 SetRPL;
UINT8 CPL, DPL, RPL;
UINT16 selector = seg;
UINT32 offset = off;
@@ -2769,9 +2769,6 @@ void i386_device::i386_protected_mode_iret(int operand32)
#include "cycles.h"
-static UINT8 *cycle_table_rm[X86_NUM_CPUS];
-static UINT8 *cycle_table_pm[X86_NUM_CPUS];
-
#define CYCLES_NUM(x) (m_cycles -= (x))
void i386_device::CYCLES(int x)
@@ -2817,8 +2814,8 @@ void i386_device::build_cycle_table()
int i, j;
for (j=0; j < X86_NUM_CPUS; j++)
{
- cycle_table_rm[j] = auto_alloc_array(machine(), UINT8, CYCLES_NUM_OPCODES);
- cycle_table_pm[j] = auto_alloc_array(machine(), UINT8, CYCLES_NUM_OPCODES);
+ cycle_table_rm[j] = std::make_unique<UINT8[]>(CYCLES_NUM_OPCODES);
+ cycle_table_pm[j] = std::make_unique<UINT8[]>(CYCLES_NUM_OPCODES);
for (i=0; i < sizeof(x86_cycle_table)/sizeof(X86_CYCLE_TABLE); i++)
{
@@ -3094,7 +3091,7 @@ UINT64 i386_device::debug_seglimit(symbol_table &table, int params, const UINT64
UINT64 i386_device::debug_segofftovirt(symbol_table &table, int params, const UINT64 *param)
{
- UINT32 result = 0;
+ UINT32 result;
I386_SREG seg;
if(param[0] > 65535)
@@ -3300,8 +3297,8 @@ void i386_device::device_start()
i386_common_init(32);
build_opcode_table(OP_I386);
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_I386];
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_I386];
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_I386].get();
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_I386].get();
register_state_i386();
}
@@ -3468,7 +3465,7 @@ void i386_device::state_export(const device_state_entry &entry)
}
}
-void i386_device::state_string_export(const device_state_entry &entry, std::string &str)
+void i386_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -3983,8 +3980,8 @@ void i486_device::device_start()
build_opcode_table(OP_I386 | OP_FPU | OP_I486);
build_x87_opcode_table();
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_I486];
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_I486];
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_I486].get();
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_I486].get();
register_state_i386_x87();
}
@@ -4042,8 +4039,8 @@ void pentium_device::device_start()
build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM);
build_x87_opcode_table();
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM];
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM];
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM].get();
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM].get();
}
void pentium_device::device_reset()
@@ -4116,8 +4113,8 @@ void mediagx_device::device_start()
build_x87_opcode_table();
build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM | OP_CYRIX);
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_MEDIAGX];
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_MEDIAGX];
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_MEDIAGX].get();
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_MEDIAGX].get();
}
void mediagx_device::device_reset()
@@ -4181,8 +4178,8 @@ void pentium_pro_device::device_start()
build_x87_opcode_table();
build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM | OP_PPRO);
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
}
void pentium_pro_device::device_reset()
@@ -4256,8 +4253,8 @@ void pentium_mmx_device::device_start()
build_x87_opcode_table();
build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM | OP_MMX);
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
}
void pentium_mmx_device::device_reset()
@@ -4329,8 +4326,8 @@ void pentium2_device::device_start()
build_x87_opcode_table();
build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM | OP_PPRO | OP_MMX);
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
}
void pentium2_device::device_reset()
@@ -4396,8 +4393,8 @@ void pentium3_device::device_start()
build_x87_opcode_table();
build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM | OP_PPRO | OP_MMX | OP_SSE);
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
}
void pentium3_device::device_reset()
@@ -4465,8 +4462,8 @@ void pentium4_device::device_start()
build_x87_opcode_table();
build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM | OP_PPRO | OP_MMX | OP_SSE | OP_SSE2);
- m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
- m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM]; // TODO: generate own cycle tables
+ m_cycle_table_rm = cycle_table_rm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
+ m_cycle_table_pm = cycle_table_pm[CPU_CYCLES_PENTIUM].get(); // TODO: generate own cycle tables
}
void pentium4_device::device_reset()
diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index 60eea10264d..c9ef38b4280 100644
--- a/src/devices/cpu/i386/i386.h
+++ b/src/devices/cpu/i386/i386.h
@@ -22,6 +22,7 @@
#define MCFG_I386_SMIACT(_devcb) \
i386_device::set_smiact(*device, DEVCB_##_devcb);
+#define X86_NUM_CPUS 4
class i386_device : public cpu_device
{
@@ -58,7 +59,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
@@ -68,6 +69,10 @@ protected:
address_space_config m_program_config;
address_space_config m_io_config;
+ std::unique_ptr<UINT8[]> cycle_table_rm[X86_NUM_CPUS];
+ std::unique_ptr<UINT8[]> cycle_table_pm[X86_NUM_CPUS];
+
+
union I386_GPR {
UINT32 d[8];
UINT16 w[16];
@@ -357,7 +362,7 @@ struct I386_CALL_GATE
void i386_load_segment_descriptor(int segment );
UINT32 i386_get_stack_segment(UINT8 privilege);
UINT32 i386_get_stack_ptr(UINT8 privilege);
- UINT32 get_flags();
+ UINT32 get_flags() const;
void set_flags(UINT32 f );
void sib_byte(UINT8 mod, UINT32* out_ea, UINT8* out_segment);
void modrm_to_EA(UINT8 mod_rm, UINT32* out_ea, UINT8* out_segment);
diff --git a/src/devices/cpu/i386/i386priv.h b/src/devices/cpu/i386/i386priv.h
index c1f6ecea94c..9913d851fa2 100644
--- a/src/devices/cpu/i386/i386priv.h
+++ b/src/devices/cpu/i386/i386priv.h
@@ -398,7 +398,7 @@ bool i386_device::i386_translate_address(int intention, offs_t *address, vtlb_en
UINT32 directory = (a >> 22) & 0x3ff;
UINT32 table = (a >> 12) & 0x3ff;
vtlb_entry perm = 0;
- bool ret = false;
+ bool ret;
bool user = (intention & TRANSLATE_USER_MASK) ? true : false;
bool write = (intention & TRANSLATE_WRITE) ? true : false;
bool debug = (intention & TRANSLATE_DEBUG_MASK) ? true : false;
diff --git a/src/devices/cpu/i4004/i4004.cpp b/src/devices/cpu/i4004/i4004.cpp
index 51258268e8a..d4ba8891260 100644
--- a/src/devices/cpu/i4004/i4004.cpp
+++ b/src/devices/cpu/i4004/i4004.cpp
@@ -419,15 +419,14 @@ void i4004_cpu_device::device_start()
state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).mask(0x0f).callimport().callexport().noshow().formatstr("%4s");
state_add(I4004_A, "A", m_A).mask(0x0f);
- std::string tempstr;
for (int regnum = 0; regnum < 8; regnum++)
{
- state_add(I4004_R01 + regnum, strformat(tempstr, "R%X%X", regnum * 2, regnum * 2 + 1).c_str(), m_R[regnum]);
+ state_add(I4004_R01 + regnum, strformat("R%X%X", regnum * 2, regnum * 2 + 1).c_str(), m_R[regnum]);
}
for (int addrnum = 0; addrnum < 4; addrnum++)
{
- state_add(I4004_ADDR1 + addrnum, strformat(tempstr, "ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff);
+ state_add(I4004_ADDR1 + addrnum, strformat("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff);
}
state_add(I4004_RAM, "RAM", m_RAM.w.l).mask(0x0fff);
@@ -507,7 +506,7 @@ void i4004_cpu_device::state_export(const device_state_entry &entry)
}
}
-void i4004_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void i4004_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/i4004/i4004.h b/src/devices/cpu/i4004/i4004.h
index 3bdc7cddcfd..fd60a9a5d10 100644
--- a/src/devices/cpu/i4004/i4004.h
+++ b/src/devices/cpu/i4004/i4004.h
@@ -57,7 +57,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/i8008/i8008.cpp b/src/devices/cpu/i8008/i8008.cpp
index 319e6ccd56b..6baeacfe7bb 100644
--- a/src/devices/cpu/i8008/i8008.cpp
+++ b/src/devices/cpu/i8008/i8008.cpp
@@ -92,9 +92,8 @@ void i8008_device::device_start()
state_add(I8008_H, "H", m_H);
state_add(I8008_L, "L", m_L);
- std::string tempstr;
for (int addrnum = 0; addrnum < 8; addrnum++)
- state_add(I8008_ADDR1 + addrnum, strformat(tempstr, "ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff);
+ state_add(I8008_ADDR1 + addrnum, strformat("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff);
init_tables();
}
@@ -187,7 +186,7 @@ void i8008_device::state_export(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void i8008_device::state_string_export(const device_state_entry &entry, std::string &str)
+void i8008_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/i8008/i8008.h b/src/devices/cpu/i8008/i8008.h
index 35b9c0b41ad..74c727290eb 100644
--- a/src/devices/cpu/i8008/i8008.h
+++ b/src/devices/cpu/i8008/i8008.h
@@ -48,7 +48,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// device_disasm_interface overrides
diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp
index 53c2ca603c2..308de09e4a1 100644
--- a/src/devices/cpu/i8085/i8085.cpp
+++ b/src/devices/cpu/i8085/i8085.cpp
@@ -395,7 +395,7 @@ void i8085a_cpu_device::check_for_interrupts()
/* followed by classic INTR */
else if (m_irq_state[I8085_INTR_LINE] && (m_IM & IM_IE))
{
- UINT32 vector = 0;
+ UINT32 vector;
/* break out of HALT state and call the IRQ ack callback */
break_halt_for_interrupt();
@@ -1048,7 +1048,7 @@ void i8085a_cpu_device::state_export(const device_state_entry &entry)
}
}
-void i8085a_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void i8085a_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h
index 59d630393db..9a866577ca6 100644
--- a/src/devices/cpu/i8085/i8085.h
+++ b/src/devices/cpu/i8085/i8085.h
@@ -85,9 +85,9 @@ protected:
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 : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
- void state_export(const device_state_entry &entry) override;
- void state_import(const device_state_entry &entry) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
+ virtual void state_export(const device_state_entry &entry) override;
+ virtual void state_import(const device_state_entry &entry) override;
// device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const override { return 1; }
diff --git a/src/devices/cpu/i8089/i8089.cpp b/src/devices/cpu/i8089/i8089.cpp
index 7e4c09485a8..22494cfdd2f 100644
--- a/src/devices/cpu/i8089/i8089.cpp
+++ b/src/devices/cpu/i8089/i8089.cpp
@@ -158,9 +158,9 @@ offs_t i8089_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *op
// for the debugger
//-------------------------------------------------
-void i8089_device::state_string_export(const device_state_entry &entry, std::string &str)
+void i8089_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
- i8089_channel *ch = m_ch1;
+ const i8089_channel *ch = m_ch1;
if (entry.index() >= CH2_GA && entry.index() <= CH2_PSW)
ch = m_ch2;
@@ -286,7 +286,7 @@ UINT8 i8089_device::read_byte(bool space, offs_t address)
UINT16 i8089_device::read_word(bool space, offs_t address)
{
- UINT16 data = 0xffff;
+ UINT16 data;
address_space *aspace = (space ? m_io : m_mem);
if (sysbus_width() && !(address & 1))
diff --git a/src/devices/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h
index 66477c4e6c3..e4100b8fa94 100644
--- a/src/devices/cpu/i8089/i8089.h
+++ b/src/devices/cpu/i8089/i8089.h
@@ -88,15 +88,15 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
private:
- bool sysbus_width() { return BIT(m_sysbus, 0); }
- bool remotebus_width() { return BIT(m_soc, 0); }
- bool request_grant() { return BIT(m_soc, 1); }
+ bool sysbus_width() const { return BIT(m_sysbus, 0); }
+ bool remotebus_width() const { return BIT(m_soc, 0); }
+ bool request_grant() const { return BIT(m_soc, 1); }
UINT8 read_byte(bool space, offs_t address);
UINT16 read_word(bool space, offs_t address);
diff --git a/src/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp
index 637f9cc1e47..9f79007506a 100644
--- a/src/devices/cpu/i86/i286.cpp
+++ b/src/devices/cpu/i86/i286.cpp
@@ -277,12 +277,12 @@ void i80286_cpu_device::device_start()
m_out_shutdown_func.resolve_safe();
}
-void i80286_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void i80286_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
case STATE_GENPC:
- strprintf(str, "%08X", pc());
+ strprintf(str, "%08X", m_base[CS] + m_ip);
break;
case STATE_GENFLAGS:
@@ -1970,7 +1970,7 @@ UINT16 i80286_cpu_device::far_return(int iret, int bytes)
void i80286_cpu_device::check_permission(UINT8 check_seg, UINT32 offset, UINT16 size, int operation)
{
- int trap = 0;
+ int trap;
UINT8 rights;
if(PM)
{
diff --git a/src/devices/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h
index 62ee771ac0a..8df1bf43d94 100644
--- a/src/devices/cpu/i86/i286.h
+++ b/src/devices/cpu/i86/i286.h
@@ -77,7 +77,7 @@ protected:
virtual void execute_run() override;
virtual void device_reset() override;
virtual void device_start() override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
virtual UINT32 execute_input_lines() const override { return 1; }
virtual void execute_set_input(int inputnum, int state) override;
bool memory_translate(address_spacenum spacenum, int intention, offs_t &address) override;
diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp
index 70af764f1a2..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)
@@ -314,12 +318,12 @@ i8086_common_cpu_device::i8086_common_cpu_device(const machine_config &mconfig,
memset(m_sregs, 0x00, sizeof(m_sregs));
}
-void i8086_common_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void i8086_common_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
case STATE_GENPC:
- strprintf(str, "%08X", pc());
+ strprintf(str, "%08X", (m_sregs[CS] << 4) + m_ip);
break;
case STATE_GENFLAGS:
@@ -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.h b/src/devices/cpu/i86/i86.h
index a142d6672f2..978fa7d1690 100644
--- a/src/devices/cpu/i86/i86.h
+++ b/src/devices/cpu/i86/i86.h
@@ -127,7 +127,7 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
virtual void interrupt(int int_num, int trap = 1);
bool common_op(UINT8 op);
@@ -192,7 +192,7 @@ protected:
inline void set_OFB_Add(UINT32 x,UINT32 y,UINT32 z);
inline void set_OFW_Sub(UINT32 x,UINT32 y,UINT32 z);
inline void set_OFB_Sub(UINT32 x,UINT32 y,UINT32 z);
- inline UINT16 CompressFlags();
+ inline UINT16 CompressFlags() const;
inline void ExpandFlags(UINT16 f);
// rep instructions
diff --git a/src/devices/cpu/i86/i86inline.h b/src/devices/cpu/i86/i86inline.h
index d848e336e35..8a9ad703fec 100644
--- a/src/devices/cpu/i86/i86inline.h
+++ b/src/devices/cpu/i86/i86inline.h
@@ -504,7 +504,7 @@ inline void i8086_common_cpu_device::set_OFB_Sub(UINT32 x,UINT32 y,UINT32 z)
}
-inline UINT16 i8086_common_cpu_device::CompressFlags()
+inline UINT16 i8086_common_cpu_device::CompressFlags() const
{
return (CF ? 1 : 0)
| (1 << 1)
diff --git a/src/devices/cpu/i860/i860.cpp b/src/devices/cpu/i860/i860.cpp
index d9b8e43f1cb..4a02ab51dd6 100644
--- a/src/devices/cpu/i860/i860.cpp
+++ b/src/devices/cpu/i860/i860.cpp
@@ -36,7 +36,7 @@ const device_type I860 = &device_creator<i860_cpu_device>;
i860_cpu_device::i860_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: cpu_device(mconfig, I860, "i860XR", tag, owner, clock, "i860xr", __FILE__)
- , m_program_config("program", ENDIANNESS_LITTLE, 64, 32, 0), m_pc(0), m_merge(0), m_pin_bus_hold(0), m_pin_reset(0), m_exiting_readmem(0), m_exiting_ifetch(0), m_pc_updated(0), m_pending_trap(0), m_fir_gets_trap_addr(0), m_single_stepping(0), m_program(nullptr), m_ppc(0), m_icount(0)
+ , m_program_config("program", ENDIANNESS_LITTLE, 64, 32, 0), m_pc(0), m_merge(0), m_pin_bus_hold(0), m_pin_reset(0), m_exiting_readmem(0), m_exiting_ifetch(0), m_pc_updated(0), m_pending_trap(0), m_fir_gets_trap_addr(0), m_single_stepping(0), m_program(nullptr), m_icount(0)
{
}
diff --git a/src/devices/cpu/i860/i860.h b/src/devices/cpu/i860/i860.h
index fc9b5b83abf..248cab2d4ba 100644
--- a/src/devices/cpu/i860/i860.h
+++ b/src/devices/cpu/i860/i860.h
@@ -200,7 +200,6 @@ private:
* MAME-specific stuff.
*/
address_space *m_program;
- UINT32 m_ppc;
int m_icount;
// For debugger
UINT32 m_freg[32];
@@ -208,8 +207,6 @@ private:
void writememi_emu (UINT32 addr, int size, UINT32 data);
void fp_readmem_emu (UINT32 addr, int size, UINT8 *dest);
void fp_writemem_emu (UINT32 addr, int size, UINT8 *data, UINT32 wmask);
- void dump_pipe (int type);
- void dump_state ();
void unrecog_opcode (UINT32 pc, UINT32 insn);
void insn_ld_ctrl (UINT32 insn);
void insn_st_ctrl (UINT32 insn);
@@ -278,8 +275,6 @@ private:
void insn_faddp (UINT32 insn);
void insn_faddz (UINT32 insn);
void decode_exec (UINT32 insn, UINT32 non_shadow);
- void disasm (UINT32 addr, int len);
- void dbg_db (UINT32 addr, int len);
float get_fregval_s (int fr);
double get_fregval_d (int fr);
void set_fregval_s (int fr, float s);
diff --git a/src/devices/cpu/i860/i860dis.cpp b/src/devices/cpu/i860/i860dis.cpp
index b158221ddc8..85851817c22 100644
--- a/src/devices/cpu/i860/i860dis.cpp
+++ b/src/devices/cpu/i860/i860dis.cpp
@@ -243,7 +243,7 @@ static void int_ldx(char *buf, char *mnemonic, UINT32 pc, UINT32 insn)
/* Operand size, in bytes. */
int sizes[4] = { 1, 1, 2, 4 };
const char *const suffix[4] = { "b", "b", "s", "l" };
- UINT32 idx = 0;
+ UINT32 idx;
/* Bits 28 and 0 determine the operand size. */
idx = ((insn >> 27) & 2) | (insn & 1);
@@ -270,7 +270,7 @@ static void int_stx(char *buf, char *mnemonic, UINT32 pc, UINT32 insn)
/* Operand size, in bytes. */
int sizes[4] = { 1, 1, 2, 4 };
const char *const suffix[4] = { "b", "b", "s", "l" };
- int idx = 0;
+ int idx;
int size;
INT32 immsrc = sign_ext ((((insn >> 5) & 0xf800) | (insn & 0x07ff)), 16);
@@ -297,8 +297,8 @@ static void int_fldst(char *buf, char *mnemonic, UINT32 pc, UINT32 insn)
/* Operand size, in bytes. */
int sizes[4] = { 8, 4, 16, 4 };
const char *const suffix[4] = { "d", "l", "q", "l" };
- int idx = 0;
- int size = 0;
+ int idx;
+ int size;
int auto_inc = (insn & 1);
const char *const auto_suff[2] = { "", "++" };
int piped = (insn & 0x40000000) >> 29;
diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp
index d2bb39e709c..224b844387c 100644
--- a/src/devices/cpu/i960/i960.cpp
+++ b/src/devices/cpu/i960/i960.cpp
@@ -2081,7 +2081,7 @@ void i960_cpu_device::device_start()
m_icountptr = &m_icount;
}
-void i960_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void i960_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
static const char *const conditions[8] =
{
diff --git a/src/devices/cpu/i960/i960.h b/src/devices/cpu/i960/i960.h
index 833ae7d741a..3f26fbb46d1 100644
--- a/src/devices/cpu/i960/i960.h
+++ b/src/devices/cpu/i960/i960.h
@@ -95,7 +95,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
diff --git a/src/devices/cpu/ie15/ie15.cpp b/src/devices/cpu/ie15/ie15.cpp
index 95851497236..87de1cb2217 100644
--- a/src/devices/cpu/ie15/ie15.cpp
+++ b/src/devices/cpu/ie15/ie15.cpp
@@ -64,9 +64,8 @@ void ie15_device::device_start()
state_add(STATE_GENFLAGS,"GENFLAGS", m_flags).mask(0x0f).callimport().callexport().noshow().formatstr("%4s");
state_add(IE15_A, "A", m_A);
- std::string tempstring;
for (int ireg = 0; ireg < 32; ireg++)
- state_add(IE15_R0 + ireg, strformat(tempstring, "R%d", ireg).c_str(), m_REGS[ireg]);
+ state_add(IE15_R0 + ireg, strformat("R%d", ireg).c_str(), m_REGS[ireg]);
}
//-------------------------------------------------
@@ -133,7 +132,7 @@ void ie15_device::state_export(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void ie15_device::state_string_export(const device_state_entry &entry, std::string &str)
+void ie15_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/ie15/ie15.h b/src/devices/cpu/ie15/ie15.h
index a68b7acbd15..ce5cb46bf81 100644
--- a/src/devices/cpu/ie15/ie15.h
+++ b/src/devices/cpu/ie15/ie15.h
@@ -48,7 +48,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/jaguar/jaguar.cpp b/src/devices/cpu/jaguar/jaguar.cpp
index 0a3d1e92741..000d6375cce 100644
--- a/src/devices/cpu/jaguar/jaguar.cpp
+++ b/src/devices/cpu/jaguar/jaguar.cpp
@@ -78,10 +78,6 @@
PRIVATE GLOBAL VARIABLES
***************************************************************************/
-static UINT32 table_refcount = 0;
-static UINT16 * mirror_table;
-static UINT8 * condition_table;
-
const UINT32 jaguar_cpu_device::convert_zero[32] =
{ 32,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 };
@@ -150,6 +146,7 @@ jaguar_cpu_device::jaguar_cpu_device(const machine_config &mconfig, device_type
, m_isdsp(isdsp)
, m_cpu_interrupt(*this)
, m_tables_referenced(false)
+ , table_refcount(0)
, m_table(isdsp ? dsp_op_table : gpu_op_table)
{
if (isdsp)
@@ -291,7 +288,7 @@ void jaguar_cpu_device::init_tables()
}
/* fill in the mirror table */
- mirror_table = global_alloc_array(UINT16, 65536);
+ mirror_table = std::make_unique<UINT16[]>(65536);
for (i = 0; i < 65536; i++)
mirror_table[i] = ((i >> 15) & 0x0001) | ((i >> 13) & 0x0002) |
((i >> 11) & 0x0004) | ((i >> 9) & 0x0008) |
@@ -303,7 +300,7 @@ void jaguar_cpu_device::init_tables()
((i << 13) & 0x4000) | ((i << 15) & 0x8000);
/* fill in the condition table */
- condition_table = global_alloc_array(UINT8, 32 * 8);
+ condition_table = std::make_unique<UINT8[]>(32 * 8);
for (i = 0; i < 8; i++)
for (j = 0; j < 32; j++)
{
@@ -403,7 +400,7 @@ void jaguar_cpu_device::device_start()
}
-void jaguar_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void jaguar_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -440,12 +437,7 @@ jaguar_cpu_device::~jaguar_cpu_device()
if (--table_refcount != 0)
return;
- if (mirror_table != nullptr)
- global_free_array(mirror_table);
mirror_table = nullptr;
-
- if (condition_table != nullptr)
- global_free_array(condition_table);
condition_table = nullptr;
}
diff --git a/src/devices/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h
index 49f6e48d5c7..cc2e8938961 100644
--- a/src/devices/cpu/jaguar/jaguar.h
+++ b/src/devices/cpu/jaguar/jaguar.h
@@ -127,7 +127,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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; }
@@ -164,6 +164,10 @@ protected:
static const UINT32 convert_zero[32];
bool m_tables_referenced;
+ UINT32 table_refcount;
+ std::unique_ptr<UINT16[]> mirror_table;
+ std::unique_ptr<UINT8[]> condition_table;
+
const op_func *m_table;
void abs_rn(UINT16 op);
diff --git a/src/devices/cpu/lc8670/lc8670.cpp b/src/devices/cpu/lc8670/lc8670.cpp
index c7af2b69546..d24b3f64775 100644
--- a/src/devices/cpu/lc8670/lc8670.cpp
+++ b/src/devices/cpu/lc8670/lc8670.cpp
@@ -369,7 +369,7 @@ void lc8670_cpu_device::state_import(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void lc8670_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void lc8670_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -418,7 +418,7 @@ void lc8670_cpu_device::execute_run()
debugger_instruction_hook(this, m_pc);
- int cycles = 0;
+ int cycles;
m_ppc = m_pc;
if (REG_PCON & HALT_MODE)
@@ -1135,7 +1135,7 @@ inline UINT8 lc8670_cpu_device::pop()
inline UINT16 lc8670_cpu_device::get_addr()
{
int mode = m_op & 0x0f;
- UINT16 addr = 0;
+ UINT16 addr;
if (mode > 0x01 && mode <= 0x03)
addr = GET_D9;
@@ -1150,7 +1150,7 @@ inline UINT16 lc8670_cpu_device::get_addr()
inline UINT8 lc8670_cpu_device::get_data()
{
int mode = m_op & 0x0f;
- UINT8 data = 0;
+ UINT8 data;
if (mode == 0x01)
data = GET_I8;
@@ -1217,7 +1217,7 @@ inline void lc8670_cpu_device::set_irq_flag(int source)
int lc8670_cpu_device::decode_op(UINT8 op)
{
- int idx = 0;
+ int idx;
switch (op & 0x0f)
{
case 0: case 1:
diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h
index 6d2522dcef4..e6211a4522f 100644
--- a/src/devices/cpu/lc8670/lc8670.h
+++ b/src/devices/cpu/lc8670/lc8670.h
@@ -110,7 +110,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
diff --git a/src/devices/cpu/lh5801/lh5801.cpp b/src/devices/cpu/lh5801/lh5801.cpp
index 0287e0d0859..2e748c63905 100644
--- a/src/devices/cpu/lh5801/lh5801.cpp
+++ b/src/devices/cpu/lh5801/lh5801.cpp
@@ -142,7 +142,7 @@ void lh5801_cpu_device::device_start()
m_icountptr = &m_icount;
}
-void lh5801_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void lh5801_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h
index ff47135b262..fe6f3c44f63 100644
--- a/src/devices/cpu/lh5801/lh5801.h
+++ b/src/devices/cpu/lh5801/lh5801.h
@@ -90,7 +90,7 @@ protected:
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 : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/lr35902/lr35902.cpp b/src/devices/cpu/lr35902/lr35902.cpp
index 02cb785e1ff..8f365c18c54 100644
--- a/src/devices/cpu/lr35902/lr35902.cpp
+++ b/src/devices/cpu/lr35902/lr35902.cpp
@@ -180,7 +180,7 @@ void lr35902_cpu_device::device_start()
}
-void lr35902_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void lr35902_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h
index 0a9999ba10c..74ad24d07f8 100644
--- a/src/devices/cpu/lr35902/lr35902.h
+++ b/src/devices/cpu/lr35902/lr35902.h
@@ -70,7 +70,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/lr35902/lr35902d.cpp b/src/devices/cpu/lr35902/lr35902d.cpp
index 8fe9bf8977a..3458c5094e6 100644
--- a/src/devices/cpu/lr35902/lr35902d.cpp
+++ b/src/devices/cpu/lr35902/lr35902d.cpp
@@ -195,9 +195,9 @@ CPU_DISASSEMBLE( lr35902 )
const lr35902dasm *d;
const char /* *symbol,*/ *src;
char *dst;
- INT8 offset = 0;
+ INT8 offset;
UINT8 op, op1;
- UINT16 ea = 0;
+ UINT16 ea;
int pos = 0;
dst = buffer;
diff --git a/src/devices/cpu/m37710/m37710.cpp b/src/devices/cpu/m37710/m37710.cpp
index 26a2accfe76..43568915dce 100644
--- a/src/devices/cpu/m37710/m37710.cpp
+++ b/src/devices/cpu/m37710/m37710.cpp
@@ -1136,7 +1136,7 @@ void m37710_cpu_device::state_export(const device_state_entry &entry)
}
-void m37710_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void m37710_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/m37710/m37710.h b/src/devices/cpu/m37710/m37710.h
index 1f085da0c1f..e88408e527a 100644
--- a/src/devices/cpu/m37710/m37710.h
+++ b/src/devices/cpu/m37710/m37710.h
@@ -117,7 +117,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/m6502/m6502.cpp b/src/devices/cpu/m6502/m6502.cpp
index eae369f4960..0ecd12258f1 100644
--- a/src/devices/cpu/m6502/m6502.cpp
+++ b/src/devices/cpu/m6502/m6502.cpp
@@ -439,7 +439,7 @@ void m6502_device::state_export(const device_state_entry &entry)
{
}
-void m6502_device::state_string_export(const device_state_entry &entry, std::string &str)
+void m6502_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch(entry.index()) {
case STATE_GENFLAGS:
diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h
index 6f5ef092891..b8f8b16a6dd 100644
--- a/src/devices/cpu/m6502/m6502.h
+++ b/src/devices/cpu/m6502/m6502.h
@@ -144,7 +144,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/m6502/m6510.h b/src/devices/cpu/m6502/m6510.h
index be555b866df..dbd0132baff 100644
--- a/src/devices/cpu/m6502/m6510.h
+++ b/src/devices/cpu/m6502/m6510.h
@@ -25,7 +25,6 @@ public:
m6510_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);
UINT8 get_port();
- void set_port(UINT8 val);
void set_pulls(UINT8 pullup, UINT8 pulldown);
template<class _read, class _write> void set_callbacks(_read rd, _write wr) {
diff --git a/src/devices/cpu/m6502/m65ce02.cpp b/src/devices/cpu/m6502/m65ce02.cpp
index fdedc99369d..01f6fe34b2f 100644
--- a/src/devices/cpu/m6502/m65ce02.cpp
+++ b/src/devices/cpu/m6502/m65ce02.cpp
@@ -75,7 +75,7 @@ void m65ce02_device::state_export(const device_state_entry &entry)
{
}
-void m65ce02_device::state_string_export(const device_state_entry &entry, std::string &str)
+void m65ce02_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch(entry.index()) {
case STATE_GENFLAGS:
diff --git a/src/devices/cpu/m6502/m65ce02.h b/src/devices/cpu/m6502/m65ce02.h
index 3b5dc800954..d0d457d313c 100644
--- a/src/devices/cpu/m6502/m65ce02.h
+++ b/src/devices/cpu/m6502/m65ce02.h
@@ -34,7 +34,7 @@ protected:
virtual void device_reset() override;
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
inline void dec_SP_ce() { if(P & F_E) SP = set_l(SP, SP-1); else SP--; }
inline void inc_SP_ce() { if(P & F_E) SP = set_l(SP, SP+1); else SP++; }
diff --git a/src/devices/cpu/m6502/m740.cpp b/src/devices/cpu/m6502/m740.cpp
index 4987b26e31a..061f6dd75c7 100644
--- a/src/devices/cpu/m6502/m740.cpp
+++ b/src/devices/cpu/m6502/m740.cpp
@@ -53,7 +53,7 @@ void m740_device::device_reset()
SP = 0x00ff;
}
-void m740_device::state_string_export(const device_state_entry &entry, std::string &str)
+void m740_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch(entry.index()) {
case STATE_GENFLAGS:
diff --git a/src/devices/cpu/m6502/m740.h b/src/devices/cpu/m6502/m740.h
index c08eda19609..7f312b256cd 100644
--- a/src/devices/cpu/m6502/m740.h
+++ b/src/devices/cpu/m6502/m740.h
@@ -44,7 +44,7 @@ public:
static const disasm_entry disasm_entries[0x200];
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
virtual void do_exec_full() override;
diff --git a/src/devices/cpu/m6800/m6800.cpp b/src/devices/cpu/m6800/m6800.cpp
index 302ba478445..84d3b8d03e2 100644
--- a/src/devices/cpu/m6800/m6800.cpp
+++ b/src/devices/cpu/m6800/m6800.cpp
@@ -1140,7 +1140,7 @@ void m6800_cpu_device::device_start()
m_icountptr = &m_icount;
}
-void m6800_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void m6800_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h
index 45c24d2e039..bb6055e8ad0 100644
--- a/src/devices/cpu/m6800/m6800.h
+++ b/src/devices/cpu/m6800/m6800.h
@@ -87,7 +87,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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 1; }
diff --git a/src/devices/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h
index 4fb372fdf12..013627ac6c0 100644
--- a/src/devices/cpu/m68000/m68000.h
+++ b/src/devices/cpu/m68000/m68000.h
@@ -396,7 +396,7 @@ public:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// device_memory_interface overrides
virtual bool memory_translate(address_spacenum space, int intention, offs_t &address) override;
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 5b6d2a602bf..dc7e0b14a6f 100644
--- a/src/devices/cpu/m68000/m68kcpu.cpp
+++ b/src/devices/cpu/m68000/m68kcpu.cpp
@@ -1166,7 +1166,7 @@ void m68000_base_device::state_export(const device_state_entry &entry)
}
}
-void m68000_base_device::state_string_export(const device_state_entry &entry, std::string &str)
+void m68000_base_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
UINT16 sr;
@@ -1734,14 +1734,11 @@ void m68000_base_device::define_state(void)
if (cpu_type & MASK_020_OR_LATER)
state_add(M68K_MSP, "MSP", iotemp).callimport().callexport();
- std::string tempstr;
for (int regnum = 0; regnum < 8; regnum++) {
- strprintf(tempstr,"D%d", regnum);
- state_add(M68K_D0 + regnum, tempstr.c_str(), dar[regnum]);
+ state_add(M68K_D0 + regnum, strformat("D%d", regnum).c_str(), dar[regnum]);
}
for (int regnum = 0; regnum < 8; regnum++) {
- strprintf(tempstr,"A%d", regnum);
- state_add(M68K_A0 + regnum, tempstr.c_str(), dar[8 + regnum]);
+ state_add(M68K_A0 + regnum, strformat("A%d", regnum).c_str(), dar[8 + regnum]);
}
state_add(M68K_PREF_ADDR, "PREF_ADDR", pref_addr).mask(addrmask);
@@ -1763,8 +1760,7 @@ void m68000_base_device::define_state(void)
if (cpu_type & MASK_030_OR_LATER)
{
for (int regnum = 0; regnum < 8; regnum++) {
- strprintf(tempstr,"FP%d", regnum);
- state_add(M68K_FP0 + regnum, tempstr.c_str(), iotemp).callimport().callexport().formatstr("%10s");
+ state_add(M68K_FP0 + regnum, strformat("FP%d", regnum).c_str(), iotemp).callimport().callexport().formatstr("%10s");
}
state_add(M68K_FPSR, "FPSR", fpsr);
state_add(M68K_FPCR, "FPCR", fpcr);
diff --git a/src/devices/cpu/m68000/m68kfpu.inc b/src/devices/cpu/m68000/m68kfpu.inc
index 6493bc1f614..b5275bd314a 100644
--- a/src/devices/cpu/m68000/m68kfpu.inc
+++ b/src/devices/cpu/m68000/m68kfpu.inc
@@ -1681,7 +1681,7 @@ static void fmove_fpcr(m68000_base_device *m68k, UINT16 w2)
int rnd = (REG_FPCR(m68k) >> 4) & 3;
int prec = (REG_FPCR(m68k) >> 6) & 3;
- m68k->logerror("m68k_fpsp:fmove_fpcr fpcr=%04x prec=%d rnd=%d\n", REG_FPCR(m68k), prec, rnd);
+// m68k->logerror("m68k_fpsp:fmove_fpcr fpcr=%04x prec=%d rnd=%d\n", REG_FPCR(m68k), prec, rnd);
#ifdef FLOATX80
switch (prec)
diff --git a/src/devices/cpu/m68000/m68kmake.cpp b/src/devices/cpu/m68000/m68kmake.cpp
index 9b732dbec59..f36797d76ba 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 */
diff --git a/src/devices/cpu/m68000/m68kops.cpp b/src/devices/cpu/m68000/m68kops.cpp
index 40c4a78cecf..0505f863c73 100644
--- a/src/devices/cpu/m68000/m68kops.cpp
+++ b/src/devices/cpu/m68000/m68kops.cpp
@@ -7176,9 +7176,9 @@ void m68000_base_device_ops::m68k_op_bfins_32_ai(m68000_base_device* mc68kcpu)
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;
@@ -7252,9 +7252,9 @@ void m68000_base_device_ops::m68k_op_bfins_32_di(m68000_base_device* mc68kcpu)
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;
@@ -7328,9 +7328,9 @@ void m68000_base_device_ops::m68k_op_bfins_32_ix(m68000_base_device* mc68kcpu)
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;
@@ -7404,9 +7404,9 @@ void m68000_base_device_ops::m68k_op_bfins_32_aw(m68000_base_device* mc68kcpu)
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;
@@ -7480,9 +7480,9 @@ void m68000_base_device_ops::m68k_op_bfins_32_al(m68000_base_device* mc68kcpu)
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;
@@ -21288,7 +21288,7 @@ void m68000_base_device_ops::m68k_op_movec_32_rc(m68000_base_device* mc68kcpu)
(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);
@@ -32728,7 +32728,7 @@ void m68000_base_device_ops::m68k_op_cinv_32(m68000_base_device* mc68kcpu)
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:
diff --git a/src/devices/cpu/m6805/m6805.cpp b/src/devices/cpu/m6805/m6805.cpp
index d3905118b48..0bb5ac3877e 100644
--- a/src/devices/cpu/m6805/m6805.cpp
+++ b/src/devices/cpu/m6805/m6805.cpp
@@ -493,7 +493,7 @@ const address_space_config *m6805_base_device::memory_space_config(address_space
// for the debugger
//-------------------------------------------------
-void m6805_base_device::state_string_export(const device_state_entry &entry, std::string &str)
+void m6805_base_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/m6805/m6805.h b/src/devices/cpu/m6805/m6805.h
index dc85fd6eaaa..40fd8b3db9b 100644
--- a/src/devices/cpu/m6805/m6805.h
+++ b/src/devices/cpu/m6805/m6805.h
@@ -51,7 +51,7 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
private:
// opcode/condition tables
@@ -119,7 +119,7 @@ protected:
void rorx();
void asrx();
void aslx();
- void lslx();
+// void lslx();
void rolx();
void decx();
void incx();
diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp
index 30690ed5db5..61337f180f0 100644
--- a/src/devices/cpu/m6809/m6809.cpp
+++ b/src/devices/cpu/m6809/m6809.cpp
@@ -302,7 +302,7 @@ const address_space_config *m6809_base_device::memory_space_config(address_space
// for the debugger
//-------------------------------------------------
-void m6809_base_device::state_string_export(const device_state_entry &entry, std::string &str)
+void m6809_base_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h
index 53ca385f81c..a992be78789 100644
--- a/src/devices/cpu/m6809/m6809.h
+++ b/src/devices/cpu/m6809/m6809.h
@@ -84,7 +84,7 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// addressing modes
enum
diff --git a/src/devices/cpu/mb86233/mb86233.cpp b/src/devices/cpu/mb86233/mb86233.cpp
index 7d760567872..341309d8c12 100644
--- a/src/devices/cpu/mb86233/mb86233.cpp
+++ b/src/devices/cpu/mb86233/mb86233.cpp
@@ -161,7 +161,7 @@ void mb86233_cpu_device::device_start()
}
-void mb86233_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mb86233_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -478,7 +478,7 @@ UINT32 mb86233_cpu_device::GETEXTERNAL( UINT32 EB, UINT32 offset )
{
unsigned int value=GETEXTPORT()[0x27];
int exp=(value>>23)&0xff;
- unsigned int res=0;
+ unsigned int res;
unsigned int sign=0;
MB86233_REG a,b;
int index;
diff --git a/src/devices/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h
index 0d1e3843737..26fc5b3e9f6 100644
--- a/src/devices/cpu/mb86233/mb86233.h
+++ b/src/devices/cpu/mb86233/mb86233.h
@@ -74,7 +74,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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 4; }
diff --git a/src/devices/cpu/mb86235/mb86235.cpp b/src/devices/cpu/mb86235/mb86235.cpp
index c68a66e4e7b..edcc6a0471f 100644
--- a/src/devices/cpu/mb86235/mb86235.cpp
+++ b/src/devices/cpu/mb86235/mb86235.cpp
@@ -108,7 +108,7 @@ mb86235_cpu_device::mb86235_cpu_device(const machine_config &mconfig, const char
}
-void mb86235_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mb86235_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/mb86235/mb86235.h b/src/devices/cpu/mb86235/mb86235.h
index 4fdda0030be..35f586c7290 100644
--- a/src/devices/cpu/mb86235/mb86235.h
+++ b/src/devices/cpu/mb86235/mb86235.h
@@ -42,7 +42,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 8; }
diff --git a/src/devices/cpu/mb88xx/mb88xx.cpp b/src/devices/cpu/mb88xx/mb88xx.cpp
index 5d8ca5f7e09..9ab07538e6e 100644
--- a/src/devices/cpu/mb88xx/mb88xx.cpp
+++ b/src/devices/cpu/mb88xx/mb88xx.cpp
@@ -269,7 +269,7 @@ void mb88_cpu_device::state_export(const device_state_entry &entry)
}
-void mb88_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mb88_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h
index 8a9e555d968..6dc4252f706 100644
--- a/src/devices/cpu/mb88xx/mb88xx.h
+++ b/src/devices/cpu/mb88xx/mb88xx.h
@@ -90,9 +90,9 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : ( (spacenum == AS_IO) ? &m_io_config : nullptr ) ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
- void state_import(const device_state_entry &entry) override;
- void state_export(const device_state_entry &entry) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
+ virtual void state_import(const device_state_entry &entry) override;
+ virtual void state_export(const device_state_entry &entry) override;
// device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const override { return 1; }
diff --git a/src/devices/cpu/mc68hc11/hc11dasm.cpp b/src/devices/cpu/mc68hc11/hc11dasm.cpp
index eed3df13c5e..2594634671f 100644
--- a/src/devices/cpu/mc68hc11/hc11dasm.cpp
+++ b/src/devices/cpu/mc68hc11/hc11dasm.cpp
@@ -1286,7 +1286,7 @@ static UINT32 decode_opcode(UINT32 pc, const M68HC11_OPCODE *op_table)
CPU_DISASSEMBLE( hc11 )
{
- UINT32 flags = 0;
+ UINT32 flags;
UINT8 opcode;
output = buffer;
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.cpp b/src/devices/cpu/mc68hc11/mc68hc11.cpp
index f05d9126334..a208a618c4b 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.cpp
+++ b/src/devices/cpu/mc68hc11/mc68hc11.cpp
@@ -448,7 +448,7 @@ void mc68hc11_cpu_device::device_start()
}
-void mc68hc11_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mc68hc11_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h
index 3f76577b29c..047a1f559e2 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.h
+++ b/src/devices/cpu/mc68hc11/mc68hc11.h
@@ -70,7 +70,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp
index 0f7a72f0f89..b49899ca498 100644
--- a/src/devices/cpu/mcs48/mcs48.cpp
+++ b/src/devices/cpu/mcs48/mcs48.cpp
@@ -978,10 +978,8 @@ void mcs48_cpu_device::device_start()
state_add(MCS48_P1, "P1", m_p1);
state_add(MCS48_P2, "P2", m_p2);
- std::string tempstr;
for (int regnum = 0; regnum < 8; regnum++) {
- strprintf(tempstr, "R%d", regnum);
- state_add(MCS48_R0 + regnum, tempstr.c_str(), m_rtemp).callimport().callexport();
+ state_add(MCS48_R0 + regnum, strformat("R%d", regnum).c_str(), m_rtemp).callimport().callexport();
}
state_add(MCS48_EA, "EA", m_ea).mask(0x1);
@@ -1298,7 +1296,7 @@ void mcs48_cpu_device::state_export(const device_state_entry &entry)
}
}
-void mcs48_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mcs48_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h
index ed994d1030e..a916ccd2016 100644
--- a/src/devices/cpu/mcs48/mcs48.h
+++ b/src/devices/cpu/mcs48/mcs48.h
@@ -152,7 +152,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/mcs51/mcs51.cpp b/src/devices/cpu/mcs51/mcs51.cpp
index 0fc5d9449be..f3d5816d722 100644
--- a/src/devices/cpu/mcs51/mcs51.cpp
+++ b/src/devices/cpu/mcs51/mcs51.cpp
@@ -1004,7 +1004,7 @@ void mcs51_cpu_device::transmit_receive(int source)
void mcs51_cpu_device::update_timer_t0(int cycles)
{
int mode = (GET_M0_1<<1) | GET_M0_0;
- UINT32 count = 0;
+ UINT32 count;
if (GET_TR0)
{
@@ -1091,7 +1091,7 @@ void mcs51_cpu_device::update_timer_t1(int cycles)
{
UINT8 mode = (GET_M1_1<<1) | GET_M1_0;
UINT8 mode_0 = (GET_M0_1<<1) | GET_M0_0;
- UINT32 count = 0;
+ UINT32 count;
if (mode_0 != 3)
{
@@ -1713,7 +1713,7 @@ void mcs51_cpu_device::check_irqs()
UINT8 ints = (GET_IE0 | (GET_TF0<<1) | (GET_IE1<<2) | (GET_TF1<<3)
| ((GET_RI|GET_TI)<<4));
UINT8 int_vec = 0;
- UINT8 int_mask = 0;
+ UINT8 int_mask;
int priority_request = -1;
int i;
@@ -2213,7 +2213,7 @@ void mcs51_cpu_device::state_export(const device_state_entry &entry)
}
}
-void mcs51_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mcs51_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h
index 3babfda9f50..7b769de24ad 100644
--- a/src/devices/cpu/mcs51/mcs51.h
+++ b/src/devices/cpu/mcs51/mcs51.h
@@ -109,7 +109,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/mcs96/mcs96.cpp b/src/devices/cpu/mcs96/mcs96.cpp
index 8c52a8c029d..3c8284f8555 100644
--- a/src/devices/cpu/mcs96/mcs96.cpp
+++ b/src/devices/cpu/mcs96/mcs96.cpp
@@ -128,7 +128,7 @@ void mcs96_device::state_export(const device_state_entry &entry)
{
}
-void mcs96_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mcs96_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch(entry.index()) {
case STATE_GENFLAGS:
diff --git a/src/devices/cpu/mcs96/mcs96.h b/src/devices/cpu/mcs96/mcs96.h
index ed9b64709ec..0111361899c 100644
--- a/src/devices/cpu/mcs96/mcs96.h
+++ b/src/devices/cpu/mcs96/mcs96.h
@@ -85,7 +85,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/melps4/melps4.cpp b/src/devices/cpu/melps4/melps4.cpp
index b7390eaccf5..d228b42fbee 100644
--- a/src/devices/cpu/melps4/melps4.cpp
+++ b/src/devices/cpu/melps4/melps4.cpp
@@ -42,7 +42,7 @@
// disasm
-void melps4_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void melps4_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -367,7 +367,7 @@ void melps4_cpu_device::check_interrupt()
if (!m_inte)
return;
- int which = 0;
+ int which;
// assume that lower irq vectors have higher priority
if (m_irqflag[0])
diff --git a/src/devices/cpu/melps4/melps4.h b/src/devices/cpu/melps4/melps4.h
index 2d80cfcf8d2..b0aa67fd6d4 100644
--- a/src/devices/cpu/melps4/melps4.h
+++ b/src/devices/cpu/melps4/melps4.h
@@ -160,7 +160,7 @@ protected:
// 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 void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
address_space_config m_program_config;
address_space_config m_data_config;
diff --git a/src/devices/cpu/minx/minx.cpp b/src/devices/cpu/minx/minx.cpp
index e822fbd9ecc..bae0338da76 100644
--- a/src/devices/cpu/minx/minx.cpp
+++ b/src/devices/cpu/minx/minx.cpp
@@ -121,7 +121,7 @@ void minx_cpu_device::device_start()
}
-void minx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void minx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/minx/minx.h b/src/devices/cpu/minx/minx.h
index e530b3cf88a..a31db6ab7a0 100644
--- a/src/devices/cpu/minx/minx.h
+++ b/src/devices/cpu/minx/minx.h
@@ -36,7 +36,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/minx/minxd.cpp b/src/devices/cpu/minx/minxd.cpp
index 58789942409..31f4a1f51d7 100644
--- a/src/devices/cpu/minx/minxd.cpp
+++ b/src/devices/cpu/minx/minxd.cpp
@@ -424,8 +424,8 @@ CPU_DISASSEMBLE( minx )
{
const minxdasm *instr;
UINT8 op, op1;
- INT8 ofs8 = 0;
- UINT16 ea = 0;
+ INT8 ofs8;
+ UINT16 ea;
int pos = 0;
char *dst = buffer;
diff --git a/src/devices/cpu/mips/mips3.cpp b/src/devices/cpu/mips/mips3.cpp
index ed95f09d418..f4747b7304c 100644
--- a/src/devices/cpu/mips/mips3.cpp
+++ b/src/devices/cpu/mips/mips3.cpp
@@ -203,12 +203,10 @@ void mips3_device::device_stop()
if (m_drcfe != nullptr)
{
- auto_free(machine(), m_drcfe);
m_drcfe = nullptr;
}
if (m_drcuml != nullptr)
{
- auto_free(machine(), m_drcuml);
m_drcuml = nullptr;
}
}
@@ -357,7 +355,7 @@ void mips3_device::device_start()
UINT32 flags = 0;
/* initialize the UML generator */
- m_drcuml = auto_alloc(machine(), drcuml_state(*this, m_cache, flags, 8, 32, 2));
+ m_drcuml = std::make_unique<drcuml_state>(*this, m_cache, flags, 8, 32, 2);
/* add symbols for our stuff */
m_drcuml->symbol_add(&m_core->pc, sizeof(m_core->pc), "pc");
@@ -403,7 +401,7 @@ void mips3_device::device_start()
m_drcuml->symbol_add(&m_fpmode, sizeof(m_fpmode), "fpmode");
/* initialize the front-end helper */
- m_drcfe = auto_alloc(machine(), mips3_frontend(this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE));
+ m_drcfe = std::make_unique<mips3_frontend>(this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE);
/* allocate memory for cache-local state and initialize it */
memcpy(m_fpmode, fpmode_source, sizeof(fpmode_source));
@@ -661,7 +659,7 @@ void mips3_device::state_export(const device_state_entry &entry)
}
-void mips3_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mips3_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h
index 1b76e37fe3f..9e0de9ed419 100644
--- a/src/devices/cpu/mips/mips3.h
+++ b/src/devices/cpu/mips/mips3.h
@@ -303,7 +303,7 @@ protected:
// device_state_interface overrides
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
@@ -409,8 +409,8 @@ private:
/* core state */
drc_cache m_cache; /* pointer to the DRC code cache */
- drcuml_state * m_drcuml; /* DRC UML generator state */
- mips3_frontend * m_drcfe; /* pointer to the DRC front-end state */
+ std::unique_ptr<drcuml_state> m_drcuml; /* DRC UML generator state */
+ std::unique_ptr<mips3_frontend> m_drcfe; /* pointer to the DRC front-end state */
UINT32 m_drcoptions; /* configurable DRC options */
/* internal stuff */
diff --git a/src/devices/cpu/mips/mips3drc.cpp b/src/devices/cpu/mips/mips3drc.cpp
index 02d73de3b14..4e6e9771a38 100644
--- a/src/devices/cpu/mips/mips3drc.cpp
+++ b/src/devices/cpu/mips/mips3drc.cpp
@@ -280,7 +280,7 @@ void mips3_device::code_flush_cache()
void mips3_device::code_compile_block(UINT8 mode, offs_t pc)
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
compiler_state compiler = { 0 };
const opcode_desc *seqhead, *seqlast;
const opcode_desc *desclist;
@@ -553,7 +553,7 @@ static void cfunc_unimplemented(void *param)
void mips3_device::static_generate_entry_point()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
code_label skip = 1;
drcuml_block *block;
@@ -601,7 +601,7 @@ void mips3_device::static_generate_entry_point()
void mips3_device::static_generate_nocode_handler()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* begin generating */
@@ -626,7 +626,7 @@ void mips3_device::static_generate_nocode_handler()
void mips3_device::static_generate_out_of_cycles()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* begin generating */
@@ -651,7 +651,7 @@ void mips3_device::static_generate_out_of_cycles()
void mips3_device::static_generate_tlb_mismatch()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* forward references */
@@ -702,7 +702,7 @@ void mips3_device::static_generate_tlb_mismatch()
void mips3_device::static_generate_exception(UINT8 exception, int recover, const char *name)
{
code_handle *&exception_handle = recover ? m_exception[exception] : m_exception_norecover[exception];
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
UINT32 offset = 0x180;
code_label next = 1;
code_label skip = 2;
@@ -805,7 +805,7 @@ void mips3_device::static_generate_memory_accessor(int mode, int size, int iswri
code_handle &exception_tlb = *m_exception[iswrite ? EXCEPTION_TLBSTORE : EXCEPTION_TLBLOAD];
code_handle &exception_tlbfill = *m_exception[iswrite ? EXCEPTION_TLBSTORE_FILL : EXCEPTION_TLBLOAD_FILL];
code_handle &exception_addrerr = *m_exception[iswrite ? EXCEPTION_ADDRSTORE : EXCEPTION_ADDRLOAD];
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
int tlbmiss = 0;
int label = 1;
diff --git a/src/devices/cpu/mips/r3000.cpp b/src/devices/cpu/mips/r3000.cpp
index b53afb83d29..f14c6adc93f 100644
--- a/src/devices/cpu/mips/r3000.cpp
+++ b/src/devices/cpu/mips/r3000.cpp
@@ -443,7 +443,7 @@ void r3000_device::state_export(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void r3000_device::state_string_export(const device_state_entry &entry, std::string &str)
+void r3000_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h
index f9063806cde..a7541eaab85 100644
--- a/src/devices/cpu/mips/r3000.h
+++ b/src/devices/cpu/mips/r3000.h
@@ -126,7 +126,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
diff --git a/src/devices/cpu/mn10200/mn10200.cpp b/src/devices/cpu/mn10200/mn10200.cpp
index bf00be5b984..1b4af66e13f 100644
--- a/src/devices/cpu/mn10200/mn10200.cpp
+++ b/src/devices/cpu/mn10200/mn10200.cpp
@@ -51,7 +51,7 @@ mn1020012a_device::mn1020012a_device(const machine_config &mconfig, const char *
// disasm
-void mn10200_device::state_string_export(const device_state_entry &entry, std::string &str)
+void mn10200_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h
index f3dc2dcfee7..38073fb8e27 100644
--- a/src/devices/cpu/mn10200/mn10200.h
+++ b/src/devices/cpu/mn10200/mn10200.h
@@ -88,7 +88,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/nec/nec.cpp b/src/devices/cpu/nec/nec.cpp
index 7b282e2570c..42ef74df7d5 100644
--- a/src/devices/cpu/nec/nec.cpp
+++ b/src/devices/cpu/nec/nec.cpp
@@ -437,7 +437,7 @@ void nec_common_device::device_start()
m_icountptr = &m_icount;
}
-void nec_common_device::state_string_export(const device_state_entry &entry, std::string &str)
+void nec_common_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
UINT16 flags = CompressFlags();
diff --git a/src/devices/cpu/nec/nec.h b/src/devices/cpu/nec/nec.h
index 50a3adc7656..c0c1fa82327 100644
--- a/src/devices/cpu/nec/nec.h
+++ b/src/devices/cpu/nec/nec.h
@@ -42,7 +42,7 @@ protected:
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 : nullptr); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp
index 8612c5f8760..c5e62446cb0 100644
--- a/src/devices/cpu/nec/v25.cpp
+++ b/src/devices/cpu/nec/v25.cpp
@@ -525,7 +525,7 @@ void v25_common_device::device_start()
}
-void v25_common_device::state_string_export(const device_state_entry &entry, std::string &str)
+void v25_common_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
UINT16 flags = CompressFlags();
diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h
index 0e996468942..1cd5ab91012 100644
--- a/src/devices/cpu/nec/v25.h
+++ b/src/devices/cpu/nec/v25.h
@@ -59,7 +59,7 @@ protected:
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 : nullptr); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
diff --git a/src/devices/cpu/patinhofeio/patinho_feio.cpp b/src/devices/cpu/patinhofeio/patinho_feio.cpp
index 9377ad259f8..78fc92a8270 100644
--- a/src/devices/cpu/patinhofeio/patinho_feio.cpp
+++ b/src/devices/cpu/patinhofeio/patinho_feio.cpp
@@ -28,14 +28,14 @@
#define INCREMENT_PC_4K (PC = (PC+1) & ADDRESS_MASK_4K)
unsigned int patinho_feio_cpu_device::compute_effective_address(unsigned int addr){
- unsigned int retval = addr;
- if (m_indirect_addressing){
- retval = READ_WORD_PATINHO(addr);
- if (retval & 0x1000)
- return compute_effective_address(retval & 0xFFF);
- }
-
- return retval;
+ unsigned int retval = addr;
+ if (m_indirect_addressing){
+ retval = READ_WORD_PATINHO(addr);
+ if (retval & 0x1000)
+ return compute_effective_address(retval & 0xFFF);
+ }
+
+ return retval;
}
const device_type PATINHO_FEIO = &device_creator<patinho_feio_cpu_device>;
@@ -43,494 +43,493 @@ const device_type PATINHO_FEIO = &device_creator<patinho_feio_cpu_device>;
//Internal 4kbytes of RAM
static ADDRESS_MAP_START(prog_8bit, AS_PROGRAM, 8, patinho_feio_cpu_device)
- AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("internalram")
+ AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("internalram")
ADDRESS_MAP_END
patinho_feio_cpu_device::patinho_feio_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : cpu_device(mconfig, PATINHO_FEIO, "PATINHO FEIO", tag, owner, clock, "patinho_feio_cpu", __FILE__),
- m_program_config("program", ENDIANNESS_LITTLE, 8, 12, 0, ADDRESS_MAP_NAME(prog_8bit)),
- m_icount(0),
- m_rc_read_cb(*this)
+ : cpu_device(mconfig, PATINHO_FEIO, "PATINHO FEIO", tag, owner, clock, "patinho_feio_cpu", __FILE__),
+ m_program_config("program", ENDIANNESS_LITTLE, 8, 12, 0, ADDRESS_MAP_NAME(prog_8bit)),
+ m_icount(0),
+ m_rc_read_cb(*this)
{
}
UINT16 patinho_feio_cpu_device::read_panel_keys_register(){
- if (!m_rc_read_cb.isnull())
- m_rc = m_rc_read_cb(0);
- else
- m_rc = 0;
+ if (!m_rc_read_cb.isnull())
+ m_rc = m_rc_read_cb(0);
+ else
+ m_rc = 0;
- return m_rc;
+ return m_rc;
}
void patinho_feio_cpu_device::device_start()
{
- m_program = &space(AS_PROGRAM);
-
- save_item(NAME(m_pc));
- save_item(NAME(m_acc));
- save_item(NAME(m_rc));
- save_item(NAME(m_idx));
- save_item(NAME(m_flags));
-
- // Register state for debugger
- state_add( PATINHO_FEIO_CI, "CI", m_pc ).mask(0xFFF);
- state_add( PATINHO_FEIO_RC, "RC", m_rc ).mask(0xFFF);
- state_add( PATINHO_FEIO_ACC, "ACC", m_acc ).mask(0xFF);
- state_add( PATINHO_FEIO_IDX, "IDX", m_idx ).mask(0xFF);
- state_add(STATE_GENPC, "GENPC", m_pc).formatstr("0%06O").noshow();
- state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).noshow().formatstr("%8s");
-
- if (m_rc_read_cb.isnull()){
- fatalerror("Panel keys register not found!");
- } else {
- m_rc_read_cb.resolve();
- }
-
- m_icountptr = &m_icount;
+ m_program = &space(AS_PROGRAM);
+
+ save_item(NAME(m_pc));
+ save_item(NAME(m_acc));
+ save_item(NAME(m_rc));
+ save_item(NAME(m_idx));
+ save_item(NAME(m_flags));
+
+ // Register state for debugger
+ state_add( PATINHO_FEIO_CI, "CI", m_pc ).mask(0xFFF);
+ state_add( PATINHO_FEIO_RC, "RC", m_rc ).mask(0xFFF);
+ state_add( PATINHO_FEIO_ACC, "ACC", m_acc ).mask(0xFF);
+ state_add( PATINHO_FEIO_IDX, "IDX", m_idx ).mask(0xFF);
+ state_add(STATE_GENPC, "GENPC", m_pc).formatstr("0%06O").noshow();
+ state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).noshow().formatstr("%8s");
+
+ if (m_rc_read_cb.isnull()){
+ fatalerror("Panel keys register not found!");
+ } else {
+ m_rc_read_cb.resolve();
+ }
+
+ m_icountptr = &m_icount;
}
void patinho_feio_cpu_device::device_reset()
{
- m_pc = 0x006;
- m_acc = 0;
- m_rc = 0;
- m_idx = READ_INDEX_REG();
- m_flags = 0;
- m_run = true;
- m_scheduled_IND_bit_reset = false;
- m_indirect_addressing = false;
+ m_pc = 0x006;
+ m_acc = 0;
+ m_rc = 0;
+ m_idx = READ_INDEX_REG();
+ m_flags = 0;
+ m_run = true;
+ m_scheduled_IND_bit_reset = false;
+ m_indirect_addressing = false;
}
/* execute instructions on this CPU until icount expires */
void patinho_feio_cpu_device::execute_run()
{
- do
- {
- if ((! m_run)){
- m_icount = 0; /* if processor is stopped, just burn cycles */
- } else {
- m_idx = READ_INDEX_REG();
- read_panel_keys_register();
-
- execute_instruction();
- m_icount --;
- }
- }
- while (m_icount > 0);
+ do
+ {
+ if ((! m_run)){
+ m_icount = 0; /* if processor is stopped, just burn cycles */
+ } else {
+ m_idx = READ_INDEX_REG();
+ read_panel_keys_register();
+
+ execute_instruction();
+ m_icount --;
+ }
+ }
+ while (m_icount > 0);
}
/* execute one instruction */
void patinho_feio_cpu_device::execute_instruction()
{
- debugger_instruction_hook(this, PC);
- offs_t addr;
- bool skip;
- unsigned int tmp;
- unsigned char value, channel, function;
- unsigned char opcode = READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
-
- if (m_scheduled_IND_bit_reset)
- m_indirect_addressing = false;
-
- if (m_indirect_addressing)
- m_scheduled_IND_bit_reset = true;
-
- switch (opcode){
- case 0xD2:
- //XOR: Computes the bitwise XOR of an immediate into the accumulator
- ACC ^= READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- //TODO: update T and V flags
- return;
- case 0xD4:
- //NAND: Computes the bitwise XOR of an immediate into the accumulator
- ACC = ~(ACC & READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- //TODO: update T and V flags
- return;
- case 0xD8:
- //SOMI="Soma Imediato":
- // Add an immediate into the accumulator
- ACC += READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- //TODO: update T and V flags
- return;
- case 0xDA:
- //CARI="Carrega Imediato":
- // Load an immediate into the accumulator
- ACC = READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- return;
- case 0x80:
- //LIMPO:
- // Clear accumulator and flags
- ACC = 0;
- FLAGS = 0;
- return;
- case 0x81:
- //UM="One":
- // Load 1 into accumulator
- // and clear the flags
- ACC = 1;
- FLAGS = 0;
- return;
- case 0x82:
- //CMP1:
- // Compute One's complement of the accumulator
- // and clear the flags
- ACC = ~ACC;
- FLAGS = 0;
- return;
- case 0x83:
- //CMP2:
- // Compute Two's complement of the accumulator
- // and updates flags according to the result of the operation
- ACC = ~ACC + 1;
- FLAGS = 0; //TODO: fix-me (I'm not sure yet how to compute the flags here)
- return;
- case 0x84:
- //LIM="Limpa":
- // Clear flags
- FLAGS = 0;
- return;
- case 0x85:
- //INC:
- // Increment accumulator
- ACC++;
- FLAGS = 0; //TODO: fix-me (I'm not sure yet how to compute the flags here)
- return;
- case 0x86:
- //UNEG="Um Negativo":
- // Load -1 into accumulator and clear flags
- ACC = -1;
- FLAGS = 0;
- return;
- case 0x87:
- //LIMP1:
- // Clear accumulator, reset T and set V
- ACC = 0;
- FLAGS = V;
- return;
- case 0x88:
- //PNL 0:
- ACC = (RC & 0xFF);
- FLAGS = 0;
- return;
- case 0x89:
- //PNL 1:
- ACC = (RC & 0xFF) + 1;
- //TODO: FLAGS = ?;
- return;
- case 0x8A:
- //PNL 2:
- ACC = (RC & 0xFF) - ACC - 1;
- //TODO: FLAGS = ?;
- return;
- case 0x8B:
- //PNL 3:
- ACC = (RC & 0xFF) - ACC;
- //TODO: FLAGS = ?;
- return;
- case 0x8C:
- //PNL 4:
- ACC = (RC & 0xFF) + ACC;
- //TODO: FLAGS = ?;
- return;
- case 0x8D:
- //PNL 5:
- ACC = (RC & 0xFF) + ACC + 1;
- //TODO: FLAGS = ?;
- return;
- case 0x8E:
- //PNL 6:
- ACC = (RC & 0xFF) - 1;
- //TODO: FLAGS = ?;
- return;
- case 0x8F:
- //PNL 7:
- ACC = (RC & 0xFF);
- FLAGS = V;
- return;
- case 0x9A:
- //INIB="Inibe"
- // disables interrupts
- m_interrupts_enabled = false;
- return;
- case 0x9B:
- //PERM="Permite"
- // enables interrupts
- m_interrupts_enabled = true;
- return;
- case 0x9C:
- //ESP="Espera":
- // Holds execution and waits for an interrupt to occur.
- m_run = false;
- m_wait_for_interrupt = true;
- return;
- case 0x9D:
- //PARE="Pare":
- // Holds execution. This can only be recovered by
- // manually triggering execution again by
- // pressing the "Partida" (start) button in the panel
- m_run = false;
- m_wait_for_interrupt = false;
- return;
- case 0x9E:
- //TRI="Troca com Indexador":
- // Exchange the value of the accumulator with the index register
- value = ACC;
- ACC = READ_INDEX_REG();
- WRITE_INDEX_REG(value);
- return;
- case 0x9F:
- //IND="Enderecamento indireto":
- // Sets memory addressing for the next instruction to be indirect.
- m_indirect_addressing = true;
- m_scheduled_IND_bit_reset = false; //the next instruction execution will schedule it.
- return;
- case 0xD1:
- //Bit-Shift/Bit-Rotate instructions
- value = READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- for (int i=0; i<4; i++){
- if (value & (1<<i)){
- /* The number of shifts or rotations is determined by the
- ammount of 1 bits in the lower 4 bits of 'value' */
- switch(value & 0xF0)
- {
- case 0x00:
- //DD="Deslocamento para a Direita"
- // Shift right
- FLAGS &= ~V;
- if (ACC & 1)
- FLAGS |= V;
-
- ACC >>= 1;
- break;
- case 0x20:
- //GD="Giro para a Direita"
- // Rotate right
- FLAGS &= ~V;
- if (ACC & 1)
- FLAGS |= V;
-
- ACC = ((ACC & 1) << 7) | (ACC >> 1);
- break;
- case 0x10: //DDV="Deslocamento para a Direita com Vai-um"
- // Shift right with Carry
- case 0x30: //GDV="Giro para a Direita com Vai-um"
- // Rotate right with Carry
-
- //both instructions are equivalent
- if (FLAGS & V)
- tmp = 0x100 | ACC;
- else
- tmp = ACC;
-
- FLAGS &= ~V;
- if (ACC & 1)
- FLAGS |= V;
-
- ACC = tmp >> 1;
- break;
- case 0x40: //DE="Deslocamento para a Esquerda"
- // Shift left
- FLAGS &= ~V;
- if (ACC & (1<<7))
- FLAGS |= V;
-
- ACC <<= 1;
- break;
- case 0x60: //GE="Giro para a Esquerda"
- // Rotate left
- FLAGS &= ~V;
- if (ACC & (1<<7))
- FLAGS |= V;
-
- ACC = (ACC << 1) | ((ACC >> 7) & 1);
- break;
- case 0x50: //DEV="Deslocamento para a Esquerda com Vai-um"
- // Shift left with Carry
- case 0x70: //GEV="Giro para a Esquerda com Vai-um"
- // Rotate left with Carry
-
- //both instructions are equivalent
- if (FLAGS & V)
- tmp = (ACC << 1) | 1;
- else
- tmp = (ACC << 1);
-
- FLAGS &= ~V;
- if (tmp & (1<<8))
- FLAGS |= V;
-
- ACC = tmp & 0xFF;
- break;
- case 0x80: //DDS="Deslocamento para a Direita com duplicacao de Sinal"
- // Rotate right with signal duplication
- FLAGS &= ~V;
- if (ACC & 1)
- FLAGS |= V;
-
- ACC = (ACC & (1 << 7)) | ACC >> 1;
- break;
- default:
- printf("Illegal instruction: %02X %02X\n", opcode, value);
- return;
- }
- }
- }
- return;
- }
-
- switch (opcode & 0xF0){
- case 0x00:
- //PLA = "Pula": Jump to address
- addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- PC = addr;
- return;
- case 0x10:
- //PLAX = "Pula indexado": Jump to indexed address
- tmp = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- m_idx = READ_INDEX_REG();
- PC = compute_effective_address(m_idx + tmp);
- return;
- case 0x20:
- //ARM = "Armazena": Store the value of the accumulator into a given memory position
- addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- WRITE_BYTE_PATINHO(addr, ACC);
- return;
- case 0x30:
- //ARMX = "Armazena indexado": Store the value of the accumulator into a given indexed memory position
- tmp = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- m_idx = READ_INDEX_REG();
- addr = compute_effective_address(m_idx + tmp);
- WRITE_BYTE_PATINHO(addr, ACC);
- return;
- case 0x40:
- //CAR = "Carrega": Load a value from a given memory position into the accumulator
- addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- ACC = READ_BYTE_PATINHO(addr);
- return;
- case 0x50:
- //CARX = "Carga indexada": Load a value from a given indexed memory position into the accumulator
- tmp = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- m_idx = READ_INDEX_REG();
- addr = compute_effective_address(m_idx + tmp);
- ACC = READ_BYTE_PATINHO(addr);
- return;
- case 0x60:
- //SOM = "Soma": Add a value from a given memory position into the accumulator
- addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- ACC += READ_BYTE_PATINHO(addr);
- //TODO: update V and T flags
- return;
- case 0x70:
- //SOMX = "Soma indexada": Add a value from a given indexed memory position into the accumulator
- tmp = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- m_idx = READ_INDEX_REG();
- addr = compute_effective_address(m_idx + tmp);
- ACC += READ_BYTE_PATINHO(addr);
- //TODO: update V and T flags
- return;
- case 0xA0:
- //PLAN = "Pula se ACC negativo": Jump to a given address if ACC is negative
- addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- if ((signed char) ACC < 0)
- PC = addr;
- return;
- case 0xB0:
- //PLAZ = "Pula se ACC for zero": Jump to a given address if ACC is zero
- addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- if (ACC == 0)
- PC = addr;
- return;
- case 0xC0:
- //Executes I/O functions
- //TODO: Implement-me!
- value = READ_BYTE_PATINHO(PC);
- INCREMENT_PC_4K;
- channel = opcode & 0x0F;
- function = value & 0x0F;
- switch(value & 0xF0){
- case 0x10:
- printf("Unimplemented FNC /%X%X instruction\n", channel, function);
- break;
- case 0x20:
- //SAL="Salta"
- // Skips a couple bytes if a condition is met
- skip = false;
- switch(function)
- {
- case 1:
- if (m_peripherals[channel].io_status == DEVICE_READY)
- skip = true;
- break;
- case 2:
- if (m_peripherals[channel].device_is_ok)
- skip = true;
- break;
- case 4:
- if (m_peripherals[channel].IRQ_request == true)
- skip = true;
- break;
- }
-
- if (skip){
- INCREMENT_PC_4K;
- INCREMENT_PC_4K;
- }
- break;
- case 0x40:
- printf("Unimplemented ENTR /%X0 instruction\n", channel);
- break;
- case 0x80:
- printf("Unimplemented SAI /%X0 instruction (ACC = 0x%02X '%c')\n", channel, ACC, ACC);
- break;
- }
- return;
- case 0xE0:
- //SUS = "Subtrai um ou Salta": Subtract one from the data in the given address
- // or, if the data is zero, then simply skip a couple bytes.
- addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- value = READ_BYTE_PATINHO(addr);
- if (value > 0){
- WRITE_BYTE_PATINHO(addr, value-1);
- } else {
- INCREMENT_PC_4K;
- INCREMENT_PC_4K;
- }
- return;
- case 0xF0:
- //PUG = "Pula e guarda": Jump and store.
- // It stores the return address to addr and addr+1
- // And then jumps to addr+2
- addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
- INCREMENT_PC_4K;
- WRITE_BYTE_PATINHO(addr, (PC >> 8) & 0x0F);
- WRITE_BYTE_PATINHO(addr+1, PC & 0xFF);
- PC = addr+2;
- return;
- }
- printf("unimplemented opcode: 0x%02X\n", opcode);
+ debugger_instruction_hook(this, PC);
+ offs_t addr;
+ bool skip;
+ unsigned int tmp;
+ unsigned char value, channel, function;
+ unsigned char opcode = READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+
+ if (m_scheduled_IND_bit_reset)
+ m_indirect_addressing = false;
+
+ if (m_indirect_addressing)
+ m_scheduled_IND_bit_reset = true;
+
+ switch (opcode){
+ case 0xD2:
+ //XOR: Computes the bitwise XOR of an immediate into the accumulator
+ ACC ^= READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ //TODO: update T and V flags
+ return;
+ case 0xD4:
+ //NAND: Computes the bitwise XOR of an immediate into the accumulator
+ ACC = ~(ACC & READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ //TODO: update T and V flags
+ return;
+ case 0xD8:
+ //SOMI="Soma Imediato":
+ // Add an immediate into the accumulator
+ ACC += READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ //TODO: update T and V flags
+ return;
+ case 0xDA:
+ //CARI="Carrega Imediato":
+ // Load an immediate into the accumulator
+ ACC = READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ return;
+ case 0x80:
+ //LIMPO:
+ // Clear accumulator and flags
+ ACC = 0;
+ FLAGS = 0;
+ return;
+ case 0x81:
+ //UM="One":
+ // Load 1 into accumulator
+ // and clear the flags
+ ACC = 1;
+ FLAGS = 0;
+ return;
+ case 0x82:
+ //CMP1:
+ // Compute One's complement of the accumulator
+ // and clear the flags
+ ACC = ~ACC;
+ FLAGS = 0;
+ return;
+ case 0x83:
+ //CMP2:
+ // Compute Two's complement of the accumulator
+ // and updates flags according to the result of the operation
+ ACC = ~ACC + 1;
+ FLAGS = 0; //TODO: fix-me (I'm not sure yet how to compute the flags here)
+ return;
+ case 0x84:
+ //LIM="Limpa":
+ // Clear flags
+ FLAGS = 0;
+ return;
+ case 0x85:
+ //INC:
+ // Increment accumulator
+ ACC++;
+ FLAGS = 0; //TODO: fix-me (I'm not sure yet how to compute the flags here)
+ return;
+ case 0x86:
+ //UNEG="Um Negativo":
+ // Load -1 into accumulator and clear flags
+ ACC = -1;
+ FLAGS = 0;
+ return;
+ case 0x87:
+ //LIMP1:
+ // Clear accumulator, reset T and set V
+ ACC = 0;
+ FLAGS = V;
+ return;
+ case 0x88:
+ //PNL 0:
+ ACC = (RC & 0xFF);
+ FLAGS = 0;
+ return;
+ case 0x89:
+ //PNL 1:
+ ACC = (RC & 0xFF) + 1;
+ //TODO: FLAGS = ?;
+ return;
+ case 0x8A:
+ //PNL 2:
+ ACC = (RC & 0xFF) - ACC - 1;
+ //TODO: FLAGS = ?;
+ return;
+ case 0x8B:
+ //PNL 3:
+ ACC = (RC & 0xFF) - ACC;
+ //TODO: FLAGS = ?;
+ return;
+ case 0x8C:
+ //PNL 4:
+ ACC = (RC & 0xFF) + ACC;
+ //TODO: FLAGS = ?;
+ return;
+ case 0x8D:
+ //PNL 5:
+ ACC = (RC & 0xFF) + ACC + 1;
+ //TODO: FLAGS = ?;
+ return;
+ case 0x8E:
+ //PNL 6:
+ ACC = (RC & 0xFF) - 1;
+ //TODO: FLAGS = ?;
+ return;
+ case 0x8F:
+ //PNL 7:
+ ACC = (RC & 0xFF);
+ FLAGS = V;
+ return;
+ case 0x9A:
+ //INIB="Inibe"
+ // disables interrupts
+ m_interrupts_enabled = false;
+ return;
+ case 0x9B:
+ //PERM="Permite"
+ // enables interrupts
+ m_interrupts_enabled = true;
+ return;
+ case 0x9C:
+ //ESP="Espera":
+ // Holds execution and waits for an interrupt to occur.
+ m_run = false;
+ m_wait_for_interrupt = true;
+ return;
+ case 0x9D:
+ //PARE="Pare":
+ // Holds execution. This can only be recovered by
+ // manually triggering execution again by
+ // pressing the "Partida" (start) button in the panel
+ m_run = false;
+ m_wait_for_interrupt = false;
+ return;
+ case 0x9E:
+ //TRI="Troca com Indexador":
+ // Exchange the value of the accumulator with the index register
+ value = ACC;
+ ACC = READ_INDEX_REG();
+ WRITE_INDEX_REG(value);
+ return;
+ case 0x9F:
+ //IND="Enderecamento indireto":
+ // Sets memory addressing for the next instruction to be indirect.
+ m_indirect_addressing = true;
+ m_scheduled_IND_bit_reset = false; //the next instruction execution will schedule it.
+ return;
+ case 0xD1:
+ //Bit-Shift/Bit-Rotate instructions
+ value = READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ for (int i=0; i<4; i++){
+ if (value & (1<<i)){
+ /* The number of shifts or rotations is determined by the
+ ammount of 1 bits in the lower 4 bits of 'value' */
+ switch(value & 0xF0)
+ {
+ case 0x00:
+ //DD="Deslocamento para a Direita"
+ // Shift right
+ FLAGS &= ~V;
+ if (ACC & 1)
+ FLAGS |= V;
+
+ ACC >>= 1;
+ break;
+ case 0x20:
+ //GD="Giro para a Direita"
+ // Rotate right
+ FLAGS &= ~V;
+ if (ACC & 1)
+ FLAGS |= V;
+
+ ACC = ((ACC & 1) << 7) | (ACC >> 1);
+ break;
+ case 0x10: //DDV="Deslocamento para a Direita com Vai-um"
+ // Shift right with Carry
+ case 0x30: //GDV="Giro para a Direita com Vai-um"
+ // Rotate right with Carry
+
+ //both instructions are equivalent
+ if (FLAGS & V)
+ tmp = 0x100 | ACC;
+ else
+ tmp = ACC;
+
+ FLAGS &= ~V;
+ if (ACC & 1)
+ FLAGS |= V;
+
+ ACC = tmp >> 1;
+ break;
+ case 0x40: //DE="Deslocamento para a Esquerda"
+ // Shift left
+ FLAGS &= ~V;
+ if (ACC & (1<<7))
+ FLAGS |= V;
+
+ ACC <<= 1;
+ break;
+ case 0x60: //GE="Giro para a Esquerda"
+ // Rotate left
+ FLAGS &= ~V;
+ if (ACC & (1<<7))
+ FLAGS |= V;
+
+ ACC = (ACC << 1) | ((ACC >> 7) & 1);
+ break;
+ case 0x50: //DEV="Deslocamento para a Esquerda com Vai-um"
+ // Shift left with Carry
+ case 0x70: //GEV="Giro para a Esquerda com Vai-um"
+ // Rotate left with Carry
+
+ //both instructions are equivalent
+ if (FLAGS & V)
+ tmp = (ACC << 1) | 1;
+ else
+ tmp = (ACC << 1);
+
+ FLAGS &= ~V;
+ if (tmp & (1<<8))
+ FLAGS |= V;
+
+ ACC = tmp & 0xFF;
+ break;
+ case 0x80: //DDS="Deslocamento para a Direita com duplicacao de Sinal"
+ // Rotate right with signal duplication
+ FLAGS &= ~V;
+ if (ACC & 1)
+ FLAGS |= V;
+
+ ACC = (ACC & (1 << 7)) | ACC >> 1;
+ break;
+ default:
+ printf("Illegal instruction: %02X %02X\n", opcode, value);
+ return;
+ }
+ }
+ }
+ return;
+ }
+
+ switch (opcode & 0xF0){
+ case 0x00:
+ //PLA = "Pula": Jump to address
+ addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ PC = addr;
+ return;
+ case 0x10:
+ //PLAX = "Pula indexado": Jump to indexed address
+ tmp = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ m_idx = READ_INDEX_REG();
+ PC = compute_effective_address(m_idx + tmp);
+ return;
+ case 0x20:
+ //ARM = "Armazena": Store the value of the accumulator into a given memory position
+ addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ WRITE_BYTE_PATINHO(addr, ACC);
+ return;
+ case 0x30:
+ //ARMX = "Armazena indexado": Store the value of the accumulator into a given indexed memory position
+ tmp = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ m_idx = READ_INDEX_REG();
+ addr = compute_effective_address(m_idx + tmp);
+ WRITE_BYTE_PATINHO(addr, ACC);
+ return;
+ case 0x40:
+ //CAR = "Carrega": Load a value from a given memory position into the accumulator
+ addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ ACC = READ_BYTE_PATINHO(addr);
+ return;
+ case 0x50:
+ //CARX = "Carga indexada": Load a value from a given indexed memory position into the accumulator
+ tmp = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ m_idx = READ_INDEX_REG();
+ addr = compute_effective_address(m_idx + tmp);
+ ACC = READ_BYTE_PATINHO(addr);
+ return;
+ case 0x60:
+ //SOM = "Soma": Add a value from a given memory position into the accumulator
+ addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ ACC += READ_BYTE_PATINHO(addr);
+ //TODO: update V and T flags
+ return;
+ case 0x70:
+ //SOMX = "Soma indexada": Add a value from a given indexed memory position into the accumulator
+ tmp = (opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ m_idx = READ_INDEX_REG();
+ addr = compute_effective_address(m_idx + tmp);
+ ACC += READ_BYTE_PATINHO(addr);
+ //TODO: update V and T flags
+ return;
+ case 0xA0:
+ //PLAN = "Pula se ACC negativo": Jump to a given address if ACC is negative
+ addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ if ((signed char) ACC < 0)
+ PC = addr;
+ return;
+ case 0xB0:
+ //PLAZ = "Pula se ACC for zero": Jump to a given address if ACC is zero
+ addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ if (ACC == 0)
+ PC = addr;
+ return;
+ case 0xC0:
+ //Executes I/O functions
+ //TODO: Implement-me!
+ value = READ_BYTE_PATINHO(PC);
+ INCREMENT_PC_4K;
+ channel = opcode & 0x0F;
+ function = value & 0x0F;
+ switch(value & 0xF0){
+ case 0x10:
+ printf("Unimplemented FNC /%X%X instruction\n", channel, function);
+ break;
+ case 0x20:
+ //SAL="Salta"
+ // Skips a couple bytes if a condition is met
+ skip = false;
+ switch(function)
+ {
+ case 1:
+ if (m_peripherals[channel].io_status == DEVICE_READY)
+ skip = true;
+ break;
+ case 2:
+ if (m_peripherals[channel].device_is_ok)
+ skip = true;
+ break;
+ case 4:
+ if (m_peripherals[channel].IRQ_request == true)
+ skip = true;
+ break;
+ }
+
+ if (skip){
+ INCREMENT_PC_4K;
+ INCREMENT_PC_4K;
+ }
+ break;
+ case 0x40:
+ printf("Unimplemented ENTR /%X0 instruction\n", channel);
+ break;
+ case 0x80:
+ printf("Unimplemented SAI /%X0 instruction (ACC = 0x%02X '%c')\n", channel, ACC, ACC);
+ break;
+ }
+ return;
+ case 0xE0:
+ //SUS = "Subtrai um ou Salta": Subtract one from the data in the given address
+ // or, if the data is zero, then simply skip a couple bytes.
+ addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ value = READ_BYTE_PATINHO(addr);
+ if (value > 0){
+ WRITE_BYTE_PATINHO(addr, value-1);
+ } else {
+ INCREMENT_PC_4K;
+ INCREMENT_PC_4K;
+ }
+ return;
+ case 0xF0:
+ //PUG = "Pula e guarda": Jump and store.
+ // It stores the return address to addr and addr+1
+ // And then jumps to addr+2
+ addr = compute_effective_address((opcode & 0x0F) << 8 | READ_BYTE_PATINHO(PC));
+ INCREMENT_PC_4K;
+ WRITE_BYTE_PATINHO(addr, (PC >> 8) & 0x0F);
+ WRITE_BYTE_PATINHO(addr+1, PC & 0xFF);
+ PC = addr+2;
+ return;
+ }
+ printf("unimplemented opcode: 0x%02X\n", opcode);
}
offs_t patinho_feio_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
{
- extern CPU_DISASSEMBLE( patinho_feio );
- return CPU_DISASSEMBLE_NAME(patinho_feio)(this, buffer, pc, oprom, opram, options);
+ extern CPU_DISASSEMBLE( patinho_feio );
+ return CPU_DISASSEMBLE_NAME(patinho_feio)(this, buffer, pc, oprom, opram, options);
}
-
diff --git a/src/devices/cpu/patinhofeio/patinho_feio.h b/src/devices/cpu/patinhofeio/patinho_feio.h
index 030077ea78e..df80799d592 100644
--- a/src/devices/cpu/patinhofeio/patinho_feio.h
+++ b/src/devices/cpu/patinhofeio/patinho_feio.h
@@ -6,99 +6,99 @@
#define __PATINHOFEIO_H__
#define MCFG_PATINHO_RC_READ_CB(_devcb) \
- devcb = &patinho_feio_cpu_device::set_rc_read_callback(*device, DEVCB_##_devcb);
+ devcb = &patinho_feio_cpu_device::set_rc_read_callback(*device, DEVCB_##_devcb);
/* register IDs */
enum
{
- PATINHO_FEIO_CI=1, PATINHO_FEIO_ACC, PATINHO_FEIO_IDX, PATINHO_FEIO_RC
+ PATINHO_FEIO_CI=1, PATINHO_FEIO_ACC, PATINHO_FEIO_IDX, PATINHO_FEIO_RC
};
enum {
- DEVICE_BUSY=0,
- DEVICE_READY=1
+ DEVICE_BUSY=0,
+ DEVICE_READY=1
};
class patinho_feio_peripheral
{
public:
- patinho_feio_peripheral()
- : io_status(DEVICE_READY)
- , device_is_ok(true)
- , IRQ_request(false)
- { };
-
- int io_status;
- bool device_is_ok;
- bool IRQ_request;
+ patinho_feio_peripheral()
+ : io_status(DEVICE_READY)
+ , device_is_ok(true)
+ , IRQ_request(false)
+ { };
+
+ int io_status;
+ bool device_is_ok;
+ bool IRQ_request;
};
class patinho_feio_cpu_device : public cpu_device
{
public:
- // construction/destruction
- patinho_feio_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, UINT32 _clock);
+ // construction/destruction
+ patinho_feio_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, UINT32 _clock);
- template<class _Object> static devcb_base &set_rc_read_callback(device_t &device, _Object object) { return downcast<patinho_feio_cpu_device &>(device).m_rc_read_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_rc_read_callback(device_t &device, _Object object) { return downcast<patinho_feio_cpu_device &>(device).m_rc_read_cb.set_callback(object); }
protected:
-
- virtual void execute_run() override;
- virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
- address_space_config m_program_config;
+ virtual void execute_run() override;
+ virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
- /* processor registers */
- unsigned char m_acc; /* accumulator (8 bits) */
- unsigned int m_pc; /* program counter (12 bits)
+ address_space_config m_program_config;
+
+ /* processor registers */
+ unsigned char m_acc; /* accumulator (8 bits) */
+ unsigned int m_pc; /* program counter (12 bits)
* Actual register name is CI, which
* stands for "Contador de Instrucao"
* or "instructions counter".
*/
- unsigned int m_rc; /* RC = "Registrador de Chaves" (Keys Register)
+ unsigned int m_rc; /* RC = "Registrador de Chaves" (Keys Register)
* It represents the 12 bits of input data
* from toggle switches in the computer panel
*/
- unsigned char m_idx;
+ unsigned char m_idx;
+
+ /* processor state flip-flops */
+ bool m_run; /* processor is running */
+ bool m_wait_for_interrupt;
+ bool m_interrupts_enabled;
+ bool m_scheduled_IND_bit_reset;
+ bool m_indirect_addressing;
- /* processor state flip-flops */
- bool m_run; /* processor is running */
- bool m_wait_for_interrupt;
- bool m_interrupts_enabled;
- bool m_scheduled_IND_bit_reset;
- bool m_indirect_addressing;
+ int m_flags;
+ // V = "Vai um" (Carry flag)
+ // T = "Transbordo" (Overflow flag)
- int m_flags;
- // V = "Vai um" (Carry flag)
- // T = "Transbordo" (Overflow flag)
-
- patinho_feio_peripheral m_peripherals[16];
+ patinho_feio_peripheral m_peripherals[16];
- int m_address_mask; /* address mask */
- int m_icount;
+ int m_address_mask; /* address mask */
+ int m_icount;
- address_space *m_program;
+ address_space *m_program;
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ // 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 1; }
- virtual UINT32 execute_max_cycles() const override { return 2; }
+ // device_execute_interface overrides
+ virtual UINT32 execute_min_cycles() const override { return 1; }
+ virtual UINT32 execute_max_cycles() const override { return 2; }
- // 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 : NULL; }
+ // 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 : NULL; }
- // device_disasm_interface overrides
- virtual UINT32 disasm_min_opcode_bytes() const override { return 1; }
- virtual UINT32 disasm_max_opcode_bytes() const override { return 2; }
+ // device_disasm_interface overrides
+ virtual UINT32 disasm_min_opcode_bytes() const override { return 1; }
+ virtual UINT32 disasm_max_opcode_bytes() const override { return 2; }
private:
- void execute_instruction();
- unsigned int compute_effective_address(unsigned int addr);
- UINT16 read_panel_keys_register();
- devcb_read16 m_rc_read_cb;
+ void execute_instruction();
+ unsigned int compute_effective_address(unsigned int addr);
+ UINT16 read_panel_keys_register();
+ devcb_read16 m_rc_read_cb;
};
diff --git a/src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp b/src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp
index ac78ef4be73..f2f2899af6e 100644
--- a/src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp
+++ b/src/devices/cpu/patinhofeio/patinho_feio_dasm.cpp
@@ -5,161 +5,161 @@
CPU_DISASSEMBLE( patinho_feio )
{
- int addr, value, n, f;
+ int addr, value, n, f;
- switch (oprom[0] & 0xF0)
- {
- case 0x00:
- //PLA = "Pula": Unconditionally JUMP to effective address
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "PLA /%03X", addr);
- return 2;
- case 0x10:
- //PLAX = "Pulo indexado": Unconditionally JUMP to indexed address
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "PLAX (IDX) + /%03X", addr);
- return 2;
- case 0x20:
- //ARM = "Armazena": Stores the contents of the
- // accumulator in the given 12bit address
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- if (addr==0){
- sprintf (buffer, "ARM (IDX)");
- }else{
- sprintf (buffer, "ARM /%03X", addr);
- }
- return 2;
- case 0x30:
- //ARMX = "Armazenamento indexado": Stores the contents of the accumulator in the
- // given 12bit address (indexed by IDX)
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "ARMX (IDX) + /%03X", addr);
- return 2;
- case 0x40:
- //CAR = "Carrega": Loads the contents of the given 12bit address
- // into the accumulator
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- if (addr==0){
- sprintf (buffer, "CAR (IDX)");
- }else{
- sprintf (buffer, "CAR /%03X", addr);
- }
- return 2;
- case 0x50:
- //CARX = "Carga indexada": Loads the contents of the given 12bit address
- // (indexed by IDX) into the accumulator
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "CARX (IDX) + /%03X", addr);
- return 2;
- case 0x60:
- //SOM = "Soma": Adds the contents of the given 12bit address
- // into the accumulator
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "SOM /%03X", addr);
- return 2;
- case 0x70:
- //SOMX = "Soma indexada": Adds the contents of the given 12bit address
- // (indexed by IDX) into the accumulator
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "SOMX (IDX) + /%03X", addr);
- return 2;
- case 0xA0:
- //PLAN = "Pula se ACC for negativo": Jumps to the 12bit address
- // if the accumulator is negative
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "PLAN /%03X", addr);
- return 2;
- case 0xB0:
- //PLAZ = "Pula se ACC for zero": Jumps to the 12bit address
- // if the accumulator is zero
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "PLAZ /%03X", addr);
- return 2;
- case 0xC0:
- n = (oprom[0] & 0x0F);
- f = (oprom[1] & 0x0F);
- n+= (n < 10) ? '0' : 'A'-10;
- f+= (f < 10) ? '0' : 'A'-10;
- switch(oprom[1] & 0xF0)
- {
- case 0x10: sprintf (buffer, "FNC /%c%c", n, f); return 2;
- case 0x20: sprintf (buffer, "SAL /%c%c", n, f); return 2;
- case 0x40: sprintf (buffer, "ENTR /%c0", n); return 2;
- case 0x80: sprintf (buffer, "SAI /%c0", n); return 2;
- }
- break;
- case 0xD0:
- value = oprom[1] & 0x0F;
- switch (oprom[0] & 0x0F)
- {
- case 0x01:
- switch (oprom[1] & 0xF0)
- {
- case 0x00: sprintf (buffer, "DD /%01X", value); return 2; //DD = "Deslocamento para a direita": Shift right
- case 0x10: sprintf (buffer, "DDV /%01X", value); return 2; //DDV = "Deslocamento para a direita c/ V": Shift right with carry
- case 0x20: sprintf (buffer, "GD /%01X", value); return 2; //GD = "Giro para a direita": Rotate right
- case 0x30: sprintf (buffer, "GDV /%01X", value); return 2; //GDV = "Giro para a direita c/ V": Rotate right with carry
- case 0x40: sprintf (buffer, "DE /%01X", value); return 2; //DE = "Deslocamento para a esquerda": Shift right
- case 0x50: sprintf (buffer, "DEV /%01X", value); return 2; //DEV = "Deslocamento para a esquerda c/ V": Shift right with carry
- case 0x60: sprintf (buffer, "GE /%01X", value); return 2; //GE = "Giro para a esquerda": Rotate right
- case 0x70: sprintf (buffer, "GEV /%01X", value); return 2; //GEV = "Giro para a esquerda c/ V": Rotate right with carry
- case 0x80: sprintf (buffer, "DDS /%01X", value); return 2; //DDS = "Deslocamento para a direita com duplicacao de sinal": Shift right with sign duplication
- }
- break;
- case 0x02: sprintf (buffer, "XOR /%02X", oprom[1]); return 2; //Logical XOR
- case 0x04: sprintf (buffer, "NAND /%02X", oprom[1]); return 2; //Logical NAND
- case 0x08: sprintf (buffer, "SOMI /%02X", oprom[1]); return 2; //SOMI = "Soma imediata": Add immediate value into accumulator
- case 0x0A: sprintf (buffer, "CARI /%02X", oprom[1]); return 2; //CARI = "Carrega imediato": Loads an immediate value into the accumulator
- }
- break;
- case 0xE0:
- //SUS = "Subtrai um ou salta"
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "SUS /%03X", addr);
- return 2;
- case 0xF0:
- //PUG = "Pula e guarda"
- addr = (oprom[0] & 0x0F) << 8 | oprom[1];
- sprintf (buffer, "PUG /%03X", addr);
- return 2;
- }
+ switch (oprom[0] & 0xF0)
+ {
+ case 0x00:
+ //PLA = "Pula": Unconditionally JUMP to effective address
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "PLA /%03X", addr);
+ return 2;
+ case 0x10:
+ //PLAX = "Pulo indexado": Unconditionally JUMP to indexed address
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "PLAX (IDX) + /%03X", addr);
+ return 2;
+ case 0x20:
+ //ARM = "Armazena": Stores the contents of the
+ // accumulator in the given 12bit address
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ if (addr==0){
+ sprintf (buffer, "ARM (IDX)");
+ }else{
+ sprintf (buffer, "ARM /%03X", addr);
+ }
+ return 2;
+ case 0x30:
+ //ARMX = "Armazenamento indexado": Stores the contents of the accumulator in the
+ // given 12bit address (indexed by IDX)
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "ARMX (IDX) + /%03X", addr);
+ return 2;
+ case 0x40:
+ //CAR = "Carrega": Loads the contents of the given 12bit address
+ // into the accumulator
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ if (addr==0){
+ sprintf (buffer, "CAR (IDX)");
+ }else{
+ sprintf (buffer, "CAR /%03X", addr);
+ }
+ return 2;
+ case 0x50:
+ //CARX = "Carga indexada": Loads the contents of the given 12bit address
+ // (indexed by IDX) into the accumulator
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "CARX (IDX) + /%03X", addr);
+ return 2;
+ case 0x60:
+ //SOM = "Soma": Adds the contents of the given 12bit address
+ // into the accumulator
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "SOM /%03X", addr);
+ return 2;
+ case 0x70:
+ //SOMX = "Soma indexada": Adds the contents of the given 12bit address
+ // (indexed by IDX) into the accumulator
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "SOMX (IDX) + /%03X", addr);
+ return 2;
+ case 0xA0:
+ //PLAN = "Pula se ACC for negativo": Jumps to the 12bit address
+ // if the accumulator is negative
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "PLAN /%03X", addr);
+ return 2;
+ case 0xB0:
+ //PLAZ = "Pula se ACC for zero": Jumps to the 12bit address
+ // if the accumulator is zero
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "PLAZ /%03X", addr);
+ return 2;
+ case 0xC0:
+ n = (oprom[0] & 0x0F);
+ f = (oprom[1] & 0x0F);
+ n+= (n < 10) ? '0' : 'A'-10;
+ f+= (f < 10) ? '0' : 'A'-10;
+ switch(oprom[1] & 0xF0)
+ {
+ case 0x10: sprintf (buffer, "FNC /%c%c", n, f); return 2;
+ case 0x20: sprintf (buffer, "SAL /%c%c", n, f); return 2;
+ case 0x40: sprintf (buffer, "ENTR /%c0", n); return 2;
+ case 0x80: sprintf (buffer, "SAI /%c0", n); return 2;
+ }
+ break;
+ case 0xD0:
+ value = oprom[1] & 0x0F;
+ switch (oprom[0] & 0x0F)
+ {
+ case 0x01:
+ switch (oprom[1] & 0xF0)
+ {
+ case 0x00: sprintf (buffer, "DD /%01X", value); return 2; //DD = "Deslocamento para a direita": Shift right
+ case 0x10: sprintf (buffer, "DDV /%01X", value); return 2; //DDV = "Deslocamento para a direita c/ V": Shift right with carry
+ case 0x20: sprintf (buffer, "GD /%01X", value); return 2; //GD = "Giro para a direita": Rotate right
+ case 0x30: sprintf (buffer, "GDV /%01X", value); return 2; //GDV = "Giro para a direita c/ V": Rotate right with carry
+ case 0x40: sprintf (buffer, "DE /%01X", value); return 2; //DE = "Deslocamento para a esquerda": Shift right
+ case 0x50: sprintf (buffer, "DEV /%01X", value); return 2; //DEV = "Deslocamento para a esquerda c/ V": Shift right with carry
+ case 0x60: sprintf (buffer, "GE /%01X", value); return 2; //GE = "Giro para a esquerda": Rotate right
+ case 0x70: sprintf (buffer, "GEV /%01X", value); return 2; //GEV = "Giro para a esquerda c/ V": Rotate right with carry
+ case 0x80: sprintf (buffer, "DDS /%01X", value); return 2; //DDS = "Deslocamento para a direita com duplicacao de sinal": Shift right with sign duplication
+ }
+ break;
+ case 0x02: sprintf (buffer, "XOR /%02X", oprom[1]); return 2; //Logical XOR
+ case 0x04: sprintf (buffer, "NAND /%02X", oprom[1]); return 2; //Logical NAND
+ case 0x08: sprintf (buffer, "SOMI /%02X", oprom[1]); return 2; //SOMI = "Soma imediata": Add immediate value into accumulator
+ case 0x0A: sprintf (buffer, "CARI /%02X", oprom[1]); return 2; //CARI = "Carrega imediato": Loads an immediate value into the accumulator
+ }
+ break;
+ case 0xE0:
+ //SUS = "Subtrai um ou salta"
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "SUS /%03X", addr);
+ return 2;
+ case 0xF0:
+ //PUG = "Pula e guarda"
+ addr = (oprom[0] & 0x0F) << 8 | oprom[1];
+ sprintf (buffer, "PUG /%03X", addr);
+ return 2;
+ }
- switch (oprom[0])
- {
- case 0x80: sprintf (buffer, "LIMPO"); return 1;
- case 0x81: sprintf (buffer, "UM"); return 1;
- case 0x82: sprintf (buffer, "CMP1"); return 1;
- case 0x83: sprintf (buffer, "CMP2"); return 1;
- case 0x84: sprintf (buffer, "LIN"); return 1;
- case 0x85: sprintf (buffer, "INC"); return 1;
- case 0x86: sprintf (buffer, "UNEG"); return 1;
- case 0x87: sprintf (buffer, "LIMP1"); return 1;
- case 0x88: sprintf (buffer, "PNL 0"); return 1;
- case 0x89: sprintf (buffer, "PNL 1"); return 1;
- case 0x8A: sprintf (buffer, "PNL 2"); return 1;
- case 0x8B: sprintf (buffer, "PNL 3"); return 1;
- case 0x8C: sprintf (buffer, "PNL 4"); return 1;
- case 0x8D: sprintf (buffer, "PNL 5"); return 1;
- case 0x8E: sprintf (buffer, "PNL 6"); return 1;
- case 0x8F: sprintf (buffer, "PNL 7"); return 1;
- case 0x90: sprintf (buffer, "ST 0"); return 1;
- case 0x91: sprintf (buffer, "STM 0"); return 1;
- case 0x92: sprintf (buffer, "ST 1"); return 1;
- case 0x93: sprintf (buffer, "STM 1"); return 1;
- case 0x94: sprintf (buffer, "SV 0"); return 1;
- case 0x95: sprintf (buffer, "SVM 0"); return 1;
- case 0x96: sprintf (buffer, "SV 1"); return 1;
- case 0x97: sprintf (buffer, "SVM 1"); return 1;
- case 0x98: sprintf (buffer, "PUL"); return 1;
- case 0x99: sprintf (buffer, "TRE"); return 1;
- case 0x9A: sprintf (buffer, "INIB"); return 1;
- case 0x9B: sprintf (buffer, "PERM"); return 1;
- case 0x9C: sprintf (buffer, "ESP"); return 1;
- case 0x9D: sprintf (buffer, "PARE"); return 1;
- case 0x9E: sprintf (buffer, "TRI"); return 1;
- case 0x9F: sprintf (buffer, "IND"); return 1;
- }
+ switch (oprom[0])
+ {
+ case 0x80: sprintf (buffer, "LIMPO"); return 1;
+ case 0x81: sprintf (buffer, "UM"); return 1;
+ case 0x82: sprintf (buffer, "CMP1"); return 1;
+ case 0x83: sprintf (buffer, "CMP2"); return 1;
+ case 0x84: sprintf (buffer, "LIN"); return 1;
+ case 0x85: sprintf (buffer, "INC"); return 1;
+ case 0x86: sprintf (buffer, "UNEG"); return 1;
+ case 0x87: sprintf (buffer, "LIMP1"); return 1;
+ case 0x88: sprintf (buffer, "PNL 0"); return 1;
+ case 0x89: sprintf (buffer, "PNL 1"); return 1;
+ case 0x8A: sprintf (buffer, "PNL 2"); return 1;
+ case 0x8B: sprintf (buffer, "PNL 3"); return 1;
+ case 0x8C: sprintf (buffer, "PNL 4"); return 1;
+ case 0x8D: sprintf (buffer, "PNL 5"); return 1;
+ case 0x8E: sprintf (buffer, "PNL 6"); return 1;
+ case 0x8F: sprintf (buffer, "PNL 7"); return 1;
+ case 0x90: sprintf (buffer, "ST 0"); return 1;
+ case 0x91: sprintf (buffer, "STM 0"); return 1;
+ case 0x92: sprintf (buffer, "ST 1"); return 1;
+ case 0x93: sprintf (buffer, "STM 1"); return 1;
+ case 0x94: sprintf (buffer, "SV 0"); return 1;
+ case 0x95: sprintf (buffer, "SVM 0"); return 1;
+ case 0x96: sprintf (buffer, "SV 1"); return 1;
+ case 0x97: sprintf (buffer, "SVM 1"); return 1;
+ case 0x98: sprintf (buffer, "PUL"); return 1;
+ case 0x99: sprintf (buffer, "TRE"); return 1;
+ case 0x9A: sprintf (buffer, "INIB"); return 1;
+ case 0x9B: sprintf (buffer, "PERM"); return 1;
+ case 0x9C: sprintf (buffer, "ESP"); return 1;
+ case 0x9D: sprintf (buffer, "PARE"); return 1;
+ case 0x9E: sprintf (buffer, "TRI"); return 1;
+ case 0x9F: sprintf (buffer, "IND"); return 1;
+ }
- sprintf (buffer, "illegal instruction");
- return 1;
+ sprintf (buffer, "illegal instruction");
+ return 1;
}
diff --git a/src/devices/cpu/pdp1/pdp1.cpp b/src/devices/cpu/pdp1/pdp1.cpp
index b36e7242967..cbb43535d7f 100644
--- a/src/devices/cpu/pdp1/pdp1.cpp
+++ b/src/devices/cpu/pdp1/pdp1.cpp
@@ -737,7 +737,7 @@ void pdp1_device::state_export(const device_state_entry &entry)
}
-void pdp1_device::state_string_export(const device_state_entry &entry, std::string &str)
+void pdp1_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/pdp1/pdp1.h b/src/devices/cpu/pdp1/pdp1.h
index 9f421716366..2cb01f5c20b 100644
--- a/src/devices/cpu/pdp1/pdp1.h
+++ b/src/devices/cpu/pdp1/pdp1.h
@@ -107,7 +107,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
diff --git a/src/devices/cpu/pdp8/pdp8.cpp b/src/devices/cpu/pdp8/pdp8.cpp
index 1ed24effe12..2679c7e9205 100644
--- a/src/devices/cpu/pdp8/pdp8.cpp
+++ b/src/devices/cpu/pdp8/pdp8.cpp
@@ -72,7 +72,6 @@ void pdp8_device::device_start()
m_program = &space(AS_PROGRAM);
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", m_pc).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_l).callimport().callexport().formatstr("%1s").noshow();
state_add(PDP8_PC, "PC", m_pc).mask(0xfff);
@@ -136,7 +135,7 @@ const address_space_config *pdp8_device::memory_space_config(address_spacenum sp
// for the debugger
//-------------------------------------------------
-void pdp8_device::state_string_export(const device_state_entry &entry, std::string &str)
+void pdp8_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/pdp8/pdp8.h b/src/devices/cpu/pdp8/pdp8.h
index 70393e3f0bf..66f04682d7e 100644
--- a/src/devices/cpu/pdp8/pdp8.h
+++ b/src/devices/cpu/pdp8/pdp8.h
@@ -45,7 +45,7 @@ public:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// address spaces
const address_space_config m_program_config;
diff --git a/src/devices/cpu/pic16c5x/pic16c5x.cpp b/src/devices/cpu/pic16c5x/pic16c5x.cpp
index 3acd46944f7..c568b27b4c7 100644
--- a/src/devices/cpu/pic16c5x/pic16c5x.cpp
+++ b/src/devices/cpu/pic16c5x/pic16c5x.cpp
@@ -923,7 +923,7 @@ void pic16c5x_device::state_export(const device_state_entry &entry)
}
}
-void pic16c5x_device::state_string_export(const device_state_entry &entry, std::string &str)
+void pic16c5x_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h
index 0e34f97178f..c3d2480fd86 100644
--- a/src/devices/cpu/pic16c5x/pic16c5x.h
+++ b/src/devices/cpu/pic16c5x/pic16c5x.h
@@ -117,7 +117,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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; }
diff --git a/src/devices/cpu/pic16c62x/pic16c62x.cpp b/src/devices/cpu/pic16c62x/pic16c62x.cpp
index 2bbbd9f3439..9fb6e2324ab 100644
--- a/src/devices/cpu/pic16c62x/pic16c62x.cpp
+++ b/src/devices/cpu/pic16c62x/pic16c62x.cpp
@@ -990,7 +990,7 @@ void pic16c62x_device::state_export(const device_state_entry &entry)
}
}
-void pic16c62x_device::state_string_export(const device_state_entry &entry, std::string &str)
+void pic16c62x_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/pic16c62x/pic16c62x.h b/src/devices/cpu/pic16c62x/pic16c62x.h
index c373bd64ec2..7e8af51ca40 100644
--- a/src/devices/cpu/pic16c62x/pic16c62x.h
+++ b/src/devices/cpu/pic16c62x/pic16c62x.h
@@ -56,15 +56,6 @@ class pic16c62x_device : public cpu_device
public:
// construction/destruction
pic16c62x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, int program_width, int picmodel);
-
- /****************************************************************************
- * Function to configure the CONFIG register. This is actually hard-wired
- * during ROM programming, so should be called in the driver INIT, with
- * the value if known (available in HEX dumps of the ROM).
- */
-
- void pic16c62x_set_config(device_t *cpu, int data);
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -88,7 +79,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h
index 3a0e9b9b2f3..5e40ee88249 100644
--- a/src/devices/cpu/powerpc/ppc.h
+++ b/src/devices/cpu/powerpc/ppc.h
@@ -264,7 +264,7 @@ protected:
// device_state_interface overrides
virtual void state_export(const device_state_entry &entry) override;
virtual void state_import(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
@@ -537,8 +537,8 @@ protected:
/* core state */
drc_cache m_cache; /* pointer to the DRC code cache */
- drcuml_state * m_drcuml; /* DRC UML generator state */
- ppc_frontend * m_drcfe; /* pointer to the DRC front-end state */
+ std::unique_ptr<drcuml_state> m_drcuml; /* DRC UML generator state */
+ std::unique_ptr<ppc_frontend> m_drcfe; /* pointer to the DRC front-end state */
UINT32 m_drcoptions; /* configurable DRC options */
/* parameters for subroutines */
@@ -620,9 +620,6 @@ protected:
uml::code_label labelnum; /* index for local labels */
};
- int IS_PPC602(void);
- int IS_PPC603(void);
- int IS_PPC403(void);
UINT32 get_cr();
void set_cr(UINT32 value);
UINT32 get_xer();
diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp
index 6c8d4397206..9036ff2c794 100644
--- a/src/devices/cpu/powerpc/ppccom.cpp
+++ b/src/devices/cpu/powerpc/ppccom.cpp
@@ -882,7 +882,7 @@ void ppc_device::device_start()
UINT32 flags = 0;
/* initialize the UML generator */
- m_drcuml = auto_alloc(machine(), drcuml_state(*this, m_cache, flags, 8, 32, 2));
+ m_drcuml = std::make_unique<drcuml_state>(*this, m_cache, flags, 8, 32, 2);
/* add symbols for our stuff */
m_drcuml->symbol_add(&m_core->pc, sizeof(m_core->pc), "pc");
@@ -928,7 +928,7 @@ void ppc_device::device_start()
m_drcuml->symbol_add(&m_fcmp_cr_table, sizeof(m_fcmp_cr_table), "fcmp_cr_table");
/* initialize the front-end helper */
- m_drcfe = auto_alloc(machine(), ppc_frontend(this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE));
+ m_drcfe = std::make_unique<ppc_frontend>(this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE);
/* compute the register parameters */
for (int regnum = 0; regnum < 32; regnum++)
@@ -1007,7 +1007,7 @@ void ppc_device::state_import(const device_state_entry &entry)
}
-void ppc_device::state_string_export(const device_state_entry &entry, std::string &str)
+void ppc_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -1151,10 +1151,6 @@ void ppc_device::device_stop()
if (m_vtlb != nullptr)
vtlb_free(m_vtlb);
m_vtlb = nullptr;
-
- /* clean up the DRC */
- auto_free(machine(), m_drcfe);
- auto_free(machine(), m_drcuml);
}
@@ -1520,7 +1516,7 @@ void ppc_device::ppccom_execute_tlbl()
{
UINT32 address = m_core->param0;
int isitlb = m_core->param1;
- vtlb_entry flags = 0;
+ vtlb_entry flags;
int entrynum;
/* determine entry number; we use rand() for associativity */
diff --git a/src/devices/cpu/powerpc/ppcdrc.cpp b/src/devices/cpu/powerpc/ppcdrc.cpp
index 57b6290a191..ed502d344de 100644
--- a/src/devices/cpu/powerpc/ppcdrc.cpp
+++ b/src/devices/cpu/powerpc/ppcdrc.cpp
@@ -369,7 +369,7 @@ void ppc_device::code_compile_block(UINT8 mode, offs_t pc)
/* get a description of this sequence */
desclist = m_drcfe->describe_code(pc);
if (m_drcuml->logging() || m_drcuml->logging_native())
- log_opcode_desc(m_drcuml, desclist, 0);
+ log_opcode_desc(m_drcuml.get(), desclist, 0);
bool succeeded = false;
while (!succeeded)
@@ -641,10 +641,10 @@ void ppc_device::static_generate_entry_point()
block = m_drcuml->begin_block(20);
/* forward references */
- alloc_handle(m_drcuml, &m_nocode, "nocode");
- alloc_handle(m_drcuml, &m_exception_norecover[EXCEPTION_EI], "exception_ei_norecover");
+ alloc_handle(m_drcuml.get(), &m_nocode, "nocode");
+ alloc_handle(m_drcuml.get(), &m_exception_norecover[EXCEPTION_EI], "exception_ei_norecover");
- alloc_handle(m_drcuml, &m_entry, "entry");
+ alloc_handle(m_drcuml.get(), &m_entry, "entry");
UML_HANDLE(block, *m_entry); // handle entry
/* reset the FPU mode */
@@ -685,7 +685,7 @@ void ppc_device::static_generate_nocode_handler()
block = m_drcuml->begin_block(10);
/* generate a hash jump via the current mode and PC */
- alloc_handle(m_drcuml, &m_nocode, "nocode");
+ alloc_handle(m_drcuml.get(), &m_nocode, "nocode");
UML_HANDLE(block, *m_nocode); // handle nocode
UML_GETEXP(block, I0); // getexp i0
UML_MOV(block, mem(&m_core->pc), I0); // mov [pc],i0
@@ -709,7 +709,7 @@ void ppc_device::static_generate_out_of_cycles()
block = m_drcuml->begin_block(10);
/* generate a hash jump via the current mode and PC */
- alloc_handle(m_drcuml, &m_out_of_cycles, "out_of_cycles");
+ alloc_handle(m_drcuml.get(), &m_out_of_cycles, "out_of_cycles");
UML_HANDLE(block, *m_out_of_cycles); // handle out_of_cycles
UML_GETEXP(block, I0); // getexp i0
UML_MOV(block, mem(&m_core->pc), I0); // mov <pc>,i0
@@ -731,15 +731,15 @@ void ppc_device::static_generate_tlb_mismatch()
int isi, exit, label = 1;
/* forward references */
- alloc_handle(m_drcuml, &m_exception[EXCEPTION_ISI], "exception_isi");
+ alloc_handle(m_drcuml.get(), &m_exception[EXCEPTION_ISI], "exception_isi");
if (m_cap & PPCCAP_603_MMU)
- alloc_handle(m_drcuml, &m_exception[EXCEPTION_ITLBMISS], "exception_itlb_miss");
+ alloc_handle(m_drcuml.get(), &m_exception[EXCEPTION_ITLBMISS], "exception_itlb_miss");
/* begin generating */
block = m_drcuml->begin_block(20);
/* generate a hash jump via the current mode and PC */
- alloc_handle(m_drcuml, &m_tlb_mismatch, "tlb_mismatch");
+ alloc_handle(m_drcuml.get(), &m_tlb_mismatch, "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
@@ -792,7 +792,7 @@ void ppc_device::static_generate_exception(UINT8 exception, int recover, const c
block = m_drcuml->begin_block(1024);
/* add a global entry for this */
- alloc_handle(m_drcuml, &exception_handle, name);
+ alloc_handle(m_drcuml.get(), &exception_handle, name);
UML_HANDLE(block, *exception_handle); // handle name
/* exception parameter is expected to be the fault address in this case */
@@ -981,7 +981,7 @@ void ppc_device::static_generate_memory_accessor(int mode, int size, int iswrite
block = m_drcuml->begin_block(1024);
/* add a global entry for this */
- alloc_handle(m_drcuml, &handleptr, name);
+ alloc_handle(m_drcuml.get(), &handleptr, name);
UML_HANDLE(block, *handleptr); // handle *handleptr
/* check for unaligned accesses and break into two */
@@ -1388,7 +1388,7 @@ void ppc_device::static_generate_swap_tgpr()
block = m_drcuml->begin_block(30);
/* generate a hash jump via the current mode and PC */
- alloc_handle(m_drcuml, &m_swap_tgpr, "swap_tgpr");
+ alloc_handle(m_drcuml.get(), &m_swap_tgpr, "swap_tgpr");
UML_HANDLE(block, *m_swap_tgpr); // handle swap_tgpr
for (regnum = 0; regnum < 4; regnum++)
{
@@ -1423,7 +1423,7 @@ void ppc_device::static_generate_lsw_entries(int mode)
/* allocate a handle */
sprintf(temp, "lsw%d", regnum);
- alloc_handle(m_drcuml, &m_lsw[mode][regnum], temp);
+ alloc_handle(m_drcuml.get(), &m_lsw[mode][regnum], temp);
UML_HANDLE(block, *m_lsw[mode][regnum]); // handle lsw<regnum>
UML_LABEL(block, regnum); // regnum:
UML_ADD(block, I0, mem(&m_core->updateaddr), 0); // add i0,[updateaddr],0
@@ -1477,7 +1477,7 @@ void ppc_device::static_generate_stsw_entries(int mode)
/* allocate a handle */
sprintf(temp, "stsw%d", regnum);
- alloc_handle(m_drcuml, &m_stsw[mode][regnum], temp);
+ alloc_handle(m_drcuml.get(), &m_stsw[mode][regnum], temp);
UML_HANDLE(block, *m_stsw[mode][regnum]); // handle stsw<regnum>
UML_LABEL(block, regnum); // regnum:
UML_ADD(block, I0, mem(&m_core->updateaddr), 0); // add i0,[updateaddr],0
diff --git a/src/devices/cpu/pps4/pps4.cpp b/src/devices/cpu/pps4/pps4.cpp
index 5be986f2c3d..43c79059d4b 100644
--- a/src/devices/cpu/pps4/pps4.cpp
+++ b/src/devices/cpu/pps4/pps4.cpp
@@ -1552,7 +1552,7 @@ void pps4_device::device_start()
m_icountptr = &m_icount;
}
-void pps4_device::state_string_export(const device_state_entry &entry, std::string &str)
+void pps4_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h
index 7993a34743e..a2797668751 100644
--- a/src/devices/cpu/pps4/pps4.h
+++ b/src/devices/cpu/pps4/pps4.h
@@ -62,7 +62,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
@@ -95,9 +95,6 @@ private:
UINT8 m_I2; //!< Most recent parameter I2(8:1)
UINT8 m_Ip; //!< Previous instruction I(8:1)
- //! return the contents of B register (made of BU, BM and BL)
- inline UINT16 B() const;
-
//! return memory at address B(12:1)
inline UINT8 M();
diff --git a/src/devices/cpu/psx/dma.h b/src/devices/cpu/psx/dma.h
index 809bcaf035a..e241dfac9ac 100644
--- a/src/devices/cpu/psx/dma.h
+++ b/src/devices/cpu/psx/dma.h
@@ -63,8 +63,6 @@ private:
void dma_timer_adjust( int n_channel );
void dma_interrupt_update();
void dma_finished( int n_channel );
- void write( offs_t offset, UINT32 data, UINT32 mem_mask );
- UINT32 read( offs_t offset, UINT32 mem_mask );
psx_dma_channel m_channel[7];
UINT32 m_dpcp;
diff --git a/src/devices/cpu/psx/gte.h b/src/devices/cpu/psx/gte.h
index 3fc7075a81d..3a1ef18ba2d 100644
--- a/src/devices/cpu/psx/gte.h
+++ b/src/devices/cpu/psx/gte.h
@@ -24,6 +24,10 @@
class gte
{
public:
+ gte() : m_sf(0), m_mac0(0), m_mac1(0), m_mac2(0), m_mac3(0)
+ {
+ }
+
PAIR m_cp2cr[ 32 ];
PAIR m_cp2dr[ 32 ];
diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp
index f98c6fccc8f..c3e2e340d24 100644
--- a/src/devices/cpu/psx/psx.cpp
+++ b/src/devices/cpu/psx/psx.cpp
@@ -2026,7 +2026,7 @@ void psxcpu_device::state_import( const device_state_entry &entry )
// for the debugger
//-------------------------------------------------
-void psxcpu_device::state_string_export( const device_state_entry &entry, std::string &str )
+void psxcpu_device::state_string_export( const device_state_entry &entry, std::string &str ) const
{
switch( entry.index() )
{
diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h
index f5ec1423293..98b15819f32 100644
--- a/src/devices/cpu/psx/psx.h
+++ b/src/devices/cpu/psx/psx.h
@@ -153,7 +153,6 @@ class psxcpu_device : public cpu_device,
{
public:
// construction/destruction
- psxcpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~psxcpu_device() {};
// static configuration helpers
@@ -223,7 +222,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
@@ -240,11 +239,6 @@ protected:
// internal stuff
UINT32 m_op;
- // memory access
- inline UINT32 program_read(UINT32 addr);
- inline void program_write(UINT32 addr, UINT32 data);
- inline UINT32 opcode_read();
-
// address spaces
const address_space_config m_program_config;
address_space *m_program;
diff --git a/src/devices/cpu/psx/sio.h b/src/devices/cpu/psx/sio.h
index 4610f249700..93d8428bc9e 100644
--- a/src/devices/cpu/psx/sio.h
+++ b/src/devices/cpu/psx/sio.h
@@ -66,7 +66,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(write_rxd);
DECLARE_WRITE_LINE_MEMBER(write_dsr);
- DECLARE_WRITE_LINE_MEMBER(write_cts);
protected:
// device-level overrides
diff --git a/src/devices/cpu/rsp/rsp.cpp b/src/devices/cpu/rsp/rsp.cpp
index c8cbbfe24d1..1939cb33b5f 100644
--- a/src/devices/cpu/rsp/rsp.cpp
+++ b/src/devices/cpu/rsp/rsp.cpp
@@ -373,11 +373,11 @@ void rsp_device::device_start()
if (m_isdrc)
{
- m_cop2 = auto_alloc(machine(), rsp_cop2_drc(*this, machine()));
+ m_cop2 = std::make_unique<rsp_cop2_drc>(*this, machine());
}
else
{
- m_cop2 = auto_alloc(machine(), rsp_cop2(*this, machine()));
+ m_cop2 = std::make_unique<rsp_cop2>(*this, machine());
}
m_cop2->init();
m_cop2->start();
@@ -393,7 +393,7 @@ void rsp_device::device_start()
/* initialize the UML generator */
UINT32 drc_flags = 0;
- m_drcuml = auto_alloc(machine(), drcuml_state(*this, m_cache, drc_flags, 8, 32, 2));
+ m_drcuml = std::make_unique<drcuml_state>(*this, m_cache, drc_flags, 8, 32, 2);
/* add symbols for our stuff */
m_drcuml->symbol_add(&m_rsp_state->pc, sizeof(m_rsp_state->pc), "pc");
@@ -411,7 +411,7 @@ void rsp_device::device_start()
m_drcuml->symbol_add(&m_numcycles, sizeof(m_numcycles), "numcycles");
/* initialize the front-end helper */
- m_drcfe = auto_alloc(machine(), rsp_frontend(*this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE));
+ m_drcfe = std::make_unique<rsp_frontend>(*this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE);
/* compute the register parameters */
for (int regnum = 0; regnum < 32; regnum++)
@@ -539,7 +539,7 @@ void rsp_device::state_export(const device_state_entry &entry)
}
}
-void rsp_device::state_string_export(const device_state_entry &entry, std::string &str)
+void rsp_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
const int index = entry.index();
if (index >= RSP_V0 && index <= RSP_V31)
@@ -596,21 +596,6 @@ void rsp_device::device_stop()
if (m_exec_output)
fclose(m_exec_output);
m_exec_output = nullptr;
-
- /* clean up the DRC */
- if (m_drcuml)
- {
- auto_free(machine(), m_drcuml);
- }
- if (m_drcfe)
- {
- auto_free(machine(), m_drcfe);
- }
-
- if (m_cop2)
- {
- auto_free(machine(), m_cop2);
- }
}
void rsp_device::device_reset()
diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h
index 1f92aac50d9..93215bd0649 100644
--- a/src/devices/cpu/rsp/rsp.h
+++ b/src/devices/cpu/rsp/rsp.h
@@ -159,7 +159,6 @@ public:
void ccfunc_write32();
void ccfunc_get_cop0_reg();
void ccfunc_set_cop0_reg();
- void ccfunc_unimplemented_opcode();
void ccfunc_sp_set_status_cb();
void ccfunc_unimplemented();
@@ -185,7 +184,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
@@ -217,8 +216,8 @@ private:
/* core state */
drc_cache m_cache; /* pointer to the DRC code cache */
- drcuml_state * m_drcuml; /* DRC UML generator state */
- rsp_frontend * m_drcfe; /* pointer to the DRC front-end state */
+ std::unique_ptr<drcuml_state> m_drcuml; /* DRC UML generator state */
+ std::unique_ptr<rsp_frontend> m_drcfe; /* pointer to the DRC front-end state */
UINT32 m_drcoptions; /* configurable DRC options */
/* internal stuff */
@@ -269,7 +268,7 @@ protected:
direct_read_data *m_direct;
private:
- rsp_cop2 *m_cop2;
+ std::unique_ptr<rsp_cop2> m_cop2;
UINT32 *m_dmem32;
UINT16 *m_dmem16;
@@ -317,11 +316,9 @@ private:
void generate_sequence_instruction(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
void generate_delay_slot_and_branch(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc, UINT8 linkreg);
void generate_branch(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
- int generate_vector_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
int generate_opcode(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
int generate_special(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
int generate_regimm(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
- int generate_cop2(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
int generate_cop0(drcuml_block *block, compiler_state *compiler, const opcode_desc *desc);
void log_add_disasm_comment(drcuml_block *block, UINT32 pc, UINT32 op);
};
diff --git a/src/devices/cpu/rsp/rspcp2.cpp b/src/devices/cpu/rsp/rspcp2.cpp
index fe6d3b243e8..cb45d906bde 100644
--- a/src/devices/cpu/rsp/rspcp2.cpp
+++ b/src/devices/cpu/rsp/rspcp2.cpp
@@ -746,7 +746,7 @@ void rsp_cop2::start()
}
}
-void rsp_cop2::state_string_export(const int index, std::string &str)
+void rsp_cop2::state_string_export(const int index, std::string &str) const
{
switch (index)
{
@@ -1167,7 +1167,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
if (ve > 32)
ve = 32;
- INT32 element = 7 - (index >> 1);
+ INT32 element;
if (index & 1) fatalerror("RSP: LTV: index = %d\n", index);
@@ -2966,7 +2966,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
CLEAR_CLIP1_FLAGS();
CLEAR_ZERO_FLAGS();
CLEAR_CLIP2_FLAGS();
- UINT32 vce = 0;
+ UINT32 vce;
for (i=0; i < 8; i++)
{
diff --git a/src/devices/cpu/rsp/rspcp2.h b/src/devices/cpu/rsp/rspcp2.h
index 909b0ae4172..9eb0bb37fdc 100644
--- a/src/devices/cpu/rsp/rspcp2.h
+++ b/src/devices/cpu/rsp/rspcp2.h
@@ -78,9 +78,10 @@ class rsp_cop2
{
friend class rsp_device;
-protected:
+public:
rsp_cop2(rsp_device &rsp, running_machine &machine);
+protected:
virtual void init();
virtual void start();
@@ -88,7 +89,7 @@ protected:
virtual int generate_lwc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) { return TRUE; }
virtual int generate_swc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) { return TRUE; }
- virtual void state_string_export(const int index, std::string &str);
+ virtual void state_string_export(const int index, std::string &str) const;
public:
virtual ~rsp_cop2();
@@ -174,7 +175,6 @@ protected:
virtual int generate_vector_opcode(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) { return TRUE; }
UINT16 SATURATE_ACCUM(int accum, int slice, UINT16 negative, UINT16 positive);
- UINT16 SATURATE_ACCUM1(int accum, UINT16 negative, UINT16 positive);
// Data that needs to be stored close to the generated DRC code
struct internal_rspcop2_state
diff --git a/src/devices/cpu/rsp/rspcp2d.cpp b/src/devices/cpu/rsp/rspcp2d.cpp
index da23d00df0d..4caacd28a0d 100644
--- a/src/devices/cpu/rsp/rspcp2d.cpp
+++ b/src/devices/cpu/rsp/rspcp2d.cpp
@@ -147,7 +147,7 @@ static void unimplemented_opcode(void *param)
((rsp_cop2 *)param)->cfunc_unimplemented_opcode();
}
-void rsp_cop2_drc::state_string_export(const int index, std::string &str)
+void rsp_cop2_drc::state_string_export(const int index, std::string &str) const
{
switch (index)
{
@@ -268,7 +268,7 @@ void rsp_cop2_drc::lbv()
{
UINT32 op = m_rspcop2_state->op;
- UINT32 ea = 0;
+ UINT32 ea;
int dest = (op >> 16) & 0x1f;
int base = (op >> 21) & 0x1f;
int index = (op >> 7) & 0xf;
@@ -336,7 +336,7 @@ static void cfunc_lsv(void *param)
void rsp_cop2_drc::llv()
{
UINT32 op = m_rspcop2_state->op;
- UINT32 ea = 0;
+ UINT32 ea;
int dest = (op >> 16) & 0x1f;
int base = (op >> 21) & 0x1f;
int index = (op >> 7) & 0xc;
@@ -375,7 +375,7 @@ static void cfunc_llv(void *param)
void rsp_cop2_drc::ldv()
{
UINT32 op = m_rspcop2_state->op;
- UINT32 ea = 0;
+ UINT32 ea;
int dest = (op >> 16) & 0x1f;
int base = (op >> 21) & 0x1f;
int index = (op >> 7) & 0x8;
@@ -687,7 +687,7 @@ void rsp_cop2_drc::ltv()
ve = 32;
}
- int element = 7 - (index >> 1);
+ int element;
UINT32 ea = (base) ? m_rsp.m_rsp_state->r[base] + (offset * 16) : (offset * 16);
@@ -2438,7 +2438,7 @@ void rsp_cop2_drc::vch()
CLEAR_ZERO_FLAGS();
CLEAR_CLIP2_FLAGS();
- UINT32 vce = 0;
+ UINT32 vce;
for (int i = 0; i < 8; i++)
{
INT16 s1, s2;
diff --git a/src/devices/cpu/rsp/rspcp2d.h b/src/devices/cpu/rsp/rspcp2d.h
index ef727e37b95..62fc25fe475 100644
--- a/src/devices/cpu/rsp/rspcp2d.h
+++ b/src/devices/cpu/rsp/rspcp2d.h
@@ -21,14 +21,14 @@
class rsp_cop2_drc : public rsp_cop2
{
friend class rsp_device;
-
+public:
rsp_cop2_drc(rsp_device &rsp, running_machine &machine) : rsp_cop2(rsp, machine) { }
-
+private:
virtual int generate_cop2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) override;
virtual int generate_lwc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) override;
virtual int generate_swc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) override;
- virtual void state_string_export(const int index, std::string &str) override;
+ virtual void state_string_export(const int index, std::string &str) const override;
void cfunc_unimplemented_opcode() override;
diff --git a/src/devices/cpu/rsp/rspdrc.cpp b/src/devices/cpu/rsp/rspdrc.cpp
index 097a8c39507..c581cfb3aba 100644
--- a/src/devices/cpu/rsp/rspdrc.cpp
+++ b/src/devices/cpu/rsp/rspdrc.cpp
@@ -260,7 +260,7 @@ void cfunc_sp_set_status_cb(void *param)
void rsp_device::execute_run_drc()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
int execute_result;
/* reset the cache if dirty */
@@ -350,7 +350,7 @@ void rsp_device::code_flush_cache()
void rsp_device::code_compile_block(offs_t pc)
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
compiler_state compiler = { 0 };
const opcode_desc *seqhead, *seqlast;
const opcode_desc *desclist;
@@ -490,7 +490,7 @@ static void cfunc_fatalerror(void *param)
void rsp_device::static_generate_entry_point()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* begin generating */
@@ -518,7 +518,7 @@ void rsp_device::static_generate_entry_point()
void rsp_device::static_generate_nocode_handler()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* begin generating */
@@ -543,7 +543,7 @@ void rsp_device::static_generate_nocode_handler()
void rsp_device::static_generate_out_of_cycles()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* begin generating */
@@ -569,7 +569,7 @@ void rsp_device::static_generate_memory_accessor(int size, int iswrite, const ch
/* on entry, address is in I0; data for writes is in I1 */
/* on exit, read result is in I0 */
/* routine trashes I0-I1 */
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* begin generating */
diff --git a/src/devices/cpu/s2650/s2650.cpp b/src/devices/cpu/s2650/s2650.cpp
index 1bb0fe01e77..8a257ff5a9e 100644
--- a/src/devices/cpu/s2650/s2650.cpp
+++ b/src/devices/cpu/s2650/s2650.cpp
@@ -35,9 +35,10 @@ s2650_device::s2650_device(const machine_config &mconfig, const char *tag, devic
: cpu_device(mconfig, S2650, "S2650", tag, owner, clock, "s2650", __FILE__ )
, m_program_config("program", ENDIANNESS_LITTLE, 8, 15)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 9)
- , m_flag_handler(*this), m_ppc(0), m_page(0), m_iar(0), m_ea(0), m_psl(0), m_psu(0), m_r(0)
- , m_halt(0), m_ir(0), m_irq_state(0), m_icount(0), m_program(nullptr), m_direct(nullptr), m_io(nullptr)
- , m_debugger_temp(0)
+ , m_flag_handler(*this), m_intack_handler(*this)
+ , m_ppc(0), m_page(0), m_iar(0), m_ea(0), m_psl(0), m_psu(0), m_r(0)
+ , m_halt(0), m_ir(0), m_irq_state(0), m_icount(0), m_program(nullptr), m_direct(nullptr), m_io(nullptr)
+ , m_debugger_temp(0)
{
memset(m_reg, 0x00, sizeof(m_reg));
}
@@ -183,6 +184,10 @@ inline int s2650_device::check_irq_line()
m_iar = (m_iar + 1) & PMSK;
}
vector = standard_irq_callback(0) & 0xff;
+
+ /* Say hi */
+ m_intack_handler(true);
+
/* build effective address within first 8K page */
m_ea = S2650_relative[vector] & PMSK;
if (vector & 0x80) /* indirect bit set ? */
@@ -786,6 +791,7 @@ static void BRA_EA(void) _BRA_EA()
void s2650_device::device_start()
{
m_flag_handler.resolve_safe();
+ m_intack_handler.resolve_safe();
m_program = &space(AS_PROGRAM);
m_direct = &m_program->direct();
@@ -870,7 +876,7 @@ void s2650_device::state_export(const device_state_entry &entry)
}
}
-void s2650_device::state_string_export(const device_state_entry &entry, std::string &str)
+void s2650_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h
index 66e2af40cd5..cd5dc1c12f1 100644
--- a/src/devices/cpu/s2650/s2650.h
+++ b/src/devices/cpu/s2650/s2650.h
@@ -29,6 +29,9 @@ extern const device_type S2650;
#define MCFG_S2650_FLAG_HANDLER(_devcb) \
devcb = &s2650_device::set_flag_handler(*device, DEVCB_##_devcb);
+#define MCFG_S2650_INTACK_HANDLER(_devcb) \
+ devcb = &s2650_device::set_intack_handler(*device, DEVCB_##_devcb);
+
class s2650_device : public cpu_device
{
public:
@@ -39,6 +42,7 @@ public:
// static configuration helpers
template<class _Object> static devcb_base &set_flag_handler(device_t &device, _Object object) { return downcast<s2650_device &>(device).m_flag_handler.set_callback(object); }
+ template<class _Object> static devcb_base &set_intack_handler(device_t &device, _Object object) { return downcast<s2650_device &>(device).m_intack_handler.set_callback(object); }
protected:
// device-level overrides
@@ -62,7 +66,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
@@ -74,6 +78,7 @@ private:
address_space_config m_io_config;
devcb_write_line m_flag_handler;
+ devcb_write_line m_intack_handler;
UINT16 m_ppc; /* previous program counter (page + iar) */
UINT16 m_page; /* 8K page select register (A14..A13) */
diff --git a/src/devices/cpu/saturn/saturn.cpp b/src/devices/cpu/saturn/saturn.cpp
index a8c86f934c0..3e25ae6b76f 100644
--- a/src/devices/cpu/saturn/saturn.cpp
+++ b/src/devices/cpu/saturn/saturn.cpp
@@ -169,7 +169,7 @@ void saturn_device::device_start()
m_icountptr = &m_icount;
}
-void saturn_device::state_string_export(const device_state_entry &entry, std::string &str)
+void saturn_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
#define Reg64Data(s) s[15],s[14],s[13],s[12],s[11],s[10],s[9],s[8],s[7],s[6],s[5],s[4],s[3],s[2],s[1],s[0]
#define Reg64Format "%x %x%x%x%x%x%x%x %x%x%x %x%x%x%x%x"
diff --git a/src/devices/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h
index 3281ade5fcd..28de3e41910 100644
--- a/src/devices/cpu/saturn/saturn.h
+++ b/src/devices/cpu/saturn/saturn.h
@@ -104,7 +104,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
diff --git a/src/devices/cpu/sc61860/sc61860.cpp b/src/devices/cpu/sc61860/sc61860.cpp
index a36c02a658a..27251e10e78 100644
--- a/src/devices/cpu/sc61860/sc61860.cpp
+++ b/src/devices/cpu/sc61860/sc61860.cpp
@@ -171,7 +171,7 @@ void sc61860_device::device_start()
}
-void sc61860_device::state_string_export(const device_state_entry &entry, std::string &str)
+void sc61860_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h
index 65a42862bb8..855d0d91e21 100644
--- a/src/devices/cpu/sc61860/sc61860.h
+++ b/src/devices/cpu/sc61860/sc61860.h
@@ -106,7 +106,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/scmp/scmp.cpp b/src/devices/cpu/scmp/scmp.cpp
index ed05dafa962..2e1cf4cd021 100644
--- a/src/devices/cpu/scmp/scmp.cpp
+++ b/src/devices/cpu/scmp/scmp.cpp
@@ -130,8 +130,8 @@ void scmp_device::DEC_ADD(UINT8 val)
UINT16 scmp_device::GET_ADDR(UINT8 code)
{
- UINT16 addr = 0;
- INT8 offset = 0;
+ UINT16 addr;
+ INT8 offset;
UINT16 retVal = 0;
UINT16 ptr = GET_PTR_REG(code & 0x03)->w.l;
@@ -547,7 +547,7 @@ void scmp_device::device_reset()
COMMON STATE IMPORT/EXPORT
***************************************************************************/
-void scmp_device::state_string_export(const device_state_entry &entry, std::string &str)
+void scmp_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h
index e89dc2e9088..03f284589eb 100644
--- a/src/devices/cpu/scmp/scmp.h
+++ b/src/devices/cpu/scmp/scmp.h
@@ -56,7 +56,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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 1; }
diff --git a/src/devices/cpu/score/score.cpp b/src/devices/cpu/score/score.cpp
index f949efe7453..984f832b464 100644
--- a/src/devices/cpu/score/score.cpp
+++ b/src/devices/cpu/score/score.cpp
@@ -80,16 +80,14 @@ void score7_cpu_device::device_start()
// register state for debugger
state_add(SCORE_PC , "PC" , m_pc).callimport().callexport().formatstr("%08X");
- std::string tmp_string;
-
for(int i=0; i<0x20; i++)
- state_add(SCORE_GPR + i, strformat(tmp_string, "r%d", i).c_str(), m_gpr[i]).callimport().callexport().formatstr("%08X");
+ state_add(SCORE_GPR + i, strformat("r%d", i).c_str(), m_gpr[i]).callimport().callexport().formatstr("%08X");
for(int i=0; i<0x20; i++)
- state_add(SCORE_CR + i, strformat(tmp_string, "cr%d", i).c_str(), m_cr[i]).callimport().callexport().formatstr("%08X");
+ state_add(SCORE_CR + i, strformat("cr%d", i).c_str(), m_cr[i]).callimport().callexport().formatstr("%08X");
for(int i=0; i<3; i++)
- state_add(SCORE_SR + i, strformat(tmp_string, "sr%d", i).c_str(), m_sr[i]).callimport().callexport().formatstr("%08X");
+ state_add(SCORE_SR + i, strformat("sr%d", i).c_str(), m_sr[i]).callimport().callexport().formatstr("%08X");
state_add(SCORE_CEH, "ceh", REG_CEH).callimport().callexport().formatstr("%08X");
state_add(SCORE_CEL, "cel", REG_CEL).callimport().callexport().formatstr("%08X");
@@ -132,7 +130,7 @@ void score7_cpu_device::device_reset()
// for the debugger
//-------------------------------------------------
-void score7_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void score7_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/score/score.h b/src/devices/cpu/score/score.h
index 83e724e7785..ba7058196f8 100644
--- a/src/devices/cpu/score/score.h
+++ b/src/devices/cpu/score/score.h
@@ -47,7 +47,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
diff --git a/src/devices/cpu/scudsp/scudsp.cpp b/src/devices/cpu/scudsp/scudsp.cpp
index 14d1565caa2..f0ec1644af5 100644
--- a/src/devices/cpu/scudsp/scudsp.cpp
+++ b/src/devices/cpu/scudsp/scudsp.cpp
@@ -1010,7 +1010,7 @@ scudsp_cpu_device::scudsp_cpu_device(const machine_config &mconfig, const char *
}
-void scudsp_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void scudsp_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h
index e8f52f661f1..a5827b05e41 100644
--- a/src/devices/cpu/scudsp/scudsp.h
+++ b/src/devices/cpu/scudsp/scudsp.h
@@ -96,7 +96,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ 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 4; }
diff --git a/src/devices/cpu/se3208/se3208.cpp b/src/devices/cpu/se3208/se3208.cpp
index b37a8e09f5f..011cc103909 100644
--- a/src/devices/cpu/se3208/se3208.cpp
+++ b/src/devices/cpu/se3208/se3208.cpp
@@ -1821,7 +1821,7 @@ void se3208_device::device_start()
}
-void se3208_device::state_string_export(const device_state_entry &entry, std::string &str)
+void se3208_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/se3208/se3208.h b/src/devices/cpu/se3208/se3208.h
index e548b7f7621..fbed0d6452b 100644
--- a/src/devices/cpu/se3208/se3208.h
+++ b/src/devices/cpu/se3208/se3208.h
@@ -32,7 +32,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/sh2/sh2.cpp b/src/devices/cpu/sh2/sh2.cpp
index 7cd45505c9b..481f2544126 100644
--- a/src/devices/cpu/sh2/sh2.cpp
+++ b/src/devices/cpu/sh2/sh2.cpp
@@ -199,11 +199,6 @@ sh2_device::sh2_device(const machine_config &mconfig, const char *tag, device_t
void sh2_device::device_stop()
{
- /* clean up the DRC */
- if ( m_drcuml )
- {
- auto_free(machine(), m_drcuml);
- }
}
@@ -2536,7 +2531,7 @@ void sh2_device::device_start()
/* initialize the UML generator */
UINT32 flags = 0;
- m_drcuml = auto_alloc(machine(), drcuml_state(*this, m_cache, flags, 1, 32, 1));
+ m_drcuml = std::make_unique<drcuml_state>(*this, m_cache, flags, 1, 32, 1);
/* add symbols for our stuff */
m_drcuml->symbol_add(&m_sh2_state->pc, sizeof(m_sh2_state->pc), "pc");
@@ -2555,7 +2550,7 @@ void sh2_device::device_start()
m_drcuml->symbol_add(&m_sh2_state->mach, sizeof(m_sh2_state->macl), "mach");
/* initialize the front-end helper */
- m_drcfe = auto_alloc(machine(), sh2_frontend(this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE));
+ m_drcfe = std::make_unique<sh2_frontend>(this, COMPILE_BACKWARDS_BYTES, COMPILE_FORWARDS_BYTES, SINGLE_INSTRUCTION_MODE ? 1 : COMPILE_MAX_SEQUENCE);
/* compute the register parameters */
for (int regnum = 0; regnum < 16; regnum++)
@@ -2588,7 +2583,7 @@ void sh2_device::device_start()
}
-void sh2_device::state_string_export(const device_state_entry &entry, std::string &str)
+void sh2_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/sh2/sh2.h b/src/devices/cpu/sh2/sh2.h
index 6a32072ada5..d7fe6c36935 100644
--- a/src/devices/cpu/sh2/sh2.h
+++ b/src/devices/cpu/sh2/sh2.h
@@ -131,7 +131,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
@@ -219,8 +219,8 @@ private:
sh2_ftcsr_read_delegate m_ftcsr_read_cb;
drc_cache m_cache; /* pointer to the DRC code cache */
- drcuml_state * m_drcuml; /* DRC UML generator state */
- sh2_frontend * m_drcfe; /* pointer to the DRC front-end state */
+ std::unique_ptr<drcuml_state> m_drcuml; /* DRC UML generator state */
+ std::unique_ptr<sh2_frontend> m_drcfe; /* pointer to the DRC front-end state */
UINT32 m_drcoptions; /* configurable DRC options */
internal_sh2_state *m_sh2_state;
diff --git a/src/devices/cpu/sh2/sh2drc.cpp b/src/devices/cpu/sh2/sh2drc.cpp
index 6f112eb0db5..db732e57b40 100644
--- a/src/devices/cpu/sh2/sh2drc.cpp
+++ b/src/devices/cpu/sh2/sh2drc.cpp
@@ -586,7 +586,7 @@ void sh2_device::func_SUBV() {}
void sh2_device::code_flush_cache()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
/* empty the transient cache contents */
drcuml->reset();
@@ -617,7 +617,7 @@ void sh2_device::code_flush_cache()
/* Execute cycles - returns number of cycles actually run */
void sh2_device::execute_run_drc()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
int execute_result;
// run any active DMAs now
@@ -665,7 +665,7 @@ void sh2_device::execute_run_drc()
void sh2_device::code_compile_block(UINT8 mode, offs_t pc)
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
compiler_state compiler = { 0 };
const opcode_desc *seqhead, *seqlast;
const opcode_desc *desclist;
@@ -781,7 +781,7 @@ void sh2_device::code_compile_block(UINT8 mode, offs_t pc)
void sh2_device::static_generate_entry_point()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
code_label skip = 1;
drcuml_block *block;
@@ -861,7 +861,7 @@ void sh2_device::static_generate_entry_point()
void sh2_device::static_generate_nocode_handler()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* begin generating */
@@ -886,7 +886,7 @@ void sh2_device::static_generate_nocode_handler()
void sh2_device::static_generate_out_of_cycles()
{
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
/* begin generating */
@@ -912,7 +912,7 @@ void sh2_device::static_generate_memory_accessor(int size, int iswrite, const ch
/* on entry, address is in I0; data for writes is in I1 */
/* on exit, read result is in I0 */
/* routine trashes I0 */
- drcuml_state *drcuml = m_drcuml;
+ drcuml_state *drcuml = m_drcuml.get();
drcuml_block *block;
int label = 1;
diff --git a/src/devices/cpu/sh4/sh4.cpp b/src/devices/cpu/sh4/sh4.cpp
index e0835b1f9c0..fc67b4d9d86 100644
--- a/src/devices/cpu/sh4/sh4.cpp
+++ b/src/devices/cpu/sh4/sh4.cpp
@@ -4447,7 +4447,7 @@ void sh34_base_device::state_export(const device_state_entry &entry)
}
}
-void sh34_base_device::state_string_export(const device_state_entry &entry, std::string &str)
+void sh34_base_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
#ifdef LSB_FIRST
UINT8 fpu_xor = m_fpu_pr;
diff --git a/src/devices/cpu/sh4/sh4.h b/src/devices/cpu/sh4/sh4.h
index bba3483b9a1..badaacd4558 100644
--- a/src/devices/cpu/sh4/sh4.h
+++ b/src/devices/cpu/sh4/sh4.h
@@ -220,7 +220,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/sharc/sharcdsm.cpp b/src/devices/cpu/sharc/sharcdsm.cpp
index c498dcb78e5..af754afe66b 100644
--- a/src/devices/cpu/sharc/sharcdsm.cpp
+++ b/src/devices/cpu/sharc/sharcdsm.cpp
@@ -1208,8 +1208,8 @@ static UINT32 sharc_dasm_one(char *buffer, offs_t pc, UINT64 opcode)
CPU_DISASSEMBLE( sharc )
{
- UINT64 op = 0;
- UINT32 flags = 0;
+ UINT64 op;
+ UINT32 flags;
op = ((UINT64)oprom[0] << 0) | ((UINT64)oprom[1] << 8) |
((UINT64)oprom[2] << 16) | ((UINT64)oprom[3] << 24) |
diff --git a/src/devices/cpu/sm8500/sm8500.cpp b/src/devices/cpu/sm8500/sm8500.cpp
index 11fc61132fc..66c51c61e5b 100644
--- a/src/devices/cpu/sm8500/sm8500.cpp
+++ b/src/devices/cpu/sm8500/sm8500.cpp
@@ -53,7 +53,7 @@ void sm8500_cpu_device::get_sp()
}
-UINT8 sm8500_cpu_device::mem_readbyte( UINT32 offset )
+UINT8 sm8500_cpu_device::mem_readbyte( UINT32 offset ) const
{
offset &= 0xffff;
if ( offset < 0x10)
@@ -141,7 +141,7 @@ void sm8500_cpu_device::device_start()
}
-void sm8500_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void sm8500_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h
index 8dd4802efb6..ab9f3c9ea65 100644
--- a/src/devices/cpu/sm8500/sm8500.h
+++ b/src/devices/cpu/sm8500/sm8500.h
@@ -71,7 +71,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
@@ -79,9 +79,9 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
inline void get_sp();
- UINT8 mem_readbyte(UINT32 offset);
+ UINT8 mem_readbyte(UINT32 offset) const;
void mem_writebyte(UINT32 offset, UINT8 data);
- inline UINT16 mem_readword(UINT32 address) { return (mem_readbyte(address ) << 8) | (mem_readbyte(address+1)); }
+ inline UINT16 mem_readword(UINT32 address) const { return (mem_readbyte(address ) << 8) | (mem_readbyte(address+1)); }
inline void mem_writeword(UINT32 address, UINT16 value) { mem_writebyte(address, value >> 8); mem_writebyte(address+1, value); }
inline void take_interrupt(UINT16 vector);
void process_interrupts();
diff --git a/src/devices/cpu/sm8500/sm8500d.cpp b/src/devices/cpu/sm8500/sm8500d.cpp
index 06b37795d54..f5fc1341365 100644
--- a/src/devices/cpu/sm8500/sm8500d.cpp
+++ b/src/devices/cpu/sm8500/sm8500d.cpp
@@ -178,8 +178,9 @@ CPU_DISASSEMBLE( sm8500 )
const sm8500dasm *instr;
char *dst;
UINT8 op;
- INT8 offset = 0;
- UINT16 ea = 0, ea2 = 0;
+ INT8 offset;
+ UINT16 ea;
+ UINT16 ea2;
int pos = 0;
dst = buffer;
diff --git a/src/devices/cpu/spc700/spc700.cpp b/src/devices/cpu/spc700/spc700.cpp
index 968aad0f10c..22969235ae7 100644
--- a/src/devices/cpu/spc700/spc700.cpp
+++ b/src/devices/cpu/spc700/spc700.cpp
@@ -1244,7 +1244,7 @@ void spc700_device::device_start()
}
-void spc700_device::state_string_export(const device_state_entry &entry, std::string &str)
+void spc700_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/spc700/spc700.h b/src/devices/cpu/spc700/spc700.h
index ad5085b38a9..30b9b2ccdf3 100644
--- a/src/devices/cpu/spc700/spc700.h
+++ b/src/devices/cpu/spc700/spc700.h
@@ -30,7 +30,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/ssem/ssem.cpp b/src/devices/cpu/ssem/ssem.cpp
index 0dfec9b9cfb..438e36cbd9e 100644
--- a/src/devices/cpu/ssem/ssem.cpp
+++ b/src/devices/cpu/ssem/ssem.cpp
@@ -149,7 +149,7 @@ const address_space_config *ssem_device::memory_space_config(address_spacenum sp
// for the debugger
//-------------------------------------------------
-void ssem_device::state_string_export(const device_state_entry &entry, std::string &str)
+void ssem_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/ssem/ssem.h b/src/devices/cpu/ssem/ssem.h
index e57294fbbf5..8d2c0c21044 100644
--- a/src/devices/cpu/ssem/ssem.h
+++ b/src/devices/cpu/ssem/ssem.h
@@ -45,7 +45,7 @@ public:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// address spaces
const address_space_config m_program_config;
diff --git a/src/devices/cpu/ssp1601/ssp1601.cpp b/src/devices/cpu/ssp1601/ssp1601.cpp
index 945eb7d4499..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
@@ -451,7 +451,7 @@ void ssp1601_device::ptr1_write(int op, UINT32 d)
UINT32 ssp1601_device::ptr2_read(int op)
{
- int mv = 0, t = (op&3) | ((op>>6)&4) | ((op<<1)&0x18);
+ int mv, t = (op&3) | ((op>>6)&4) | ((op<<1)&0x18);
switch (t)
{
// mod=0 (00)
@@ -547,7 +547,7 @@ void ssp1601_device::device_start()
}
-void ssp1601_device::state_string_export(const device_state_entry &entry, std::string &str)
+void ssp1601_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/ssp1601/ssp1601.h b/src/devices/cpu/ssp1601/ssp1601.h
index 5d67827b288..1917af79adb 100644
--- a/src/devices/cpu/ssp1601/ssp1601.h
+++ b/src/devices/cpu/ssp1601/ssp1601.h
@@ -40,7 +40,7 @@ protected:
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 : nullptr); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
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/superfx/superfx.cpp b/src/devices/cpu/superfx/superfx.cpp
index eb5f04278d3..7601fa9bdc3 100644
--- a/src/devices/cpu/superfx/superfx.cpp
+++ b/src/devices/cpu/superfx/superfx.cpp
@@ -106,7 +106,7 @@ void superfx_device::superfx_pixelcache_flush(INT32 line)
UINT8 y = m_pixelcache[line].offset >> 5;
UINT32 cn = 0;
UINT32 bpp = 2 << ((m_scmr & SUPERFX_SCMR_MD) - ((m_scmr & SUPERFX_SCMR_MD) >> 1)); // = [regs.scmr.md]{ 2, 4, 4, 8 };
- UINT32 addr = 0;
+ UINT32 addr;
UINT32 n = 0;
if(m_pixelcache[line].bitpend == 0x00)
@@ -218,8 +218,8 @@ void superfx_device::superfx_plot(UINT8 x, UINT8 y)
UINT8 superfx_device::superfx_rpix(UINT8 x, UINT8 y)
{
UINT32 cn = 0;
- UINT32 bpp = 0;
- UINT32 addr = 0;
+ UINT32 bpp;
+ UINT32 addr;
UINT8 data = 0x00;
UINT32 n = 0;
@@ -988,7 +988,7 @@ void superfx_device::execute_run()
case 0x46: case 0x47: case 0x48: case 0x49: case 0x4a: case 0x4b: // LDW_IR / LDB_IR
if((m_sfr & SUPERFX_SFR_ALT1) == 0)
{ // LDW_IR
- UINT16 data = 0;
+ UINT16 data;
m_ramaddr = m_r[op & 0xf];
data = superfx_rambuffer_read(m_ramaddr ^ 0) << 0;
data |= superfx_rambuffer_read(m_ramaddr ^ 1) << 8;
@@ -1271,7 +1271,7 @@ void superfx_device::execute_run()
case SUPERFX_SFR_ALT1: // LMS
case SUPERFX_SFR_ALT3: // LMS
{
- UINT16 data = 0;
+ UINT16 data;
m_ramaddr = superfx_pipe() << 1;
data = superfx_rambuffer_read(m_ramaddr ^ 0) << 0;
data |= superfx_rambuffer_read(m_ramaddr ^ 1) << 8;
diff --git a/src/devices/cpu/t11/t11.cpp b/src/devices/cpu/t11/t11.cpp
index 4a012ec0505..72c2e80c91b 100644
--- a/src/devices/cpu/t11/t11.cpp
+++ b/src/devices/cpu/t11/t11.cpp
@@ -291,7 +291,7 @@ void t11_device::device_start()
m_icountptr = &m_icount;
}
-void t11_device::state_string_export(const device_state_entry &entry, std::string &str)
+void t11_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -310,7 +310,7 @@ void t11_device::state_string_export(const device_state_entry &entry, std::strin
}
}
-void k1801vm2_device::state_string_export(const device_state_entry &entry, std::string &str)
+void k1801vm2_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h
index d2d0896445b..55d11c9666a 100644
--- a/src/devices/cpu/t11/t11.h
+++ b/src/devices/cpu/t11/t11.h
@@ -59,7 +59,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
@@ -1145,7 +1145,7 @@ protected:
virtual void device_reset() override;
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
};
diff --git a/src/devices/cpu/tlcs90/tlcs90.cpp b/src/devices/cpu/tlcs90/tlcs90.cpp
index aec1191f4ae..994d0abb3da 100644
--- a/src/devices/cpu/tlcs90/tlcs90.cpp
+++ b/src/devices/cpu/tlcs90/tlcs90.cpp
@@ -1328,7 +1328,7 @@ void tlcs90_device::check_interrupts()
if (!(F & IF))
return;
- for (irq = INTSWI; irq < INTMAX; irq++)
+ for (irq = INTSWI; irq < INTMAX; ++irq)
{
mask = (1 << irq);
if(irq >= INT0) mask &= m_irq_mask;
@@ -2766,7 +2766,7 @@ void tlcs90_device::device_start()
}
-void tlcs90_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tlcs90_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h
index 7921444d7fd..42a7e5f5c08 100644
--- a/src/devices/cpu/tlcs90/tlcs90.h
+++ b/src/devices/cpu/tlcs90/tlcs90.h
@@ -51,7 +51,7 @@ protected:
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 : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp
index c11dc9c08a9..2b5d45d7757 100644
--- a/src/devices/cpu/tlcs900/tlcs900.cpp
+++ b/src/devices/cpu/tlcs900/tlcs900.cpp
@@ -110,7 +110,15 @@ tmp95c063_device::tmp95c063_device(const machine_config &mconfig, const char *ta
m_portd_read(*this),
m_portd_write(*this),
m_porte_read(*this),
- m_porte_write(*this)
+ m_porte_write(*this),
+ m_an0_read(*this),
+ m_an1_read(*this),
+ m_an2_read(*this),
+ m_an3_read(*this),
+ m_an4_read(*this),
+ m_an5_read(*this),
+ m_an6_read(*this),
+ m_an7_read(*this)
{
}
@@ -356,18 +364,18 @@ void tlcs900h_device::device_start()
state_add( TLCS900_DMAD0, "DMAD0", m_dmad[0].d ).formatstr("%08X");
state_add( TLCS900_DMAC0, "DMAC0", m_dmac[0].w.l ).formatstr("%04X");
state_add( TLCS900_DMAM0, "DMAM0", m_dmam[0].b.l ).formatstr("%02X");
- state_add( TLCS900_DMAS1, "DMAS0", m_dmas[1].d ).formatstr("%08X");
- state_add( TLCS900_DMAD1, "DMAD0", m_dmad[1].d ).formatstr("%08X");
- state_add( TLCS900_DMAC1, "DMAC0", m_dmac[1].w.l ).formatstr("%04X");
- state_add( TLCS900_DMAM1, "DMAM0", m_dmam[1].b.l ).formatstr("%02X");
- state_add( TLCS900_DMAS2, "DMAS0", m_dmas[2].d ).formatstr("%08X");
- state_add( TLCS900_DMAD2, "DMAD0", m_dmad[2].d ).formatstr("%08X");
- state_add( TLCS900_DMAC2, "DMAC0", m_dmac[2].w.l ).formatstr("%04X");
- state_add( TLCS900_DMAM2, "DMAM0", m_dmam[2].b.l ).formatstr("%02X");
- state_add( TLCS900_DMAS3, "DMAS0", m_dmas[3].d ).formatstr("%08X");
- state_add( TLCS900_DMAD3, "DMAD0", m_dmad[3].d ).formatstr("%08X");
- state_add( TLCS900_DMAC3, "DMAC0", m_dmac[3].w.l ).formatstr("%04X");
- state_add( TLCS900_DMAM3, "DMAM0", m_dmam[3].b.l ).formatstr("%02X");
+ state_add( TLCS900_DMAS1, "DMAS1", m_dmas[1].d ).formatstr("%08X");
+ state_add( TLCS900_DMAD1, "DMAD1", m_dmad[1].d ).formatstr("%08X");
+ state_add( TLCS900_DMAC1, "DMAC1", m_dmac[1].w.l ).formatstr("%04X");
+ state_add( TLCS900_DMAM1, "DMAM1", m_dmam[1].b.l ).formatstr("%02X");
+ state_add( TLCS900_DMAS2, "DMAS2", m_dmas[2].d ).formatstr("%08X");
+ state_add( TLCS900_DMAD2, "DMAD2", m_dmad[2].d ).formatstr("%08X");
+ state_add( TLCS900_DMAC2, "DMAC2", m_dmac[2].w.l ).formatstr("%04X");
+ state_add( TLCS900_DMAM2, "DMAM2", m_dmam[2].b.l ).formatstr("%02X");
+ state_add( TLCS900_DMAS3, "DMAS3", m_dmas[3].d ).formatstr("%08X");
+ state_add( TLCS900_DMAD3, "DMAD3", m_dmad[3].d ).formatstr("%08X");
+ state_add( TLCS900_DMAC3, "DMAC3", m_dmac[3].w.l ).formatstr("%04X");
+ state_add( TLCS900_DMAM3, "DMAM3", m_dmam[3].b.l ).formatstr("%02X");
state_add( STATE_GENPC, "GENPC", m_pc.d ).noshow();
state_add( STATE_GENFLAGS, "GENFLAGS", m_sr.w.l ).formatstr("%12s").noshow();
@@ -376,7 +384,7 @@ void tlcs900h_device::device_start()
}
-void tlcs900h_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tlcs900h_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -1732,7 +1740,151 @@ void tmp95c063_device::tlcs900_check_irqs()
void tmp95c063_device::tlcs900_handle_ad()
{
- // TODO
+ if ( m_ad_cycles_left > 0 )
+ {
+ m_ad_cycles_left -= m_cycles;
+ if ( m_ad_cycles_left <= 0 )
+ {
+ int ad_value;
+
+ /* Store A/D converted value */
+ if ((m_reg[TMP95C063_ADMOD1] & 0x10) == 0) // conversion channel fixed
+ {
+ switch( m_reg[TMP95C063_ADMOD2] & 0x07 )
+ {
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ {
+ switch( m_reg[TMP95C063_ADMOD2] & 0x07 )
+ {
+ 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
+ ad_value = m_an0_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
+ 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: // 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;
+ ad_value = m_an1_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
+ 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: // 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;
+ ad_value = m_an1_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
+ ad_value = m_an2_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
+ 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
+ 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
+ ad_value = m_an4_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
+ 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: // 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;
+ ad_value = m_an5_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
+ 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: // 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;
+ ad_value = m_an5_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
+ ad_value = m_an6_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
+ ad_value = m_an7_read(0) & 0x3ff;
+ m_reg[TMP95C063_ADREG37L] = (ad_value & 0x3) << 6;
+ m_reg[TMP95C063_ADREG37H] = (ad_value >> 2) & 0xff;
+ break;
+ }
+ }
+
+ /* Clear BUSY flag, set END flag */
+ m_reg[TMP95C063_ADMOD1] &= ~ 0x40;
+ m_reg[TMP95C063_ADMOD1] |= 0x80;
+
+ m_reg[TMP95C063_INTE0AD] |= 0x80;
+ m_check_irqs = 1;
+ }
+ }
}
@@ -1762,6 +1914,14 @@ void tmp95c063_device::device_start()
m_portd_write.resolve_safe();
m_porte_read.resolve_safe(0);
m_porte_write.resolve_safe();
+ m_an0_read.resolve_safe(0);
+ m_an1_read.resolve_safe(0);
+ m_an2_read.resolve_safe(0);
+ m_an3_read.resolve_safe(0);
+ m_an4_read.resolve_safe(0);
+ m_an5_read.resolve_safe(0);
+ m_an6_read.resolve_safe(0);
+ m_an7_read.resolve_safe(0);
}
void tmp95c063_device::device_reset()
@@ -2050,6 +2210,26 @@ WRITE8_MEMBER( tmp95c063_device::internal_w )
case TMP95C063_IIMC:
break;
+ case TMP95C063_ADMOD1:
+ // conversion start
+ if (data & 0x04)
+ {
+ data &= ~0x04;
+ data |= 0x40;
+
+ switch ((m_reg[TMP95C063_ADMOD2] >> 4) & 3)
+ {
+ case 0: m_ad_cycles_left = 160; break;
+ case 1: m_ad_cycles_left = 320; break;
+ case 2: m_ad_cycles_left = 640; break;
+ case 3: m_ad_cycles_left = 1280; break;
+ }
+ }
+ break;
+
+ case TMP95C063_ADMOD2:
+ break;
+
default:
break;
}
diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h
index 0481d96db21..54b68a090d5 100644
--- a/src/devices/cpu/tlcs900/tlcs900.h
+++ b/src/devices/cpu/tlcs900/tlcs900.h
@@ -49,7 +49,6 @@ class tlcs900h_device : public cpu_device
{
public:
// construction/destruction
- tlcs900h_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
tlcs900h_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname);
// static configuration helpers
@@ -72,7 +71,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
@@ -744,6 +743,14 @@ private:
#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) tmp95c063_device::set_portd_write( *device, DEVCB_##_port_write );
#define MCFG_TMP95C063_PORTE_READ( _port_read ) tmp95c063_device::set_porte_read( *device, DEVCB_##_port_read );
#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) tmp95c063_device::set_porte_write( *device, DEVCB_##_port_write );
+#define MCFG_TMP95C063_AN0_READ( _port_read ) tmp95c063_device::set_an0_read( *device, DEVCB_##_port_read );
+#define MCFG_TMP95C063_AN1_READ( _port_read ) tmp95c063_device::set_an1_read( *device, DEVCB_##_port_read );
+#define MCFG_TMP95C063_AN2_READ( _port_read ) tmp95c063_device::set_an2_read( *device, DEVCB_##_port_read );
+#define MCFG_TMP95C063_AN3_READ( _port_read ) tmp95c063_device::set_an3_read( *device, DEVCB_##_port_read );
+#define MCFG_TMP95C063_AN4_READ( _port_read ) tmp95c063_device::set_an4_read( *device, DEVCB_##_port_read );
+#define MCFG_TMP95C063_AN5_READ( _port_read ) tmp95c063_device::set_an5_read( *device, DEVCB_##_port_read );
+#define MCFG_TMP95C063_AN6_READ( _port_read ) tmp95c063_device::set_an6_read( *device, DEVCB_##_port_read );
+#define MCFG_TMP95C063_AN7_READ( _port_read ) tmp95c063_device::set_an7_read( *device, DEVCB_##_port_read );
class tmp95c063_device : public tlcs900h_device
{
@@ -777,6 +784,14 @@ public:
template<class _Object> static devcb_base &set_portd_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_portd_write.set_callback(object); }
template<class _Object> static devcb_base &set_porte_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_porte_read.set_callback(object); }
template<class _Object> static devcb_base &set_porte_write(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_porte_write.set_callback(object); }
+ template<class _Object> static devcb_base &set_an0_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an0_read.set_callback(object); }
+ template<class _Object> static devcb_base &set_an1_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an1_read.set_callback(object); }
+ template<class _Object> static devcb_base &set_an2_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an2_read.set_callback(object); }
+ template<class _Object> static devcb_base &set_an3_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an3_read.set_callback(object); }
+ template<class _Object> static devcb_base &set_an4_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an4_read.set_callback(object); }
+ template<class _Object> static devcb_base &set_an5_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an5_read.set_callback(object); }
+ template<class _Object> static devcb_base &set_an6_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an6_read.set_callback(object); }
+ template<class _Object> static devcb_base &set_an7_read(device_t &device, _Object object) { return downcast<tmp95c063_device &>(device).m_an7_read.set_callback(object); }
protected:
virtual void device_config_complete() override;
@@ -835,6 +850,16 @@ private:
// Port E: 8 bit I/O.
devcb_read8 m_porte_read;
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;
};
#endif
diff --git a/src/devices/cpu/tms0980/tms0980.cpp b/src/devices/cpu/tms0980/tms0980.cpp
index 3cb9f2a0800..7bc62b5a475 100644
--- a/src/devices/cpu/tms0980/tms0980.cpp
+++ b/src/devices/cpu/tms0980/tms0980.cpp
@@ -166,31 +166,35 @@ const device_type TMS1670 = &device_creator<tms1670_cpu_device>; // high voltage
// - 2048x9bit ROM array at the bottom-left
// - main instructions PLA at the top half, to the right of the midline
// - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions
-// - 16-term output PLA and segment PLA above the RAM (rotate opla 90 degrees)
+// - 16-term inverted output PLA and segment PLA above the RAM (rotate opla 90 degrees)
const device_type TMS0980 = &device_creator<tms0980_cpu_device>; // 28-pin DIP, 9 R pins
// TMS1980 is a TMS0980 with a TMS1x00 style opla
-// - RAM, ROM, and main instructions PLA is exactly the same as TMS0980
+// - RAM, ROM, and main instructions PLA is the same as TMS0980
// - one of the microinstructions redirects to a RSTR instruction, like on TMS0270
-// - 32-term output PLA above the RAM, 7 bits! (rotate opla 270 degrees)
-const device_type TMS1980 = &device_creator<tms1980_cpu_device>; // 28-pin DIP, 7 O pins, ? R pins, high voltage
-// TMS0260 is same?
+// - 32-term inverted output PLA above the RAM, 7 bits! (rotate opla 270 degrees)
+const device_type TMS1980 = &device_creator<tms1980_cpu_device>; // 28-pin DIP, 7 O pins, 10 R pins, high voltage
+
+// TMS0950 is a TMS1000 with a TMS0980 style opla, it was quickly succeeded by the TMS0970
+// - RAM, ROM, microinstructions is the same as TMS1000
+// - 10-term inverted output PLA and segment PLA on the top-left
+const device_type TMS0950 = &device_creator<tms0950_cpu_device>; // 28-pin DIP, 8 O pins, 11? R pins
// TMS0970 is a stripped-down version of the TMS0980, itself acting more like a TMS1000
-// - RAM and ROM is exactly the same as TMS1000
+// - RAM and ROM is the same as TMS1000
// - main instructions PLA at the top half, to the right of the midline
// - 32-term microinstructions PLA between the RAM and ROM, supporting 15 microinstructions
-// - 16-term output PLA and segment PLA above the RAM (rotate opla 90 degrees)
+// - 16-term inverted output PLA and segment PLA above the RAM (rotate opla 90 degrees)
const device_type TMS0970 = &device_creator<tms0970_cpu_device>; // 28-pin DIP, 11 R pins (note: pinout may slightly differ from chip to chip)
const device_type TMS1990 = &device_creator<tms1990_cpu_device>; // 28-pin DIP, ? R pins..
-// TMS0950 is same?
// TMS0270 on the other hand, is a TMS0980 with earrings and a new hat. The new changes look like a quick afterthought, almost hacky
-// - RAM, ROM, and main instructions PLA is exactly the same as TMS0980
+// - RAM, ROM, and main instructions PLA is the same as TMS0980
// - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions plus optional separate lines for custom opcode handling
// - 48-term output PLA above the RAM (rotate opla 90 degrees)
const device_type TMS0270 = &device_creator<tms0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O)
// newer TMS0270 chips (eg. Speak & Math) have 42 pins
+// TMS0260 is same or similar?
// internal memory maps
@@ -302,6 +306,10 @@ tms0970_cpu_device::tms0970_cpu_device(const machine_config &mconfig, device_typ
: tms1000_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
{ }
+tms0950_cpu_device::tms0950_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : tms0970_cpu_device(mconfig, TMS0950, "TMS0950", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms0950", __FILE__)
+{ }
+
tms1990_cpu_device::tms1990_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: tms0970_cpu_device(mconfig, TMS1990, "TMS1990", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms1990", __FILE__)
{ }
@@ -316,7 +324,7 @@ tms0980_cpu_device::tms0980_cpu_device(const machine_config &mconfig, device_typ
{ }
tms1980_cpu_device::tms1980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : tms0980_cpu_device(mconfig, TMS1980, "TMS1980", tag, owner, clock, 7, 11, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_64x9_as4), "tms1980", __FILE__)
+ : tms0980_cpu_device(mconfig, TMS1980, "TMS1980", tag, owner, clock, 7, 10, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_64x9_as4), "tms1980", __FILE__)
{ }
@@ -359,6 +367,23 @@ machine_config_constructor tms1400_cpu_device::device_mconfig_additions() const
}
+static MACHINE_CONFIG_FRAGMENT(tms0950)
+
+ // microinstructions PLA, output PLA, segment PLA
+ MCFG_PLA_ADD("mpla", 8, 16, 30)
+ MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_ADD("opla", 4, 8, 10)
+ MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_ADD("spla", 3, 8, 8)
+ MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+MACHINE_CONFIG_END
+
+machine_config_constructor tms0950_cpu_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME(tms0950);
+}
+
+
static MACHINE_CONFIG_FRAGMENT(tms0970)
// main opcodes PLA, microinstructions PLA, output PLA, segment PLA
@@ -402,7 +427,7 @@ static MACHINE_CONFIG_FRAGMENT(tms1980)
// main opcodes PLA, microinstructions PLA, output PLA
MCFG_PLA_ADD("ipla", 9, 22, 24)
MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
- MCFG_PLA_ADD("mpla", 6, 21, 64)
+ MCFG_PLA_ADD("mpla", 6, 22, 64)
MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
MCFG_PLA_ADD("opla", 5, 7, 32)
MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
@@ -450,7 +475,7 @@ offs_t tms0980_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UIN
return CPU_DISASSEMBLE_NAME(tms0980)(this, buffer, pc, oprom, opram, options);
}
-void tms1xxx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms1xxx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -763,7 +788,7 @@ UINT32 tms0980_cpu_device::decode_micro(UINT8 sel)
mask ^= 0x43fc3; // invert active-negative
// M_RSTR is specific to TMS02x0/TMS1980, it redirects to F_RSTR
- // M_UNK1 is specific to TMS0270, unknown yet
+ // M_UNK1 is specific to TMS0270, unknown/unused yet and apparently not connected on every TMS0270
// _______ ______ _____ _____ _____ _____ ______ _____ ______ _____ _____
const UINT32 md[22] = { M_NDMTP, M_DMTP, M_AUTY, M_AUTA, M_CKM, M_SSE, M_CKP, M_YTP, M_MTP, M_ATN, M_NATN, M_MTN, M_15TN, M_CKN, M_NE, M_C8, M_SSS, M_CME, M_CIN, M_STO, M_RSTR, M_UNK1 };
@@ -908,7 +933,7 @@ void tms0270_cpu_device::dynamic_output()
if (m_chipsel)
{
- // ACC via SEG B,C,D,G: TMS5100 CTL pins
+ // ACC via SEG G,B,C,D: TMS5100 CTL pins
if (m_ctl_dir && m_a != m_ctl_out)
{
m_ctl_out = m_a;
@@ -956,7 +981,7 @@ UINT8 tms0980_cpu_device::read_k_input()
UINT8 tms0270_cpu_device::read_k_input()
{
- // external: TMS5100 CTL port via SEG B,C,D,G
+ // external: TMS5100 CTL port via SEG G,B,C,D
if (m_chipsel)
return (m_ctl_dir) ? m_ctl_out : m_read_ctl(0, 0xff) & 0xf;
@@ -1238,11 +1263,12 @@ void tms1xxx_cpu_device::op_tpc()
// TMS0970-specific (and possibly child classes)
+
void tms0970_cpu_device::op_setr()
{
// SETR: set output register
// DDIG line is a coincidence between the selected output pla row(s) and segment pla row(s)
- int ddig = (m_opla->read(m_a) & m_o) ? 0 : 1;
+ int ddig = (m_opla->read(m_a) & m_o) ? 1 : 0;
m_r = (m_r & ~(1 << m_y)) | (ddig << m_y);
}
diff --git a/src/devices/cpu/tms0980/tms0980.h b/src/devices/cpu/tms0980/tms0980.h
index fb8255be68e..2572eb1b1ef 100644
--- a/src/devices/cpu/tms0980/tms0980.h
+++ b/src/devices/cpu/tms0980/tms0980.h
@@ -137,7 +137,8 @@ protected:
virtual UINT32 disasm_min_opcode_bytes() const override { return 1; }
virtual UINT32 disasm_max_opcode_bytes() const override { return 1; }
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ // device_state_interface overrides
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
void next_pc();
@@ -373,6 +374,20 @@ protected:
virtual void op_tdo() override;
};
+class tms0950_cpu_device : public tms0970_cpu_device
+{
+public:
+ tms0950_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ // overrides
+ virtual void device_reset() override { tms1000_cpu_device::device_reset(); }
+ virtual machine_config_constructor device_mconfig_additions() const override;
+
+ virtual void op_rstr() override { ; } // assume it has no RSTR or CLO
+ virtual void op_clo() override { ; } // "
+};
+
class tms1990_cpu_device : public tms0970_cpu_device
{
public:
@@ -478,6 +493,7 @@ extern const device_type TMS1400;
extern const device_type TMS1470;
extern const device_type TMS1600;
extern const device_type TMS1670;
+extern const device_type TMS0950;
extern const device_type TMS0970;
extern const device_type TMS1990;
extern const device_type TMS0980;
diff --git a/src/devices/cpu/tms32010/tms32010.cpp b/src/devices/cpu/tms32010/tms32010.cpp
index e6264d3f1dd..3a164e8f984 100644
--- a/src/devices/cpu/tms32010/tms32010.cpp
+++ b/src/devices/cpu/tms32010/tms32010.cpp
@@ -895,7 +895,7 @@ void tms32010_device::device_reset()
}
-void tms32010_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms32010_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h
index 2185e324346..a1c0692c566 100644
--- a/src/devices/cpu/tms32010/tms32010.h
+++ b/src/devices/cpu/tms32010/tms32010.h
@@ -72,7 +72,7 @@ protected:
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 : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/tms32025/tms32025.cpp b/src/devices/cpu/tms32025/tms32025.cpp
index e9226c86165..2d40b2d3448 100644
--- a/src/devices/cpu/tms32025/tms32025.cpp
+++ b/src/devices/cpu/tms32025/tms32025.cpp
@@ -1801,7 +1801,7 @@ void tms32025_device::state_export(const device_state_entry &entry)
}
-void tms32025_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms32025_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -2187,7 +2187,7 @@ bool tms32025_device::memory_readop(offs_t offset, int size, UINT64 &value)
****************************************************************************/
bool tms32025_device::memory_read(address_spacenum spacenum, offs_t offset, int size, UINT64 &value)
{
- void *ptr = nullptr;
+ void *ptr;
UINT64 temp = 0;
switch (spacenum)
@@ -2239,7 +2239,7 @@ bool tms32025_device::memory_read(address_spacenum spacenum, offs_t offset, int
****************************************************************************/
bool tms32025_device::memory_write(address_spacenum spacenum, offs_t offset, int size, UINT64 value)
{
- void *ptr = nullptr;
+ void *ptr;
switch (spacenum)
{
diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h
index 773ddb576f8..daac81c8314 100644
--- a/src/devices/cpu/tms32025/tms32025.h
+++ b/src/devices/cpu/tms32025/tms32025.h
@@ -97,7 +97,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
@@ -276,7 +276,6 @@ private:
void mpys();
void mpyu();
void neg();
- void nop();
void norm();
void or_();
void ork();
diff --git a/src/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp
index d391285f314..cfab62a7929 100644
--- a/src/devices/cpu/tms32031/tms32031.cpp
+++ b/src/devices/cpu/tms32031/tms32031.cpp
@@ -529,7 +529,7 @@ void tms3203x_device::state_export(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void tms3203x_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms3203x_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h
index 0dbc85fdf96..4ce0decf010 100644
--- a/src/devices/cpu/tms32031/tms32031.h
+++ b/src/devices/cpu/tms32031/tms32031.h
@@ -179,7 +179,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
@@ -199,7 +199,6 @@ protected:
bool condition(int which);
// floating point helpers
- void double_to_dsp_with_flags(double val, tmsreg &result);
void int2float(tmsreg &srcdst);
void float2int(tmsreg &srcdst, bool setflags);
void negf(tmsreg &dst, tmsreg &src);
diff --git a/src/devices/cpu/tms32051/32051ops.inc b/src/devices/cpu/tms32051/32051ops.inc
index c52cf4a1d5d..83e769416a1 100644
--- a/src/devices/cpu/tms32051/32051ops.inc
+++ b/src/devices/cpu/tms32051/32051ops.inc
@@ -15,12 +15,20 @@ UINT16 tms32051_device::POP_STACK()
return pc;
}
-INT32 tms32051_device::SUB(UINT32 a, UINT32 b)
+INT32 tms32051_device::SUB(UINT32 a, UINT32 b, bool shift16)
{
UINT32 res = a - b;
- // C is cleared if borrow was generated
- m_st1.c = (b > a) ? 0 : 1;
+ if (shift16)
+ {
+ // C is cleared if borrow was generated, otherwise unaffected
+ if (a < res) m_st1.c = 0;
+ }
+ else
+ {
+ // C is cleared if borrow was generated
+ m_st1.c = (a < res) ? 0 : 1;
+ }
// check overflow
if ((a ^ b) & (a ^ res) & 0x80000000)
@@ -37,12 +45,20 @@ INT32 tms32051_device::SUB(UINT32 a, UINT32 b)
return (INT32)(res);
}
-INT32 tms32051_device::ADD(UINT32 a, UINT32 b)
+INT32 tms32051_device::ADD(UINT32 a, UINT32 b, bool shift16)
{
UINT32 res = a + b;
- // C is set if carry was generated
- m_st1.c = (a > res) ? 1 : 0;
+ if (shift16)
+ {
+ // C is set if carry was generated, otherwise unaffected
+ if (a > res) m_st1.c = 1;
+ }
+ else
+ {
+ // C is set if carry was generated
+ m_st1.c = (a > res) ? 1 : 0;
+ }
// check overflow
if ((a ^ res) & (b ^ res) & 0x80000000)
@@ -180,67 +196,63 @@ UINT16 tms32051_device::GET_ADDRESS()
}
}
-int tms32051_device::GET_ZLVC_CONDITION(int zlvc, int zlvc_mask)
+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) // OV
- {
- // clear OV
- m_st0.ov = 0;
-
- return 1;
- }
- else if ((zlvc & 0x2) == 0 && m_st0.ov == 0) // NOV
- return 1;
+ if ((zlvc & 0x2) && m_st0.ov == 0) // OV
+ return false;
+ 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) // C
- return 1;
- else if ((zlvc & 0x1) == 0 && m_st1.c == 0) // NC
- return 1;
+ if ((zlvc & 0x1) && m_st1.c == 0) // C
+ return false;
+ if (((zlvc & 0x1) == 0) && m_st1.c != 0) // NC
+ return false;
}
- if (zlvc_mask & 0x8) // Z-bit
- {
- if ((zlvc & 0x8) && (INT32)(m_acc) == 0) // EQ
- return 1;
- else if ((zlvc & 0x8) == 0 && (INT32)(m_acc) != 0) // NEQ
- return 1;
- }
- if (zlvc_mask & 0x4) // L-bit
+
+ switch ((zlvc_mask & 0xc) | ((zlvc >> 2) & 0x3))
{
- if ((zlvc & 0x4) && (INT32)(m_acc) < 0) // LT
- return 1;
- else if ((zlvc & 0x4) == 0 && (INT32)(m_acc) > 0) // GT
- return 1;
+ 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 0;
+ return true;
}
-int tms32051_device::GET_TP_CONDITION(int tp)
+bool tms32051_device::GET_TP_CONDITION(int tp)
{
switch (tp)
{
case 0: // BIO pin low
- {
// TODO
- return 0;
- }
- case 1: // TC = 1
- {
- return m_st1.tc;
- }
- case 2: // TC = 0
- {
- return m_st1.tc ^ 1;
- }
- case 3: // always false
- {
- return 0;
- }
+ return false;
+
+ case 1: // TC == 1
+ return m_st1.tc != 0;
+
+ case 2: // TC == 0
+ return m_st1.tc == 0;
+
+ case 3:
+ return true;
}
- return 0;
+ return true;
}
INT32 tms32051_device::PREG_PSCALER(INT32 preg)
@@ -302,7 +314,7 @@ void tms32051_device::op_add_mem()
d = (UINT32)(UINT16)(data) << shift;
}
- m_acc = ADD(m_acc, d);
+ m_acc = ADD(m_acc, d, false);
CYCLES(1);
}
@@ -311,7 +323,7 @@ void tms32051_device::op_add_simm()
{
UINT16 imm = m_op & 0xff;
- m_acc = ADD(m_acc, imm);
+ m_acc = ADD(m_acc, imm, false);
CYCLES(1);
}
@@ -331,7 +343,7 @@ void tms32051_device::op_add_limm()
d = (UINT32)(UINT16)(imm) << shift;
}
- m_acc = ADD(m_acc, d);
+ m_acc = ADD(m_acc, d, false);
CYCLES(2);
}
@@ -341,14 +353,14 @@ void tms32051_device::op_add_s16_mem()
UINT16 ea = GET_ADDRESS();
UINT32 data = DM_READ16(ea) << 16;
- m_acc = ADD(m_acc, data);
+ m_acc = ADD(m_acc, data, true);
CYCLES(1);
}
void tms32051_device::op_addb()
{
- m_acc = ADD(m_acc, m_accb);
+ m_acc = ADD(m_acc, m_accb, false);
CYCLES(1);
}
@@ -370,7 +382,12 @@ void tms32051_device::op_addt()
void tms32051_device::op_and_mem()
{
- fatalerror("32051: unimplemented op and mem at %08X\n", m_pc-1);
+ UINT16 ea = GET_ADDRESS();
+ UINT16 data = DM_READ16(ea);
+
+ m_acc &= (UINT32)(data);
+
+ CYCLES(1);
}
void tms32051_device::op_and_limm()
@@ -658,12 +675,27 @@ void tms32051_device::op_sath()
void tms32051_device::op_satl()
{
- fatalerror("32051: unimplemented op satl at %08X\n", m_pc-1);
+ int count = m_treg1 & 0xf;
+ if (m_st1.sxm)
+ {
+ m_acc = (INT32)(m_acc) >> count;
+ }
+ else
+ {
+ m_acc = (UINT32)(m_acc) >> count;
+ }
+
+ CYCLES(1);
}
void tms32051_device::op_sbb()
{
- m_acc = SUB(m_acc, m_accb);
+ UINT32 res = m_acc - m_accb;
+
+ // C is cleared if borrow was generated
+ m_st1.c = ((UINT32)(m_acc) < res) ? 0 : 1;
+
+ m_acc = res;
CYCLES(1);
}
@@ -730,7 +762,7 @@ void tms32051_device::op_sub_mem()
d = (UINT32)(UINT16)(data) << shift;
}
- m_acc = SUB(m_acc, d);
+ m_acc = SUB(m_acc, d, false);
CYCLES(1);
}
@@ -744,7 +776,7 @@ void tms32051_device::op_sub_simm()
{
UINT16 imm = m_op & 0xff;
- m_acc = SUB(m_acc, imm);
+ m_acc = SUB(m_acc, imm, false);
CYCLES(1);
}
@@ -764,7 +796,7 @@ void tms32051_device::op_sub_limm()
d = (UINT32)(UINT16)(imm) << shift;
}
- m_acc = SUB(m_acc, d);
+ m_acc = SUB(m_acc, d, false);
CYCLES(2);
}
@@ -1006,10 +1038,14 @@ void tms32051_device::op_bcnd()
{
UINT16 pma = ROPCODE();
- if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) || GET_TP_CONDITION((m_op >> 8) & 0x3))
+ if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) && GET_TP_CONDITION((m_op >> 8) & 0x3))
{
CHANGE_PC(pma);
CYCLES(4);
+
+ // clear overflow
+ if (m_op & 0x2)
+ m_st0.ov = 0;
}
else
{
@@ -1021,8 +1057,12 @@ void tms32051_device::op_bcndd()
{
UINT16 pma = ROPCODE();
- if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) || GET_TP_CONDITION((m_op >> 8) & 0x3))
+ if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) && GET_TP_CONDITION((m_op >> 8) & 0x3))
{
+ // clear overflow
+ if (m_op & 0x2)
+ m_st0.ov = 0;
+
delay_slot(m_pc);
CHANGE_PC(pma);
CYCLES(4);
@@ -1088,17 +1128,37 @@ void tms32051_device::op_calld()
void tms32051_device::op_cc()
{
- fatalerror("32051: unimplemented op cc at %08X\n", m_pc-1);
+ UINT16 pma = ROPCODE();
+
+ if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) && GET_TP_CONDITION((m_op >> 8) & 0x3))
+ {
+ PUSH_STACK(m_pc);
+
+ CHANGE_PC(pma);
+ CYCLES(4);
+
+ // clear overflow
+ if (m_op & 0x2)
+ m_st0.ov = 0;
+ }
+ else
+ {
+ CYCLES(2);
+ }
}
void tms32051_device::op_ccd()
{
UINT16 pma = ROPCODE();
- if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) || GET_TP_CONDITION((m_op >> 8) & 0x3))
+ if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) && GET_TP_CONDITION((m_op >> 8) & 0x3))
{
PUSH_STACK(m_pc+2);
+ // clear overflow
+ if (m_op & 0x2)
+ m_st0.ov = 0;
+
delay_slot(m_pc);
CHANGE_PC(pma);
}
@@ -1118,7 +1178,7 @@ void tms32051_device::op_nmi()
void tms32051_device::op_retc()
{
- if ((m_op & 0x3ff) == 0x300 || GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) || GET_TP_CONDITION((m_op >> 8) & 0x3))
+ if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) && GET_TP_CONDITION((m_op >> 8) & 0x3))
{
UINT16 pc = POP_STACK();
CHANGE_PC(pc);
@@ -1132,7 +1192,7 @@ void tms32051_device::op_retc()
void tms32051_device::op_retcd()
{
- if ((m_op & 0x3ff) == 0x300 || GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) || GET_TP_CONDITION((m_op >> 8) & 0x3))
+ if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) && GET_TP_CONDITION((m_op >> 8) & 0x3))
{
UINT16 pc = POP_STACK();
delay_slot(m_pc);
@@ -1169,7 +1229,7 @@ void tms32051_device::op_trap()
void tms32051_device::op_xc()
{
- if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) || GET_TP_CONDITION((m_op >> 8) & 0x3))
+ if (GET_ZLVC_CONDITION((m_op >> 4) & 0xf, m_op & 0xf) && GET_TP_CONDITION((m_op >> 8) & 0x3))
{
CYCLES(1);
}
@@ -1314,7 +1374,14 @@ void tms32051_device::op_lmmr()
void tms32051_device::op_out()
{
- fatalerror("32051: unimplemented op out at %08X\n", m_pc-1);
+ UINT16 port = ROPCODE();
+ UINT16 ea = GET_ADDRESS();
+
+ UINT16 data = DM_READ16(ea);
+ m_io->write_word(port << 1, data);
+
+ // TODO: handle repeat
+ CYCLES(3);
}
void tms32051_device::op_smmr()
@@ -1371,7 +1438,11 @@ 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;
+
DM_WRITE16(ea, data);
CYCLES(1);
}
@@ -1381,7 +1452,11 @@ 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;
+
DM_WRITE16(ea, data);
CYCLES(1);
}
@@ -1407,6 +1482,9 @@ void tms32051_device::op_opl_dbmr()
UINT16 ea = GET_ADDRESS();
UINT16 data = DM_READ16(ea);
data |= m_dbmr;
+
+ m_st1.tc = (data == 0) ? 1 : 0;
+
DM_WRITE16(ea, data);
CYCLES(1);
}
@@ -1417,6 +1495,9 @@ void tms32051_device::op_opl_imm()
UINT16 imm = ROPCODE();
UINT16 data = DM_READ16(ea);
data |= imm;
+
+ m_st1.tc = (data == 0) ? 1 : 0;
+
DM_WRITE16(ea, data);
CYCLES(1);
}
@@ -1444,7 +1525,7 @@ void tms32051_device::op_xpl_imm()
void tms32051_device::op_apac()
{
INT32 spreg = PREG_PSCALER(m_preg);
- m_acc = ADD(m_acc, spreg);
+ m_acc = ADD(m_acc, spreg, false);
CYCLES(1);
}
@@ -1477,7 +1558,7 @@ void tms32051_device::op_lta()
m_treg0 = data;
spreg = PREG_PSCALER(m_preg);
- m_acc = ADD(m_acc, spreg);
+ m_acc = ADD(m_acc, spreg, false);
if (m_pmst.trm == 0)
{
m_treg1 = data;
@@ -1578,7 +1659,11 @@ void tms32051_device::op_sph()
void tms32051_device::op_spl()
{
- fatalerror("32051: unimplemented op spl at %08X\n", m_pc-1);
+ UINT16 ea = GET_ADDRESS();
+ UINT16 spreg = (UINT16)(PREG_PSCALER(m_preg));
+ DM_WRITE16(ea, spreg);
+
+ CYCLES(1);
}
void tms32051_device::op_spm()
@@ -1670,7 +1755,9 @@ void tms32051_device::op_clrc_intm()
void tms32051_device::op_clrc_xf()
{
- fatalerror("32051: unimplemented op clrc xf at %08X\n", m_pc-1);
+ m_st1.xf = 0;
+
+ CYCLES(1);
}
void tms32051_device::op_idle()
@@ -1780,7 +1867,9 @@ void tms32051_device::op_setc_hold()
void tms32051_device::op_setc_tc()
{
- fatalerror("32051: unimplemented op setc tc at %08X\n", m_pc-1);
+ m_st1.tc = 1;
+
+ CYCLES(1);
}
void tms32051_device::op_setc_carry()
@@ -1790,7 +1879,9 @@ void tms32051_device::op_setc_carry()
void tms32051_device::op_setc_xf()
{
- fatalerror("32051: unimplemented op setc xf at %08X\n", m_pc-1);
+ m_st1.xf = 1;
+
+ CYCLES(1);
}
void tms32051_device::op_setc_cnf()
diff --git a/src/devices/cpu/tms32051/dis32051.cpp b/src/devices/cpu/tms32051/dis32051.cpp
index 6f3c4ea2156..ad4f2be1d04 100644
--- a/src/devices/cpu/tms32051/dis32051.cpp
+++ b/src/devices/cpu/tms32051/dis32051.cpp
@@ -27,22 +27,22 @@ static const char *const zl_condition_codes[] =
static const char *const cv_condition_codes[16] =
{
- "", // C=0, V=0, CM=0, VM=0
- "nov", // C=0, V=0, CM=0, VM=1
- "nc", // C=0, V=0, CM=1, VM=0
- "nc nov", // C=0, V=0, CM=1, VM=1
- "", // C=0, V=1, CM=0, VM=0
- "ov", // C=0, V=1, CM=0, VM=1
- "nc", // C=0, V=1, CM=1, VM=0
- "nc ov", // C=0, V=1, CM=1, VM=1
- "", // C=1, V=0, CM=0, VM=0
- "nov", // C=1, V=0, CM=0, VM=1
- "c", // C=1, V=0, CM=1, VM=0
- "c nov", // C=1, V=0, CM=1, VM=1
- "", // C=1, V=1, CM=0, VM=0
- "ov", // C=1, V=1, CM=0, VM=1
- "c", // C=1, V=1, CM=1, VM=0
- "c ov", // C=1, V=1, CM=1, VM=1
+ "", // V=0, C=0, VM=0, CM=0
+ "nc", // V=0, C=0, VM=0, CM=1
+ "nov", // V=0, C=0, VM=1, CM=0
+ "nc nov", // V=0, C=0, VM=1, CM=1
+ "", // V=0, C=1, VM=0, CM=0
+ "c", // V=0, C=1, VM=0, CM=1
+ "nov", // V=0, C=1, VM=1, CM=0
+ "c nov", // V=0, C=1, VM=1, CM=1
+ "", // V=1, C=0, VM=0, CM=0
+ "nc", // V=1, C=0, VM=0, CM=1
+ "ov", // V=1, C=0, VM=1, CM=0
+ "nc ov", // V=1, C=0, VM=1, CM=1
+ "", // V=1, C=1, VM=0, CM=0
+ "c", // V=1, C=1, VM=0, CM=1
+ "ov", // V=1, C=1, VM=1, CM=0
+ "c ov", // V=1, C=1, VM=1, CM=1
};
static const char *const tp_condition_codes[4] =
@@ -128,6 +128,30 @@ static char *GET_SHIFT(int shift)
return buffer;
}
+static void print_condition_codes(bool pp, int zl, int cv, int tp)
+{
+ if (*(zl_condition_codes[zl]) != 0)
+ {
+ if (pp)
+ print(", ");
+ print("%s", zl_condition_codes[zl]);
+ pp = true;
+ }
+ if (*(cv_condition_codes[cv]) != 0)
+ {
+ if (pp)
+ print(", ");
+ print("%s", cv_condition_codes[cv]);
+ pp = true;
+ }
+ if (*(tp_condition_codes[tp]) != 0)
+ {
+ if (pp)
+ print(", ");
+ print("%s", tp_condition_codes[tp]);
+ }
+}
+
static void dasm_group_be(UINT16 opcode)
{
int subop = opcode & 0xff;
@@ -207,8 +231,8 @@ static void dasm_group_be(UINT16 opcode)
case 0x82: print("or #%04X", FETCH() << 16); break;
case 0x83: print("xor #%04X", FETCH() << 16); break;
case 0xc4: print("rpt #%04X", FETCH()); break;
- case 0xc5: print("rpt #%04X", FETCH()); break;
- case 0xc6: print("rpt #%04X", FETCH()); break;
+ case 0xc5: print("rptz #%04X", FETCH()); break;
+ case 0xc6: print("rptb #%04X", FETCH()); break;
default: print("??? (group be)"); break;
}
@@ -285,7 +309,7 @@ CPU_DISASSEMBLE( tms32051 )
break;
}
case 0x08: print("lamm %s", GET_ADDRESS(addr_mode, address)); break;
- case 0x09: print("smmr %s", GET_ADDRESS(addr_mode, address)); break;
+ case 0x09: print("smmr %s, #%04X", GET_ADDRESS(addr_mode, address), FETCH()); break;
case 0x0a: print("subc %s", GET_ADDRESS(addr_mode, address)); break;
case 0x0b: print("rpt %s", GET_ADDRESS(addr_mode, address)); break;
case 0x0c: print("out %s, #%04X", GET_ADDRESS(addr_mode, address), FETCH()); break;
@@ -463,19 +487,7 @@ CPU_DISASSEMBLE( tms32051 )
int tp = (opcode >> 8) & 0x3;
print("bcnd %04X", FETCH());
-
- if (*(zl_condition_codes[zl]) != 0)
- {
- print(", %s", zl_condition_codes[zl]);
- }
- if (*(cv_condition_codes[cv]) != 0)
- {
- print(", %s", cv_condition_codes[cv]);
- }
- if (*(tp_condition_codes[tp]) != 0)
- {
- print(", %s", tp_condition_codes[tp]);
- }
+ print_condition_codes(true, zl, cv, tp);
break;
}
@@ -490,19 +502,7 @@ CPU_DISASSEMBLE( tms32051 )
int n = ((opcode >> 12) & 0x1) + 1;
print("xc %d", n);
-
- if (*(zl_condition_codes[zl]) != 0)
- {
- print(", %s", zl_condition_codes[zl]);
- }
- if (*(cv_condition_codes[cv]) != 0)
- {
- print(", %s", cv_condition_codes[cv]);
- }
- if (*(tp_condition_codes[tp]) != 0)
- {
- print(", %s", tp_condition_codes[tp]);
- }
+ print_condition_codes(true, zl, cv, tp);
break;
}
@@ -515,23 +515,11 @@ CPU_DISASSEMBLE( tms32051 )
int tp = (opcode >> 8) & 0x3;
print("cc %04X", FETCH());
-
- if (*(zl_condition_codes[zl]) != 0)
- {
- print(", %s", zl_condition_codes[zl]);
- }
- if (*(cv_condition_codes[cv]) != 0)
- {
- print(", %s", cv_condition_codes[cv]);
- }
- if (*(tp_condition_codes[tp]) != 0)
- {
- print(", %s", tp_condition_codes[tp]);
- }
+ print_condition_codes(true, zl, cv, tp);
break;
}
- case 0xec: case 0xed: case 0xee:
+ case 0xec: case 0xed: case 0xee: case 0xef:
{
int zlcvmask = opcode & 0xf;
int zlcv = (opcode >> 4) & 0xf;
@@ -539,26 +527,19 @@ CPU_DISASSEMBLE( tms32051 )
int cv = ((zlcv << 2) & 0xc) | (zlcvmask & 0x3);
int tp = (opcode >> 8) & 0x3;
- print("retc ");
-
- if (*(zl_condition_codes[zl]) != 0)
+ if (opcode == 0xef00)
{
- print(", %s", zl_condition_codes[zl]);
+ print("ret");
}
- if (*(cv_condition_codes[cv]) != 0)
- {
- print(", %s", cv_condition_codes[cv]);
- }
- if (*(tp_condition_codes[tp]) != 0)
+ else
{
- print(", %s", tp_condition_codes[tp]);
+ print("retc ");
+ print_condition_codes(false, zl, cv, tp);
}
flags = DASMFLAG_STEP_OUT;
break;
}
- case 0xef: print("ret"); flags = DASMFLAG_STEP_OUT; break;
-
case 0xf0: case 0xf1: case 0xf2: case 0xf3:
{
int zlcvmask = opcode & 0xf;
@@ -568,19 +549,7 @@ CPU_DISASSEMBLE( tms32051 )
int tp = (opcode >> 8) & 0x3;
print("bcndd %04X", FETCH());
-
- if (*(zl_condition_codes[zl]) != 0)
- {
- print(", %s", zl_condition_codes[zl]);
- }
- if (*(cv_condition_codes[cv]) != 0)
- {
- print(", %s", cv_condition_codes[cv]);
- }
- if (*(tp_condition_codes[tp]) != 0)
- {
- print(", %s", tp_condition_codes[tp]);
- }
+ print_condition_codes(true, zl, cv, tp);
break;
}
@@ -593,23 +562,11 @@ CPU_DISASSEMBLE( tms32051 )
int tp = (opcode >> 8) & 0x3;
print("ccd %04X", FETCH());
-
- if (*(zl_condition_codes[zl]) != 0)
- {
- print(", %s", zl_condition_codes[zl]);
- }
- if (*(cv_condition_codes[cv]) != 0)
- {
- print(", %s", cv_condition_codes[cv]);
- }
- if (*(tp_condition_codes[tp]) != 0)
- {
- print(", %s", tp_condition_codes[tp]);
- }
+ print_condition_codes(true, zl, cv, tp);
break;
}
- case 0xfc: case 0xfd: case 0xfe:
+ case 0xfc: case 0xfd: case 0xfe: case 0xff:
{
int zlcvmask = opcode & 0xf;
int zlcv = (opcode >> 4) & 0xf;
@@ -617,26 +574,19 @@ CPU_DISASSEMBLE( tms32051 )
int cv = ((zlcv << 2) & 0xc) | (zlcvmask & 0x3);
int tp = (opcode >> 8) & 0x3;
- print("retcd ");
-
- if (*(zl_condition_codes[zl]) != 0)
- {
- print(", %s", zl_condition_codes[zl]);
- }
- if (*(cv_condition_codes[cv]) != 0)
+ if (opcode == 0xff00)
{
- print(", %s", cv_condition_codes[cv]);
+ print("retd");
}
- if (*(tp_condition_codes[tp]) != 0)
+ else
{
- print(", %s", tp_condition_codes[tp]);
+ print("retcd ");
+ print_condition_codes(false, zl, cv, tp);
}
flags = DASMFLAG_STEP_OUT;
break;
}
- case 0xff: print("retd"); flags = DASMFLAG_STEP_OUT; break;
-
default: print("??? ($%04X)", opcode); break;
}
diff --git a/src/devices/cpu/tms32051/tms32051.cpp b/src/devices/cpu/tms32051/tms32051.cpp
index 881a28fe4e1..5d35b7c025a 100644
--- a/src/devices/cpu/tms32051/tms32051.cpp
+++ b/src/devices/cpu/tms32051/tms32051.cpp
@@ -38,10 +38,9 @@ enum
TMS32051_AR7,
TMS32051_IFR,
TMS32051_IMR,
- TMS32051_ST0_ARP,
TMS32051_ST0_INTM,
- TMS32051_ST0_DP,
TMS32051_ST1_ARB,
+ TMS32051_ST1_TC,
TMS32051_TIM,
TMS32051_PSC
};
@@ -74,6 +73,7 @@ tms32051_device::tms32051_device(const machine_config &mconfig, const char *tag,
: cpu_device(mconfig, TMS32051, "TMS32051", tag, owner, clock, "tms32051", __FILE__)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 16, -1, ADDRESS_MAP_NAME(tms32051_internal_pgm))
, m_data_config("data", ENDIANNESS_LITTLE, 16, 16, -1, ADDRESS_MAP_NAME(tms32051_internal_data))
+ , m_io_config("io", ENDIANNESS_LITTLE, 16, 16, -1)
{
}
@@ -81,6 +81,7 @@ tms32051_device::tms32051_device(const machine_config &mconfig, device_type type
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 16, -1)
, m_data_config("data", ENDIANNESS_LITTLE, 16, 16, -1)
+ , m_io_config("io", ENDIANNESS_LITTLE, 16, 16, -1)
{
}
@@ -179,6 +180,7 @@ void tms32051_device::device_start()
m_program = &space(AS_PROGRAM);
m_direct = &m_program->direct();
m_data = &space(AS_DATA);
+ m_io = &space(AS_IO);
m_pcstack_ptr = 0;
m_op = 0;
@@ -235,10 +237,9 @@ void tms32051_device::device_start()
state_add( TMS32051_IFR, "IFR", m_ifr).formatstr("%04X");
state_add( TMS32051_IMR, "IMR", m_imr).formatstr("%04X");
- state_add( TMS32051_ST0_ARP, "ST0 ARP", m_st0.arp).formatstr("%1d");
- state_add( TMS32051_ST0_INTM, "ST0 INTM", m_st0.intm).formatstr("%1d");
- state_add( TMS32051_ST0_DP, "ST0 DP", m_st0.dp).formatstr("%04X");
- state_add( TMS32051_ST1_ARB, "ST1 ARB", m_st1.arb).formatstr("%04X");
+ state_add( TMS32051_ST0_INTM, "ST0_INTM", m_st0.intm).formatstr("%1d");
+ state_add( TMS32051_ST1_ARB, "ST1_ARB", m_st1.arb).formatstr("%04X");
+ state_add( TMS32051_ST1_TC, "ST1_TC", m_st1.tc).formatstr("%1d");
state_add( TMS32051_TIM, "TIM", m_timer.tim).formatstr("%04X");
state_add( TMS32051_PSC, "PSC", m_timer.psc).formatstr("%04X");
@@ -384,7 +385,7 @@ void tms32051_device::execute_run()
{
CHANGE_PC(m_pasr);
}
-
+
m_brcr--;
if (m_brcr <= 0)
{
@@ -489,6 +490,27 @@ READ16_MEMBER( tms32051_device::cpuregs_r )
case 0x28: // PDWSR
return 0;
+ case 0x37: // ABU BKR
+ return 0;
+
+ case 0x50: // Memory-mapped I/O ports
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5a:
+ case 0x5b:
+ case 0x5c:
+ case 0x5d:
+ case 0x5e:
+ case 0x5f:
+ return m_io->read_word(offset << 1);
+
default:
if (!space.debugger_access())
fatalerror("32051: cpuregs_r: unimplemented memory-mapped register %02X at %04X\n", offset, m_pc-1);
@@ -533,6 +555,7 @@ WRITE16_MEMBER( tms32051_device::cpuregs_w )
}
case 0x09: m_brcr = data; break;
+ case 0x0d: m_treg1 = data; break;
case 0x0e: m_treg2 = data; break;
case 0x0f: m_dbmr = data; break;
case 0x10: m_ar[0] = data; break;
@@ -581,6 +604,25 @@ WRITE16_MEMBER( tms32051_device::cpuregs_w )
case 0x2a: // CWSR
break;
+ case 0x50: // Memory-mapped I/O ports
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5a:
+ case 0x5b:
+ case 0x5c:
+ case 0x5d:
+ case 0x5e:
+ case 0x5f:
+ m_io->write_word(offset << 1, data);
+ break;
+
default:
if (!space.debugger_access())
fatalerror("32051: cpuregs_w: unimplemented memory-mapped register %02X, data %04X at %04X\n", offset, data, m_pc-1);
@@ -599,6 +641,10 @@ bool tms32051_device::memory_read(address_spacenum spacenum, offs_t offset, int
{
value = (DM_READ16(offset>>1));
}
+ else if (spacenum == AS_IO)
+ {
+ value = m_io->read_word(offset);
+ }
return 1;
}
@@ -636,4 +682,4 @@ void tms32053_device::device_config_complete()
{
m_program_config = address_space_config("program", ENDIANNESS_LITTLE, 16, 16, -1, ADDRESS_MAP_NAME(tms32053_internal_pgm));
m_data_config = address_space_config("data", ENDIANNESS_LITTLE, 16, 16, -1, ADDRESS_MAP_NAME(tms32053_internal_data));
-} \ No newline at end of file
+}
diff --git a/src/devices/cpu/tms32051/tms32051.h b/src/devices/cpu/tms32051/tms32051.h
index cbae57ef6a0..ee83ed3c2ae 100644
--- a/src/devices/cpu/tms32051/tms32051.h
+++ b/src/devices/cpu/tms32051/tms32051.h
@@ -76,7 +76,7 @@ protected:
virtual void execute_set_input(int inputnum, int state) override;
// 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_DATA) ? &m_data_config : nullptr ); }
+ 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 : ( (spacenum == AS_DATA) ? &m_data_config : nullptr ) ); }
virtual bool memory_read(address_spacenum spacenum, offs_t offset, int size, UINT64 &value) override;
// device_disasm_interface overrides
@@ -86,6 +86,7 @@ protected:
address_space_config m_program_config;
address_space_config m_data_config;
+ address_space_config m_io_config;
typedef void ( tms32051_device::*opcode_func )();
static const opcode_func s_opcode_table[256];
@@ -162,6 +163,7 @@ protected:
address_space *m_program;
direct_read_data *m_direct;
address_space *m_data;
+ address_space *m_io;
int m_icount;
bool m_idle;
@@ -173,13 +175,13 @@ protected:
inline void DM_WRITE16(UINT16 address, UINT16 data);
inline void PUSH_STACK(UINT16 pc);
inline UINT16 POP_STACK();
- inline INT32 SUB(UINT32 a, UINT32 b);
- inline INT32 ADD(UINT32 a, UINT32 b);
+ inline INT32 SUB(UINT32 a, UINT32 b, bool shift16);
+ inline INT32 ADD(UINT32 a, UINT32 b, bool shift16);
inline void UPDATE_AR(int ar, int step);
inline void UPDATE_ARP(int nar);
UINT16 GET_ADDRESS();
- inline int GET_ZLVC_CONDITION(int zlvc, int zlvc_mask);
- inline int GET_TP_CONDITION(int tp);
+ inline bool GET_ZLVC_CONDITION(int zlvc, int zlvc_mask);
+ inline bool GET_TP_CONDITION(int tp);
inline INT32 PREG_PSCALER(INT32 preg);
void op_invalid();
void op_abs();
diff --git a/src/devices/cpu/tms32082/dis_mp.cpp b/src/devices/cpu/tms32082/dis_mp.cpp
index 1b89eb88129..e7083901fc7 100644
--- a/src/devices/cpu/tms32082/dis_mp.cpp
+++ b/src/devices/cpu/tms32082/dis_mp.cpp
@@ -231,7 +231,14 @@ static offs_t tms32082_disasm_mp(char *buffer, offs_t pc, const UINT8 *oprom)
case 0x00: print("illop0 "); break;
case 0x01: print("trap %d", UIMM15(uimm15)); break;
case 0x02: print("cmnd 0x%04X", UIMM15(uimm15)); break;
- case 0x04: print("rdcr %s, R%d", get_creg_name(UIMM15(uimm15)), rd); break;
+
+ case 0x04:
+ if (op == 0x00020000)
+ print("nop ");
+ else
+ print("rdcr %s, R%d", get_creg_name(UIMM15(uimm15)), rd);
+ break;
+
case 0x05: print("swcr R%d, %s, R%d", rd, get_creg_name(UIMM15(uimm15)), rs); break;
case 0x06: print("brcr %s", get_creg_name(UIMM15(uimm15))); break;
case 0x08: print("shift%s.dz %d, %d, R%d, R%d", (op & (1 << 10)) ? "r" : "l", rotate, endmask, rs, rd); break;
diff --git a/src/devices/cpu/tms32082/dis_pp.cpp b/src/devices/cpu/tms32082/dis_pp.cpp
index 54f8a6d7004..8bc6af719a9 100644
--- a/src/devices/cpu/tms32082/dis_pp.cpp
+++ b/src/devices/cpu/tms32082/dis_pp.cpp
@@ -258,7 +258,7 @@ static void format_transfer(UINT64 op)
int reg = (bank << 3) | d;
- UINT16 offset = 0;
+ UINT16 offset;
if (s)
{
offset = op & 0x7fff;
diff --git a/src/devices/cpu/tms32082/mp_ops.cpp b/src/devices/cpu/tms32082/mp_ops.cpp
index 79c0b401392..1cce61f6a8d 100644
--- a/src/devices/cpu/tms32082/mp_ops.cpp
+++ b/src/devices/cpu/tms32082/mp_ops.cpp
@@ -254,7 +254,7 @@ void tms32082_mp_device::execute_short_imm()
UINT32 compmask = endmask; // shiftmask == 0xffffffff
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = ROTATE_R(source, rot) & compmask;
@@ -283,7 +283,7 @@ void tms32082_mp_device::execute_short_imm()
UINT32 compmask = endmask; // shiftmask == 0xffffffff
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = ROTATE_R(source, rot) & compmask;
@@ -316,7 +316,7 @@ void tms32082_mp_device::execute_short_imm()
UINT32 shiftmask = SHIFT_MASK[shift ? shift : 32];
UINT32 compmask = endmask & shiftmask;
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = ROTATE_R(source, rot) & compmask;
@@ -346,7 +346,7 @@ void tms32082_mp_device::execute_short_imm()
UINT32 shiftmask = SHIFT_MASK[r ? 32-rot : rot];
UINT32 compmask = endmask & shiftmask;
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = (ROTATE_R(source, rot) & compmask) | (m_reg[rd] & ~compmask);
@@ -377,7 +377,7 @@ void tms32082_mp_device::execute_short_imm()
UINT32 shiftmask = SHIFT_MASK[shift ? shift : 32];
UINT32 compmask = endmask & shiftmask;
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = ROTATE_R(source, rot) & compmask;
@@ -409,7 +409,7 @@ void tms32082_mp_device::execute_short_imm()
UINT32 shiftmask = SHIFT_MASK[r ? 32-rot : rot];
UINT32 compmask = endmask & ~shiftmask;
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = ROTATE_R(source, rot) & compmask;
@@ -439,7 +439,7 @@ void tms32082_mp_device::execute_short_imm()
UINT32 shiftmask = SHIFT_MASK[r ? 32-rot : rot];
UINT32 compmask = endmask & ~shiftmask;
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = (ROTATE_R(source, rot) & compmask) | (m_reg[rd] & ~compmask);
@@ -897,7 +897,7 @@ void tms32082_mp_device::execute_reg_long_imm()
UINT32 shiftmask = SHIFT_MASK[shift ? shift : 32];
UINT32 compmask = endmask & shiftmask;
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = ROTATE_R(source, rot) & compmask;
@@ -928,7 +928,7 @@ void tms32082_mp_device::execute_reg_long_imm()
UINT32 shiftmask = SHIFT_MASK[shift ? shift : 32];
UINT32 compmask = endmask & shiftmask;
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = ROTATE_R(source, rot) & compmask;
@@ -960,7 +960,7 @@ void tms32082_mp_device::execute_reg_long_imm()
UINT32 shiftmask = SHIFT_MASK[shift ? shift : 32];
UINT32 compmask = endmask & ~shiftmask;
- UINT32 res = 0;
+ UINT32 res;
if (r) // right
{
res = ROTATE_R(source, rot) & compmask;
@@ -1393,7 +1393,7 @@ void tms32082_mp_device::execute_reg_long_imm()
float src1 = u2f(m_reg[OP_SRC1()]);
float src2 = u2f(m_reg[OP_RS()]);
- float res = (src1 * src2) + (z ? 0.0f : m_acc[acc]);
+ float res = (src1 * src2) + (z ? 0.0f : m_facc[acc]);
// parallel load/store op
if (!(ls_bit1 == 0 && ls_bit2 == 0))
@@ -1436,7 +1436,7 @@ void tms32082_mp_device::execute_reg_long_imm()
float src1 = u2f(m_reg[OP_SRC1()]);
float src2 = u2f(m_reg[OP_RS()]);
- float res = (z ? 0.0f : m_acc[acc]) - (src1 * src2);
+ float res = (z ? 0.0f : m_facc[acc]) - (src1 * src2);
// parallel load/store op
if (!(ls_bit1 == 0 && ls_bit2 == 0))
@@ -1663,7 +1663,11 @@ void tms32082_mp_device::execute_reg_long_imm()
double src1 = has_imm ? (double)u2f(imm32) : (p1 ? u2d(m_fpair[rs1 >> 1]) : (double)u2f(m_reg[rs1]));
double src2 = p2 ? u2d(m_fpair[rs2 >> 1]) : (double)u2f(m_reg[rs2]);
- double res = src1 / src2;
+ double res;
+ if (src2 != 0.0)
+ res = src1 / src2;
+ else
+ res = 0.0f;
if (pd)
m_fpair[rd >> 1] = d2u(res);
@@ -1710,7 +1714,7 @@ void tms32082_mp_device::execute_reg_long_imm()
m_reg[rd] = f2u((float)(s));
break;
case 1:
- m_fpair[rd] = d2u(s);
+ m_fpair[rd >> 1] = d2u(s);
break;
case 2:
m_reg[rd] = (INT32)(s);
@@ -1767,7 +1771,11 @@ void tms32082_mp_device::execute_reg_long_imm()
if (rd)
{
- double res = sqrt(source);
+ double res;
+ if (source >= 0.0f)
+ res = sqrt(source);
+ else
+ res = 0.0;
if (pd)
m_fpair[rd >> 1] = d2u(res);
diff --git a/src/devices/cpu/tms32082/tms32082.cpp b/src/devices/cpu/tms32082/tms32082.cpp
index c3c95f9305f..8b89bc3ef88 100644
--- a/src/devices/cpu/tms32082/tms32082.cpp
+++ b/src/devices/cpu/tms32082/tms32082.cpp
@@ -58,6 +58,12 @@ offs_t tms32082_mp_device::disasm_disassemble(char *buffer, offs_t pc, const UIN
+void tms32082_mp_device::set_command_callback(write32_delegate callback)
+{
+ m_cmd_callback = callback;
+}
+
+
READ32_MEMBER(tms32082_mp_device::mp_param_r)
{
//printf("mp_param_w: %08X, %08X\n", offset, mem_mask);
@@ -208,7 +214,7 @@ void tms32082_mp_device::device_start()
m_icountptr = &m_icount;
}
-void tms32082_mp_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms32082_mp_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -277,75 +283,10 @@ void tms32082_mp_device::processor_command(UINT32 command)
if (command & 0x00000001)
printf("PP0 ");
- printf("\n");
-
- // PP0
- if (command & 1)
- {
- if (command & 0x00004000)
- {
- // simulate PP behavior for now...
- m_program->write_dword(0x00000084, 3);
-
- UINT32 num = m_program->read_dword(0x90);
-
- printf("PP num %d\n", num);
-
- /*
- UINT32 ra = 0x1000280;
-
- printf("FIFO push:\n");
-
- for (int i=0; i < num; i++)
- {
- printf("Entry %d:\n", i);
- for (int k=0; k < 6; k++)
- {
- for (int l=0; l < 4; l++)
- {
- UINT32 dd = m_program->read_dword(ra);
- ra += 4;
-
- printf("%08X(%f) ", dd, u2f(dd));
- }
- printf("\n");
- }
- printf("\n");
- }
- */
-
- UINT32 ra = 0x1000280;
-
- int oldnum = m_program->read_dword(0x600ffffc);
- UINT32 rb = 0x60000000 + (oldnum * 0x60);
+ if (!m_cmd_callback.isnull())
+ m_cmd_callback(*m_program, 0, command, 0xffffffff);
- for (int i=0; i < num; i++)
- {
- for (int k=0; k < 24; k++)
- {
- UINT32 dd = m_program->read_dword(ra);
- ra += 4;
-
- m_program->write_dword(rb, dd);
- rb += 4;
- }
- }
- m_program->write_dword(0x600ffffc, oldnum+num);
-
- m_program->write_dword(0x00000090, 0);
- m_program->write_dword(0x00000094, num);
-
- }
- }
- // PP1
- if (command & 2)
- {
- if (command & 0x00004000)
- {
- // simulate PP behavior for now...
- m_program->write_dword(0x00001014, 3);
- }
- }
+ printf("\n");
}
UINT32 tms32082_mp_device::read_creg(int reg)
@@ -512,15 +453,12 @@ void tms32082_mp_device::execute_run()
m_ir = fetch();
execute();
- if (m_tcount == 0)
+ m_tcount--;
+ if (m_tcount < 0)
{
// TODO: timer interrupt
m_tcount = m_tscale;
}
- else
- {
- m_tcount--;
- }
m_icount--;
};
@@ -573,7 +511,7 @@ void tms32082_pp_device::device_start()
m_icountptr = &m_icount;
}
-void tms32082_pp_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms32082_pp_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/tms32082/tms32082.h b/src/devices/cpu/tms32082/tms32082.h
index 6d3e932375c..80163cc6145 100644
--- a/src/devices/cpu/tms32082/tms32082.h
+++ b/src/devices/cpu/tms32082/tms32082.h
@@ -71,6 +71,8 @@ public:
DECLARE_READ32_MEMBER(mp_param_r);
DECLARE_WRITE32_MEMBER(mp_param_w);
+ void set_command_callback(write32_delegate callback);
+
protected:
// device level overrides
@@ -95,7 +97,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 4; }
@@ -139,6 +141,8 @@ protected:
address_space *m_program;
direct_read_data* m_direct;
+ write32_delegate m_cmd_callback;
+
void check_interrupts();
void processor_command(UINT32 command);
UINT32 fetch();
@@ -188,7 +192,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 8; }
diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp
index 3fffd1c03c5..68f410d5b2b 100644
--- a/src/devices/cpu/tms34010/tms34010.cpp
+++ b/src/devices/cpu/tms34010/tms34010.cpp
@@ -592,14 +592,13 @@ void tms340x0_device::device_start()
state_add(TMS34010_ST, "ST", m_st);
state_add(STATE_GENFLAGS, "GENFLAGS", m_st).noshow().formatstr("%18s");
- std::string tempstr;
for (int regnum = 0; regnum < 15; regnum++)
{
- state_add(TMS34010_A0 + regnum, strformat(tempstr, "A%d", regnum).c_str(), m_regs[regnum].reg);
+ state_add(TMS34010_A0 + regnum, strformat("A%d", regnum).c_str(), m_regs[regnum].reg);
}
for (int regnum = 0; regnum < 15; regnum++)
{
- state_add(TMS34010_B0 + regnum, strformat(tempstr, "B%d", regnum).c_str(), m_regs[30 - regnum].reg);
+ state_add(TMS34010_B0 + regnum, strformat("B%d", regnum).c_str(), m_regs[30 - regnum].reg);
}
}
@@ -1005,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;
@@ -1599,7 +1598,7 @@ READ16_MEMBER( tms340x0_device::host_r )
}
-void tms340x0_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms340x0_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h
index 733674d4279..f87a3df37b1 100644
--- a/src/devices/cpu/tms34010/tms34010.h
+++ b/src/devices/cpu/tms34010/tms34010.h
@@ -282,7 +282,7 @@ protected:
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : nullptr; }
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/tms57002/tms57002.h b/src/devices/cpu/tms57002/tms57002.h
index 5e871591158..6cfcf4b4b51 100644
--- a/src/devices/cpu/tms57002/tms57002.h
+++ b/src/devices/cpu/tms57002/tms57002.h
@@ -159,8 +159,6 @@ private:
inline int movm(UINT32 st1);
inline int sfma(UINT32 st1);
- const char *get_memadr(UINT32 opcode, char type);
-
void xm_init();
void xm_step_read();
void xm_step_write();
diff --git a/src/devices/cpu/tms7000/tms7000.cpp b/src/devices/cpu/tms7000/tms7000.cpp
index 99451e30d6b..42e76319855 100644
--- a/src/devices/cpu/tms7000/tms7000.cpp
+++ b/src/devices/cpu/tms7000/tms7000.cpp
@@ -257,7 +257,7 @@ void tms7000_device::device_start()
state_add(STATE_GENFLAGS, "GENFLAGS", m_sr).formatstr("%8s").noshow();
}
-void tms7000_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms7000_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h
index 53d940232d2..b44ac9324c7 100644
--- a/src/devices/cpu/tms7000/tms7000.h
+++ b/src/devices/cpu/tms7000/tms7000.h
@@ -80,7 +80,7 @@ protected:
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 : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/tms9900/tms9900.cpp b/src/devices/cpu/tms9900/tms9900.cpp
index 71f177809eb..b1fad1bbeeb 100644
--- a/src/devices/cpu/tms9900/tms9900.cpp
+++ b/src/devices/cpu/tms9900/tms9900.cpp
@@ -349,11 +349,11 @@ void tms99xx_device::state_export(const device_state_entry &entry)
/*
state_string_export - export state as a string for the debugger
*/
-void tms99xx_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms99xx_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
static const char *statestr = "LAECOPX-----IIII";
char flags[17];
- memset(flags, 0x00, ARRAY_LENGTH(flags));
+ for (auto &flag : flags) flag = 0x00;
UINT16 val = 0x8000;
if (entry.index()==STATE_GENFLAGS)
{
@@ -1039,7 +1039,7 @@ const tms99xx_device::tms_instruction tms99xx_device::s_command[] =
void tms99xx_device::build_command_lookup_table()
{
int i = 0;
- int cmdindex = 0;
+ int cmdindex;
int bitcount;
const tms_instruction *inst;
UINT16 opcode;
@@ -1968,7 +1968,7 @@ void tms99xx_device::alu_f3()
void tms99xx_device::alu_multiply()
{
- UINT32 result = 0;
+ UINT32 result;
switch (m_state)
{
diff --git a/src/devices/cpu/tms9900/tms9900.h b/src/devices/cpu/tms9900/tms9900.h
index be2c8a4ba3b..4669eeb439a 100644
--- a/src/devices/cpu/tms9900/tms9900.h
+++ b/src/devices/cpu/tms9900/tms9900.h
@@ -224,9 +224,9 @@ private:
// State / debug management
UINT16 m_state_any;
static const char* s_statename[];
- void state_import(const device_state_entry &entry) override;
- void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual void state_import(const device_state_entry &entry) override;
+ virtual void state_export(const device_state_entry &entry) override;
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
// Interrupt handling
void service_interrupt();
@@ -301,7 +301,7 @@ private:
void alu_abs(void);
void alu_x(void);
void alu_b(void);
- void alu_bl(void);
+ //void alu_bl(void);
void alu_blwp(void);
void alu_ldcr(void);
void alu_stcr(void);
diff --git a/src/devices/cpu/tms9900/tms9995.cpp b/src/devices/cpu/tms9900/tms9995.cpp
index e40cfd94280..855f00499a0 100644
--- a/src/devices/cpu/tms9900/tms9995.cpp
+++ b/src/devices/cpu/tms9900/tms9995.cpp
@@ -372,7 +372,7 @@ void tms9995_device::state_export(const device_state_entry &entry)
/*
state_string_export - export state as a string for the debugger
*/
-void tms9995_device::state_string_export(const device_state_entry &entry, std::string &str)
+void tms9995_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
static const char *statestr = "LAECOPX-----IIII";
char flags[17];
@@ -1128,7 +1128,7 @@ const tms9995_device::tms_instruction tms9995_device::s_command[] =
void tms9995_device::build_command_lookup_table()
{
int i = 0;
- int cmdindex = 0;
+ int cmdindex;
int bitcount;
const tms_instruction *inst;
UINT16 opcode;
@@ -1599,7 +1599,7 @@ void tms9995_device::command_completed()
*/
void tms9995_device::service_interrupt()
{
- int vectorpos = 0;
+ int vectorpos;
if (m_reset)
{
@@ -2555,7 +2555,7 @@ void tms9995_device::alu_divide()
void tms9995_device::alu_divide_signed()
{
int n=1;
- bool overflow = true;
+ bool overflow;
UINT16 w1, w2, dwait;
INT16 divisor;
INT32 dividend;
@@ -2930,8 +2930,8 @@ void tms9995_device::alu_mov()
void tms9995_device::alu_multiply()
{
int n = 0;
- UINT32 result = 0;
- INT32 results = 0;
+ UINT32 result;
+ INT32 results;
if (m_instruction->command==MPY)
{
diff --git a/src/devices/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h
index fc24c82801d..e5dc055f36f 100644
--- a/src/devices/cpu/tms9900/tms9995.h
+++ b/src/devices/cpu/tms9900/tms9995.h
@@ -106,7 +106,7 @@ private:
static const char* s_statename[];
void state_import(const device_state_entry &entry) override;
void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ void state_string_export(const device_state_entry &entry, std::string &str) const override;
UINT16 read_workspace_register_debug(int reg);
void write_workspace_register_debug(int reg, UINT16 data);
diff --git a/src/devices/cpu/ucom4/ucom4.cpp b/src/devices/cpu/ucom4/ucom4.cpp
index 0c6bd280358..69b608a6592 100644
--- a/src/devices/cpu/ucom4/ucom4.cpp
+++ b/src/devices/cpu/ucom4/ucom4.cpp
@@ -76,7 +76,7 @@ upd552_cpu_device::upd552_cpu_device(const machine_config &mconfig, const char *
// disasm
-void ucom4_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void ucom4_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/ucom4/ucom4.h b/src/devices/cpu/ucom4/ucom4.h
index a01ccaa37a7..01a7f2ecc1c 100644
--- a/src/devices/cpu/ucom4/ucom4.h
+++ b/src/devices/cpu/ucom4/ucom4.h
@@ -157,7 +157,8 @@ protected:
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;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ // device_state_interface overrides
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override;
address_space_config m_program_config;
address_space_config m_data_config;
diff --git a/src/devices/cpu/uml.cpp b/src/devices/cpu/uml.cpp
index e01b34cdcb6..5b9785f792c 100644
--- a/src/devices/cpu/uml.cpp
+++ b/src/devices/cpu/uml.cpp
@@ -739,9 +739,8 @@ void uml::instruction::simplify()
/*
if (LOG_SIMPLIFICATIONS && memcmp(&orig, inst, sizeof(orig)) != 0)
{
- std::string disasm1, disasm2;
- orig.disasm(disasm1, block->drcuml);
- inst->disasm(disasm2, block->drcuml);
+ std::string disasm1 = orig.disasm(block->drcuml);
+ std::string disasm2 = inst->disasm(block->drcuml);
osd_printf_debug("Simplified: %-50.50s -> %s\n", disasm1.c_str(), disasm2.c_str());
}
*/
@@ -854,7 +853,7 @@ UINT8 uml::instruction::modified_flags() const
// given buffer
//-------------------------------------------------
-const char *uml::instruction::disasm(std::string &buffer, drcuml_state *drcuml) const
+std::string uml::instruction::disasm(drcuml_state *drcuml) const
{
static const char *const conditions[] = { "z", "nz", "s", "ns", "c", "nc", "v", "nv", "u", "nu", "a", "be", "g", "le", "l", "ge" };
static const char *const pound_size[] = { "?", "?", "?", "?", "s", "?", "?", "?", "d" };
@@ -868,7 +867,7 @@ const char *uml::instruction::disasm(std::string &buffer, drcuml_state *drcuml)
assert(m_opcode != OP_INVALID && m_opcode < OP_MAX);
// start with the raw mnemonic and substitute sizes
- buffer.clear();
+ std::string buffer;
for (const char *opsrc = opinfo.mnemonic; *opsrc != 0; opsrc++)
if (*opsrc == '!')
strcatprintf(buffer, "%s", bang_size[m_size]);
@@ -1025,5 +1024,5 @@ const char *uml::instruction::disasm(std::string &buffer, drcuml_state *drcuml)
if (m_flags & FLAG_C)
buffer.push_back('C');
}
- return buffer.c_str();
+ return buffer;
}
diff --git a/src/devices/cpu/uml.h b/src/devices/cpu/uml.h
index 6086320cf99..2dfd95adbea 100644
--- a/src/devices/cpu/uml.h
+++ b/src/devices/cpu/uml.h
@@ -409,7 +409,7 @@ namespace uml
void set_mapvar(int paramnum, UINT32 value) { assert(paramnum < m_numparams); assert(m_param[paramnum].is_mapvar()); m_param[paramnum] = value; }
// misc
- const char *disasm(std::string &str, drcuml_state *drcuml = nullptr) const;
+ std::string disasm(drcuml_state *drcuml = nullptr) const;
UINT8 input_flags() const;
UINT8 output_flags() const;
UINT8 modified_flags() const;
diff --git a/src/devices/cpu/upd7725/upd7725.cpp b/src/devices/cpu/upd7725/upd7725.cpp
index 5820d6fe4e0..ef211dd13c3 100644
--- a/src/devices/cpu/upd7725/upd7725.cpp
+++ b/src/devices/cpu/upd7725/upd7725.cpp
@@ -202,7 +202,7 @@ void necdsp_device::state_export(const device_state_entry &entry)
// for the debugger
//-------------------------------------------------
-void necdsp_device::state_string_export(const device_state_entry &entry, std::string &str)
+void necdsp_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h
index 063360e6d34..94a7f85869f 100644
--- a/src/devices/cpu/upd7725/upd7725.h
+++ b/src/devices/cpu/upd7725/upd7725.h
@@ -110,7 +110,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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;
@@ -188,9 +188,6 @@ private:
void exec_jp(UINT32 opcode);
void exec_ld(UINT32 opcode);
- void stack_push();
- void stack_pull();
-
int m_icount;
int m_irq; // old irq line state, for detecting rising edges.
diff --git a/src/devices/cpu/upd7810/upd7810.cpp b/src/devices/cpu/upd7810/upd7810.cpp
index bf699d70fa9..d0974d00a74 100644
--- a/src/devices/cpu/upd7810/upd7810.cpp
+++ b/src/devices/cpu/upd7810/upd7810.cpp
@@ -1696,7 +1696,7 @@ void upd78c05_device::device_start()
}
-void upd7810_device::state_string_export(const device_state_entry &entry, std::string &str)
+void upd7810_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
@@ -1825,7 +1825,7 @@ void upd7810_device::execute_run()
{
do
{
- int cc = 0;
+ int cc;
debugger_instruction_hook(this, PC);
diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h
index d25b22e49a7..d7d96be75d7 100644
--- a/src/devices/cpu/upd7810/upd7810.h
+++ b/src/devices/cpu/upd7810/upd7810.h
@@ -170,7 +170,7 @@ protected:
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 : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/v30mz/v30mz.cpp b/src/devices/cpu/v30mz/v30mz.cpp
index 3bc7c28236a..ec720d59f9a 100644
--- a/src/devices/cpu/v30mz/v30mz.cpp
+++ b/src/devices/cpu/v30mz/v30mz.cpp
@@ -185,12 +185,12 @@ void v30mz_cpu_device::device_start()
}
-void v30mz_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void v30mz_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
case STATE_GENPC:
- strprintf(str, "%08X", pc());
+ strprintf(str, "%08X", ( m_sregs[CS] << 4 ) + m_ip);
break;
case STATE_GENFLAGS:
@@ -781,7 +781,7 @@ inline void v30mz_cpu_device::set_OFB_Sub(UINT32 x,UINT32 y,UINT32 z)
}
-inline UINT16 v30mz_cpu_device::CompressFlags()
+inline UINT16 v30mz_cpu_device::CompressFlags() const
{
return (CF ? 1 : 0)
| (PF ? 4 : 0)
diff --git a/src/devices/cpu/v30mz/v30mz.h b/src/devices/cpu/v30mz/v30mz.h
index 7696cda2f0d..6ba07800b9e 100644
--- a/src/devices/cpu/v30mz/v30mz.h
+++ b/src/devices/cpu/v30mz/v30mz.h
@@ -44,7 +44,7 @@ protected:
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 : nullptr ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
@@ -112,7 +112,7 @@ protected:
inline void set_OFB_Add(UINT32 x,UINT32 y,UINT32 z);
inline void set_OFW_Sub(UINT32 x,UINT32 y,UINT32 z);
inline void set_OFB_Sub(UINT32 x,UINT32 y,UINT32 z);
- inline UINT16 CompressFlags();
+ inline UINT16 CompressFlags() const;
inline void ExpandFlags(UINT16 f);
// rep instructions
diff --git a/src/devices/cpu/v60/v60.cpp b/src/devices/cpu/v60/v60.cpp
index 2a770739e25..61764add79a 100644
--- a/src/devices/cpu/v60/v60.cpp
+++ b/src/devices/cpu/v60/v60.cpp
@@ -85,7 +85,6 @@ v60_device::v60_device(const machine_config &mconfig, const char *tag, device_t
: cpu_device(mconfig, V60, "V60", tag, owner, clock, "v60", __FILE__)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 24, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 16, 24, 0)
- , m_fetch_xor(BYTE_XOR_LE(0))
, m_start_pc(0xfffff0)
{
// Set m_PIR (Processor ID) for NEC m_ LSB is reserved to NEC,
@@ -98,7 +97,6 @@ v60_device::v60_device(const machine_config &mconfig, device_type type, const ch
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
, m_program_config("program", ENDIANNESS_LITTLE, 32, 32, 0)
, m_io_config("io", ENDIANNESS_LITTLE, 16, 24, 0)
- , m_fetch_xor(BYTE4_XOR_LE(0))
, m_start_pc(0xfffffff0)
{
// Set m_PIR (Processor ID) for NEC v70. LSB is reserved to NEC,
diff --git a/src/devices/cpu/v60/v60.h b/src/devices/cpu/v60/v60.h
index 4ef35d130b0..a7b2c886d5e 100644
--- a/src/devices/cpu/v60/v60.h
+++ b/src/devices/cpu/v60/v60.h
@@ -151,7 +151,6 @@ private:
address_space_config m_program_config;
address_space_config m_io_config;
- offs_t m_fetch_xor;
offs_t m_start_pc;
UINT32 m_reg[68];
struct {
@@ -286,8 +285,6 @@ private:
UINT32 bam1Error1();
UINT32 am1Error2();
UINT32 bam1Error2();
- UINT32 am1Error3();
- UINT32 bam1Error3();
UINT32 am1Error4();
UINT32 bam1Error4();
UINT32 am1Error5();
@@ -380,12 +377,10 @@ private:
UINT32 am2ImmediateQuick();
UINT32 am2Error1();
UINT32 am2Error2();
- UINT32 am2Error3();
UINT32 am2Error4();
UINT32 am2Error5();
UINT32 bam2Error1();
UINT32 bam2Error2();
- UINT32 bam2Error3();
UINT32 bam2Error4();
UINT32 bam2Error5();
UINT32 bam2Error6();
@@ -438,7 +433,6 @@ private:
UINT32 am3ImmediateQuick();
UINT32 am3Error1();
UINT32 am3Error2();
- UINT32 am3Error3();
UINT32 am3Error4();
UINT32 am3Error5();
UINT32 am3Group7a();
diff --git a/src/devices/cpu/v810/v810.cpp b/src/devices/cpu/v810/v810.cpp
index 84293a990ae..958c28edc49 100644
--- a/src/devices/cpu/v810/v810.cpp
+++ b/src/devices/cpu/v810/v810.cpp
@@ -1314,7 +1314,7 @@ void v810_device::device_start()
m_icountptr = &m_icount;
}
-void v810_device::state_string_export(const device_state_entry &entry, std::string &str)
+void v810_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/v810/v810.h b/src/devices/cpu/v810/v810.h
index dbe9cf10b55..4e85ed7b540 100644
--- a/src/devices/cpu/v810/v810.h
+++ b/src/devices/cpu/v810/v810.h
@@ -101,7 +101,7 @@ protected:
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 : nullptr); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/cpu/vtlb.cpp b/src/devices/cpu/vtlb.cpp
index 5dd5711366c..4c9a9a2f311 100644
--- a/src/devices/cpu/vtlb.cpp
+++ b/src/devices/cpu/vtlb.cpp
@@ -56,7 +56,7 @@ vtlb_state *vtlb_alloc(device_t *cpu, address_spacenum space, int fixed_entries,
vtlb_state *vtlb;
/* allocate memory for the core structure */
- vtlb = auto_alloc_clear(cpu->machine(), vtlb_state);
+ vtlb = auto_alloc_clear(cpu->machine(), <vtlb_state>());
/* fill in CPU information */
vtlb->cpudevice = downcast<cpu_device *>(cpu);
diff --git a/src/devices/cpu/x86log.cpp b/src/devices/cpu/x86log.cpp
index d709af981f3..c9cb81e78e9 100644
--- a/src/devices/cpu/x86log.cpp
+++ b/src/devices/cpu/x86log.cpp
@@ -8,66 +8,18 @@
***************************************************************************/
+#include <cstdint>
+#include <cassert>
#include "emu.h"
#include "x86log.h"
/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-/* comment parameters */
-#define MAX_COMMENTS 4000
-#define MAX_DATA_RANGES 1000
-#define COMMENT_POOL_SIZE (MAX_COMMENTS * 40)
-
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-/* code logging info */
-struct log_comment
-{
- x86code * base;
- const char * string;
-};
-
-
-/* data ranges */
-struct data_range_t
-{
- x86code * base;
- x86code * end;
- int size;
-};
-
-
-/* the code logging context */
-struct x86log_context
-{
- std::string filename; /* name of the file */
- FILE * file; /* file we are logging to */
-
- data_range_t data_range[MAX_DATA_RANGES]; /* list of data ranges */
- int data_range_count; /* number of data ranges */
-
- log_comment comment_list[MAX_COMMENTS]; /* list of comments */
- int comment_count; /* number of live comments */
-
- char comment_pool[COMMENT_POOL_SIZE];/* string pool to hold comments */
- char * comment_pool_next; /* pointer to next string pool location */
-};
-
-
-
-/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
-static void reset_log(x86log_context *log);
+static void reset_log(x86log_context *log) noexcept;
extern int i386_dasm_one_ex(char *buffer, UINT64 eip, const UINT8 *oprom, int mode);
@@ -85,7 +37,7 @@ x86log_context *x86log_create_context(const char *filename)
x86log_context *log;
/* allocate the log */
- log = global_alloc_clear(x86log_context);
+ log = global_alloc_clear<x86log_context>();
/* allocate the filename */
log->filename.assign(filename);
@@ -100,7 +52,7 @@ x86log_context *x86log_create_context(const char *filename)
x86log_free_context - release a context
-------------------------------------------------*/
-void x86log_free_context(x86log_context *log)
+void x86log_free_context(x86log_context *log) noexcept
{
/* close any open files */
if (log->file != nullptr)
@@ -112,46 +64,11 @@ void x86log_free_context(x86log_context *log)
/*-------------------------------------------------
- x86log_add_comment - add a comment associated
- with a given code pointer
--------------------------------------------------*/
-
-void x86log_add_comment(x86log_context *log, x86code *base, const char *format, ...)
-{
- char *string = log->comment_pool_next;
- log_comment *comment;
- va_list va;
-
- assert(log->comment_count < MAX_COMMENTS);
- assert(log->comment_pool_next + strlen(format) + 256 < log->comment_pool + COMMENT_POOL_SIZE);
-
- /* we assume comments are registered in order; enforce this */
- assert(log->comment_count == 0 || base >= log->comment_list[log->comment_count - 1].base);
-
- /* if we exceed the maxima, skip it */
- if (log->comment_count >= MAX_COMMENTS)
- return;
- if (log->comment_pool_next + strlen(format) + 256 >= log->comment_pool + COMMENT_POOL_SIZE)
- return;
-
- /* do the printf to the string pool */
- va_start(va, format);
- log->comment_pool_next += vsprintf(log->comment_pool_next, format, va) + 1;
- va_end(va);
-
- /* fill in the new comment */
- comment = &log->comment_list[log->comment_count++];
- comment->base = base;
- comment->string = string;
-}
-
-
-/*-------------------------------------------------
x86log_mark_as_data - mark a given range as
data for logging purposes
-------------------------------------------------*/
-void x86log_mark_as_data(x86log_context *log, x86code *base, x86code *end, int size)
+void x86log_mark_as_data(x86log_context *log, x86code *base, x86code *end, int size) noexcept
{
data_range_t *data;
@@ -258,31 +175,6 @@ void x86log_disasm_code_range(x86log_context *log, const char *label, x86code *s
}
-/*-------------------------------------------------
- x86log_printf - manually printf information to
- the log file
--------------------------------------------------*/
-
-void x86log_printf(x86log_context *log, const char *format, ...)
-{
- va_list va;
-
- /* open the file, creating it if necessary */
- if (log->file == nullptr)
- log->file = fopen(log->filename.c_str(), "w");
- if (log->file == nullptr)
- return;
-
- /* do the printf */
- va_start(va, format);
- vfprintf(log->file, format, va);
- va_end(va);
-
- /* flush the file */
- fflush(log->file);
-}
-
-
/***************************************************************************
LOCAL FUNCTIONS
@@ -292,7 +184,7 @@ void x86log_printf(x86log_context *log, const char *format, ...)
reset_log - reset the state of the log
-------------------------------------------------*/
-static void reset_log(x86log_context *log)
+static void reset_log(x86log_context *log) noexcept
{
log->data_range_count = 0;
log->comment_count = 0;
diff --git a/src/devices/cpu/x86log.h b/src/devices/cpu/x86log.h
index 68ca2ec5257..ac7195c99bd 100644
--- a/src/devices/cpu/x86log.h
+++ b/src/devices/cpu/x86log.h
@@ -13,14 +13,57 @@
#ifndef __X86LOG_H__
#define __X86LOG_H__
+#include <cstdint>
+#include <cassert>
#include "x86emit.h"
/***************************************************************************
+ CONSTANTS
+***************************************************************************/
+
+/* comment parameters */
+constexpr int MAX_COMMENTS{4000};
+constexpr int MAX_DATA_RANGES{1000};
+constexpr int COMMENT_POOL_SIZE{MAX_COMMENTS * 40};
+
+
+/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
-struct x86log_context;
+/* code logging info */
+struct log_comment
+{
+ x86code* base;
+ const char* string;
+};
+
+
+/* data ranges */
+struct data_range_t
+{
+ x86code* base;
+ x86code* end;
+ int size;
+};
+
+
+/* the code logging context */
+struct x86log_context
+{
+ std::string filename; /* name of the file */
+ FILE* file; /* file we are logging to */
+
+ data_range_t data_range[MAX_DATA_RANGES]; /* list of data ranges */
+ int data_range_count; /* number of data ranges */
+
+ log_comment comment_list[MAX_COMMENTS]; /* list of comments */
+ int comment_count; /* number of live comments */
+
+ char comment_pool[COMMENT_POOL_SIZE]; /* string pool to hold comments */
+ char* comment_pool_next; /* pointer to next string pool location */
+};
@@ -29,22 +72,89 @@ struct x86log_context;
***************************************************************************/
/* create a new context */
-x86log_context *x86log_create_context(const char *filename);
+x86log_context* x86log_create_context(const char* filename);
/* release a context */
-void x86log_free_context(x86log_context *log);
+void x86log_free_context(x86log_context* log) noexcept;
/* add a comment associated with a given code pointer */
-void x86log_add_comment(x86log_context *log, x86code *base, const char *format, ...) ATTR_PRINTF(3,4);
+template <typename... Ts>
+inline void x86log_add_comment(
+ x86log_context* log, x86code* base, const char* format, Ts&&... xs);
/* mark a given range as data for logging purposes */
-void x86log_mark_as_data(x86log_context *log, x86code *base, x86code *end, int size);
+void x86log_mark_as_data(
+ x86log_context* log, x86code* base, x86code* end, int size) noexcept;
/* disassemble a range of code and reset accumulated information */
-void x86log_disasm_code_range(x86log_context *log, const char *label, x86code *start, x86code *stop);
+void x86log_disasm_code_range(
+ x86log_context* log, const char* label, x86code* start, x86code* stop);
/* manually printf information to the log file */
-void x86log_printf(x86log_context *log, const char *format, ...) ATTR_PRINTF(2,3);
+template <typename... Ts>
+inline void x86log_printf(x86log_context* log, const char* format, Ts&&... xs);
+
+
+/*-------------------------------------------------
+ x86log_add_comment - add a comment associated
+ with a given code pointer
+-------------------------------------------------*/
+
+template <typename... Ts>
+inline void x86log_add_comment(
+ x86log_context* log, x86code* base, const char* format, Ts&&... xs)
+{
+ char* string = log->comment_pool_next;
+ log_comment* comment;
+
+ assert(log->comment_count < MAX_COMMENTS);
+ assert(log->comment_pool_next + strlen(format) + 256 <
+ log->comment_pool + COMMENT_POOL_SIZE);
+
+ /* we assume comments are registered in order; enforce this */
+ assert(log->comment_count == 0 ||
+ base >= log->comment_list[log->comment_count - 1].base);
+
+ /* if we exceed the maxima, skip it */
+ if(log->comment_count >= MAX_COMMENTS) return;
+ if(log->comment_pool_next + strlen(format) + 256 >=
+ log->comment_pool + COMMENT_POOL_SIZE)
+ return;
+
+ /* do the printf to the string pool */
+ log->comment_pool_next +=
+ sprintf(log->comment_pool_next, format, std::forward<Ts>(xs)...) + 1;
+
+ /* fill in the new comment */
+ comment = &log->comment_list[log->comment_count++];
+ comment->base = base;
+ comment->string = string;
+}
+
+
+/*-------------------------------------------------
+ x86log_printf - manually printf information to
+ the log file
+-------------------------------------------------*/
+
+template <typename... Ts>
+inline void x86log_printf(x86log_context* log, const char* format, Ts&&... xs)
+{
+ /* open the file, creating it if necessary */
+ if(log->file == nullptr)
+ {
+ log->file = fopen(log->filename.c_str(), "w");
+
+ if(log->file == nullptr) return;
+ }
+
+ assert(log->file != nullptr);
+
+ /* do the printf */
+ fprintf(log->file, format, std::forward<Ts>(xs)...);
+ /* flush the file */
+ fflush(log->file);
+}
-#endif /* __X86LOG_H__ */
+#endif /* __X86LOG_H__ */
diff --git a/src/devices/cpu/z180/z180.cpp b/src/devices/cpu/z180/z180.cpp
index 5a76f81ae76..c8f3b968468 100644
--- a/src/devices/cpu/z180/z180.cpp
+++ b/src/devices/cpu/z180/z180.cpp
@@ -755,8 +755,8 @@ static UINT8 SZP[256]; /* zero, sign and parity flags */
static UINT8 SZHV_inc[256]; /* zero, sign, half carry and overflow flags INC r8 */
static UINT8 SZHV_dec[256]; /* zero, sign, half carry and overflow flags DEC r8 */
-static UINT8 *SZHVC_add;
-static UINT8 *SZHVC_sub;
+static std::unique_ptr<UINT8[]> SZHVC_add;
+static std::unique_ptr<UINT8[]> SZHVC_sub;
#include "z180ops.h"
#include "z180tbl.h"
@@ -1894,8 +1894,8 @@ void z180_device::device_start()
}
/* allocate big flag arrays once */
- SZHVC_add = auto_alloc_array(machine(), UINT8, 2*256*256);
- SZHVC_sub = auto_alloc_array(machine(), UINT8, 2*256*256);
+ SZHVC_add = std::make_unique<UINT8[]>(2*256*256);
+ SZHVC_sub = std::make_unique<UINT8[]>(2*256*256);
padd = &SZHVC_add[ 0*256];
padc = &SZHVC_add[256*256];
@@ -2560,7 +2560,7 @@ void z180_device::state_export(const device_state_entry &entry)
}
}
-void z180_device::state_string_export(const device_state_entry &entry, std::string &str)
+void z180_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/z180/z180.h b/src/devices/cpu/z180/z180.h
index 9f36266fc94..e76c75501ba 100644
--- a/src/devices/cpu/z180/z180.h
+++ b/src/devices/cpu/z180/z180.h
@@ -152,7 +152,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/z180/z180dasm.cpp b/src/devices/cpu/z180/z180dasm.cpp
index 4d89d6ac673..e44f6d67ae4 100644
--- a/src/devices/cpu/z180/z180dasm.cpp
+++ b/src/devices/cpu/z180/z180dasm.cpp
@@ -399,7 +399,7 @@ CPU_DISASSEMBLE( z180 )
unsigned PC = pc;
INT8 offset = 0;
UINT8 op, op1 = 0;
- UINT16 ea = 0;
+ UINT16 ea;
int pos = 0;
UINT32 flags = 0;
diff --git a/src/devices/cpu/z8/z8.cpp b/src/devices/cpu/z8/z8.cpp
index 3d8c6746c5b..d6c4fe3de77 100644
--- a/src/devices/cpu/z8/z8.cpp
+++ b/src/devices/cpu/z8/z8.cpp
@@ -677,9 +677,8 @@ void z8_device::device_start()
state_add(Z8_T1, "T1", m_t1);
state_add(STATE_GENFLAGS, "GENFLAGS", m_r[Z8_REGISTER_FLAGS]).noshow().formatstr("%6s");
- std::string tempstr;
for (int regnum = 0; regnum < 16; regnum++)
- state_add(Z8_R0 + regnum, strformat(tempstr, "R%d", regnum).c_str(), m_fake_r[regnum]).callimport().callexport();
+ state_add(Z8_R0 + regnum, strformat("R%d", regnum).c_str(), m_fake_r[regnum]).callimport().callexport();
}
/* find address spaces */
@@ -806,7 +805,7 @@ void z8_device::state_export(const device_state_entry &entry)
}
}
-void z8_device::state_string_export(const device_state_entry &entry, std::string &str)
+void z8_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h
index 11758a771d7..6ef667c74cc 100644
--- a/src/devices/cpu/z8/z8.h
+++ b/src/devices/cpu/z8/z8.h
@@ -59,7 +59,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/z80/z80.cpp b/src/devices/cpu/z80/z80.cpp
index 37ae5938426..345ea4334bf 100644
--- a/src/devices/cpu/z80/z80.cpp
+++ b/src/devices/cpu/z80/z80.cpp
@@ -3666,7 +3666,7 @@ void z80_device::state_export( const device_state_entry &entry )
}
}
-void z80_device::state_string_export(const device_state_entry &entry, std::string &str)
+void z80_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h
index 679e7444435..c523f101a24 100644
--- a/src/devices/cpu/z80/z80.h
+++ b/src/devices/cpu/z80/z80.h
@@ -68,7 +68,7 @@ protected:
// device_state_interface overrides
virtual void state_import(const device_state_entry &entry) override;
virtual void state_export(const device_state_entry &entry) override;
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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 1; }
diff --git a/src/devices/cpu/z8000/z8000.cpp b/src/devices/cpu/z8000/z8000.cpp
index 9cd356225d6..dcc52f92fb0 100644
--- a/src/devices/cpu/z8000/z8000.cpp
+++ b/src/devices/cpu/z8000/z8000.cpp
@@ -616,7 +616,7 @@ void z8002_device::register_debug_state()
state_add( STATE_GENSP, "GENSP", m_nspoff ).noshow();
}
-void z8002_device::state_string_export(const device_state_entry &entry, std::string &str)
+void z8002_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h
index aaea89f7600..98ccc6ddea4 100644
--- a/src/devices/cpu/z8000/z8000.h
+++ b/src/devices/cpu/z8000/z8000.h
@@ -67,7 +67,7 @@ protected:
}
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str) override;
+ virtual 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; }
diff --git a/src/devices/imagedev/cassette.cpp b/src/devices/imagedev/cassette.cpp
index e6485b05523..aedc6509d42 100644
--- a/src/devices/imagedev/cassette.cpp
+++ b/src/devices/imagedev/cassette.cpp
@@ -12,7 +12,6 @@
#include "formats/imageutl.h"
#include "cassette.h"
#include "ui/ui.h"
-#include "image.h"
#define ANIMATION_FPS 1
diff --git a/src/devices/imagedev/chd_cd.cpp b/src/devices/imagedev/chd_cd.cpp
index 83845d026b8..d9ab295dfad 100644
--- a/src/devices/imagedev/chd_cd.cpp
+++ b/src/devices/imagedev/chd_cd.cpp
@@ -79,7 +79,7 @@ const option_guide *cdrom_image_device::create_option_guide() const
void cdrom_image_device::device_start()
{
// try to locate the CHD from a DISK_REGION
- chd_file *chd = get_disk_handle( machine(), owner()->tag() );
+ chd_file *chd = machine().rom_load().get_disk_handle(owner()->tag() );
if( chd != nullptr )
{
m_cdrom_handle = cdrom_open( chd );
@@ -115,7 +115,7 @@ bool cdrom_image_device::call_load()
chd = &m_self_chd;
}
} else {
- chd = get_disk_handle(device().machine(), device().subtag("cdrom").c_str());
+ chd = device().machine().rom_load().get_disk_handle(device().subtag("cdrom").c_str());
}
/* open the CHD file */
diff --git a/src/devices/imagedev/chd_cd.h b/src/devices/imagedev/chd_cd.h
index 5303b474045..5d229a471b4 100644
--- a/src/devices/imagedev/chd_cd.h
+++ b/src/devices/imagedev/chd_cd.h
@@ -33,7 +33,7 @@ public:
// image-level overrides
virtual bool call_load() override;
virtual void call_unload() override;
- virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; }
+ virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; }
virtual iodevice_t image_type() const override { return IO_CDROM; }
diff --git a/src/devices/imagedev/diablo.cpp b/src/devices/imagedev/diablo.cpp
index 9982463fd08..be8b3e500f2 100644
--- a/src/devices/imagedev/diablo.cpp
+++ b/src/devices/imagedev/diablo.cpp
@@ -76,7 +76,7 @@ void diablo_image_device::device_start()
m_chd = nullptr;
// try to locate the CHD from a DISK_REGION
- chd_file *handle = get_disk_handle(machine(), tag());
+ chd_file *handle = machine().rom_load().get_disk_handle(tag());
if (handle != nullptr)
{
m_hard_disk_handle = hard_disk_open(handle);
@@ -217,7 +217,7 @@ int diablo_image_device::internal_load_dsk()
/* open the CHD file */
if (software_entry() != nullptr)
{
- m_chd = get_disk_handle(device().machine(), device().subtag("harddriv").c_str());
+ m_chd = device().machine().rom_load().get_disk_handle(device().subtag("harddriv").c_str());
}
else
{
diff --git a/src/devices/imagedev/diablo.h b/src/devices/imagedev/diablo.h
index 6cc5530e534..00df1345bbd 100644
--- a/src/devices/imagedev/diablo.h
+++ b/src/devices/imagedev/diablo.h
@@ -33,7 +33,7 @@ public:
virtual bool call_load() override;
virtual bool call_create(int create_format, option_resolution *create_args) override;
virtual void call_unload() override;
- virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; }
+ virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { device().machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; }
virtual iodevice_t image_type() const override { return IO_HARDDISK; }
diff --git a/src/devices/imagedev/flopdrv.cpp b/src/devices/imagedev/flopdrv.cpp
index 4bfa045dae9..71bfd2c7158 100644
--- a/src/devices/imagedev/flopdrv.cpp
+++ b/src/devices/imagedev/flopdrv.cpp
@@ -16,7 +16,6 @@
#include "emu.h"
#include "formats/imageutl.h"
#include "flopdrv.h"
-#include "image.h"
#define VERBOSE 0
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp
index 786a44e2916..2d6eb4d5460 100644
--- a/src/devices/imagedev/floppy.cpp
+++ b/src/devices/imagedev/floppy.cpp
@@ -12,7 +12,6 @@
#include "zippath.h"
#include "floppy.h"
#include "formats/imageutl.h"
-#include "image.h"
/*
Debugging flags. Set to 0 or 1.
@@ -934,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 auto_alloc_clear(machine, <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)
@@ -1011,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(auto_alloc_clear(machine(), <ui_menu_select_rw>(machine(), container, can_in_place, &submenu_result)));
state = SELECT_RW;
}
@@ -1037,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(auto_alloc_clear(machine(), <ui_menu_select_format>(machine(), container, format_array, ext_match, total_usable, &submenu_result)));
state = SELECT_FORMAT;
break;
@@ -1074,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(auto_alloc_clear(machine(), <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/imagedev/harddriv.cpp b/src/devices/imagedev/harddriv.cpp
index 8b0ea459be5..b5fd6ca87dc 100644
--- a/src/devices/imagedev/harddriv.cpp
+++ b/src/devices/imagedev/harddriv.cpp
@@ -99,7 +99,7 @@ void harddisk_image_device::device_start()
m_chd = nullptr;
// try to locate the CHD from a DISK_REGION
- chd_file *handle = get_disk_handle(machine(), tag());
+ chd_file *handle = machine().rom_load().get_disk_handle(tag());
if (handle != nullptr)
{
m_hard_disk_handle = hard_disk_open(handle);
@@ -241,7 +241,7 @@ int harddisk_image_device::internal_load_hd()
/* open the CHD file */
if (software_entry() != nullptr)
{
- m_chd = get_disk_handle(device().machine(), device().subtag("harddriv").c_str());
+ m_chd = machine().rom_load().get_disk_handle(device().subtag("harddriv").c_str());
}
else
{
diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h
index 7c3da504a5a..b85418e8c33 100644
--- a/src/devices/imagedev/harddriv.h
+++ b/src/devices/imagedev/harddriv.h
@@ -35,7 +35,7 @@ public:
virtual bool call_load() override;
virtual bool call_create(int create_format, option_resolution *create_args) override;
virtual void call_unload() override;
- virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; }
+ virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override { machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); return TRUE; }
virtual iodevice_t image_type() const override { return IO_HARDDISK; }
diff --git a/src/devices/machine/53c7xx.cpp b/src/devices/machine/53c7xx.cpp
index f2aad1ad75b..c77baa6a8dc 100644
--- a/src/devices/machine/53c7xx.cpp
+++ b/src/devices/machine/53c7xx.cpp
@@ -854,7 +854,7 @@ void ncr53c7xx_device::step(bool timeout)
if (((m_scntl[0] >> SCNTL0_ARB_SHIFT) & SCNTL0_ARB_MASK) == 3)
{
int win;
- for (win = 7; win >=0 && !(data & (1 << win)); win--);
+ for (win = 7; win >=0 && !(data & (1 << win)); win--) {};
if ((1 << win) != m_scid)
{
diff --git a/src/devices/machine/53c810.cpp b/src/devices/machine/53c810.cpp
index 1323e822d69..2d6b7049016 100644
--- a/src/devices/machine/53c810.cpp
+++ b/src/devices/machine/53c810.cpp
@@ -708,7 +708,7 @@ unsigned lsi53c810_device::lsi53c810_dasm(char *buf, UINT32 pc)
{ 0x00000200, "TARGET" },
{ 0x00000400, "CARRY" }
};
- int need_cojunction = FALSE;
+ int need_cojunction;
/* SET/CLEAR */
switch(op & 0xF8000000)
diff --git a/src/devices/machine/53c810.h b/src/devices/machine/53c810.h
index 7ce9f444d79..49ac2281e2f 100644
--- a/src/devices/machine/53c810.h
+++ b/src/devices/machine/53c810.h
@@ -25,9 +25,6 @@ public:
static void set_dma_callback(device_t &device, lsi53c810_dma_delegate callback) { downcast<lsi53c810_device &>(device).m_dma_cb = callback; }
static void set_fetch_callback(device_t &device, lsi53c810_fetch_delegate callback) { downcast<lsi53c810_device &>(device).m_fetch_cb = callback; }
- void lsi53c810_read_data(int bytes, UINT8 *pData);
- void lsi53c810_write_data(int bytes, UINT8 *pData);
-
UINT8 lsi53c810_reg_r( int offset );
void lsi53c810_reg_w(int offset, UINT8 data);
@@ -65,12 +62,9 @@ private:
void dmaop_load();
void dma_exec();
void add_opcode(UINT8 op, UINT8 mask, opcode_handler_delegate handler);
- void lsi53c810_init();
UINT32 lsi53c810_dasm_fetch(UINT32 pc);
unsigned lsi53c810_dasm(char *buf, UINT32 pc);
- UINT8 last_id;
-
UINT8 scntl0;
UINT8 scntl1;
UINT8 scntl2;
diff --git a/src/devices/machine/6821pia.cpp b/src/devices/machine/6821pia.cpp
index 971d07eee01..a2a08180086 100644
--- a/src/devices/machine/6821pia.cpp
+++ b/src/devices/machine/6821pia.cpp
@@ -14,7 +14,7 @@
// MACROS
//**************************************************************************
-#define VERBOSE 1
+#define VERBOSE 0
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
diff --git a/src/devices/machine/68230pit.cpp b/src/devices/machine/68230pit.cpp
index cb066344784..927ece2cb75 100644
--- a/src/devices/machine/68230pit.cpp
+++ b/src/devices/machine/68230pit.cpp
@@ -190,7 +190,7 @@ LOG (static INT32 or_data = 0)
LOG (static INT32 or_ofs = 0)
READ8_MEMBER (pit68230_device::read){
- UINT8 data = 0;
+ UINT8 data;
switch (offset) {
case PIT_68230_PGCR:
diff --git a/src/devices/machine/68307.cpp b/src/devices/machine/68307.cpp
index 2c3649023be..cbdd2c1eed8 100644
--- a/src/devices/machine/68307.cpp
+++ b/src/devices/machine/68307.cpp
@@ -307,7 +307,7 @@ WRITE16_MEMBER( m68307cpu_device::m68307_internal_base_w )
int pc = space.device().safe_pc();
logerror("%08x m68307_internal_base_w %08x, %04x (%04x)\n", pc, offset*2,data,mem_mask);
- int base = 0;
+ int base;
//int mask = 0;
switch (offset<<1)
diff --git a/src/devices/machine/68307.h b/src/devices/machine/68307.h
index 555a1ec39e3..60ae61db49a 100644
--- a/src/devices/machine/68307.h
+++ b/src/devices/machine/68307.h
@@ -109,7 +109,6 @@ public:
m68307_portb_write_delegate m_m68307_portb_w;
void init16_m68307(address_space &space);
- void init_cpu_m68307(void);
virtual UINT32 disasm_min_opcode_bytes() const override { return 2; };
virtual UINT32 disasm_max_opcode_bytes() const override { return 10; };
diff --git a/src/devices/machine/74123.h b/src/devices/machine/74123.h
index b44354b456b..898dd48e6ea 100644
--- a/src/devices/machine/74123.h
+++ b/src/devices/machine/74123.h
@@ -125,10 +125,8 @@ private:
int timer_running();
void start_pulse();
- void output(INT32 param);
void set_output();
attotime compute_duration();
- void clear();
emu_timer *m_timer;
int m_connection_type; /* the hook up type - one of the constants above */
diff --git a/src/devices/machine/adc1213x.cpp b/src/devices/machine/adc1213x.cpp
index f6104f273e3..b3aec60a8e7 100644
--- a/src/devices/machine/adc1213x.cpp
+++ b/src/devices/machine/adc1213x.cpp
@@ -127,7 +127,7 @@ void adc12138_device::convert(int channel, int bits16, int lsbfirst)
{
int bits;
int input_value;
- double input = 0;
+ double input;
if (bits16)
fatalerror("ADC1213X: 16-bit mode not supported\n");
diff --git a/src/devices/machine/akiko.cpp b/src/devices/machine/akiko.cpp
index 0c7ef441ad2..6a2772187f8 100644
--- a/src/devices/machine/akiko.cpp
+++ b/src/devices/machine/akiko.cpp
@@ -170,7 +170,7 @@ void akiko_device::device_reset()
else
{
// MAME case
- m_cdrom = cdrom_open(get_disk_handle(machine(), ":cdrom"));
+ m_cdrom = cdrom_open(machine().rom_load().get_disk_handle(":cdrom"));
m_cdrom_is_device = 0;
}
@@ -187,10 +187,10 @@ void akiko_device::device_reset()
m_cdrom_numtracks = cdrom_get_last_track(m_cdrom)+3;
- m_cdrom_toc = auto_alloc_array(machine(), UINT8, 13*m_cdrom_numtracks);
- memset( m_cdrom_toc, 0, 13*m_cdrom_numtracks);
+ m_cdrom_toc = std::make_unique<UINT8[]>(13*m_cdrom_numtracks);
+ memset( m_cdrom_toc.get(), 0, 13*m_cdrom_numtracks);
- p = m_cdrom_toc;
+ p = m_cdrom_toc.get();
p[1] = ((addrctrl & 0x0f) << 4) | ((addrctrl & 0xf0) >> 4);
p[3] = 0xa0; /* first track */
p[8] = 1;
@@ -471,7 +471,7 @@ TIMER_CALLBACK_MEMBER(akiko_device::dma_proc)
{
amiga_state *amiga = machine().driver_data<amiga_state>();
UINT32 track = cdrom_get_track( m_cdrom, m_cdrom_lba_cur );
- UINT32 datasize = cdrom_get_toc( m_cdrom )->tracks[track].datasize;
+ UINT32 datasize;// = cdrom_get_toc(m_cdrom)->tracks[track].datasize;
UINT32 subsize = cdrom_get_toc( m_cdrom )->tracks[track].subsize;
int i;
diff --git a/src/devices/machine/akiko.h b/src/devices/machine/akiko.h
index 6886a4073a4..3fd1b586fb6 100644
--- a/src/devices/machine/akiko.h
+++ b/src/devices/machine/akiko.h
@@ -113,7 +113,7 @@ private:
cdda_device *m_cdda;
cdrom_file *m_cdrom;
- UINT8 *m_cdrom_toc;
+ std::unique_ptr<UINT8[]> m_cdrom_toc;
emu_timer *m_dma_timer;
emu_timer *m_frame_timer;
diff --git a/src/devices/machine/amigafdc.cpp b/src/devices/machine/amigafdc.cpp
index e6cbe2911ae..d71b4f458dc 100644
--- a/src/devices/machine/amigafdc.cpp
+++ b/src/devices/machine/amigafdc.cpp
@@ -432,13 +432,13 @@ void amiga_fdc::setup_leds()
floppy == floppy_devices[2] ? 2 :
3;
- output_set_value("drive_0_led", drive == 0);
- output_set_value("drive_1_led", drive == 1);
- output_set_value("drive_2_led", drive == 2);
- output_set_value("drive_3_led", drive == 3);
+ machine().output().set_value("drive_0_led", drive == 0);
+ machine().output().set_value("drive_1_led", drive == 1);
+ machine().output().set_value("drive_2_led", drive == 2);
+ machine().output().set_value("drive_3_led", drive == 3);
- set_led_status(machine(), 1, drive == 0); /* update internal drive led */
- set_led_status(machine(), 2, drive == 1); /* update external drive led */
+ machine().output().set_led_value(1, drive == 0); /* update internal drive led */
+ machine().output().set_led_value(2, drive == 1); /* update external drive led */
}
}
@@ -471,7 +471,7 @@ WRITE8_MEMBER( amiga_fdc::ciaaprb_w )
floppy->dir_w((data >> 1) & 1);
floppy->stp_w(data & 1);
floppy->mon_w((data >> 7) & 1);
- output_set_value("fdc_led", data & 0x80); // LED directly connected to FDC motor
+ machine().output().set_value("fdc_led", data & 0x80); // LED directly connected to FDC motor
}
if(floppy) {
diff --git a/src/devices/machine/at29x.cpp b/src/devices/machine/at29x.cpp
index 440645b4c00..bb2bdd8b8b9 100644
--- a/src/devices/machine/at29x.cpp
+++ b/src/devices/machine/at29x.cpp
@@ -108,7 +108,7 @@ at29c040a_device::at29c040a_device(const machine_config &mconfig, const char *ta
void at29x_device::nvram_default()
{
- memset(m_eememory, 0, m_memory_size+2);
+ memset(m_eememory.get(), 0, m_memory_size+2);
}
//-------------------------------------------------
@@ -118,7 +118,7 @@ void at29x_device::nvram_default()
void at29x_device::nvram_read(emu_file &file)
{
- file.read(m_eememory, m_memory_size+2);
+ file.read(m_eememory.get(), m_memory_size+2);
}
//-------------------------------------------------
@@ -131,7 +131,7 @@ void at29x_device::nvram_write(emu_file &file)
// If we don't write (because there were no changes), the file will be wiped
if (TRACE_PRG) logerror("%s: Write to NVRAM file\n", tag());
m_eememory[0] = m_version;
- file.write(m_eememory, m_memory_size+2);
+ file.write(m_eememory.get(), m_memory_size+2);
}
/*
@@ -157,7 +157,7 @@ void at29x_device::device_timer(emu_timer &timer, device_timer_id id, int param,
case PGM_3:
// Programming cycle end; now burn the buffer into the flash EEPROM
- memcpy(m_eememory + 2 + get_sector_number(m_programming_last_offset) * m_sector_size, m_programming_buffer, m_sector_size);
+ memcpy(m_eememory.get() + 2 + get_sector_number(m_programming_last_offset) * m_sector_size, m_programming_buffer.get(), m_sector_size);
if (TRACE_PRG) logerror("%s: Sector write completed at location %04x\n", tag(), m_programming_last_offset);
@@ -366,7 +366,7 @@ WRITE8_MEMBER( at29x_device::write )
else
{
if (TRACE_STATE) logerror("%s: Erase chip\n", tag());
- memset(m_eememory+2, 0xff, m_memory_size);
+ memset(m_eememory.get()+2, 0xff, m_memory_size);
}
}
break;
@@ -460,7 +460,7 @@ WRITE8_MEMBER( at29x_device::write )
{ // enter programming mode
if (TRACE_STATE) logerror("%s: Enter programming mode (m_pgm=%d, m_sdp=%d)\n", tag(), m_pgm, m_sdp);
// Clear the programming buffer
- memset(m_programming_buffer, 0xff, m_sector_size);
+ memset(m_programming_buffer.get(), 0xff, m_sector_size);
m_pgm = PGM_2;
}
}
@@ -479,8 +479,8 @@ WRITE8_MEMBER( at29x_device::write )
void at29x_device::device_start(void)
{
- m_programming_buffer = global_alloc_array(UINT8, m_sector_size);
- m_eememory = global_alloc_array(UINT8, m_memory_size+2);
+ m_programming_buffer = std::make_unique<UINT8[]>(m_sector_size);
+ m_eememory = std::make_unique<UINT8[]>(m_memory_size+2);
m_programming_timer = timer_alloc(PRGTIMER);
// TODO: Complete 16-bit handling
@@ -490,8 +490,8 @@ void at29x_device::device_start(void)
void at29x_device::device_stop(void)
{
- global_free_array(m_programming_buffer);
- global_free_array(m_eememory);
+ m_programming_buffer = nullptr;
+ m_eememory = nullptr;
}
void at29x_device::device_reset(void)
diff --git a/src/devices/machine/at29x.h b/src/devices/machine/at29x.h
index 6c8eb6531eb..924a17e0f70 100644
--- a/src/devices/machine/at29x.h
+++ b/src/devices/machine/at29x.h
@@ -63,7 +63,7 @@ protected:
private:
void sync_flags(void);
- UINT8* m_eememory;
+ std::unique_ptr<UINT8[]> m_eememory;
bool m_lower_bbl; // set when lower boot block lockout is enabled
bool m_higher_bbl; // set when upper boot block lockout is enabled
@@ -78,7 +78,7 @@ private:
bool m_disabling_sdb; // set when a sdp disable command is in progress
bool m_toggle_bit; // indicates flashing in progress (toggles for each query)
- UINT8* m_programming_buffer;
+ std::unique_ptr<UINT8[]> m_programming_buffer;
int m_programming_last_offset;
emu_timer* m_programming_timer;
};
diff --git a/src/devices/machine/atahle.h b/src/devices/machine/atahle.h
index 1841bdb2be8..e26ad86b92c 100644
--- a/src/devices/machine/atahle.h
+++ b/src/devices/machine/atahle.h
@@ -33,9 +33,6 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER(write_dasp) override;
virtual DECLARE_WRITE_LINE_MEMBER(write_dmack) override;
virtual DECLARE_WRITE_LINE_MEMBER(write_pdiag) override;
-
- TIMER_CALLBACK_MEMBER(buffer_empty_timer_work);
-
protected:
virtual void device_start() override;
virtual void device_reset() override;
@@ -129,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/diablo_hd.cpp b/src/devices/machine/diablo_hd.cpp
index f067acd4742..f833cf54504 100644
--- a/src/devices/machine/diablo_hd.cpp
+++ b/src/devices/machine/diablo_hd.cpp
@@ -87,7 +87,6 @@ diablo_hd_device::diablo_hd_device(const machine_config &mconfig, const char *ta
m_head(-1),
m_sector(-1),
m_page(-1),
- m_cache(nullptr),
m_bits(nullptr),
m_rdfirst(-1),
m_rdlast(-1),
@@ -310,13 +309,12 @@ void diablo_hd_device::read_sector()
if (m_disk) {
// allocate a buffer for this page
- m_cache[m_page] = auto_alloc_array(machine(), UINT8, sizeof(diablo_sector_t));
+ m_cache[m_page] = std::make_unique<UINT8[]>(sizeof(diablo_sector_t));
// and read the page from the hard_disk image
- if (hard_disk_read(m_disk, m_page, m_cache[m_page])) {
+ if (hard_disk_read(m_disk, m_page, m_cache[m_page].get())) {
LOG_DRIVE((2,"[DHD%u] CHS:%03d/%d/%02d => page:%d loaded\n", m_unit, m_cylinder, m_head, m_sector, m_page));
} else {
LOG_DRIVE((0,"[DHD%u] CHS:%03d/%d/%02d => page:%d read failed\n", m_unit, m_cylinder, m_head, m_sector, m_page));
- auto_free(machine(), m_cache[m_page]);
m_cache[m_page] = nullptr;
}
} else {
@@ -442,7 +440,7 @@ UINT32* diablo_hd_device::expand_sector()
LOG_DRIVE((0,"[DHD%u] no image for page #%d\n", m_unit, m_page));
return nullptr;
}
- diablo_sector_t *s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page]);
+ diablo_sector_t *s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page].get());
/* allocate a bits image */
UINT32 *bits = auto_alloc_array_clear(machine(), UINT32, 400);
@@ -727,7 +725,7 @@ void diablo_hd_device::squeeze_sector()
UINT32 *bits = m_bits[m_page];
// pointer to sector buffer
- s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page]);
+ s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page].get());
// zap the sector first
memset(s, 0, sizeof(*s));
@@ -778,7 +776,7 @@ void diablo_hd_device::squeeze_sector()
m_bits[m_page] = nullptr;
if (m_disk) {
- if (!hard_disk_write(m_disk, m_page, m_cache[m_page])) {
+ if (!hard_disk_write(m_disk, m_page, m_cache[m_page].get())) {
LOG_DRIVE((0,"[DHD%u] write failed for page #%d\n", m_unit, m_page));
}
} else {
@@ -1334,9 +1332,7 @@ void diablo_hd_device::device_reset()
if (m_cache) {
for (int page = 0; page < m_pages; page++)
if (m_cache[page])
- auto_free(machine(), m_cache[page]);
- auto_free(machine(), m_cache);
- m_cache = nullptr;
+ m_cache[page] = nullptr;
}
// free previous bits cache
if (m_bits) {
@@ -1406,7 +1402,6 @@ void diablo_hd_device::device_reset()
if (!m_handle)
return;
// for units with a CHD assigned to them start the timer
- m_cache = auto_alloc_array_clear(machine(), UINT8*, m_pages);
m_bits = auto_alloc_array_clear(machine(), UINT32*, m_pages);
timer_set(m_sector_time - m_sector_mark_0_time, 1, 0);
read_sector();
diff --git a/src/devices/machine/diablo_hd.h b/src/devices/machine/diablo_hd.h
index 19b1b5c776b..c3fadd2a073 100644
--- a/src/devices/machine/diablo_hd.h
+++ b/src/devices/machine/diablo_hd.h
@@ -108,7 +108,7 @@ private:
int m_head; //!< current head (track) number on cylinder
int m_sector; //!< current sector number in track
int m_page; //!< current page (derived from cylinder, head and sector)
- UINT8** m_cache; //!< pages raw bytes
+ std::unique_ptr<UINT8[]> m_cache[2 * DIABLO_PAGES]; //!< pages raw bytes
UINT32** m_bits; //!< pages expanded to bits
int m_rdfirst; //!< set to first bit of a sector that is read from
int m_rdlast; //!< set to last bit of a sector that was read from
diff --git a/src/devices/machine/dp8390.h b/src/devices/machine/dp8390.h
index 09dd590f176..49341e30e49 100644
--- a/src/devices/machine/dp8390.h
+++ b/src/devices/machine/dp8390.h
@@ -72,7 +72,6 @@ private:
void set_cr(UINT8 newcr);
void check_dma_complete();
void do_tx();
- bool mcast_ck(const UINT8 *buf, int len);
void check_irq() { m_irq_cb((m_regs.imr & m_regs.isr & 0x7f)?ASSERT_LINE:CLEAR_LINE); }
void recv_overflow();
void stop();
diff --git a/src/devices/machine/ds1315.cpp b/src/devices/machine/ds1315.cpp
index 5764158cefe..e9c984e4716 100644
--- a/src/devices/machine/ds1315.cpp
+++ b/src/devices/machine/ds1315.cpp
@@ -231,7 +231,7 @@ READ8_MEMBER(ds1315_device::write_data)
void ds1315_device::input_raw_data()
{
- int raw[8], i, j=0;
+ int raw[8], i, j;
raw[0] = raw[1] = raw[2] = raw[3] = raw[4] = raw[5] = raw[6] = raw[7] = 0;
UINT8 flag = 1;
diff --git a/src/devices/machine/gayle.cpp b/src/devices/machine/gayle.cpp
index bf56f2aaf9e..93ea9034eb0 100644
--- a/src/devices/machine/gayle.cpp
+++ b/src/devices/machine/gayle.cpp
@@ -188,7 +188,7 @@ WRITE_LINE_MEMBER( gayle_device::ide_interrupt_w )
READ16_MEMBER( gayle_device::gayle_id_r )
{
- UINT16 data = 0xffff;
+ UINT16 data;
if (ACCESSING_BITS_8_15)
data = ((m_gayle_id << m_gayle_id_count++) & 0x80) << 8;
diff --git a/src/devices/machine/hdc92x4.cpp b/src/devices/machine/hdc92x4.cpp
index f433a7a2edd..54a8f802b99 100644
--- a/src/devices/machine/hdc92x4.cpp
+++ b/src/devices/machine/hdc92x4.cpp
@@ -568,7 +568,7 @@ bool hdc92x4_device::using_floppy()
*/
int hdc92x4_device::step_time()
{
- int time = 0;
+ int time;
int index = m_register_w[MODE] & MO_STEPRATE;
// Get seek time.
if (m_selected_drive_type == TYPE_FLOPPY8)
@@ -588,7 +588,7 @@ int hdc92x4_device::step_time()
*/
int hdc92x4_device::pulse_width()
{
- int time = 0;
+ int time;
// Get seek time.
if (m_selected_drive_type == TYPE_FLOPPY8)
time = pulse_flop8;
@@ -1319,7 +1319,7 @@ void hdc92x4_device::tape_backup()
*/
void hdc92x4_device::poll_drives()
{
- UINT8 drivebit = 0;
+ UINT8 drivebit;
if (m_substate == UNDEF)
{
logerror("%s: POLL DRIVES command %02x\n", tag(), current_command());
@@ -3795,7 +3795,7 @@ bool hdc92x4_device::read_from_mfmhd(const attotime &limit)
*/
bool hdc92x4_device::write_to_mfmhd(const attotime &limit)
{
- UINT16 data = 0;
+ UINT16 data;
int count;
bool offlimit = false;
@@ -3918,7 +3918,7 @@ UINT16 hdc92x4_device::encode_a1_hd()
*/
READ8_MEMBER( hdc92x4_device::read )
{
- UINT8 reply = 0;
+ UINT8 reply;
if ((offset & 1) == 0)
{
// Data register
diff --git a/src/devices/machine/i8255.cpp b/src/devices/machine/i8255.cpp
index 7725565cde2..7e6a769f904 100644
--- a/src/devices/machine/i8255.cpp
+++ b/src/devices/machine/i8255.cpp
@@ -313,7 +313,7 @@ void i8255_device::device_reset()
UINT8 i8255_device::read_mode0(int port)
{
- UINT8 data = 0;
+ UINT8 data;
if (port_mode(port) == MODE_OUTPUT)
{
@@ -336,7 +336,7 @@ UINT8 i8255_device::read_mode0(int port)
UINT8 i8255_device::read_mode1(int port)
{
- UINT8 data = 0;
+ UINT8 data;
if (port_mode(port) == MODE_OUTPUT)
{
@@ -368,7 +368,7 @@ UINT8 i8255_device::read_mode1(int port)
UINT8 i8255_device::read_mode2()
{
- UINT8 data = 0;
+ UINT8 data;
// read data from input latch
data = m_input[PORT_A];
diff --git a/src/devices/machine/i8271.cpp b/src/devices/machine/i8271.cpp
index 3d1d602dd74..cd8c0faf5bf 100644
--- a/src/devices/machine/i8271.cpp
+++ b/src/devices/machine/i8271.cpp
@@ -1541,7 +1541,6 @@ void i8271_device::device_timer(emu_timer &timer, device_timer_id id, int param,
void i8271_device::index_callback(floppy_image_device *floppy, int state)
{
for(auto & fi : flopi) {
-
if(fi.dev != floppy)
continue;
diff --git a/src/devices/machine/i8271.h b/src/devices/machine/i8271.h
index dcc5f470713..e4409bed389 100644
--- a/src/devices/machine/i8271.h
+++ b/src/devices/machine/i8271.h
@@ -244,8 +244,6 @@ private:
void set_irq(bool state);
bool get_ready(int fid);
- void enable_transfer();
- void disable_transfer();
int calc_sector_size(UINT8 size);
int check_command();
diff --git a/src/devices/machine/i8279.cpp b/src/devices/machine/i8279.cpp
index d336dd80858..725d1aa4827 100644
--- a/src/devices/machine/i8279.cpp
+++ b/src/devices/machine/i8279.cpp
@@ -206,11 +206,11 @@ void i8279_device::set_irq(bool state)
void i8279_device::new_key(UINT8 data, bool skey, bool ckey)
{
UINT8 i, rl, sl;
- for (i = 0; BIT(data, i); i++);
+ for (i = 0; BIT(data, i); i++) {};
rl = i;
if (BIT(m_cmd[0], 0))
{
- for (i = 0; !BIT(data, i); i++);
+ for (i = 0; !BIT(data, i); i++) {};
sl = i;
}
else
@@ -315,7 +315,7 @@ void i8279_device::timer_mainloop()
UINT8 addr = m_scanner &7;
if (decoded)
- for (addr=0; !BIT(m_scanner, addr); addr++);
+ for (addr=0; !BIT(m_scanner, addr); addr++) {};
rl ^= 0xff; // inverted
assert(addr < ARRAY_LENGTH(m_s_ram));
diff --git a/src/devices/machine/i8279.h b/src/devices/machine/i8279.h
index c5e56239b9e..3da46da3121 100644
--- a/src/devices/machine/i8279.h
+++ b/src/devices/machine/i8279.h
@@ -106,9 +106,7 @@ private:
void clear_display();
void new_key(UINT8 data, bool skey, bool ckey);
void new_fifo(UINT8 data);
- UINT8 get_segments();
void set_irq(bool state);
- void set_display_mode(UINT8 data);
devcb_write_line m_out_irq_cb; // IRQ
devcb_write8 m_out_sl_cb; // Scanlines SL0-3
diff --git a/src/devices/machine/i8355.h b/src/devices/machine/i8355.h
index 037e281cd70..7337fa0193d 100644
--- a/src/devices/machine/i8355.h
+++ b/src/devices/machine/i8355.h
@@ -84,7 +84,6 @@ public:
DECLARE_WRITE8_MEMBER( io_w );
DECLARE_READ8_MEMBER( memory_r );
- DECLARE_WRITE8_MEMBER( memory_w );
protected:
// device-level overrides
diff --git a/src/devices/machine/idehd.cpp b/src/devices/machine/idehd.cpp
index a9205ed02fe..c17e4258fbc 100644
--- a/src/devices/machine/idehd.cpp
+++ b/src/devices/machine/idehd.cpp
@@ -60,7 +60,7 @@ static void swap_strncpy(UINT16 *dst, const char *src, int field_size_in_words)
{
for (int i = 0; i < field_size_in_words; i++)
{
- UINT16 d = 0;
+ UINT16 d;
if (*src)
{
@@ -404,7 +404,7 @@ void ata_mass_storage_device::fill_buffer()
void ata_mass_storage_device::finished_read()
{
- int lba = lba_address(), count = 0;
+ int lba = lba_address(), count;
set_dasp(CLEAR_LINE);
@@ -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);
@@ -534,7 +538,7 @@ void ata_mass_storage_device::process_buffer()
void ata_mass_storage_device::finished_write()
{
- int lba = lba_address(), count = 0;
+ int lba = lba_address(), count;
set_dasp(CLEAR_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/k053252.cpp b/src/devices/machine/k053252.cpp
index 6e3a612a1e8..45020926ace 100644
--- a/src/devices/machine/k053252.cpp
+++ b/src/devices/machine/k053252.cpp
@@ -124,6 +124,11 @@ void k053252_device::device_reset()
m_regs[0x08] = 1; // Xexex apparently does a wrong assignment for VC (sets up the INT enable register instead)
+ reset_internal_state();
+}
+
+void k053252_device::reset_internal_state()
+{
m_hc=0;
m_hfp=0;
m_hbp=0;
@@ -134,7 +139,6 @@ void k053252_device::device_reset()
m_hsw=0;
}
-
/*****************************************************************************
DEVICE HANDLERS
*****************************************************************************/
@@ -170,9 +174,6 @@ void k053252_device::res_change()
//VC - VFP - VBP - (VSW+1)
attoseconds_t refresh = HZ_TO_ATTOSECONDS(clock()) * (m_hc) * m_vc;
- //printf("H %d %d %d %d\n",m_hc,m_hfp,m_hbp,m_hsw);
- //printf("V %d %d %d %d\n",m_vc,m_vfp,m_vbp,m_vsw);
-
visarea.min_x = m_offsx;
visarea.min_y = m_offsy;
visarea.max_x = m_offsx + m_hc - m_hfp - m_hbp - 8*(m_hsw) - 1;
@@ -182,6 +183,16 @@ void k053252_device::res_change()
if (m_slave_screen)
m_slave_screen->configure(m_hc, m_vc, visarea, refresh);
+
+#if 0
+ attoseconds_t hsync = HZ_TO_ATTOSECONDS(clock()) * (m_hc);
+ printf("H %d HFP %d HSW %d HBP %d\n",m_hc,m_hfp,m_hsw*8,m_hbp);
+ printf("V %d VFP %d VSW %d VBP %d\n",m_vc,m_vfp,m_vsw,m_vbp);
+ // L stands for Legacy ...
+ printf("L %d %d\n",m_offsx,m_offsy);
+ printf("Screen params: Clock: %u V-Sync %.2f H-Sync %.f\n",clock(),ATTOSECONDS_TO_HZ(refresh),ATTOSECONDS_TO_HZ(hsync));
+ printf("visible screen area: %d x %d\n\n",(visarea.max_x - visarea.min_x) + 1,(visarea.max_y - visarea.min_y) + 1);
+#endif
}
}
@@ -240,7 +251,7 @@ WRITE8_MEMBER( k053252_device::write )
logerror("%02x VSW / %02x HSW set\n",m_vsw,m_hsw);
res_change();
break;
-
+
//case 0x0d: m_int_time(data); break;
case 0x0e: m_int1_ack_cb(1); break;
case 0x0f: m_int2_ack_cb(1); break;
diff --git a/src/devices/machine/k053252.h b/src/devices/machine/k053252.h
index 70ec6f4f376..a00743789ad 100644
--- a/src/devices/machine/k053252.h
+++ b/src/devices/machine/k053252.h
@@ -49,6 +49,7 @@ public:
void res_change();
+
static void static_set_slave_screen(device_t &device, const char *tag);
@@ -56,7 +57,8 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
- virtual void device_clock_changed() override { res_change(); }
+ virtual void device_clock_changed() override { reset_internal_state(); }
+ void reset_internal_state();
private:
// internal state
@@ -73,7 +75,7 @@ protected:
int m_offsx;
int m_offsy;
- const char * m_slave_screen_tag;
+ const char * m_slave_screen_tag;
screen_device * m_slave_screen;
};
diff --git a/src/devices/machine/laserdsc.cpp b/src/devices/machine/laserdsc.cpp
index b8ecf53611c..50e6dc09836 100644
--- a/src/devices/machine/laserdsc.cpp
+++ b/src/devices/machine/laserdsc.cpp
@@ -321,7 +321,7 @@ void laserdisc_device::device_start()
init_audio();
// register callbacks
- config_register(machine(), "laserdisc", config_saveload_delegate(FUNC(laserdisc_device::config_load), this), config_saveload_delegate(FUNC(laserdisc_device::config_save), this));
+ machine().configuration().config_register("laserdisc", config_saveload_delegate(FUNC(laserdisc_device::config_load), this), config_saveload_delegate(FUNC(laserdisc_device::config_save), this));
}
@@ -737,7 +737,7 @@ void laserdisc_device::init_disc()
if (!m_getdisc_callback.isnull())
m_disc = m_getdisc_callback(*this);
else
- m_disc = get_disk_handle(machine(), tag());
+ m_disc = machine().rom_load().get_disk_handle(tag());
// set default parameters
m_width = 720;
@@ -805,7 +805,7 @@ void laserdisc_device::init_video()
for (auto & frame : m_frame)
{
// first allocate a YUY16 bitmap at 2x the height
-
+
frame.m_bitmap.allocate(m_width, m_height * 2);
frame.m_bitmap.set_palette(m_videopalette);
fillbitmap_yuy16(frame.m_bitmap, 40, 109, 240);
@@ -1142,10 +1142,10 @@ void laserdisc_device::process_track_data()
// configuration file
//-------------------------------------------------
-void laserdisc_device::config_load(int config_type, xml_data_node *parentnode)
+void laserdisc_device::config_load(config_type cfg_type, xml_data_node *parentnode)
{
// we only care about game files
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
// might not have any data
@@ -1178,10 +1178,10 @@ void laserdisc_device::config_load(int config_type, xml_data_node *parentnode)
// file
//-------------------------------------------------
-void laserdisc_device::config_save(int config_type, xml_data_node *parentnode)
+void laserdisc_device::config_save(config_type cfg_type, xml_data_node *parentnode)
{
// we only care about game files
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
// create a node
diff --git a/src/devices/machine/laserdsc.h b/src/devices/machine/laserdsc.h
index 0980bbb9f13..c550a9f61aa 100644
--- a/src/devices/machine/laserdsc.h
+++ b/src/devices/machine/laserdsc.h
@@ -284,8 +284,8 @@ private:
void read_track_data();
static void *read_async_static(void *param, int threadid);
void process_track_data();
- void config_load(int config_type, xml_data_node *parentnode);
- void config_save(int config_type, xml_data_node *parentnode);
+ void config_load(config_type cfg_type, xml_data_node *parentnode);
+ void config_save(config_type cfg_type, xml_data_node *parentnode);
// configuration
laserdisc_get_disc_delegate m_getdisc_callback;
diff --git a/src/devices/machine/ldpr8210.cpp b/src/devices/machine/ldpr8210.cpp
index 967dac974e7..17b02edf276 100644
--- a/src/devices/machine/ldpr8210.cpp
+++ b/src/devices/machine/ldpr8210.cpp
@@ -563,18 +563,18 @@ WRITE8_MEMBER( pioneer_pr8210_device::i8049_pia_w )
case 0x60:
// these 4 are direct-connect
- output_set_value("pr8210_audio1", (data & 0x01) != 0);
- output_set_value("pr8210_audio2", (data & 0x02) != 0);
- output_set_value("pr8210_clv", (data & 0x04) != 0);
- output_set_value("pr8210_cav", (data & 0x08) != 0);
+ machine().output().set_value("pr8210_audio1", (data & 0x01) != 0);
+ machine().output().set_value("pr8210_audio2", (data & 0x02) != 0);
+ machine().output().set_value("pr8210_clv", (data & 0x04) != 0);
+ machine().output().set_value("pr8210_cav", (data & 0x08) != 0);
// remaining 3 bits select one of 5 LEDs via a mux
value = ((data & 0x40) >> 6) | ((data & 0x20) >> 4) | ((data & 0x10) >> 2);
- output_set_value("pr8210_srev", (value == 0));
- output_set_value("pr8210_sfwd", (value == 1));
- output_set_value("pr8210_play", (value == 2));
- output_set_value("pr8210_step", (value == 3));
- output_set_value("pr8210_pause", (value == 4));
+ machine().output().set_value("pr8210_srev", (value == 0));
+ machine().output().set_value("pr8210_sfwd", (value == 1));
+ machine().output().set_value("pr8210_play", (value == 2));
+ machine().output().set_value("pr8210_step", (value == 3));
+ machine().output().set_value("pr8210_pause", (value == 4));
m_pia.portb = data;
update_audio_squelch();
@@ -724,7 +724,7 @@ WRITE8_MEMBER( pioneer_pr8210_device::i8049_port2_w )
m_i8049_cpu->set_input_line(MCS48_INPUT_IRQ, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
// standby LED is set accordingl to bit 4
- output_set_value("pr8210_standby", (data & 0x10) != 0);
+ machine().output().set_value("pr8210_standby", (data & 0x10) != 0);
}
diff --git a/src/devices/machine/ldvp931.cpp b/src/devices/machine/ldvp931.cpp
index 47133de9ffb..716728b638b 100644
--- a/src/devices/machine/ldvp931.cpp
+++ b/src/devices/machine/ldvp931.cpp
@@ -389,7 +389,7 @@ WRITE8_MEMBER( phillips_22vp931_device::i8049_output1_w )
$01 = OSM
*/
- INT32 speed = 0;
+ INT32 speed;
if (LOG_PORTS && (m_i8049_out1 ^ data) & 0x08)
{
diff --git a/src/devices/machine/mc68328.cpp b/src/devices/machine/mc68328.cpp
index 4cd578d6a4c..deb73d0eaa4 100644
--- a/src/devices/machine/mc68328.cpp
+++ b/src/devices/machine/mc68328.cpp
@@ -1794,7 +1794,7 @@ WRITE16_MEMBER( mc68328_device::write )
READ16_MEMBER( mc68328_device::read )
{
- UINT16 temp16 = 0;
+ UINT16 temp16;
UINT32 address = offset << 1;
switch (address)
diff --git a/src/devices/machine/mc68681.cpp b/src/devices/machine/mc68681.cpp
index edf1a23f817..00b38347285 100644
--- a/src/devices/machine/mc68681.cpp
+++ b/src/devices/machine/mc68681.cpp
@@ -590,7 +590,7 @@ mc68681_channel *mc68681_device::get_channel(int chan)
int mc68681_device::calc_baud(int ch, UINT8 data)
{
- int baud_rate = 0;
+ int baud_rate;
if ( BIT(ACR, 7) == 0 )
{
@@ -878,7 +878,7 @@ void mc68681_channel::update_interrupts()
UINT8 mc68681_channel::read_rx_fifo()
{
- UINT8 rv = 0;
+ UINT8 rv;
// printf("read_rx_fifo: rx_fifo_num %d\n", rx_fifo_num);
diff --git a/src/devices/machine/microtch.h b/src/devices/machine/microtch.h
index a3d64804de5..4ee60abede7 100644
--- a/src/devices/machine/microtch.h
+++ b/src/devices/machine/microtch.h
@@ -11,7 +11,6 @@ class microtouch_device :
public device_serial_interface
{
public:
- microtouch_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);
microtouch_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
template<class _Object> static devcb_base &static_set_stx_callback(device_t &device, _Object object) { return downcast<microtouch_device &>(device).m_out_stx_func.set_callback(object); }
diff --git a/src/devices/machine/mos6526.cpp b/src/devices/machine/mos6526.cpp
index 3d9561b36f7..317c6b8555d 100644
--- a/src/devices/machine/mos6526.cpp
+++ b/src/devices/machine/mos6526.cpp
@@ -921,7 +921,7 @@ READ8_MEMBER( mos6526_device::read )
READ8_MEMBER( mos8520_device::read )
{
- UINT8 data = 0;
+ UINT8 data;
switch (offset & 0x0f)
{
diff --git a/src/devices/machine/mos6530.cpp b/src/devices/machine/mos6530.cpp
index a32383fcbda..46979b078f0 100644
--- a/src/devices/machine/mos6530.cpp
+++ b/src/devices/machine/mos6530.cpp
@@ -259,7 +259,7 @@ WRITE8_MEMBER( mos6530_device::write )
READ8_MEMBER( mos6530_device::read )
{
- UINT8 val = 0;
+ UINT8 val;
/* if A2 == 1 and A0 == 1, we are reading interrupt flags */
if ((offset & 0x05) == 0x05)
diff --git a/src/devices/machine/mos6530n.cpp b/src/devices/machine/mos6530n.cpp
index 3affa2d7b7f..31c15c65e1d 100644
--- a/src/devices/machine/mos6530n.cpp
+++ b/src/devices/machine/mos6530n.cpp
@@ -648,7 +648,7 @@ READ8_MEMBER( mos6530_base_t::timer_on_r )
UINT8 mos6530_base_t::timer_r(bool ie)
{
- UINT8 data = 0;
+ UINT8 data;
live_sync();
diff --git a/src/devices/machine/ncr5380.cpp b/src/devices/machine/ncr5380.cpp
index 175e9130c1c..fe62190d40f 100644
--- a/src/devices/machine/ncr5380.cpp
+++ b/src/devices/machine/ncr5380.cpp
@@ -137,7 +137,7 @@ void ncr5380_device::device_stop()
UINT8 ncr5380_device::ncr5380_read_reg(UINT32 offset)
{
int reg = offset & 7;
- UINT8 rv = 0;
+ UINT8 rv;
switch( reg )
{
diff --git a/src/devices/machine/ncr5380n.cpp b/src/devices/machine/ncr5380n.cpp
index 6534730ca00..cffe173d73c 100644
--- a/src/devices/machine/ncr5380n.cpp
+++ b/src/devices/machine/ncr5380n.cpp
@@ -165,7 +165,7 @@ void ncr5380n_device::step(bool timeout)
break;
int win;
- for(win=7; win>=0 && !(data & (1<<win)); win--);
+ for(win=7; win>=0 && !(data & (1<<win)); win--) {};
// printf("arb complete: data %02x win %02x scsi_id %02x\n", data, win, scsi_id);
if(win != scsi_id) {
scsi_bus->data_w(scsi_refid, 0);
@@ -322,7 +322,7 @@ WRITE8_MEMBER(ncr5380n_device::icmd_w)
if (mask)
{
// translate data to nscsi
- UINT8 newdata = 0;
+ UINT8 newdata;
newdata = (data & IC_RST ? S_RST : 0) |
(data & IC_ACK ? S_ACK : 0) |
diff --git a/src/devices/machine/ncr5390.cpp b/src/devices/machine/ncr5390.cpp
index fa29299ff45..9de72de9afe 100644
--- a/src/devices/machine/ncr5390.cpp
+++ b/src/devices/machine/ncr5390.cpp
@@ -143,7 +143,7 @@ void ncr5390_device::step(bool timeout)
break;
int win;
- for(win=7; win>=0 && !(data & (1<<win)); win--);
+ for(win=7; win>=0 && !(data & (1<<win)); win--) {};
if(win != scsi_id) {
scsi_bus->data_w(scsi_refid, 0);
scsi_bus->ctrl_w(scsi_refid, 0, S_ALL);
diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h
index 568199444d7..961bb7a26ea 100644
--- a/src/devices/machine/netlist.h
+++ b/src/devices/machine/netlist.h
@@ -178,9 +178,6 @@ public:
// construction/destruction
netlist_mame_cpu_device_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~netlist_mame_cpu_device_t() {}
-
- static void static_set_constructor(device_t &device, void (*setup_func)(netlist::setup_t &));
-
protected:
// netlist_mame_device_t
virtual void nl_register_devices() override;
@@ -223,7 +220,7 @@ protected:
// device_state_interface overrides
- virtual void state_string_export(const device_state_entry &entry, std::string &str) override
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const override
{
if (entry.index() >= 0)
{
@@ -256,8 +253,6 @@ public:
netlist_mame_sound_device_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
virtual ~netlist_mame_sound_device_t() {}
- static void static_set_constructor(device_t &device, void (*setup_func)(netlist::setup_t &));
-
inline sound_stream *get_stream() { return m_stream; }
diff --git a/src/devices/machine/nscsi_bus.cpp b/src/devices/machine/nscsi_bus.cpp
index 611586a7962..d0508059758 100644
--- a/src/devices/machine/nscsi_bus.cpp
+++ b/src/devices/machine/nscsi_bus.cpp
@@ -280,7 +280,7 @@ void nscsi_full_device::step(bool timeout)
switch(scsi_state & SUB_MASK ? scsi_state & SUB_MASK : scsi_state & STATE_MASK) {
case IDLE:
if(((ctrl & (S_SEL|S_BSY)) == S_SEL) && (scsi_id != -1) && ((data & (1 << scsi_id)) != 0)) {
- for(scsi_initiator_id = 0; scsi_initiator_id != 16 && (scsi_initiator_id == scsi_id || (data & (1 << scsi_initiator_id))); scsi_initiator_id++);
+ for(scsi_initiator_id = 0; scsi_initiator_id != 16 && (scsi_initiator_id == scsi_id || (data & (1 << scsi_initiator_id))); scsi_initiator_id++) {};
if(scsi_initiator_id == 16)
scsi_initiator_id = -1;
scsi_state = TARGET_SELECT_WAIT_BUS_SETTLE;
diff --git a/src/devices/machine/pci.h b/src/devices/machine/pci.h
index c57d3eb3bf8..a88f0a3b7fb 100644
--- a/src/devices/machine/pci.h
+++ b/src/devices/machine/pci.h
@@ -133,10 +133,6 @@ protected:
void set_map_address(int id, UINT64 adr);
void set_map_size(int id, UINT64 size);
void set_map_flags(int id, int flags);
-
-private:
- void add_map_finish(int bid, UINT64 size, int flags);
-
};
class agp_device : public pci_device {
diff --git a/src/devices/machine/pci9050.cpp b/src/devices/machine/pci9050.cpp
index 4a8ad2dd704..6e74a19e284 100644
--- a/src/devices/machine/pci9050.cpp
+++ b/src/devices/machine/pci9050.cpp
@@ -113,7 +113,7 @@ void pci9050_device::remap_local(int id)
return;
}
int lsize;
- for(lsize=1; lsize<28 && !(csbase & (1<<lsize)); lsize++);
+ for(lsize=1; lsize<28 && !(csbase & (1<<lsize)); lsize++) {};
if(lsize == 28) {
set_map_flags(id+2, M_MEM | M_DISABLED);
return;
diff --git a/src/devices/machine/pckeybrd.cpp b/src/devices/machine/pckeybrd.cpp
index 513b9036dc9..0650fc8cea3 100644
--- a/src/devices/machine/pckeybrd.cpp
+++ b/src/devices/machine/pckeybrd.cpp
@@ -357,9 +357,9 @@ void pc_keyboard_device::device_reset()
m_numlock = 0;
m_on = true;
/* set default led state */
- set_led_status(machine(), 2, 0);
- set_led_status(machine(), 0, 0);
- set_led_status(machine(), 1, 0);
+ machine().output().set_led_value(2, 0);
+ machine().output().set_led_value(0, 0);
+ machine().output().set_led_value(1, 0);
m_head = m_tail = 0;
queue_insert(0xaa);
@@ -421,7 +421,7 @@ void pc_keyboard_device::standard_scancode_insert(int our_code, int pressed)
/* add codes for standard keys */
void at_keyboard_device::standard_scancode_insert(int our_code, int pressed)
{
- int scancode = our_code;
+ int scancode;
switch (m_scan_code_set)
{
@@ -832,9 +832,9 @@ WRITE8_MEMBER(at_keyboard_device::write)
/* led's in same order as my keyboard leds. */
/* num lock, caps lock, scroll lock */
- set_led_status(machine(), 2, (data & 0x01));
- set_led_status(machine(), 0, ((data & 0x02)>>1));
- set_led_status(machine(), 1, ((data & 0x04)>>2));
+ machine().output().set_led_value(2, (data & 0x01));
+ machine().output().set_led_value(0, ((data & 0x02)>>1));
+ machine().output().set_led_value(1, ((data & 0x04)>>2));
}
break;
diff --git a/src/devices/machine/pdc.cpp b/src/devices/machine/pdc.cpp
new file mode 100644
index 00000000000..4a882d12a04
--- /dev/null
+++ b/src/devices/machine/pdc.cpp
@@ -0,0 +1,591 @@
+// license:GPL-2.0+
+// copyright-holders:Brandon Munger
+/**********************************************************************
+
+ ROLM 9751 9005 Peripheral device controller emulation
+
+**********************************************************************/
+
+/*
+ Device PDCN
+ Board Copyright - IBM Corp 1989 Made in USA
+
+ Labels:
+ * 96D1975
+ MN 90594C
+
+ * EC# A6466SP
+ MFG 85575
+
+ Hardware:
+ * CPU - Zilog Z0840006PSC Z80 @ 5MHz - U19
+ * FDC - NEC D765AC-2 9002P7004 - U35
+ * HDC - HDC9224 SMC E8838 8/90 - U59
+ * DMA - P8237A-5 L1041330 - U34
+ * Channel 0 - FDC
+ * Channel 1 - Main system ram
+ * Memory - HM6264ALP-12 SRAM 8KB - U16
+ * Memory - HM6116P-2 SRAM 2KB - U33
+ Logic:
+ * U1 - PLS105AN Label: 59D9101
+ * U11 - ?? Label: 59D10001
+ * U27 - ?? Label: 96D1978
+ * U28 - ?? Label: 97D8750
+ * U31 - TIBPAL20L8-25CNT Label: 96D1987
+ * U32 - ?? Label: 59D1001
+ * U37 - PLS100N Label: 72D2701
+ * U38 - PLS100N Label: 58D9201
+ * U39 - ?? Label: 96D1981
+ * U40 - ?? Label: 96D1984
+ * U68 - ?? Label: 91D4301
+ * U69 - ?? Label: 59D1001
+ * U70 - ?? Label: 59D1001
+
+ Switches:
+ * S1 - Hard drive format configuration (Default all off)
+ * S2 - Floppy drive format configuration (Default 1-7 off, 8 on)
+
+ Program Memory:
+ * 0x0000 - 0x3FFF : ROM 27128 Label: 97D9988
+ * 0x8000 - 0x9FFF : SRAM HM6264ALP-12 8KB
+ * 0xC000 - 0xC7FF : SRAM HM6116P-2 2KB
+
+ IO Memory:
+ * 0x00 - 0x01 : Old style command [0x5FF041B0]
+ * 0x02 - 0x03 : FDC command address [0x5FF0C0B0][0x5FF0C1B0]
+ * 0x04 - 0x05 : FDC command completion status [0x5FF030B0]
+ * 0x06 - 0x07 : FDC data address [0x5FF080B0]
+ * 0x10 - 0x18 : HDC registers (unknown)
+ * 0x21 - 0x21 : FDC unknown, resets bit 1 on 0x38
+ * 0x22 - 0x22 : FDC unknown
+ * 0x23 - 0x24 : FDC Active DMA host address (auto increments)
+ * 0x25 - 0x25 : FDC unknown
+ * 0x26 - 0x26 : DREQ1 on
+ * 0x27 - 0x27 : FDC unknown
+ * 0x28 - 0x2A : Possibly LED lights
+ * 0x2C - 0x2C : DREQ1 off
+ * 0x2D - 0x2D : Unknown
+ * 0x2E - 0x2E : Transfer direction 0x80 = PDC -> Host (read data)
+ 0x00 = Host -> PDC (Commands, write data)
+ * 0x2F - 0x2F : Unknown
+ * 0x38 - 0x38 : FDC command request
+ Bit 1: Debug?
+ Bit 2: Command complete
+ Bit 3: Unknown
+ Bit 5: Unknown
+ Bit 6-7: Error conditions
+ * 0x39 - 0x39 : Interrupt status
+ Bit 0: HDC9224 interrupt
+ Bit 1: Incoming command
+ Bit 3: FDD related, maybe uPD interrupt pin?
+ * 0x3C - 0x3D : Dipswitch 2 and 1
+ * 0x40 - 0x40 : HDC9224 DATA register
+ * 0x41 - 0x41 : HDC9224 COMMAND register
+ * 0x42 - 0x42 : uPD765 STATUS register
+ * 0x43 - 0x43 : uPD765 DATA register
+ * 0x50 - 0x51 : Unknown - reset latch maybe?
+ * 0x52 - 0x52 : FDD Master motor control
+ * 0x53 - 0x53 : Unknown
+ * 0x54 - 0x57 : FDD motor control (Units 1-4)
+ * 0x60 - 0x6F : P8237A DMA controller register set
+
+*/
+
+#include "pdc.h"
+
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+#define Z80_TAG "pdc_z80" // U19
+#define FDC_TAG "fdc"
+#define HDC_TAG "hdc"
+#define FDCDMA_TAG "i8237dma"
+
+#define TRACE_PDC_FDC 0
+#define TRACE_PDC_HDC 0
+#define TRACE_PDC_DMA 0
+#define TRACE_PDC_CMD 0
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type PDC = &device_creator<pdc_device>;
+
+//-------------------------------------------------
+// ROM( PDC )
+//-------------------------------------------------
+
+ROM_START( pdc )
+ ROM_REGION( 0x4000, "rom", 0 )
+ ROM_LOAD( "97d9988.27128.pdc.u17", 0x0000, 0x4000, CRC(d96ccaa6) SHA1(e1a465c2274a63e81dba7a71fc8b30f10c03baf0) ) // Label: "97D9988" 27128 @U17
+ROM_END
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *pdc_device::device_rom_region() const
+{
+ return ROM_NAME( pdc );
+}
+
+//-------------------------------------------------
+// ADDRESS_MAP( pdc_mem )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( pdc_mem, AS_PROGRAM, 8, pdc_device )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("rom", 0)
+ AM_RANGE(0x8000, 0x9FFF) AM_RAM AM_SHARE("pdc_ram") // HM6264ALP-12 SRAM 8KB
+ AM_RANGE(0xC000, 0xC7FF) AM_RAM // HM6116P-2 SRAM 2KB
+ADDRESS_MAP_END
+
+//-------------------------------------------------
+// ADDRESS_MAP( pdc_io )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( pdc_io, AS_IO, 8, pdc_device )
+ AM_RANGE(0x00, 0x07) AM_READWRITE(p0_7_r,p0_7_w) AM_MIRROR(0xFF00)
+ AM_RANGE(0x21, 0x2F) AM_READWRITE(fdd_68k_r,fdd_68k_w) AM_MIRROR(0xFF00)
+ AM_RANGE(0x38, 0x38) AM_READ(p38_r) AM_MIRROR(0xFF00) // Possibly UPD765 interrupt
+ AM_RANGE(0x39, 0x39) AM_READ(p39_r) AM_MIRROR(0xFF00) // HDD related
+ AM_RANGE(0x3c, 0x3c) AM_READ_PORT("SW2") AM_MIRROR(0xFF00) /* FDC Dipswitch */
+ AM_RANGE(0x3d, 0x3d) AM_READ_PORT("SW1") AM_MIRROR(0xFF00) /* HDC Dipswitch */
+ AM_RANGE(0x40, 0x41) AM_DEVREADWRITE(HDC_TAG, hdc9224_device,read,write) AM_MIRROR(0xFF00)
+ AM_RANGE(0x42, 0x43) AM_DEVICE(FDC_TAG, upd765a_device, map) AM_MIRROR(0xFF00)
+ AM_RANGE(0x50, 0x5f) AM_WRITE(p50_5f_w) AM_MIRROR(0xFF00)
+ AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE(FDCDMA_TAG,am9517a_device,read,write) AM_MIRROR(0xFF00)
+ADDRESS_MAP_END
+
+//-------------------------------------------------
+// INPUT_PORTS_START( pdc )
+//-------------------------------------------------
+
+static INPUT_PORTS_START( pdc_ports )
+ /* Hard Disk Controller SW1 */
+ PORT_START("SW1")
+ PORT_DIPNAME( 0x80, 0x80, "SW1-1") PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "SW1-2") PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "SW1-3") PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "SW1-4") PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "SW1-5") PORT_DIPLOCATION("SW1:5")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "SW1-6") PORT_DIPLOCATION("SW1:6")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "SW1-7") PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x01, 0x01, "SW1-8") PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ /* Floppy Disk Controller SW2 */
+ PORT_START("SW2")
+ PORT_DIPNAME( 0x80, 0x80, "SW2-1") PORT_DIPLOCATION("SW2:1")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "SW2-2") PORT_DIPLOCATION("SW2:2")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "SW2-3") PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "SW2-4") PORT_DIPLOCATION("SW2:4")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "SW2-5") PORT_DIPLOCATION("SW2:5")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "SW2-6") PORT_DIPLOCATION("SW2:6")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "SW2-7") PORT_DIPLOCATION("SW2:7")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x01, 0x00, "SW2-8") PORT_DIPLOCATION("SW2:8")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+//-------------------------------------------------
+// SLOT_INTERFACE( pdc_floppies )
+//-------------------------------------------------
+
+static SLOT_INTERFACE_START( pdc_floppies )
+ SLOT_INTERFACE( "35hd", FLOPPY_35_HD )
+SLOT_INTERFACE_END
+
+//-------------------------------------------------
+// SLOT_INTERFACE( pdc_harddisks )
+//-------------------------------------------------
+
+static SLOT_INTERFACE_START( pdc_harddisks )
+ SLOT_INTERFACE( "generic", MFMHD_GENERIC ) // Generic hard disk (self-adapting to image)
+ SLOT_INTERFACE( "st213", MFMHD_ST213 ) // Seagate ST-213 (10 MB)
+ SLOT_INTERFACE( "st225", MFMHD_ST225 ) // Seagate ST-225 (20 MB)
+ SLOT_INTERFACE( "st251", MFMHD_ST251 ) // Seagate ST-251 (40 MB)
+SLOT_INTERFACE_END
+
+//-------------------------------------------------
+// FLOPPY_FORMATS( floppy_formats )
+//-------------------------------------------------
+
+FLOPPY_FORMATS_MEMBER( pdc_device::floppy_formats )
+ FLOPPY_PC_FORMAT
+FLOPPY_FORMATS_END
+
+//-------------------------------------------------
+// MACHINE_DRIVER( pdc )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( pdc )
+ /* CPU - Zilog Z0840006PSC */
+ MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_10MHz / 2)
+ MCFG_CPU_PROGRAM_MAP(pdc_mem)
+ MCFG_CPU_IO_MAP(pdc_io)
+ //MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
+
+ /* Floppy Disk Controller - uPD765a - NEC D765AC-2 */
+ MCFG_UPD765A_ADD(FDC_TAG, true, true)
+ MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(pdc_device, fdc_irq))
+ MCFG_UPD765_DRQ_CALLBACK(DEVWRITELINE(FDCDMA_TAG, am9517a_device, dreq0_w)) //MCFG_DEVCB_INVERT
+
+ // Floppy disk drive
+ MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", pdc_floppies, "35hd", pdc_device::floppy_formats)
+
+ /* DMA Controller - Intel P8237A-5 */
+ /* Channel 0: uPD765a Floppy Disk Controller */
+ /* Channel 1: M68K main system memory */
+ MCFG_DEVICE_ADD(FDCDMA_TAG, AM9517A, XTAL_10MHz / 2)
+ MCFG_I8237_OUT_HREQ_CB(WRITELINE(pdc_device, i8237_hreq_w))
+ MCFG_I8237_OUT_EOP_CB(WRITELINE(pdc_device, i8237_eop_w))
+ MCFG_I8237_IN_MEMR_CB(READ8(pdc_device, i8237_dma_mem_r))
+ MCFG_I8237_OUT_MEMW_CB(WRITE8(pdc_device, i8237_dma_mem_w))
+ MCFG_I8237_IN_IOR_0_CB(READ8(pdc_device, i8237_fdc_dma_r))
+ MCFG_I8237_OUT_IOW_0_CB(WRITE8(pdc_device, i8237_fdc_dma_w))
+ MCFG_I8237_IN_IOR_1_CB(READ8(pdc_device, m68k_dma_r))
+ MCFG_I8237_OUT_IOW_1_CB(WRITE8(pdc_device, m68k_dma_w))
+
+ /* Hard Disk Controller - HDC9224 */
+ MCFG_DEVICE_ADD(HDC_TAG, HDC9224, 0)
+ MCFG_MFM_HARDDISK_CONN_ADD("h1", pdc_harddisks, NULL, MFM_BYTE, 3000, 20, MFMHD_GEN_FORMAT)
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor pdc_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( pdc );
+}
+
+ioport_constructor pdc_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( pdc_ports );
+}
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// pdc_device - constructor
+//-------------------------------------------------
+
+pdc_device::pdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, PDC, "ROLM PDC", tag, owner, clock, "pdc", __FILE__),
+ m_pdccpu(*this, Z80_TAG),
+ m_dma8237(*this, FDCDMA_TAG),
+ m_fdc(*this, FDC_TAG),
+ m_hdc9224(*this, HDC_TAG),
+ m_pdc_ram(*this, "pdc_ram"),
+ m_m68k_r_cb(*this),
+ m_m68k_w_cb(*this)
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void pdc_device::device_start()
+{
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void pdc_device::device_reset()
+{
+ /* Reset registers */
+ reg_p38 = 0;
+ reg_p38 |= 4; /* ready for 68k ram DMA */
+ //reg_p38 |= 0x20; // no idea at all - bit 5 (32)
+
+ /* Reset CPU */
+ m_pdccpu->reset();
+
+ /* Resolve callbacks */
+ m_m68k_r_cb.resolve_safe(0);
+ m_m68k_w_cb.resolve_safe();
+
+ m_fdc->set_rate(500000) ;
+}
+
+//-------------------------------------------------
+// I8237 DMA
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER(pdc_device::i8237_hreq_w)
+{
+ m_pdccpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+ m_dma8237->hack_w(state);
+}
+
+WRITE_LINE_MEMBER(pdc_device::i8237_eop_w)
+{
+ m_fdc->tc_w(state);
+ reg_p38 |= 4; /* ready for 68k ram DMA */
+ if(state) m_dma8237->dreq1_w(0);
+}
+
+READ8_MEMBER(pdc_device::i8237_dma_mem_r)
+{
+ return m_pdccpu->space(AS_PROGRAM).read_byte(offset);
+}
+
+WRITE8_MEMBER(pdc_device::i8237_dma_mem_w)
+{
+ m_pdccpu->space(AS_PROGRAM).write_byte(offset,data);
+}
+
+READ8_MEMBER(pdc_device::i8237_fdc_dma_r)
+{
+ UINT8 ret = m_fdc->dma_r();
+ if(TRACE_PDC_DMA) logerror("PDC: 8237 DMA CHANNEL 0 READ ADDRESS: %08X, DATA: %02X\n", offset, ret );
+ return ret;
+}
+
+WRITE8_MEMBER(pdc_device::i8237_fdc_dma_w)
+{
+ if(TRACE_PDC_DMA) logerror("PDC: 8237 DMA CHANNEL 0 WRITE ADDRESS: %08X, DATA: %02X\n", offset, data );
+ m_fdc->dma_w(data);
+}
+
+READ8_MEMBER(pdc_device::m68k_dma_r)
+{
+ UINT32 address;
+ UINT8 data;
+
+ address = fdd_68k_dma_address++;
+ data = m_m68k_r_cb(address);
+ if(TRACE_PDC_DMA) logerror("PDC: 8237 DMA CHANNEL 1 READ ADDRESS: %08X, DATA: %02X\n", address, data );
+ return data;
+}
+
+WRITE8_MEMBER(pdc_device::m68k_dma_w)
+{
+ if(TRACE_PDC_DMA) logerror("PDC: 8237 DMA CHANNEL 1 WRITE ADDRESS: %08X, DATA: %02X\n", fdd_68k_dma_address, data );
+ m_m68k_w_cb(data);
+ fdd_68k_dma_address++;
+}
+
+WRITE_LINE_MEMBER(pdc_device::hdd_irq)
+{
+ m_pdccpu->set_input_line(INPUT_LINE_IRQ0, HOLD_LINE);
+}
+
+WRITE_LINE_MEMBER(pdc_device::fdc_irq)
+{
+ b_fdc_irq = state != 0;
+}
+READ8_MEMBER(pdc_device::p0_7_r)
+{
+ switch(offset)
+ {
+ case 0: /* Port 0: Old style command low byte [0x5FF041B0] */
+ if(TRACE_PDC_CMD) logerror("PDC: Port 0x00 READ: %02X\n", reg_p0);
+ return reg_p0;
+ case 1: /* Port 1: Old style command high byte [0x5FF041B0] */
+ if(TRACE_PDC_CMD) logerror("PDC: Port 0x01 READ: %02X\n", reg_p1);
+ return reg_p1;
+ case 2: /* Port 2: FDD command address low byte [0x5FF0C0B0][0x5FF0C1B0] */
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x02 READ: %02X\n", reg_p2);
+ return reg_p2;
+ case 3: /* Port 3: FDD command address high byte [0x5FF0C0B0][0x5FF0C1B0] */
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x03 READ: %02X\n", reg_p3);
+ return reg_p3;
+ case 6: /* Port 6: FDD data destination address low byte [0x5FF080B0] */
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x06 READ: %02X\n", reg_p6);
+ return reg_p6;
+ case 7: /* Port 7: FDD data destination address high byte [0x5FF080B0] */
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x07 READ: %02X\n", reg_p7);
+ return reg_p7;
+ default:
+ if(TRACE_PDC_CMD) logerror("(!)PDC: Port %02X READ: \n", offset);
+ return 0;
+ }
+}
+
+WRITE8_MEMBER(pdc_device::p0_7_w)
+{
+ switch(offset)
+ {
+ case 4: /* Port 4: FDD command completion status low byte [0x5FF030B0] */
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x04 WRITE: %02X\n", data);
+ reg_p4 = data;
+ break;
+ case 5: /* Port 5: FDD command completion status high byte [0x5FF030B0] */
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x05 WRITE: %02X\n", data);
+ reg_p5 = data;
+ break;
+ default:
+ if(TRACE_PDC_FDC) logerror("(!)PDC: Port %02X WRITE: %02X\n", offset, data);
+ break;
+ }
+}
+
+READ8_MEMBER(pdc_device::fdd_68k_r)
+{
+ UINT8 address = offset + 0x21;
+ switch(address)
+ {
+ default:
+ if(TRACE_PDC_FDC) logerror("(!)PDC: Port %02X READ: \n", address);
+ return 0;
+ }
+}
+WRITE8_MEMBER(pdc_device::fdd_68k_w)
+{
+ UINT8 address = offset + 0x21;
+ switch(address)
+ {
+ case 0x21: /* Port 21: ?? */
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x21 WRITE: %02X\n", data);
+ if(TRACE_PDC_FDC) logerror("PDC: Resetting 0x38 bit 1\n");
+ reg_p38 &= ~2; // Clear bit 1
+ reg_p21 = data;
+ break;
+ case 0x23: /* Port 23: FDD 68k DMA high byte */
+ /* The address is << 1 on the 68k side */
+ fdd_68k_dma_address = (fdd_68k_dma_address & (0xFF<<1)) | (data << 9);
+ if(TRACE_PDC_FDC) logerror("PDC: Port %02X WRITE: %02X\n", address, data);
+ break;
+ case 0x24: /* Port 24: FDD 68k DMA low byte */
+ /* The address is << 1 on the 68k side */
+ fdd_68k_dma_address = (fdd_68k_dma_address & (0xFF<<9)) | (data << 1);
+ if(TRACE_PDC_FDC) logerror("PDC: Port %02X WRITE: %02X\n", address, data);
+ break;
+ case 0x26:
+ switch(data)
+ {
+ case 0x80:
+ m_dma8237->dreq1_w(1);
+ reg_p38 &= ~4; // Clear bit 4
+ if(TRACE_PDC_DMA) logerror("PDC: Port 0x26 WRITE: 0x80, DMA REQ CH 1\n");
+ break;
+ }
+ break;
+ case 0x2C:
+ switch(data)
+ {
+ case 0xFF:
+ m_dma8237->dreq1_w(0);
+ if(TRACE_PDC_DMA) logerror("PDC: Port 0x2C WRITE: 0xFF, DMA REQ CH 1 OFF\n");
+ break;
+ }
+ break;
+ default:
+ if(TRACE_PDC_FDC) logerror("(!)PDC: Port %02X WRITE: %02X, PC: %X\n", address, data, space.device().safe_pc());
+ break;
+ }
+}
+
+WRITE8_MEMBER(pdc_device::p38_w)
+{
+ if(TRACE_PDC_CMD) logerror("PDC: Port 0x38 WRITE: %i\n", data);
+ //reg_p38 |= data;
+ reg_p38 = data;
+}
+
+READ8_MEMBER(pdc_device::p38_r)
+{
+ reg_p38 ^= 0x20; /* Invert bit 5 (32) */
+ if(TRACE_PDC_CMD) logerror("PDC: Port 0x38 READ: %02X, PC: %X\n", reg_p38, space.device().safe_pc());
+ return reg_p38;
+}
+
+READ8_MEMBER(pdc_device::p39_r)
+{
+ UINT8 data = 1;
+ if(b_fdc_irq) data |= 8; // Set bit 3
+ if(TRACE_PDC_CMD) logerror("PDC: Port 0x39 READ: %02X, PC: %X\n", data, space.device().safe_pc());
+ return data;
+}
+
+WRITE8_MEMBER(pdc_device::p50_5f_w)
+{
+ UINT8 address = 0x50 + offset;
+ switch(address)
+ {
+ case 0x52:
+ switch(data)
+ {
+ case 0x00:
+ if(TRACE_PDC_FDC) logerror("PDC: FDD (all) Motor off.\n");
+ m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(1);
+ break;
+ case 0x80:
+ if(TRACE_PDC_FDC) logerror("PDC: FDD (all) Motor on.\n");
+ m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(0);
+ break;
+ default:
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x52 WRITE: %x\n", data);
+ }
+ break;
+ case 0x53: /* Probably set_rate here */
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x53 WRITE: %x\n", data);
+ break;
+ case 0x54: /* Port 54: FDD Unit 1 Motor control */
+ switch(data)
+ {
+ case 0x00:
+ if(TRACE_PDC_FDC) logerror("PDC: FDD 1 Motor off.\n");
+ m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(1);
+ break;
+ case 0x80:
+ if(TRACE_PDC_FDC) logerror("PDC: FDD 1 Motor on.\n");
+ m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(0);
+ break;
+ default:
+ if(TRACE_PDC_FDC) logerror("PDC: Port 0x54 WRITE: %x\n", data);
+ }
+ break;
+ case 0x55: /* Port 54: FDD Unit 2 Motor control */
+ if(TRACE_PDC_FDC) logerror("PDC: FDD 2 motor control: %02X\n", data);
+ break;
+ case 0x56: /* Port 54: FDD Unit 3 Motor control */
+ if(TRACE_PDC_FDC) logerror("PDC: FDD 3 motor control: %02X\n", data);
+ break;
+ case 0x57: /* Port 54: FDD Unit 4 Motor control */
+ if(TRACE_PDC_FDC) logerror("PDC: FDD 4 motor control: %02X\n", data);
+ break;
+ default:
+ if(TRACE_PDC_FDC) logerror("PDC: Port %02x WRITE: %x\n", address, data);
+ }
+}
diff --git a/src/devices/machine/pdc.h b/src/devices/machine/pdc.h
new file mode 100644
index 00000000000..c1f3a3cbf51
--- /dev/null
+++ b/src/devices/machine/pdc.h
@@ -0,0 +1,118 @@
+// license:GPL-2.0+
+// copyright-holders:Brandon Munger
+/**********************************************************************
+
+ ROLM 9751 9005 Peripheral device controller emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __R9751_PDC_H__
+#define __R9751_PDC_H__
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "machine/upd765.h"
+#include "machine/am9517a.h"
+#include "formats/pc_dsk.h"
+#include "machine/hdc92x4.h"
+#include "imagedev/mfmhd.h"
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+#define PDC_TAG "pdc"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> pdc_device
+
+class pdc_device : public device_t
+{
+public:
+ /* Constructor and Destructor */
+ pdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ /* Optional information overrides */
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual ioport_constructor device_input_ports() const override;
+ virtual const rom_entry *device_rom_region() const override;
+
+ /* Callbacks */
+ template<class _Object> static devcb_base &m68k_r_callback(device_t &device, _Object object) { return downcast<pdc_device &>(device).m_m68k_r_cb.set_callback(object); }
+ template<class _Object> static devcb_base &m68k_w_callback(device_t &device, _Object object) { return downcast<pdc_device &>(device).m_m68k_w_cb.set_callback(object); }
+
+ /* Read and Write members */
+ DECLARE_WRITE_LINE_MEMBER(i8237_hreq_w);
+ DECLARE_WRITE_LINE_MEMBER(i8237_eop_w);
+ DECLARE_READ8_MEMBER(i8237_dma_mem_r);
+ DECLARE_WRITE8_MEMBER(i8237_dma_mem_w);
+ DECLARE_READ8_MEMBER(i8237_fdc_dma_r);
+ DECLARE_WRITE8_MEMBER(i8237_fdc_dma_w);
+
+ DECLARE_WRITE_LINE_MEMBER(hdd_irq);
+
+ DECLARE_READ8_MEMBER(p0_7_r);
+ DECLARE_WRITE8_MEMBER(p0_7_w);
+ DECLARE_READ8_MEMBER(fdd_68k_r);
+ DECLARE_WRITE8_MEMBER(fdd_68k_w);
+ DECLARE_WRITE8_MEMBER(p38_w);
+ DECLARE_READ8_MEMBER(p38_r);
+ DECLARE_READ8_MEMBER(p39_r);
+ DECLARE_WRITE8_MEMBER(p50_5f_w);
+
+ DECLARE_READ8_MEMBER(m68k_dma_r);
+ DECLARE_WRITE8_MEMBER(m68k_dma_w);
+
+ DECLARE_WRITE_LINE_MEMBER(fdc_irq);
+ DECLARE_FLOPPY_FORMATS( floppy_formats );
+
+ /* Main CPU accessible registers */
+ UINT8 reg_p0;
+ UINT8 reg_p1;
+ UINT8 reg_p2;
+ UINT8 reg_p3;
+ UINT8 reg_p4;
+ UINT8 reg_p5;
+ UINT8 reg_p6;
+ UINT8 reg_p7;
+ UINT8 reg_p21;
+ UINT8 reg_p38;
+ UINT32 fdd_68k_dma_address; /* FDD <-> m68k DMA read/write address */
+protected:
+ /* Device-level overrides */
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ /* Protected variables */
+ //UINT32 fdd_68k_dma_address;
+ bool b_fdc_irq;
+
+ /* Attached devices */
+ required_device<cpu_device> m_pdccpu;
+ required_device<am9517a_device> m_dma8237;
+ required_device<upd765a_device> m_fdc;
+ //required_device<floppy_connector> m_floppy;
+ //required_device<floppy_image_device> m_floppy;
+ optional_device<hdc9224_device> m_hdc9224;
+ mfm_harddisk_device* m_harddisk;
+ required_shared_ptr<UINT8> m_pdc_ram;
+
+ /* Callbacks */
+ devcb_read8 m_m68k_r_cb;
+ devcb_write8 m_m68k_w_cb;
+};
+
+/* Device type */
+extern const device_type PDC;
+
+/* MCFG defines */
+#define MCFG_PDC_R_CB(_devcb) \
+ devcb = &pdc_device::m68k_r_callback(*device, DEVCB_##_devcb);
+#define MCFG_PDC_W_CB(_devcb) \
+ devcb = &pdc_device::m68k_w_callback(*device, DEVCB_##_devcb);
+#endif
diff --git a/src/devices/machine/pla.cpp b/src/devices/machine/pla.cpp
index 417fb4e6c3f..f96a2bd8f60 100644
--- a/src/devices/machine/pla.cpp
+++ b/src/devices/machine/pla.cpp
@@ -148,8 +148,6 @@ UINT32 pla_device::read(UINT32 input)
for (auto cache2_entry : m_cache2)
{
-
-
if ((UINT32)cache2_entry == input)
{
// cache2 hit
diff --git a/src/devices/machine/roc10937.cpp b/src/devices/machine/roc10937.cpp
index fbfda7ce0e8..c76e02f13e6 100644
--- a/src/devices/machine/roc10937.cpp
+++ b/src/devices/machine/roc10937.cpp
@@ -197,7 +197,7 @@ void rocvfd_t::update_display()
for (int i =0; i<16; i++)
{
m_outputs[i] = set_display(m_chars[i]);
- output_set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
+ machine().output().set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
}
}
diff --git a/src/devices/machine/roc10937.h b/src/devices/machine/roc10937.h
index 81ab7a31a63..3acf90726b0 100644
--- a/src/devices/machine/roc10937.h
+++ b/src/devices/machine/roc10937.h
@@ -55,10 +55,8 @@ public:
static void static_set_value(device_t &device, int val);
virtual void update_display();
UINT8 m_port_val;
- void blank(int data);
void shift_clock(int data);
void write_char(int data);
- void setdata(int segdata, int data);
UINT32 set_display(UINT32 segin);
DECLARE_WRITE_LINE_MEMBER( sclk );
DECLARE_WRITE_LINE_MEMBER( data );
diff --git a/src/devices/machine/rp5c15.h b/src/devices/machine/rp5c15.h
index 03f8cd91d66..1e36dfaf60f 100644
--- a/src/devices/machine/rp5c15.h
+++ b/src/devices/machine/rp5c15.h
@@ -55,7 +55,6 @@ public:
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
- DECLARE_WRITE_LINE_MEMBER( adj_w );
protected:
// device-level overrides
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/s2636.cpp b/src/devices/machine/s2636.cpp
index 70a9f165da7..0beddbed0a3 100644
--- a/src/devices/machine/s2636.cpp
+++ b/src/devices/machine/s2636.cpp
@@ -162,9 +162,12 @@ s2636_device::s2636_device(const machine_config &mconfig, const char *tag, devic
, m_divider(1)
, m_y_offset(0)
, m_x_offset(0)
+ , m_intreq_cb(*this)
, m_vrst(false)
, m_screen_line(0)
, m_vis_line(0)
+ , m_intreq(CLEAR_LINE)
+ , m_intack(CLEAR_LINE)
, m_stream(nullptr)
, m_sample_cnt(0)
, m_sound_lvl(false)
@@ -187,19 +190,25 @@ void s2636_device::device_start()
save_item(NAME(m_registers));
+ save_item(NAME(m_vrst));
+ save_item(NAME(m_screen_line));
+ save_item(NAME(m_vis_line));
+
save_item(NAME(m_obj_cnt));
save_item(NAME(m_obj_disp));
save_item(NAME(m_obj_dup));
- save_item(NAME(m_vrst));
- save_item(NAME(m_screen_line));
- save_item(NAME(m_vis_line));
+ save_item(NAME(m_intreq));
+ save_item(NAME(m_intack));
m_stream = machine().sound().stream_alloc(*this, 0, 1, machine().sample_rate());
save_item(NAME(m_sample_cnt));
save_item(NAME(m_sound_lvl));
+
+ m_intreq_cb.resolve_safe();
}
+
//-------------------------------------------------
// backwards-compatible update method
//-------------------------------------------------
@@ -215,6 +224,10 @@ bitmap_ind16 const &s2636_device::update(const rectangle &cliprect)
}
+//-------------------------------------------------
+// render the first line into the bitmap
+//-------------------------------------------------
+
void s2636_device::render_first_line()
{
m_screen_line = 0;
@@ -222,8 +235,14 @@ void s2636_device::render_first_line()
}
+//-------------------------------------------------
+// render next line into the bitmap
+//-------------------------------------------------
+
void s2636_device::render_next_line()
{
+ assert(m_screen_line < m_bitmap.height());
+
// pre-clear the line for convenience
rectangle const &vis_area = m_screen->visible_area();
UINT16 *const row = &m_bitmap.pix16(m_screen_line);
@@ -235,6 +254,7 @@ void s2636_device::render_next_line()
{
m_registers[REG_VBL_COL_OBJ] |= 0x40;
m_vrst = true;
+ update_intreq(ASSERT_LINE);
}
}
else
@@ -254,9 +274,10 @@ void s2636_device::render_next_line()
m_registers[REG_COL_BG_CMPL] = 0x00;
m_registers[REG_VBL_COL_OBJ] = 0x00;
- // set our internal tracking flags
+ // set our internal tracking flags and clear interrupt
m_vrst = false;
m_vis_line = 0;
+ update_intreq(CLEAR_LINE);
}
// work out what object pixels belong in this line
@@ -295,6 +316,7 @@ void s2636_device::render_next_line()
m_obj_cnt[i] = 1 + m_registers[OFFS_OBJ[i] + OFFS_VCB];
m_obj_disp[i] = false;
m_obj_dup[i] = true;
+ update_intreq(ASSERT_LINE);
}
}
else
@@ -381,7 +403,7 @@ void s2636_device::render_next_line()
// bus access handlers
//-------------------------------------------------
-READ8_MEMBER( s2636_device::read )
+READ8_MEMBER( s2636_device::read_data )
{
mask_offset(offset);
UINT8 data = m_registers[offset];
@@ -399,7 +421,7 @@ READ8_MEMBER( s2636_device::read )
return data;
}
-WRITE8_MEMBER( s2636_device::write )
+WRITE8_MEMBER( s2636_device::write_data )
{
mask_offset(offset);
@@ -409,6 +431,17 @@ WRITE8_MEMBER( s2636_device::write )
m_registers[offset] = data;
}
+WRITE_LINE_MEMBER( s2636_device::write_intack )
+{
+ assert((ASSERT_LINE == state) || (HOLD_LINE == state) || (CLEAR_LINE == state) || (PULSE_LINE == state));
+
+ // pretend interrupt acknowledge is handled instantaneously
+ m_intack = state;
+ update_intreq(m_intreq);
+ if (ASSERT_LINE != m_intreq)
+ m_intack = CLEAR_LINE;
+}
+
//-------------------------------------------------
// sound_stream_update - generate audio output
@@ -437,3 +470,14 @@ void s2636_device::sound_stream_update(sound_stream &stream, stream_sample_t **i
m_sample_cnt--;
}
}
+
+
+void s2636_device::update_intreq(int value)
+{
+ int const new_value = m_intack ? CLEAR_LINE : value;
+ if (new_value != m_intreq)
+ {
+ m_intreq = new_value;
+ m_intreq_cb(m_intreq);
+ }
+}
diff --git a/src/devices/machine/s2636.h b/src/devices/machine/s2636.h
index eb97a1b74b4..2a22aa323d7 100644
--- a/src/devices/machine/s2636.h
+++ b/src/devices/machine/s2636.h
@@ -13,12 +13,29 @@
#define S2636_IS_PIXEL_DRAWN(p) (((p) & 0x08) ? TRUE : FALSE)
#define S2636_PIXEL_COLOR(p) ((p) & 0x07)
+
/*************************************
*
* Device configuration macros
*
*************************************/
+#define MCFG_S2636_OFFSETS(_yoffs, _xoffs) \
+ s2636_device::set_offsets(*device, _yoffs, _xoffs);
+
+#define MCFG_S2636_DIVIDER(_divider) \
+ s2636_device::set_divider(*device, _divider);
+
+#define MCFG_S2623_SET_INTREQ_CALLBACK(_devcb) \
+ devcb = &s2636_device::set_intreq_cb(*device, DEVCB_##_devcb);
+
+
+/*************************************
+ *
+ * Device state class
+ *
+ *************************************/
+
class s2636_device : public device_t,
public device_video_interface,
public device_sound_interface
@@ -40,6 +57,12 @@ public:
dev.m_divider = divider;
}
+ template<class _Object> static devcb_base &set_intreq_cb(device_t &device, _Object object)
+ {
+ s2636_device &dev = downcast<s2636_device &>(device);
+ return dev.m_intreq_cb.set_callback(object);
+ }
+
// returns a BITMAP_FORMAT_IND16 bitmap the size of the screen
// D0-D2 of each pixel is the pixel color
// D3 indicates how the S2636 drew this pixel - 0 = background, 1 = object/score
@@ -53,8 +76,10 @@ public:
void render_first_line();
void render_next_line();
- DECLARE_READ8_MEMBER( read );
- DECLARE_WRITE8_MEMBER( write );
+ DECLARE_READ8_MEMBER( read_data );
+ DECLARE_WRITE8_MEMBER( write_data );
+
+ DECLARE_WRITE_LINE_MEMBER( write_intack );
protected:
// device-level overrides
@@ -116,22 +141,35 @@ private:
UINT8 object_color(int obj) const { return (m_registers[REG_OBJ_CLR_1_2 + (obj >> 1)] >> ((obj & 1) ? 0 : 3)) & 0x07; }
UINT8 score_digit(int digit) const { return (m_registers[REG_SCORE_1_2 + (digit >> 1)] >> ((digit & 1) ? 0 : 4)) & 0x0f; }
- int m_divider;
- int m_y_offset;
- int m_x_offset;
+ void update_intreq(int value);
- bitmap_ind16 m_bitmap;
+ // Configuration
+ int m_divider;
+ int m_y_offset;
+ int m_x_offset;
- UINT8 m_registers[0x100];
+ // interfacing with other devices
+ devcb_write_line m_intreq_cb;
+ bitmap_ind16 m_bitmap;
- int m_obj_cnt[OBJ_COUNT];
- bool m_obj_disp[OBJ_COUNT];
- bool m_obj_dup[OBJ_COUNT];
+ // 256-byte register file (not all of this really exists)
+ UINT8 m_registers[0x100];
- bool m_vrst;
- int m_screen_line;
- int m_vis_line;
+ // tracking where we're up to in the screen update
+ bool m_vrst;
+ int m_screen_line;
+ int m_vis_line;
+ // current display state of object
+ int m_obj_cnt[OBJ_COUNT];
+ bool m_obj_disp[OBJ_COUNT];
+ bool m_obj_dup[OBJ_COUNT];
+
+ // interrupt generation
+ int m_intreq;
+ int m_intack;
+
+ // sound generation state
sound_stream *m_stream;
int m_sample_cnt;
bool m_sound_lvl;
@@ -139,12 +177,4 @@ private:
extern const device_type S2636;
-
-#define MCFG_S2636_OFFSETS(_yoffs, _xoffs) \
- s2636_device::set_offsets(*device, _yoffs, _xoffs);
-
-#define MCFG_S2636_DIVIDER(_divider) \
- s2636_device::set_divider(*device, _divider);
-
-
#endif /* __S2636_H__ */
diff --git a/src/devices/machine/s3c2400.h b/src/devices/machine/s3c2400.h
index 5c8b6d3dcb9..fbd2e5e70d4 100644
--- a/src/devices/machine/s3c2400.h
+++ b/src/devices/machine/s3c2400.h
@@ -769,7 +769,7 @@ public:
{
s3c24xx_lcd_regs_t regs;
emu_timer *timer;
- bitmap_rgb32 *bitmap[2];
+ std::unique_ptr<bitmap_rgb32> bitmap[2];
UINT32 vramaddr_cur;
UINT32 vramaddr_max;
UINT32 offsize;
diff --git a/src/devices/machine/s3c2410.h b/src/devices/machine/s3c2410.h
index 33665eabbcb..6e9b28a9146 100644
--- a/src/devices/machine/s3c2410.h
+++ b/src/devices/machine/s3c2410.h
@@ -935,7 +935,7 @@ public:
{
s3c24xx_lcd_regs_t regs;
emu_timer *timer;
- bitmap_rgb32 *bitmap[2];
+ std::unique_ptr<bitmap_rgb32> bitmap[2];
UINT32 vramaddr_cur;
UINT32 vramaddr_max;
UINT32 offsize;
diff --git a/src/devices/machine/s3c2440.h b/src/devices/machine/s3c2440.h
index 9adfce38569..58976ddcf1a 100644
--- a/src/devices/machine/s3c2440.h
+++ b/src/devices/machine/s3c2440.h
@@ -1006,7 +1006,7 @@ public:
{
s3c24xx_lcd_regs_t regs;
emu_timer *timer;
- bitmap_rgb32 *bitmap[2];
+ std::unique_ptr<bitmap_rgb32> bitmap[2];
UINT32 vramaddr_cur;
UINT32 vramaddr_max;
UINT32 offsize;
diff --git a/src/devices/machine/s3c24xx.inc b/src/devices/machine/s3c24xx.inc
index 07193f890a4..e2c4800f077 100644
--- a/src/devices/machine/s3c24xx.inc
+++ b/src/devices/machine/s3c24xx.inc
@@ -716,8 +716,8 @@ TIMER_CALLBACK_MEMBER( S3C24_CLASS_NAME::s3c24xx_lcd_timer_exp )
void S3C24_CLASS_NAME::s3c24xx_video_start()
{
screen_device *screen = machine().first_screen();
- m_lcd.bitmap[0] = auto_bitmap_rgb32_alloc(machine(), screen->width(), screen->height());
- m_lcd.bitmap[1] = auto_bitmap_rgb32_alloc(machine(), screen->width(), screen->height());
+ m_lcd.bitmap[0] = std::make_unique<bitmap_rgb32>( screen->width(), screen->height());
+ m_lcd.bitmap[1] = std::make_unique<bitmap_rgb32>( screen->width(), screen->height());
}
void S3C24_CLASS_NAME::bitmap_blend( bitmap_rgb32 &bitmap_dst, bitmap_rgb32 &bitmap_src_1, bitmap_rgb32 &bitmap_src_2)
diff --git a/src/devices/machine/s3c44b0.cpp b/src/devices/machine/s3c44b0.cpp
index 37402f900b0..19579a1aa03 100644
--- a/src/devices/machine/s3c44b0.cpp
+++ b/src/devices/machine/s3c44b0.cpp
@@ -387,7 +387,7 @@ void s3c44b0_device::lcd_dma_read(int count, UINT8 *data)
void s3c44b0_device::lcd_render_stn_04()
{
- UINT8 *bitmap = m_lcd.bitmap + ((m_lcd.vpos - m_lcd.vpos_min) * (m_lcd.hpos_max - m_lcd.hpos_min + 1)) + (m_lcd.hpos - m_lcd.hpos_min);
+ UINT8 *bitmap = m_lcd.bitmap.get() + ((m_lcd.vpos - m_lcd.vpos_min) * (m_lcd.hpos_max - m_lcd.hpos_min + 1)) + (m_lcd.hpos - m_lcd.hpos_min);
UINT8 data[16];
lcd_dma_read(16, data);
for (auto & elem : data)
@@ -403,7 +403,7 @@ void s3c44b0_device::lcd_render_stn_04()
if (m_lcd.vpos > m_lcd.vpos_max)
{
m_lcd.vpos = m_lcd.vpos_min;
- bitmap = m_lcd.bitmap;
+ bitmap = m_lcd.bitmap.get();
}
m_lcd.hpos = m_lcd.hpos_min;
}
@@ -413,7 +413,7 @@ void s3c44b0_device::lcd_render_stn_04()
void s3c44b0_device::lcd_render_stn_08()
{
- UINT8 *bitmap = m_lcd.bitmap + ((m_lcd.vpos - m_lcd.vpos_min) * (m_lcd.hpos_max - m_lcd.hpos_min + 1)) + (m_lcd.hpos - m_lcd.hpos_min);
+ UINT8 *bitmap = m_lcd.bitmap.get() + ((m_lcd.vpos - m_lcd.vpos_min) * (m_lcd.hpos_max - m_lcd.hpos_min + 1)) + (m_lcd.hpos - m_lcd.hpos_min);
UINT8 data[16];
lcd_dma_read(16, data);
for (auto & elem : data)
@@ -432,7 +432,7 @@ void s3c44b0_device::lcd_render_stn_08()
if (m_lcd.vpos > m_lcd.vpos_max)
{
m_lcd.vpos = m_lcd.vpos_min;
- bitmap = m_lcd.bitmap;
+ bitmap = m_lcd.bitmap.get();
}
m_lcd.hpos = m_lcd.hpos_min;
}
@@ -510,7 +510,7 @@ UINT32 s3c44b0_device::video_update(screen_device &screen, bitmap_rgb32 &bitmap,
for (int y = 0; y < screen.height(); y++)
{
UINT32 *scanline = &bitmap.pix32(y);
- UINT8 *vram = m_lcd.bitmap + y * (m_lcd.hpos_max - m_lcd.hpos_min + 1);
+ UINT8 *vram = m_lcd.bitmap.get() + y * (m_lcd.hpos_max - m_lcd.hpos_min + 1);
for (int x = 0; x < screen.width(); x++)
{
*scanline++ = rgb_t(vram[0], vram[1], vram[2]);
@@ -596,9 +596,9 @@ void s3c44b0_device::lcd_configure()
verboselog( *this, 3, "LCD - min_x %d min_y %d max_x %d max_y %d\n", m_lcd.hpos_min, m_lcd.vpos_min, m_lcd.hpos_max, m_lcd.vpos_max);
if (m_lcd.bitmap)
{
- auto_free(machine(), m_lcd.bitmap);
+ m_lcd.bitmap = nullptr;
}
- m_lcd.bitmap = auto_alloc_array(machine(), UINT8, (m_lcd.hpos_max - m_lcd.hpos_min + 1) * (m_lcd.vpos_max - m_lcd.vpos_min + 1) * 3);
+ m_lcd.bitmap = std::make_unique<UINT8[]>((m_lcd.hpos_max - m_lcd.hpos_min + 1) * (m_lcd.vpos_max - m_lcd.vpos_min + 1) * 3);
m_lcd.frame_period = HZ_TO_ATTOSECONDS(m_lcd.framerate);
m_lcd.scantime = m_lcd.frame_period / m_lcd.vpos_end;
m_lcd.pixeltime = m_lcd.frame_period / (m_lcd.vpos_end * m_lcd.hpos_end);
diff --git a/src/devices/machine/s3c44b0.h b/src/devices/machine/s3c44b0.h
index cdf1fe6d72e..05b0c134532 100644
--- a/src/devices/machine/s3c44b0.h
+++ b/src/devices/machine/s3c44b0.h
@@ -505,7 +505,7 @@ struct s3c44b0_lcd_t
{
s3c44b0_lcd_regs_t regs;
emu_timer *timer;
- UINT8 *bitmap;
+ std::unique_ptr<UINT8[]> bitmap;
UINT32 vramaddr_cur;
UINT32 vramaddr_max;
UINT32 offsize;
diff --git a/src/devices/machine/smc91c9x.cpp b/src/devices/machine/smc91c9x.cpp
index c075f03fb76..a38be999136 100644
--- a/src/devices/machine/smc91c9x.cpp
+++ b/src/devices/machine/smc91c9x.cpp
@@ -377,7 +377,7 @@ void smc91c9x_device::process_command(UINT16 data)
READ16_MEMBER( smc91c9x_device::read )
{
- UINT32 result = ~0;
+ UINT32 result;
/* determine the effective register */
offset %= 8;
diff --git a/src/devices/machine/smpc.cpp b/src/devices/machine/smpc.cpp
index caf0834da5a..34a7cb87f05 100644
--- a/src/devices/machine/smpc.cpp
+++ b/src/devices/machine/smpc.cpp
@@ -214,15 +214,15 @@ TIMER_CALLBACK_MEMBER( saturn_state::smpc_cd_enable )
void saturn_state::smpc_system_reset()
{
/*Only backup ram and SMPC ram are retained after that this command is issued.*/
- memset(m_scu_regs ,0x00,0x000100);
- memset(m_scsp_regs,0x00,0x001000);
+ memset(m_scu_regs.get() ,0x00,0x000100);
+ memset(m_scsp_regs.get(),0x00,0x001000);
memset(m_sound_ram,0x00,0x080000);
memset(m_workram_h,0x00,0x100000);
memset(m_workram_l,0x00,0x100000);
- memset(m_vdp2_regs,0x00,0x040000);
- memset(m_vdp2_vram,0x00,0x100000);
- memset(m_vdp2_cram,0x00,0x080000);
- memset(m_vdp1_vram,0x00,0x100000);
+ memset(m_vdp2_regs.get(),0x00,0x040000);
+ memset(m_vdp2_vram.get(),0x00,0x100000);
+ memset(m_vdp2_cram.get(),0x00,0x080000);
+ memset(m_vdp1_vram.get(),0x00,0x100000);
//A-Bus
m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
diff --git a/src/devices/machine/steppers.cpp b/src/devices/machine/steppers.cpp
index e1eea4d648e..2f63c8529d3 100644
--- a/src/devices/machine/steppers.cpp
+++ b/src/devices/machine/steppers.cpp
@@ -142,7 +142,7 @@ int stepper_device::update(UINT8 pattern)
a small movement that may trigger the optic tab.
*/
- int pos,steps=0;
+ int pos,steps;
m_pattern = pattern;
switch ( m_type )
{
diff --git a/src/devices/machine/strata.cpp b/src/devices/machine/strata.cpp
index 01651eb90bd..4f7006f4d99 100644
--- a/src/devices/machine/strata.cpp
+++ b/src/devices/machine/strata.cpp
@@ -59,7 +59,7 @@ strataflash_device::strataflash_device(const machine_config &mconfig, const char
void strataflash_device::nvram_default()
{
- memset(m_flashmemory, 0, COMPLETE_SIZE);
+ memset(m_flashmemory.get(), 0, COMPLETE_SIZE);
}
//-------------------------------------------------
@@ -69,7 +69,7 @@ void strataflash_device::nvram_default()
void strataflash_device::nvram_read(emu_file &file)
{
- file.read(m_flashmemory, COMPLETE_SIZE);
+ file.read(m_flashmemory.get(), COMPLETE_SIZE);
// TODO
@@ -173,7 +173,7 @@ void strataflash_device::nvram_write(emu_file &file)
return 0;
*/
- file.write(m_flashmemory, COMPLETE_SIZE);
+ file.write(m_flashmemory.get(), COMPLETE_SIZE);
}
//-------------------------------------------------
@@ -184,15 +184,15 @@ void strataflash_device::device_start(void)
m_mode = FM_NORMAL;
m_status = 0x80;
m_master_lock = 0;
- m_flashmemory = auto_alloc_array(machine(), UINT8, COMPLETE_SIZE);
+ m_flashmemory = std::make_unique<UINT8[]>(COMPLETE_SIZE);
- m_wrbuf = m_flashmemory + FEEPROM_SIZE;
+ m_wrbuf = m_flashmemory.get() + FEEPROM_SIZE;
m_prot_regs = m_wrbuf + WRBUF_SIZE;
m_blocklock = m_prot_regs + PROT_REGS_SIZE;
// clear various FEEPROM areas
memset(m_prot_regs, 0xff, 18);
- memset(m_flashmemory, 0xff, FEEPROM_SIZE);
+ memset(m_flashmemory.get(), 0xff, FEEPROM_SIZE);
memset(m_blocklock, 0x00, BLOCKLOCK_SIZE);
// set-up factory-programmed protection register segment
@@ -234,7 +234,7 @@ UINT16 strataflash_device::read8_16(address_space& space, offs_t offset, bus_wid
case bw_8:
return m_flashmemory[BYTE_XOR_LE(offset)];
case bw_16:
- return *(UINT16*)(m_flashmemory+offset);
+ return *(UINT16*)(m_flashmemory.get()+offset);
}
break;
case FM_READSTATUS:
@@ -562,7 +562,7 @@ void strataflash_device::write8_16(address_space& space, offs_t offset, UINT16 d
m_flashmemory[BYTE_XOR_LE(offset)] &= data;
break;
case bw_16:
- *(UINT16*)(m_flashmemory+offset) &= data;
+ *(UINT16*)(m_flashmemory.get()+offset) &= data;
break;
}
}
diff --git a/src/devices/machine/strata.h b/src/devices/machine/strata.h
index 1d1835f0812..5092d1e891e 100644
--- a/src/devices/machine/strata.h
+++ b/src/devices/machine/strata.h
@@ -64,7 +64,7 @@ private:
int m_wrbuf_len; // count converted into byte length in write buffer command
int m_wrbuf_count; // current count in write buffer command
UINT8* m_wrbuf; // write buffer used by write buffer command
- UINT8* m_flashmemory; // main FEEPROM area
+ std::unique_ptr<UINT8[]> m_flashmemory; // main FEEPROM area
UINT8* m_blocklock; // block lock flags
UINT8* m_prot_regs; // protection registers
};
diff --git a/src/devices/machine/stvcd.cpp b/src/devices/machine/stvcd.cpp
index 09d7b9e09a5..5ec8fb7c95f 100644
--- a/src/devices/machine/stvcd.cpp
+++ b/src/devices/machine/stvcd.cpp
@@ -1483,7 +1483,7 @@ void saturn_state::stvcd_reset( void )
else
{
// MAME case
- cdrom = cdrom_open(get_disk_handle(machine(), "cdrom"));
+ cdrom = cdrom_open(machine().rom_load().get_disk_handle("cdrom"));
}
machine().device<cdda_device>("cdda")->set_cdrom(cdrom);
@@ -2346,7 +2346,7 @@ void saturn_state::cd_readTOC(void)
saturn_state::partitionT *saturn_state::cd_filterdata(filterT *flt, int trktype, UINT8 *p_ok)
{
int match, keepgoing;
- partitionT *filterprt = (partitionT *)nullptr;
+ partitionT *filterprt;
CDROM_LOG(("cd_filterdata, trktype %d\n", trktype))
match = 1;
@@ -2678,7 +2678,7 @@ void saturn_state::stvcd_set_tray_close( void )
else
{
// MAME case
- cdrom = cdrom_open(get_disk_handle(machine(), "cdrom"));
+ cdrom = cdrom_open(machine().rom_load().get_disk_handle("cdrom"));
}
machine().device<cdda_device>("cdda")->set_cdrom(cdrom);
diff --git a/src/devices/machine/t10mmc.h b/src/devices/machine/t10mmc.h
index 07056e22795..8b2f5a73cd7 100644
--- a/src/devices/machine/t10mmc.h
+++ b/src/devices/machine/t10mmc.h
@@ -16,6 +16,11 @@ t10mmc.h
class t10mmc : public virtual t10spc
{
public:
+ t10mmc()
+ : t10spc(), m_image(nullptr), m_cdda(nullptr), m_cdrom(nullptr), m_lba(0), m_blocks(0), m_last_lba(0), m_num_subblocks(0), m_cur_subblock(0), m_audio_sense(0), m_device(nullptr)
+ {
+ }
+
virtual void SetDevice( void *device ) override;
virtual void GetDevice( void **device ) override;
virtual void ExecCommand() override;
diff --git a/src/devices/machine/t10sbc.h b/src/devices/machine/t10sbc.h
index 889b73c53a0..1ca570c89ca 100644
--- a/src/devices/machine/t10sbc.h
+++ b/src/devices/machine/t10sbc.h
@@ -15,6 +15,11 @@ t10sbc.h
class t10sbc : public virtual t10spc
{
public:
+ t10sbc()
+ : t10spc(), m_image(nullptr), m_lba(0), m_blocks(0), m_disk(nullptr), m_device(nullptr)
+ {
+ }
+
virtual void SetDevice( void *device ) override;
virtual void GetDevice( void **device ) override;
virtual void ExecCommand() override;
diff --git a/src/devices/machine/t10spc.h b/src/devices/machine/t10spc.h
index 778fd40bce1..cad5a65c3a5 100644
--- a/src/devices/machine/t10spc.h
+++ b/src/devices/machine/t10spc.h
@@ -14,6 +14,10 @@ t10spc.h
class t10spc
{
public:
+ t10spc() : commandLength(0), m_transfer_length(0), m_phase(0), m_status_code(), m_sense_key(0), m_sense_asc(0), m_sense_ascq(0), m_sense_information(0), m_sector_bytes(0), m_device(nullptr)
+ {
+ }
+
virtual ~t10spc() {};
virtual void SetDevice( void *device ) = 0;
virtual void GetDevice( void **device ) = 0;
diff --git a/src/devices/machine/tc009xlvc.cpp b/src/devices/machine/tc009xlvc.cpp
index 32c02a32db7..724bd5edf16 100644
--- a/src/devices/machine/tc009xlvc.cpp
+++ b/src/devices/machine/tc009xlvc.cpp
@@ -297,7 +297,7 @@ void tc0091lvc_device::device_start()
//printf("m_gfx_index %d\n", m_gfx_index);
- m_gfxdecode->set_gfx(m_gfx_index, global_alloc(gfx_element(m_palette, char_layout, (UINT8 *)m_pcg_ram, 0, m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index, std::make_unique<gfx_element>(m_palette, char_layout, (UINT8 *)m_pcg_ram, 0, m_palette->entries() / 16, 0));
}
void tc0091lvc_device::device_reset()
diff --git a/src/devices/machine/tc009xlvc.h b/src/devices/machine/tc009xlvc.h
index 9cd3cf3a11e..66911acd4e5 100644
--- a/src/devices/machine/tc009xlvc.h
+++ b/src/devices/machine/tc009xlvc.h
@@ -43,9 +43,6 @@ public:
DECLARE_READ8_MEMBER( tc0091lvc_tvram_r );
DECLARE_WRITE8_MEMBER( tc0091lvc_tvram_w );
- DECLARE_WRITE8_MEMBER( tc0091lvc_bg0_scroll_w );
- DECLARE_WRITE8_MEMBER( tc0091lvc_bg1_scroll_w );
-
TILE_GET_INFO_MEMBER(get_bg0_tile_info);
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
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 7d0f3226ca5..7242ca1312d 100644
--- a/src/devices/machine/tms6100.cpp
+++ b/src/devices/machine/tms6100.cpp
@@ -1,129 +1,55 @@
// license:BSD-3-Clause
-// copyright-holders:Couriersud
+// copyright-holders:hap, Couriersud
/**********************************************************************************************
- TMS6100 simulator
-
- Written for MAME by Couriersud
-
- Todo:
- - implement CS
- - implement 4 bit mode (mask programmed)
- - implement chip addressing (0-15 mask programmed)
-
- TMS6100:
-
- +-----------------+
- VDD | 1 28 | NC
- NC | 2 27 | NC
- DATA/ADD1 | 3 26 | NC
- DATA/ADD2 | 4 25 | NC
- DATA/ADD4 | 5 24 | NC
- DATA/ADD8 | 6 23 | NC
- CLK | 7 22 | NC
- NC | 8 21 | NC
- NC | 9 20 | NC
- M0 | 10 19 | NC
- M1 | 11 18 | NC
- NC | 12 17 | NC
- /CS | 13 16 | NC
- VSS | 14 15 | NC
- +-----------------+
-
- TMS6125:
-
- +---------+
- DATA/ADD1 | 1 16 | NC
- DATA/ADD2 | 2 15 | NC
- DATA/ADD4 | 3 14 | NC
- DATA/ADD8 | 4 13 | NC
- CLK | 5 12 | VDD
- NC | 6 11 | /CS
- NC | 7 10 | M1
- M0 | 8 9 | VSS
- +---------+
-
- M58819 (from radarscope schematics):
-
- +-----------------+
- AD0 | 1 40 | AD1
- GND | 2 39 | AD2
- -5V | 3 38 | AD3
- A0 | 4 37 | AD4
- NC | 5 36 | AD5
- NC | 6 35 | AD6
- A1 | 7 34 | AD7
- A2 | 8 33 | AD8
- A3 | 9 32 | AD9
- CLK | 10 31 | AD10
- NC | 11 30 | AD11
- -5V | 12 29 | AD12
- C0 | 13 28 | NC
- C1 | 14 27 | NC
- NC | 15 26 | I7
- NC | 16 25 | NC
- +5V | 17 24 | I6
- I0 | 18 23 | I5
- I1 | 19 22 | I4
- I2 | 20 21 | I3
- +-----------------+
-
- The M58819 is used as an interface to external speech eproms.
- NC pins may have a function, although they are not connected in
- radarscope.
+ Texas Instruments TMS6100 Voice Synthesis Memory (VSM)
-***********************************************************************************************/
-
-#include "emu.h"
-#include "tms6100.h"
+ References:
+ - TMS 6100 Voice Synthesis Memory Data Manual
+ - TMS 6125 Voice Synthesis Memory Data Manual
+ - Speak & Spell patent US4189779 for low-level documentation
+ - 1982 Mitsubishi Data Book (M58819S section)
-#define VERBOSE (0)
+ TODO:
+ - implement clock pin(CLK) properly, xtal/timer
+ - command processing timing is not accurate, on the real chip it will take a few microseconds
+ - current implementation does not regard multi-chip configuration and pretends it is 1 chip,
+ this will work fine under normal circumstances since CS would be disabled on invalid address
+ - implement chip addressing (0-15 mask programmed, see above)
+ - M58819S pins SL(PROM expansion input), POC(reset)
-#if VERBOSE
-#define LOG(x) logerror x
-#else
-#define LOG(x)
-#endif
-
-#define TMS6100_READ_PENDING 0x01
-#define TMS6100_NEXT_READ_IS_DUMMY 0x02
+***********************************************************************************************/
-/* Variants */
+#include "tms6100.h"
-#define TMS6110_IS_TMS6100 (1)
-#define TMS6110_IS_M58819 (2)
+// device definitions
const device_type TMS6100 = &device_creator<tms6100_device>;
tms6100_device::tms6100_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),
- m_rom(*this, DEVICE_SELF)
+ m_rom(*this, DEVICE_SELF),
+ m_reverse_bits(false),
+ m_4bit_mode(false)
{
}
tms6100_device::tms6100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, TMS6100, "TMS6100", tag, owner, clock, "tms6100", __FILE__),
- m_rom(*this, DEVICE_SELF)
+ m_rom(*this, DEVICE_SELF),
+ m_reverse_bits(false),
+ m_4bit_mode(false)
{
}
const device_type M58819 = &device_creator<m58819_device>;
m58819_device::m58819_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : tms6100_device(mconfig, M58819, "M58819 Memory Controller", tag, owner, clock, "m58819", __FILE__)
+ : tms6100_device(mconfig, M58819, "M58819S", tag, owner, clock, "m58819s", __FILE__)
{
}
-//-------------------------------------------------
-// device_config_complete - perform any
-// operations now that the configuration is
-// complete
-//-------------------------------------------------
-
-void tms6100_device::device_config_complete()
-{
-}
//-------------------------------------------------
// device_start - device-specific startup
@@ -131,134 +57,204 @@ void tms6100_device::device_config_complete()
void tms6100_device::device_start()
{
- // save device variables
- save_item(NAME(m_addr_bits));
+ m_rommask = m_rom.bytes() - 1;
+
+ // zerofill
+ m_address = 0;
+ m_sa = 0;
+ m_count = 0;
+ m_prev_cmd = 0;
+ m_prev_m = 0;
+
+ m_add = 0;
+ m_data = 0;
+ m_m0 = 0;
+ m_m1 = 0;
+ m_cs = 1;
+ m_clk = 0;
+ m_rck = 0;
+
+ // register for savestates
save_item(NAME(m_address));
- save_item(NAME(m_address_latch));
- save_item(NAME(m_tms_clock));
+ save_item(NAME(m_sa));
+ save_item(NAME(m_count));
+ save_item(NAME(m_prev_cmd));
+ save_item(NAME(m_prev_m));
+ save_item(NAME(m_add));
save_item(NAME(m_data));
- save_item(NAME(m_loadptr));
save_item(NAME(m_m0));
save_item(NAME(m_m1));
- save_item(NAME(m_state));
- save_item(NAME(m_variant));
- set_variant(TMS6110_IS_TMS6100);
-
+ save_item(NAME(m_cs));
+ save_item(NAME(m_clk));
+ save_item(NAME(m_rck));
}
void m58819_device::device_start()
{
tms6100_device::device_start();
- set_variant(TMS6110_IS_M58819);
+ m_reverse_bits = true; // m58819 'vsm-emulator' chip expects ROM bit order backwards
}
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-void tms6100_device::device_reset()
+// external i/o
+
+WRITE_LINE_MEMBER(tms6100_device::m0_w)
{
- /* initialize the chip */
- m_addr_bits = 0;
- m_address = 0;
- m_address_latch = 0;
- m_loadptr = 0;
- m_m0 = 0;
- m_m1 = 0;
- m_state = 0;
- m_tms_clock = 0;
- m_data = 0;
+ m_m0 = (state) ? 1 : 0;
}
-void tms6100_device::set_variant(int variant)
+WRITE_LINE_MEMBER(tms6100_device::m1_w)
{
- m_variant = variant;
+ m_m1 = (state) ? 1 : 0;
}
-WRITE_LINE_MEMBER(tms6100_device::tms6100_m0_w)
+WRITE_LINE_MEMBER(tms6100_device::cs_w)
{
- if (state != m_m0)
- m_m0 = state;
+ // chip select pin
+ m_cs = (state) ? 1 : 0;
}
-WRITE_LINE_MEMBER(tms6100_device::tms6100_m1_w)
+WRITE_LINE_MEMBER(tms6100_device::rck_w)
{
- if (state != m_m1)
- m_m1 = state;
+ // gate/mask for clk
+ m_rck = (state) ? 1 : 0;
}
-WRITE_LINE_MEMBER(tms6100_device::tms6100_romclock_w)
+WRITE8_MEMBER(tms6100_device::add_w)
{
- /* process on falling edge */
- if (m_tms_clock && !state)
+ m_add = data & 0xf;
+}
+
+READ8_MEMBER(tms6100_device::data_r)
+{
+ return m_data & 0xf;
+}
+
+READ_LINE_MEMBER(tms6100_device::data_line_r)
+{
+ // DATA/ADD8
+ return (m_data & 8) ? 1 : 0;
+}
+
+WRITE_LINE_MEMBER(tms6100_device::clk_w)
+{
+ // process on falling edge
+ if (m_clk && !m_rck && !state)
{
- switch ((m_m1<<1) | m_m0)
+ if (m_cs)
{
- case 0x00:
- /* NOP in datasheet, not really ... */
- if (m_state & TMS6100_READ_PENDING)
+ // new command enabled on rising edge of m0/m1
+ 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;
+}
+
+
+// m0/m1 commands
+
+void tms6100_device::handle_command(UINT8 cmd)
+{
+ enum
+ {
+ M_NOP = 0, M_TB, M_LA, M_RB
+ };
+
+ switch (cmd)
+ {
+ // TB: transfer bit (read)
+ case M_TB:
+ if (m_prev_cmd == M_LA)
+ {
+ // dummy read after LA
+ m_count = 0;
+ }
+ else
{
- if (m_state & TMS6100_NEXT_READ_IS_DUMMY)
+ // load new data from rom
+ if (m_count == 0)
{
- m_address = (m_address_latch << 3);
- m_address_latch = 0;
- m_loadptr = 0;
- m_state &= ~TMS6100_NEXT_READ_IS_DUMMY;
- LOG(("loaded address %08x\n", m_address));
+ m_sa = m_rom[m_address & m_rommask];
+
+ // M58819S reads serial data reversed
+ if (m_reverse_bits)
+ m_sa = BITSWAP8(m_sa,0,1,2,3,4,5,6,7);
}
else
{
- /* read bit at address */
- if (m_variant == TMS6110_IS_M58819)
- {
- m_data = (m_rom[m_address >> 3] >> (7-(m_address & 0x07))) & 1;
- }
- else // m_variant == (TMS6110_IS_TMS6100 || TMS6110_IS_TMS6125)
- {
- m_data = (m_rom[m_address >> 3] >> (m_address & 0x07)) & 1;
- }
- m_address++;
+ // or shift(rotate) right
+ m_sa = (m_sa >> 1) | (m_sa << 7 & 0x80);
}
- m_state &= ~TMS6100_READ_PENDING;
+
+ // output to DATA pin(s)
+ if (!m_4bit_mode)
+ {
+ // 1-bit mode: SA0 to ADD8/DATA
+ m_data = m_sa << 3 & 8;
+ }
+ else
+ {
+ // 4-bit mode: SA0-3 or SA3-6(!) to DATA
+ if (m_count & 1)
+ m_data = m_sa >> 3 & 0xf;
+ 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;
- case 0x01:
- /* READ */
- m_state |= TMS6100_READ_PENDING;
- break;
- case 0x02:
- /* LOAD ADDRESS */
- m_state |= TMS6100_NEXT_READ_IS_DUMMY;
- m_address_latch |= (m_addr_bits << m_loadptr);
- LOG(("loaded address latch %08x\n", m_address_latch));
- m_loadptr += 4;
+
+ // LA: load address
+ case M_LA:
+ if (m_prev_cmd == M_TB)
+ {
+ // start LA after TB
+ m_address = (m_address & ~0xf) | m_add;
+ m_count = 0;
+ }
+ else if (m_prev_cmd == M_LA)
+ {
+ // load consecutive address bits (including CS bits)
+ // the 8-step counter PLA is shared between LA and TB
+ if (m_count < 4)
+ {
+ const UINT8 shift = 4 * (m_count+1);
+ m_address = (m_address & ~(0xf << shift)) | (m_add << shift);
+ }
+
+ m_count = (m_count + 1) & 7;
+ }
break;
- case 0x03:
- /* READ AND BRANCH */
- if (m_state & TMS6100_NEXT_READ_IS_DUMMY)
+
+ // RB: read and branch
+ case M_RB:
+ // process RB after LA or TB8
+ if (m_prev_cmd == M_LA || (m_prev_cmd == M_TB && m_count == 0))
{
- m_state &= ~TMS6100_NEXT_READ_IS_DUMMY; // clear - no dummy read according to datasheet
- LOG(("loaded address latch %08x\n", m_address_latch));
- m_address = m_rom[m_address_latch] | (m_rom[m_address_latch+1]<<8);
- m_address &= 0x3fff; // 14 bits
- LOG(("loaded indirect address %04x\n", m_address));
- m_address = (m_address << 3);
- m_address_latch = 0;
- m_loadptr = 0;
+ m_count = 0;
+
+ // load new address bits (14 bits on TMS6100)
+ UINT16 rb = m_rom[m_address & m_rommask];
+ m_address++;
+ rb |= (m_rom[m_address & m_rommask] << 8);
+ m_address = (m_address & ~0x3fff) | (rb & 0x3fff);
}
break;
- }
- }
- m_tms_clock = state;
-}
-WRITE8_MEMBER(tms6100_device::tms6100_addr_w)
-{
- if (data != m_addr_bits)
- m_addr_bits = data;
-}
+ default:
+ break;
+ }
-READ_LINE_MEMBER(tms6100_device::tms6100_data_r)
-{
- return m_data;
+ m_prev_cmd = cmd;
}
diff --git a/src/devices/machine/tms6100.h b/src/devices/machine/tms6100.h
index 01c24144624..ae295dec4b2 100644
--- a/src/devices/machine/tms6100.h
+++ b/src/devices/machine/tms6100.h
@@ -1,11 +1,95 @@
// license:BSD-3-Clause
-// copyright-holders:Couriersud
-#pragma once
+// copyright-holders:hap, Couriersud
+/**********************************************************************************************
+
+ Texas Instruments TMS6100 Voice Synthesis Memory (VSM)
+
+***********************************************************************************************/
#ifndef __TMS6100_H__
#define __TMS6100_H__
-/* TMS 6100 memory controller */
+#include "emu.h"
+
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+// 4-bit mode (mask option)
+// note: in 4-bit mode, use data_r, otherwise use data_line_r
+
+#define MCFG_TMS6100_4BIT_MODE() \
+ tms6100_device::enable_4bit_mode(*device);
+
+
+// pinout reference
+
+/*
+ TMS6100:
+ +-----------------+
+ VDD | 1 28 | NC
+ NC | 2 27 | NC
+ DATA/ADD1 | 3 26 | NC
+ DATA/ADD2 | 4 25 | NC
+ DATA/ADD4 | 5 24 | NC
+ DATA/ADD8 | 6 23 | NC
+ CLK | 7 22 | NC
+ NC | 8 21 | NC
+ NC | 9 20 | NC
+ M0 | 10 19 | NC
+ M1 | 11 18 | NC
+ NC | 12 17 | NC
+ /CS | 13 16 | NC
+ VSS | 14 15 | NC
+ +-----------------+
+
+
+ TMS6125: two types known
+
+ +---------+ +---------+
+ DATA/ADD1 | 1 16 | NC DATA/ADD1 | 1 16 | NC
+ DATA/ADD2 | 2 15 | NC DATA/ADD2 | 2 15 | NC
+ DATA/ADD4 | 3 14 | NC DATA/ADD4 | 3 14 | NC
+ RCK | 4 13 | NC DATA/ADD8 | 4 13 | NC
+ CLK | 5 12 | VDD CLK | 5 12 | VDD
+ 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:
+ It is a clone of TMS6100, but external EPROM instead
+
+ +-----------------+
+ AD0 | 1 40 | AD1
+ VDDl | 2 39 | AD2
+ VDD | 3 38 | AD3
+ A0 | 4 37 | NC
+ NC | 5 36 | AD4
+ NC | 6 35 | AD5
+ A1 | 7 34 | AD6
+ A2 | 8 33 | AD7
+ A3/Q | 9 32 | AD8
+ CLK | 10 31 | AD9
+ POW | 11 30 | AD10
+ SL | 12 29 | AD11
+ C0 | 13 28 | AD12
+ C1 | 14 27 | AD13
+ NC | 15 26 | D7
+ NC | 16 25 | NC
+ VSS | 17 24 | D6
+ D0 | 18 23 | D5
+ D1 | 19 22 | D4
+ D2 | 20 21 | D3
+ +-----------------+
+*/
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
class tms6100_device : public device_t
{
@@ -13,36 +97,45 @@ public:
tms6100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
tms6100_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);
- DECLARE_WRITE_LINE_MEMBER( tms6100_m0_w );
- DECLARE_WRITE_LINE_MEMBER( tms6100_m1_w );
- DECLARE_WRITE_LINE_MEMBER( tms6100_romclock_w );
- DECLARE_WRITE8_MEMBER( tms6100_addr_w );
+ static void enable_4bit_mode(device_t &device) { downcast<tms6100_device &>(device).m_4bit_mode = true; }
+
+ DECLARE_WRITE_LINE_MEMBER(m0_w);
+ DECLARE_WRITE_LINE_MEMBER(m1_w);
+ DECLARE_WRITE_LINE_MEMBER(rck_w);
+ DECLARE_WRITE_LINE_MEMBER(cs_w);
+ DECLARE_WRITE_LINE_MEMBER(clk_w);
- DECLARE_READ_LINE_MEMBER( tms6100_data_r );
+ DECLARE_WRITE8_MEMBER(add_w);
+ DECLARE_READ8_MEMBER(data_r); // 4bit
+ DECLARE_READ_LINE_MEMBER(data_line_r);
protected:
// device-level overrides
- virtual void device_config_complete() override;
virtual void device_start() override;
- virtual void device_reset() override;
- void set_variant(int variant);
-private:
+
+ void handle_command(UINT8 cmd);
+
// internal state
required_region_ptr<UINT8> m_rom;
- UINT32 m_address;
- UINT32 m_address_latch;
- UINT8 m_loadptr;
- UINT8 m_m0;
- UINT8 m_m1;
- UINT8 m_addr_bits;
- UINT8 m_tms_clock;
- UINT8 m_data;
- UINT8 m_state;
- UINT8 m_variant;
+ bool m_reverse_bits;
+ bool m_4bit_mode;
+
+ UINT32 m_rommask;
+ UINT32 m_address; // internal address + chipselect
+ UINT8 m_sa; // romdata shift register
+ UINT8 m_count; // TB/LA counter (-> PLA)
+ UINT8 m_prev_cmd; // previous handled command
+ UINT8 m_prev_m; // previous valid m0/m1 state
+ UINT8 m_add; // ADD/DATA pins input
+ UINT8 m_data; // ADD/DATA pins output
+ int m_m0;
+ int m_m1;
+ int m_cs; // chipselect pin
+ int m_clk; // CLK pin
+ int m_rck; // RCK pin (mask/gate to CLK?)
};
-extern const device_type TMS6100;
class m58819_device : public tms6100_device
{
@@ -54,6 +147,8 @@ protected:
virtual void device_start() override;
};
+
+extern const device_type TMS6100;
extern const device_type M58819;
diff --git a/src/devices/machine/upd765.cpp b/src/devices/machine/upd765.cpp
index 54c1119d4e7..48901ef2314 100644
--- a/src/devices/machine/upd765.cpp
+++ b/src/devices/machine/upd765.cpp
@@ -1335,7 +1335,7 @@ void upd765_family_device::start_command(int cmd)
main_phase = PHASE_RESULT;
int fid;
- for(fid=0; fid<4 && !flopi[fid].st0_filled; fid++);
+ for(fid=0; fid<4 && !flopi[fid].st0_filled; fid++) {};
if(fid == 4) {
result[0] = ST0_UNK;
result_pos = 1;
@@ -2247,7 +2247,6 @@ void upd765_family_device::run_drive_ready_polling()
void upd765_family_device::index_callback(floppy_image_device *floppy, int state)
{
for(auto & fi : flopi) {
-
if(fi.dev != floppy)
continue;
diff --git a/src/devices/machine/v3021.h b/src/devices/machine/v3021.h
index 8764c4c3eff..7e4844216c4 100644
--- a/src/devices/machine/v3021.h
+++ b/src/devices/machine/v3021.h
@@ -53,9 +53,6 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
- inline UINT8 rtc_read(UINT8 offset);
- inline void rtc_write(UINT8 offset,UINT8 data);
-
static TIMER_CALLBACK( rtc_inc_callback );
UINT8 m_cal_mask,m_cal_com,m_cal_cnt,m_cal_val;
diff --git a/src/devices/machine/wd2010.cpp b/src/devices/machine/wd2010.cpp
index 6f50622ec79..a97b35b2517 100644
--- a/src/devices/machine/wd2010.cpp
+++ b/src/devices/machine/wd2010.cpp
@@ -224,7 +224,7 @@ void wd2010_device::device_reset()
READ8_MEMBER(wd2010_device::read)
{
- UINT8 data = 0;
+ UINT8 data;
switch (offset)
{
@@ -462,8 +462,8 @@ void wd2010_device::seek(UINT8 data)
auto_scan_id(data); // has drive number changed?
- int direction = 0; // 0 = towards 0
- int step_pulses = 0;
+ int direction; // 0 = towards 0
+ int step_pulses;
// Calculate number of steps by comparing the cylinder registers
// HI/LO with the internally stored position.
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/machine/z80ctc.cpp b/src/devices/machine/z80ctc.cpp
index 13c4844c9e3..276254d96f1 100644
--- a/src/devices/machine/z80ctc.cpp
+++ b/src/devices/machine/z80ctc.cpp
@@ -185,8 +185,6 @@ int z80ctc_device::z80daisy_irq_state()
int state = 0;
for (auto & channel : m_channel)
{
-
-
// if we're servicing a request, don't indicate more interrupts
if (channel.m_int_state & Z80_DAISY_IEO)
{
diff --git a/src/devices/machine/z80dma.cpp b/src/devices/machine/z80dma.cpp
index 745d22877f0..c1f3162bebd 100644
--- a/src/devices/machine/z80dma.cpp
+++ b/src/devices/machine/z80dma.cpp
@@ -443,7 +443,7 @@ void z80dma_device::do_search()
int z80dma_device::do_write()
{
- int done = 0;
+ int done;
UINT8 mode;
mode = TRANSFER_MODE;
diff --git a/src/devices/machine/z80scc.cpp b/src/devices/machine/z80scc.cpp
index 3c6a17f6fbb..d2aa4a5f5bd 100644
--- a/src/devices/machine/z80scc.cpp
+++ b/src/devices/machine/z80scc.cpp
@@ -425,10 +425,10 @@ UINT8 z80scc_device::modify_vector(UINT8 vec, int i, UINT8 src)
void z80scc_device::trigger_interrupt(int index, int state)
{
UINT8 vector = m_chanB->m_wr2;
- UINT8 source = 0;
+ UINT8 source;
int priority;
- int prio_level = 0;
+ int prio_level;
LOG(("%s %s:%c %d \n",FUNCNAME, tag(), 'A' + index, state));
@@ -613,6 +613,53 @@ WRITE8_MEMBER( z80scc_device::ba_cd_w )
channel->data_write(data);
}
+//-------------------------------------------------
+// ba_cd_r - Universal Bus read
+//-------------------------------------------------
+
+READ8_MEMBER( z80scc_device::ba_cd_inv_r )
+{
+ int ba = BIT(offset, 1);
+ int cd = BIT(offset, 0);
+ z80scc_channel *channel = ba ? m_chanA : m_chanB;
+
+ /* Expell non-Universal Bus variants */
+ if ( !(m_variant & SET_Z85X3X) )
+ {
+ logerror("Z80SCC ba_cd_r not supported by this device variant, you should probably use combinations of c*_r/w and d*_r/w (see z80scc.h)\n");
+ return 0;
+ }
+
+ // LOG(("z80scc_device::ba_cd_inv_r ba:%02x cd:%02x\n", ba, cd));
+ return cd ? channel->data_read() : channel->control_read();
+}
+
+
+//-------------------------------------------------
+// ba_cd_w -
+//-------------------------------------------------
+
+WRITE8_MEMBER( z80scc_device::ba_cd_inv_w )
+{
+ int ba = BIT(offset, 1);
+ int cd = BIT(offset, 0);
+ z80scc_channel *channel = ba ? m_chanA : m_chanB;
+
+ /* Expell non-Universal Bus variants */
+ if ( !(m_variant & SET_Z85X3X) )
+ {
+ logerror("Z80SCC ba_cd_w not supported by this device variant, you should probably use combinations of c*_r/w and d*_r/w (see z80scc.h)\n");
+ return;
+ }
+
+ LOG(("z80scc_device::ba_cd_inv_w ba:%02x cd:%02x\n", ba, cd));
+
+ if (cd)
+ channel->data_write(data);
+ else
+ channel->control_write(data);
+}
+
//**************************************************************************
// SCC CHANNEL
//**************************************************************************
diff --git a/src/devices/machine/z80scc.h b/src/devices/machine/z80scc.h
index e48a670192b..7f956ec9b74 100644
--- a/src/devices/machine/z80scc.h
+++ b/src/devices/machine/z80scc.h
@@ -137,7 +137,7 @@ public:
UINT8 do_sccreg_rr5();
UINT8 do_sccreg_rr6();
UINT8 do_sccreg_rr7();
- UINT8 do_sccreg_rr8();
+// UINT8 do_sccreg_rr8();
UINT8 do_sccreg_rr9();
UINT8 do_sccreg_rr10();
UINT8 do_sccreg_rr11();
@@ -555,6 +555,8 @@ public:
DECLARE_WRITE8_MEMBER( cd_ba_w );
DECLARE_READ8_MEMBER( ba_cd_r );
DECLARE_WRITE8_MEMBER( ba_cd_w );
+ DECLARE_READ8_MEMBER( ba_cd_inv_r );
+ DECLARE_WRITE8_MEMBER( ba_cd_inv_w );
/* Definitions moved to z80scc.c for enhencements */
DECLARE_READ8_MEMBER( da_r ); // { return m_chanA->data_read(); }
diff --git a/src/devices/machine/z80sio.h b/src/devices/machine/z80sio.h
index 278fa006d45..3eac1e98d69 100644
--- a/src/devices/machine/z80sio.h
+++ b/src/devices/machine/z80sio.h
@@ -169,7 +169,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( write_rx );
DECLARE_WRITE_LINE_MEMBER( cts_w );
DECLARE_WRITE_LINE_MEMBER( dcd_w );
- DECLARE_WRITE_LINE_MEMBER( ri_w );
+ //DECLARE_WRITE_LINE_MEMBER( ri_w );
DECLARE_WRITE_LINE_MEMBER( rxc_w );
DECLARE_WRITE_LINE_MEMBER( txc_w );
DECLARE_WRITE_LINE_MEMBER( sync_w );
@@ -457,8 +457,8 @@ class z80sio_device : public device_t,
DECLARE_WRITE_LINE_MEMBER( ctsb_w ) { m_chanB->cts_w(state); }
DECLARE_WRITE_LINE_MEMBER( dcda_w ) { m_chanA->dcd_w(state); }
DECLARE_WRITE_LINE_MEMBER( dcdb_w ) { m_chanB->dcd_w(state); }
- DECLARE_WRITE_LINE_MEMBER( ria_w ) { m_chanA->ri_w(state); }
- DECLARE_WRITE_LINE_MEMBER( rib_w ) { m_chanB->ri_w(state); }
+ //DECLARE_WRITE_LINE_MEMBER( ria_w ) { m_chanA->ri_w(state); }
+ //DECLARE_WRITE_LINE_MEMBER( rib_w ) { m_chanB->ri_w(state); }
DECLARE_WRITE_LINE_MEMBER( rxca_w ) { m_chanA->rxc_w(state); }
DECLARE_WRITE_LINE_MEMBER( rxcb_w ) { m_chanB->rxc_w(state); }
DECLARE_WRITE_LINE_MEMBER( txca_w ) { m_chanA->txc_w(state); }
diff --git a/src/devices/machine/z8536.cpp b/src/devices/machine/z8536.cpp
index 60d5e46f05f..f10b1c8f97a 100644
--- a/src/devices/machine/z8536.cpp
+++ b/src/devices/machine/z8536.cpp
@@ -214,7 +214,7 @@ void z8536_device::get_interrupt_vector()
void z8536_device::check_interrupt()
{
- int state = ASSERT_LINE;
+ int state;
if (m_register[MASTER_INTERRUPT_CONTROL] & MICR_MIE)
{
@@ -251,7 +251,7 @@ void z8536_device::check_interrupt()
UINT8 z8536_device::read_register(offs_t offset)
{
- UINT8 data = 0;
+ UINT8 data;
switch (offset)
{
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 c0a0915c96d..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));
@@ -443,10 +441,10 @@ void aica_device::Init()
int iTL =(i>>0x0)&0xff;
int iPAN=(i>>0x8)&0x1f;
int iSDL=(i>>0xD)&0x0F;
- float TL=1.0;
+ float TL;
float SegaDB=0;
- float fSDL=1.0;
- float PAN=1.0;
+ float fSDL;
+ float PAN;
float LPAN,RPAN;
if(iTL&0x01) SegaDB-=0.4f;
@@ -521,8 +519,8 @@ void aica_device::Init()
}
AICALFO_Init();
- m_buffertmpl=auto_alloc_array_clear(machine(), signed int, 44100);
- m_buffertmpr=auto_alloc_array_clear(machine(), signed int, 44100);
+ m_buffertmpl=make_unique_clear<INT32[]>(44100);
+ m_buffertmpr=make_unique_clear<INT32[]>(44100);
// no "pend"
m_udata.data[0xa0/2] = 0;
@@ -804,7 +802,7 @@ void aica_device::UpdateRegR(address_space &space, int reg)
{
int slotnum = MSLC();
AICA_SLOT *slot=m_Slots + slotnum;
- UINT16 LP = 0;
+ UINT16 LP;
if (!(AFSEL()))
{
UINT16 SGC;
@@ -834,7 +832,7 @@ void aica_device::UpdateRegR(address_space &space, int reg)
//m_stream->update();
int slotnum = MSLC();
AICA_SLOT *slot=m_Slots+slotnum;
- unsigned int CA = 0;
+ unsigned int CA;
if (PCMS(slot) == 0) // 16-bit samples
{
@@ -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 5264c8cb9c6..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
{
@@ -159,7 +160,8 @@ private:
UINT32 m_AICARAM_LENGTH, m_RAM_MASK, m_RAM_MASK16;
sound_stream * m_stream;
- INT32 *m_buffertmpl, *m_buffertmpr;
+ std::unique_ptr<INT32[]> m_buffertmpl;
+ std::unique_ptr<INT32[]> m_buffertmpr;
UINT32 m_IrqTimA;
UINT32 m_IrqTimBC;
diff --git a/src/devices/sound/aicadsp.cpp b/src/devices/sound/aicadsp.cpp
index 3cf57261cd5..08cb0702e44 100644
--- a/src/devices/sound/aicadsp.cpp
+++ b/src/devices/sound/aicadsp.cpp
@@ -66,14 +66,14 @@ void aica_dsp_step(AICADSP *DSP)
{
INT32 ACC=0; //26 bit
INT32 SHIFTED=0; //24 bit
- INT32 X=0; //24 bit
+ INT32 X; //24 bit
INT32 Y=0; //13 bit
- INT32 B=0; //26 bit
+ INT32 B; //26 bit
INT32 INPUTS=0; //24 bit
INT32 MEMVAL=0;
INT32 FRC_REG=0; //13 bit
INT32 Y_REG=0; //24 bit
- UINT32 ADDR=0;
+ UINT32 ADDR;
UINT32 ADRS_REG=0; //13 bit
int step;
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 6e5ff8321bf..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,32 +109,33 @@ 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 */
- m_mixer_buffer_left = auto_alloc_array(machine(), INT16, 2 * m_sample_rate);
- m_mixer_buffer_right = m_mixer_buffer_left + m_sample_rate;
+ m_mixer_buffer_left = std::make_unique<INT16[]>(m_sample_rate);
+ m_mixer_buffer_right = std::make_unique<INT16[]>(m_sample_rate);;
save_item(NAME(m_REG));
@@ -181,8 +183,8 @@ void c140_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
if(samples>m_sample_rate) samples=m_sample_rate;
/* zap the contents of the mixer buffer */
- memset(m_mixer_buffer_left, 0, samples * sizeof(INT16));
- memset(m_mixer_buffer_right, 0, samples * sizeof(INT16));
+ memset(m_mixer_buffer_left.get(), 0, samples * sizeof(INT16));
+ memset(m_mixer_buffer_right.get(), 0, samples * sizeof(INT16));
/* get the number of voices to update */
voicecnt = (m_banking_type == C140_TYPE_ASIC219) ? 16 : 24;
@@ -208,8 +210,8 @@ void c140_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
rvol=(vreg->volume_right*32)/C140_MAX_VOICE;
/* Set mixer outputs base pointers */
- lmix = m_mixer_buffer_left;
- rmix = m_mixer_buffer_right;
+ lmix = m_mixer_buffer_left.get();
+ rmix = m_mixer_buffer_right.get();
/* Retrieve sample start/end and calculate size */
st=v->sample_start;
@@ -342,8 +344,8 @@ void c140_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
}
/* render to MAME's stream buffer */
- lmix = m_mixer_buffer_left;
- rmix = m_mixer_buffer_right;
+ lmix = m_mixer_buffer_left.get();
+ rmix = m_mixer_buffer_right.get();
{
stream_sample_t *dest1 = outputs[0];
stream_sample_t *dest2 = outputs[1];
diff --git a/src/devices/sound/c140.h b/src/devices/sound/c140.h
index 899045d03af..a7662daae1e 100644
--- a/src/devices/sound/c140.h
+++ b/src/devices/sound/c140.h
@@ -106,10 +106,11 @@ private:
sound_stream *m_stream;
int m_banking_type;
/* internal buffers */
- INT16 *m_mixer_buffer_left;
- INT16 *m_mixer_buffer_right;
+ std::unique_ptr<INT16[]> m_mixer_buffer_left;
+ 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/cdda.cpp b/src/devices/sound/cdda.cpp
index 5bd6746e9d7..3223142a062 100644
--- a/src/devices/sound/cdda.cpp
+++ b/src/devices/sound/cdda.cpp
@@ -29,7 +29,7 @@ void cdda_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
void cdda_device::device_start()
{
/* allocate an audio cache */
- m_audio_cache = auto_alloc_array( machine(), UINT8, CD_MAX_SECTOR_DATA * MAX_SECTORS );
+ m_audio_cache = std::make_unique<UINT8[]>(CD_MAX_SECTOR_DATA * MAX_SECTORS );
m_stream = machine().sound().stream_alloc(*this, 0, 2, 44100);
@@ -47,7 +47,7 @@ void cdda_device::device_start()
save_item( NAME(m_audio_ended_normally) );
save_item( NAME(m_audio_lba) );
save_item( NAME(m_audio_length) );
- save_pointer( NAME(m_audio_cache), CD_MAX_SECTOR_DATA * MAX_SECTORS );
+ save_pointer( NAME(m_audio_cache.get()), CD_MAX_SECTOR_DATA * MAX_SECTORS );
save_item( NAME(m_audio_samples) );
save_item( NAME(m_audio_bptr) );
}
@@ -161,7 +161,7 @@ int cdda_device::audio_ended()
void cdda_device::get_audio_data(stream_sample_t *bufL, stream_sample_t *bufR, UINT32 samples_wanted)
{
int i;
- INT16 *audio_cache = (INT16 *) m_audio_cache;
+ INT16 *audio_cache = (INT16 *) m_audio_cache.get();
while (samples_wanted > 0)
{
diff --git a/src/devices/sound/cdda.h b/src/devices/sound/cdda.h
index 4e6da29919e..2d9b6d86584 100644
--- a/src/devices/sound/cdda.h
+++ b/src/devices/sound/cdda.h
@@ -46,7 +46,7 @@ private:
INT8 m_audio_playing, m_audio_pause, m_audio_ended_normally;
UINT32 m_audio_lba, m_audio_length;
- UINT8 * m_audio_cache;
+ std::unique_ptr<UINT8[]> m_audio_cache;
UINT32 m_audio_samples;
UINT32 m_audio_bptr;
INT16 m_audio_volume[2];
diff --git a/src/devices/sound/cem3394.cpp b/src/devices/sound/cem3394.cpp
index c64b2539482..5d345fa6507 100644
--- a/src/devices/sound/cem3394.cpp
+++ b/src/devices/sound/cem3394.cpp
@@ -176,7 +176,7 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
INT16 last_ext = m_last_ext;
/* fetch the external data */
- m_ext_cb(samples, m_external_buffer);
+ m_ext_cb(samples, m_external_buffer.get());
/* compute the modulation depth, and adjust fstep to the maximum frequency */
/* we lop off 13 bits of depth so that we can multiply by stepadjust, below, */
@@ -187,7 +187,7 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
/* "apply" the filter: note this is pretty cheesy; it basically just downsamples the
external sample to filter_freq by allowing only 2 transitions for every cycle */
- for (i = 0, ext = m_external_buffer, position = m_position; i < samples; i++, ext++)
+ for (i = 0, ext = m_external_buffer.get(), position = m_position; i < samples; i++, ext++)
{
UINT32 newposition;
INT32 stepadjust;
@@ -229,7 +229,7 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
/* if the width is wider than the step, we're guaranteed to hit it once per cycle */
if (pulse_width >= step)
{
- for (i = 0, mix = m_mixer_buffer, position = m_position; i < samples; i++, mix++)
+ for (i = 0, mix = m_mixer_buffer.get(), position = m_position; i < samples; i++, mix++)
{
if (position < pulse_width)
*mix = 0x1932;
@@ -243,7 +243,7 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
else
{
INT16 volume = 0x1932 * pulse_width / step;
- for (i = 0, mix = m_mixer_buffer, position = m_position; i < samples; i++, mix++)
+ for (i = 0, mix = m_mixer_buffer.get(), position = m_position; i < samples; i++, mix++)
{
UINT32 newposition = position + step;
if ((newposition ^ position) & ~FRACTION_MASK)
@@ -258,13 +258,13 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
/* otherwise, clear the mixing buffer */
else
- memset(m_mixer_buffer, 0, sizeof(INT16) * samples);
+ memset(m_mixer_buffer.get(), 0, sizeof(INT16) * samples);
/* handle the sawtooth component; it maxes out at 0x2000, which is 27% larger */
/* than the pulse */
if (ENABLE_SAWTOOTH && (m_wave_select & WAVE_SAWTOOTH))
{
- for (i = 0, mix = m_mixer_buffer, position = m_position; i < samples; i++, mix++)
+ for (i = 0, mix = m_mixer_buffer.get(), position = m_position; i < samples; i++, mix++)
{
*mix += ((position >> (FRACTION_BITS - 14)) & 0x3fff) - 0x2000;
position += step;
@@ -277,7 +277,7 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
/* a multiplication) */
if (ENABLE_TRIANGLE && (m_wave_select & WAVE_TRIANGLE))
{
- for (i = 0, mix = m_mixer_buffer, position = m_position; i < samples; i++, mix++)
+ for (i = 0, mix = m_mixer_buffer.get(), position = m_position; i < samples; i++, mix++)
{
INT16 value;
if (position & (1 << (FRACTION_BITS - 1)))
@@ -295,8 +295,8 @@ void cem3394_device::sound_stream_update(sound_stream &stream, stream_sample_t *
}
/* mix it down */
- mix = m_mixer_buffer;
- ext = m_external_buffer;
+ mix = m_mixer_buffer.get();
+ ext = m_external_buffer.get();
{
/* internal + external */
if (ext_volume != 0 && int_volume != 0)
@@ -336,8 +336,8 @@ void cem3394_device::device_start()
m_ext_cb.bind_relative_to(*owner());
/* allocate memory for a mixer buffer and external buffer (1 second should do it!) */
- m_mixer_buffer = auto_alloc_array(machine(), INT16, m_sample_rate);
- m_external_buffer = auto_alloc_array(machine(), INT16, m_sample_rate);
+ m_mixer_buffer = std::make_unique<INT16[]>(m_sample_rate);
+ m_external_buffer = std::make_unique<INT16[]>(m_sample_rate);
save_item(NAME(m_values));
save_item(NAME(m_wave_select));
diff --git a/src/devices/sound/cem3394.h b/src/devices/sound/cem3394.h
index 188ad9b069f..88d2608bec1 100644
--- a/src/devices/sound/cem3394.h
+++ b/src/devices/sound/cem3394.h
@@ -107,8 +107,8 @@ private:
double m_inv_sample_rate;
int m_sample_rate;
- INT16 *m_mixer_buffer;
- INT16 *m_external_buffer;
+ std::unique_ptr<INT16[]> m_mixer_buffer;
+ std::unique_ptr<INT16[]> m_external_buffer;
};
extern const device_type CEM3394;
diff --git a/src/devices/sound/disc_cls.h b/src/devices/sound/disc_cls.h
index de7faeb1e2a..b627106a75d 100644
--- a/src/devices/sound/disc_cls.h
+++ b/src/devices/sound/disc_cls.h
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins,Couriersud
-// thanks-to:Derrick Renaud, F.Palazzolo
+// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
#pragma once
#ifndef __DISC_CLS_H__
diff --git a/src/devices/sound/disc_dev.h b/src/devices/sound/disc_dev.h
index 8828bf15573..19d96339889 100644
--- a/src/devices/sound/disc_dev.h
+++ b/src/devices/sound/disc_dev.h
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins,Couriersud
-// thanks-to:Derrick Renaud, F.Palazzolo
+// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
#pragma once
#ifndef __DISC_DEV_H__
diff --git a/src/devices/sound/disc_dev.inc b/src/devices/sound/disc_dev.inc
index 7ebf374f65a..da859e471ec 100644
--- a/src/devices/sound/disc_dev.inc
+++ b/src/devices/sound/disc_dev.inc
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins
+// copyright-holders:K.Wilkins,Derrick Renaud
/************************************************************************
*
* MAME - Discrete sound system emulation library
diff --git a/src/devices/sound/disc_flt.h b/src/devices/sound/disc_flt.h
index f873c87228b..c60d25d107b 100644
--- a/src/devices/sound/disc_flt.h
+++ b/src/devices/sound/disc_flt.h
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins,Couriersud
-// thanks-to:Derrick Renaud, F.Palazzolo
+// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
#pragma once
#ifndef __DISC_FLTH__
diff --git a/src/devices/sound/disc_mth.h b/src/devices/sound/disc_mth.h
index 4c46f9bad54..0e550739a53 100644
--- a/src/devices/sound/disc_mth.h
+++ b/src/devices/sound/disc_mth.h
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins,Couriersud
-// thanks-to:Derrick Renaud, F.Palazzolo
+// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
#pragma once
#ifndef __DISC_MTH_H__
diff --git a/src/devices/sound/disc_mth.inc b/src/devices/sound/disc_mth.inc
index 2172e80edd6..9825ee0b899 100644
--- a/src/devices/sound/disc_mth.inc
+++ b/src/devices/sound/disc_mth.inc
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins
+// copyright-holders:K.Wilkins,Derrick Renaud
/************************************************************************
*
* MAME - Discrete sound system emulation library
diff --git a/src/devices/sound/disc_sys.inc b/src/devices/sound/disc_sys.inc
index 4192e832d93..92b00c30383 100644
--- a/src/devices/sound/disc_sys.inc
+++ b/src/devices/sound/disc_sys.inc
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins
+// copyright-holders:K.Wilkins,Derrick Renaud
/************************************************************************
*
* MAME - Discrete sound system emulation library
diff --git a/src/devices/sound/disc_wav.h b/src/devices/sound/disc_wav.h
index c84d70addf4..dc1dc11773b 100644
--- a/src/devices/sound/disc_wav.h
+++ b/src/devices/sound/disc_wav.h
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins,Couriersud
-// thanks-to:Derrick Renaud, F.Palazzolo
+// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
#pragma once
#ifndef __DISC_WAV_H__
diff --git a/src/devices/sound/discrete.cpp b/src/devices/sound/discrete.cpp
index 6e670b3f333..22b5ebe942a 100644
--- a/src/devices/sound/discrete.cpp
+++ b/src/devices/sound/discrete.cpp
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins,Couriersud
-// thanks-to:Derrick Renaud, F.Palazzolo
+// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
/************************************************************************
*
* MAME - Discrete sound system emulation library
@@ -126,7 +125,6 @@ public:
int task_group;
-protected:
discrete_task(discrete_device &pdev)
: task_group(0), m_device(pdev), m_threadid(-1), m_samples(0)
{
@@ -135,6 +133,7 @@ protected:
m_buffers.clear();
}
+protected:
static void *task_callback(void *param, int threadid);
inline bool process(void);
@@ -699,7 +698,7 @@ void discrete_device::init_nodes(const sound_block_list_t &block_list)
/* make sure we have one simple task
* No need to create a node since there are no dependencies.
*/
- task = auto_alloc_clear(machine(), discrete_task(*this));
+ task = auto_alloc_clear(machine(), <discrete_task>(*this));
task_list.add(task);
}
@@ -734,7 +733,7 @@ void discrete_device::init_nodes(const sound_block_list_t &block_list)
{
if (task != nullptr)
fatalerror("init_nodes() - Nested DISCRETE_START_TASK.\n");
- task = auto_alloc_clear(machine(), discrete_task(*this));
+ task = auto_alloc_clear(machine(), <discrete_task>(*this));
task->task_group = block->initial[0];
if (task->task_group < 0 || task->task_group >= DISCRETE_MAX_TASK_GROUPS)
fatalerror("discrete_dso_task: illegal task_group %d\n", task->task_group);
diff --git a/src/devices/sound/discrete.h b/src/devices/sound/discrete.h
index 1ee71e4056d..e5145b39132 100644
--- a/src/devices/sound/discrete.h
+++ b/src/devices/sound/discrete.h
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:K.Wilkins,Couriersud
-// thanks-to:Derrick Renaud, F.Palazzolo
+// copyright-holders:K.Wilkins,Couriersud,Derrick Renaud,Frank Palazzolo
#pragma once
#ifndef __DISCRETE_H__
@@ -3759,15 +3758,15 @@ public:
vector_t(int initial) {
m_count = 0;
m_allocated = initial;
- m_arr = global_alloc_array_clear(_ElementType, m_allocated);
+ m_arr = make_unique_clear<_ElementType[]>(m_allocated);
}
vector_t() {
m_count = 0;
m_allocated = 16;
- m_arr = global_alloc_array_clear(_ElementType, m_allocated);
+ m_arr = make_unique_clear<_ElementType[]>(m_allocated);
}
~vector_t() {
- global_free_array(m_arr);
+ m_arr = nullptr;
}
_ElementType& operator [] (unsigned int index) const // get array item
{
@@ -3780,7 +3779,7 @@ public:
if (m_allocated < 16)
m_allocated = 16;
m_count = a.count();
- m_arr = global_alloc_array_clear(_ElementType, m_allocated);
+ m_arr = make_unique_clear<_ElementType[]>(m_allocated);
for (int i=0; i < m_count; i++)
m_arr[i] = a[i];
}
@@ -3791,7 +3790,7 @@ public:
if (m_allocated < 16)
m_allocated = 16;
m_count = a.count();
- m_arr = global_alloc_array_clear(_ElementType, m_allocated);
+ m_arr = make_unique_clear<_ElementType[]>(m_allocated);
for (int i=0; i < m_count; i++)
m_arr[i] = a[i];
return *this;
@@ -3801,12 +3800,14 @@ public:
{
if (m_count >= m_allocated)
{
+ auto oldarr = make_unique_clear<_ElementType[]>(m_allocated);
+ for (int i = 0; i < m_count; i++)
+ oldarr[i] = m_arr[i];
+
m_allocated *= 2;
- auto newarr = global_alloc_array_clear(_ElementType, m_allocated);
- for (int i=0; i < m_count; i++)
- newarr[i] = m_arr[i];
- global_free_array(m_arr);
- m_arr = newarr;
+ m_arr = make_unique_clear<_ElementType[]>(m_allocated);
+ for (int i = 0; i < m_count; i++)
+ m_arr[i] = oldarr[i];
}
m_arr[m_count] = object;
m_count++;
@@ -3820,10 +3821,10 @@ public:
}
inline void clear(void) { m_count = 0; }
inline int count(void) const { return m_count; }
- inline _ElementType *begin_ptr(void) const { return m_arr; }
- inline _ElementType *end_ptr(void) const { return m_arr + (m_count - 1); }
+ inline _ElementType *begin_ptr(void) const { return m_arr.get(); }
+ inline _ElementType *end_ptr(void) const { return m_arr.get() + (m_count - 1); }
private:
- _ElementType *m_arr;
+ std::unique_ptr<_ElementType[]> m_arr;
int m_count;
int m_allocated;
};
@@ -4499,7 +4500,7 @@ public:
template <class C>
discrete_base_node * discrete_node_factory<C>::Create(discrete_device * pdev, const discrete_block *block)
{
- discrete_base_node *r = auto_alloc_clear(pdev->machine(), C);
+ discrete_base_node *r = auto_alloc_clear(pdev->machine(), <C>());
r->init(pdev, block);
return r;
diff --git a/src/devices/sound/dmadac.cpp b/src/devices/sound/dmadac.cpp
index 91e6216ef69..24e89835d06 100644
--- a/src/devices/sound/dmadac.cpp
+++ b/src/devices/sound/dmadac.cpp
@@ -47,7 +47,7 @@
void dmadac_sound_device::device_start()
{
/* allocate a clear a buffer */
- m_buffer = auto_alloc_array_clear(machine(), INT16, BUFFER_SIZE);
+ m_buffer = make_unique_clear<INT16[]>(BUFFER_SIZE);
/* reset the state */
m_volume = 0x100;
@@ -61,7 +61,7 @@ void dmadac_sound_device::device_start()
save_item(NAME(m_volume));
save_item(NAME(m_enabled));
save_item(NAME(m_frequency));
- save_pointer(NAME(m_buffer), BUFFER_SIZE);
+ save_pointer(NAME(m_buffer.get()), BUFFER_SIZE);
}
@@ -217,7 +217,7 @@ dmadac_sound_device::dmadac_sound_device(const machine_config &mconfig, const ch
void dmadac_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
stream_sample_t *output = outputs[0];
- INT16 *source = m_buffer;
+ INT16 *source = m_buffer.get();
UINT32 curout = m_bufout;
UINT32 curin = m_bufin;
int volume = m_volume;
diff --git a/src/devices/sound/dmadac.h b/src/devices/sound/dmadac.h
index c4be88e5596..6e0c4f47dd6 100644
--- a/src/devices/sound/dmadac.h
+++ b/src/devices/sound/dmadac.h
@@ -35,7 +35,7 @@ private:
// internal state
/* sound stream and buffers */
sound_stream * m_channel;
- INT16 * m_buffer;
+ std::unique_ptr<INT16[]> m_buffer;
UINT32 m_bufin;
UINT32 m_bufout;
diff --git a/src/devices/sound/es5506.cpp b/src/devices/sound/es5506.cpp
index 6e47ed7977d..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();
@@ -228,7 +257,7 @@ void es5506_device::device_start()
}
/* allocate memory */
- m_scratch = auto_alloc_array_clear(machine(), INT32, 2 * MAX_SAMPLE_CHUNK);
+ m_scratch = make_unique_clear<INT32[]>(2 * MAX_SAMPLE_CHUNK);
/* register save */
save_item(NAME(m_sample_rate));
@@ -243,7 +272,7 @@ void es5506_device::device_start()
save_item(NAME(m_lrend));
save_item(NAME(m_irqv));
- save_pointer(NAME(m_scratch), 2 * MAX_SAMPLE_CHUNK);
+ save_pointer(NAME(m_scratch.get()), 2 * MAX_SAMPLE_CHUNK);
for (j = 0; j < 32; j++)
{
@@ -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();
@@ -363,7 +400,7 @@ void es5505_device::device_start()
}
/* allocate memory */
- m_scratch = auto_alloc_array_clear(machine(), INT32, 2 * MAX_SAMPLE_CHUNK);
+ m_scratch = make_unique_clear<INT32[]>(2 * MAX_SAMPLE_CHUNK);
/* register save */
save_item(NAME(m_sample_rate));
@@ -378,7 +415,7 @@ void es5505_device::device_start()
save_item(NAME(m_lrend));
save_item(NAME(m_irqv));
- save_pointer(NAME(m_scratch), 2 * MAX_SAMPLE_CHUNK);
+ save_pointer(NAME(m_scratch.get()), 2 * MAX_SAMPLE_CHUNK);
for (j = 0; j < 32; j++)
{
@@ -452,7 +489,7 @@ void es550x_device::compute_tables()
int i;
/* allocate ulaw lookup table */
- m_ulaw_lookup = auto_alloc_array_clear(machine(), INT16, 1 << ULAW_MAXBITS);
+ m_ulaw_lookup = make_unique_clear<INT16[]>(1 << ULAW_MAXBITS);
/* generate ulaw lookup table */
for (i = 0; i < (1 << ULAW_MAXBITS); i++)
@@ -471,7 +508,7 @@ void es550x_device::compute_tables()
}
/* allocate volume lookup table */
- m_volume_lookup = auto_alloc_array_clear(machine(), UINT16, 4096);
+ m_volume_lookup = make_unique_clear<UINT16[]>(4096);
/* generate volume lookup table */
for (i = 0; i < 4096; i++)
@@ -2139,7 +2176,7 @@ inline UINT16 es5505_device::reg_read_test(es550x_voice *voice, offs_t offset)
READ16_MEMBER( es5505_device::read )
{
es550x_voice *voice = &m_voice[m_current_page & 0x1f];
- UINT16 result = 0;
+ UINT16 result;
if (LOG_COMMANDS && m_eslog)
fprintf(m_eslog, "read from %02x/%02x -> ", m_current_page, offset);
diff --git a/src/devices/sound/es5506.h b/src/devices/sound/es5506.h
index 3995a97c931..4ccc9d2d3f6 100644
--- a/src/devices/sound/es5506.h
+++ b/src/devices/sound/es5506.h
@@ -154,10 +154,10 @@ protected:
es550x_voice m_voice[32]; /* the 32 voices */
- INT32 * m_scratch;
+ std::unique_ptr<INT32[]> m_scratch;
- INT16 * m_ulaw_lookup;
- UINT16 * m_volume_lookup;
+ std::unique_ptr<INT16[]> m_ulaw_lookup;
+ std::unique_ptr<UINT16[]> m_volume_lookup;
#if MAKE_WAVS
void * m_wavraw; /* raw waveform */
diff --git a/src/devices/sound/flt_rc.cpp b/src/devices/sound/flt_rc.cpp
index af73f401e59..cf37a4fd6d8 100644
--- a/src/devices/sound/flt_rc.cpp
+++ b/src/devices/sound/flt_rc.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
#include "emu.h"
#include "flt_rc.h"
diff --git a/src/devices/sound/flt_rc.h b/src/devices/sound/flt_rc.h
index 8d8b1e0d4fb..79c1abfa2ca 100644
--- a/src/devices/sound/flt_rc.h
+++ b/src/devices/sound/flt_rc.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
#pragma once
diff --git a/src/devices/sound/flt_vol.cpp b/src/devices/sound/flt_vol.cpp
index c8aaffc9afe..e980b502b8e 100644
--- a/src/devices/sound/flt_vol.cpp
+++ b/src/devices/sound/flt_vol.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
#include "emu.h"
#include "flt_vol.h"
diff --git a/src/devices/sound/flt_vol.h b/src/devices/sound/flt_vol.h
index 44016c0da9a..f9b090002c3 100644
--- a/src/devices/sound/flt_vol.h
+++ b/src/devices/sound/flt_vol.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
#pragma once
diff --git a/src/devices/sound/fm.cpp b/src/devices/sound/fm.cpp
index 8aa9f157f91..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
@@ -1112,7 +1112,7 @@ static inline void advance_lfo(FM_OPN *OPN)
static void advance_eg_channel(FM_OPN *OPN, FM_SLOT *SLOT)
{
unsigned int out;
- unsigned int swap_flag = 0;
+ unsigned int swap_flag;
unsigned int i;
@@ -2263,7 +2263,7 @@ void * ym2203_init(void *param, device_t *device, int clock, int rate,
YM2203 *F2203;
/* allocate ym2203 state space */
- F2203 = auto_alloc_clear(device->machine(), YM2203);
+ F2203 = auto_alloc_clear(device->machine(), <YM2203>());
if( !init_tables() )
{
@@ -2941,7 +2941,7 @@ void * ym2608_init(void *param, device_t *device, int clock, int rate,
YM2608 *F2608;
/* allocate extend state space */
- F2608 = auto_alloc_clear(device->machine(), YM2608);
+ F2608 = auto_alloc_clear(device->machine(), <YM2608>());
/* allocate total level table (128kb space) */
if( !init_tables() )
{
@@ -2949,6 +2949,7 @@ void * ym2608_init(void *param, device_t *device, int clock, int rate,
return nullptr;
}
+ F2608->device = device;
F2608->OPN.ST.param = param;
F2608->OPN.type = TYPE_YM2608;
F2608->OPN.P_CH = F2608->CH;
@@ -3072,7 +3073,7 @@ void ym2608_reset_chip(void *chip)
DELTAT->output_pointer = OPN->out_delta;
DELTAT->portshift = 5; /* always 5bits shift */ /* ASG */
DELTAT->output_range = 1<<23;
- YM_DELTAT_ADPCM_Reset(DELTAT,OUTD_CENTER,YM_DELTAT_EMULATION_MODE_NORMAL,DELTAT->device);
+ YM_DELTAT_ADPCM_Reset(DELTAT,OUTD_CENTER,YM_DELTAT_EMULATION_MODE_NORMAL,F2608->device);
}
/* YM2608 write */
@@ -3622,7 +3623,7 @@ void *ym2610_init(void *param, device_t *device, int clock, int rate,
YM2610 *F2610;
/* allocate extend state space */
- F2610 = auto_alloc_clear(device->machine(), YM2610);
+ F2610 = auto_alloc_clear(device->machine(), <YM2610>());
/* allocate total level table (128kb space) */
if( !init_tables() )
{
@@ -3685,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 086198a9ec4..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
/*
**
@@ -2372,7 +2372,7 @@ void * ym2612_init(void *param, device_t *device, int clock, int rate,
YM2612 *F2612;
/* allocate extend state space */
- F2612 = auto_alloc_clear(device->machine(), YM2612);
+ F2612 = auto_alloc_clear(device->machine(), <YM2612>());
/* allocate total level table (128kb space) */
init_tables();
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/k005289.cpp b/src/devices/sound/k005289.cpp
index dc349b7e211..b49d97b1555 100644
--- a/src/devices/sound/k005289.cpp
+++ b/src/devices/sound/k005289.cpp
@@ -77,7 +77,7 @@ void k005289_device::device_start()
m_stream = stream_alloc(0, 1, m_rate);
/* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
- m_mixer_buffer = auto_alloc_array(machine(), short, 2 * m_rate);
+ m_mixer_buffer = std::make_unique<short[]>(2 * m_rate);
/* build the mixer table */
make_mixer_table(2);
@@ -113,7 +113,7 @@ void k005289_device::sound_stream_update(sound_stream &stream, stream_sample_t *
int i,v,f;
/* zap the contents of the mixer buffer */
- memset(m_mixer_buffer, 0, samples * sizeof(INT16));
+ memset(m_mixer_buffer.get(), 0, samples * sizeof(INT16));
v=m_volume[0];
f=m_frequency[0];
@@ -122,7 +122,7 @@ void k005289_device::sound_stream_update(sound_stream &stream, stream_sample_t *
const unsigned char *w = m_sound_prom + m_waveform[0];
int c = m_counter[0];
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
/* add our contribution */
for (i = 0; i < samples; i++)
@@ -145,7 +145,7 @@ void k005289_device::sound_stream_update(sound_stream &stream, stream_sample_t *
const unsigned char *w = m_sound_prom + m_waveform[1];
int c = m_counter[1];
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
/* add our contribution */
for (i = 0; i < samples; i++)
@@ -162,7 +162,7 @@ void k005289_device::sound_stream_update(sound_stream &stream, stream_sample_t *
}
/* mix it down */
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
for (i = 0; i < samples; i++)
*buffer++ = m_mixer_lookup[*mix++];
}
@@ -180,10 +180,10 @@ void k005289_device::make_mixer_table(int voices)
int gain = 16;
/* allocate memory */
- m_mixer_table = auto_alloc_array(machine(), INT16, 256 * voices);
+ m_mixer_table = std::make_unique<INT16[]>(256 * voices);
/* find the middle of the table */
- m_mixer_lookup = m_mixer_table + (128 * voices);
+ m_mixer_lookup = m_mixer_table.get() + (128 * voices);
/* fill in the table - 16 bit case */
for (i = 0; i < count; i++)
diff --git a/src/devices/sound/k005289.h b/src/devices/sound/k005289.h
index 9112ca5458f..24f84638263 100644
--- a/src/devices/sound/k005289.h
+++ b/src/devices/sound/k005289.h
@@ -48,9 +48,9 @@ private:
int m_rate;
/* mixer tables and internal buffers */
- INT16 *m_mixer_table;
+ std::unique_ptr<INT16[]> m_mixer_table;
INT16 *m_mixer_lookup;
- short *m_mixer_buffer;
+ std::unique_ptr<short[]> m_mixer_buffer;
UINT32 m_counter[2];
UINT16 m_frequency[2];
diff --git a/src/devices/sound/k007232.cpp b/src/devices/sound/k007232.cpp
index 767cd904357..cc25519e4b9 100644
--- a/src/devices/sound/k007232.cpp
+++ b/src/devices/sound/k007232.cpp
@@ -310,7 +310,7 @@ WRITE8_MEMBER( k007232_device::write )
READ8_MEMBER( k007232_device::read )
{
int r = offset;
- int ch = 0;
+ int ch;
if( r == 0x0005 || r == 0x000b ){
ch = r/0x0006;
diff --git a/src/devices/sound/k051649.cpp b/src/devices/sound/k051649.cpp
index 05c8fffae3f..dde61572d44 100644
--- a/src/devices/sound/k051649.cpp
+++ b/src/devices/sound/k051649.cpp
@@ -69,7 +69,7 @@ void k051649_device::device_start()
m_mclock = clock();
// allocate a buffer to mix into - 1 second's worth should be more than enough
- m_mixer_buffer = auto_alloc_array(machine(), short, 2 * m_rate);
+ m_mixer_buffer = std::make_unique<short[]>(2 * m_rate);
// build the mixer table
make_mixer_table(5);
@@ -111,7 +111,7 @@ void k051649_device::sound_stream_update(sound_stream &stream, stream_sample_t *
int i,j;
// zap the contents of the mixer buffer
- memset(m_mixer_buffer, 0, samples * sizeof(short));
+ memset(m_mixer_buffer.get(), 0, samples * sizeof(short));
for (j = 0; j < 5; j++)
{
@@ -123,7 +123,7 @@ void k051649_device::sound_stream_update(sound_stream &stream, stream_sample_t *
int c=voice[j].counter;
int step = ((INT64)m_mclock * (1 << FREQ_BITS)) / (float)((voice[j].frequency + 1) * 16 * (m_rate / 32)) + 0.5f;
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
// add our contribution
for (i = 0; i < samples; i++)
@@ -141,7 +141,7 @@ void k051649_device::sound_stream_update(sound_stream &stream, stream_sample_t *
}
// mix it down
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
for (i = 0; i < samples; i++)
*buffer++ = m_mixer_lookup[*mix++];
}
@@ -272,10 +272,10 @@ void k051649_device::make_mixer_table(int voices)
int i;
// allocate memory
- m_mixer_table = auto_alloc_array(machine(), INT16, 512 * voices);
+ m_mixer_table = std::make_unique<INT16[]>(512 * voices);
// find the middle of the table
- m_mixer_lookup = m_mixer_table + (256 * voices);
+ m_mixer_lookup = m_mixer_table.get() + (256 * voices);
// fill in the table - 16 bit case
for (i = 0; i < (voices * 256); i++)
diff --git a/src/devices/sound/k051649.h b/src/devices/sound/k051649.h
index 4fec1b7659f..f5e4997f02c 100644
--- a/src/devices/sound/k051649.h
+++ b/src/devices/sound/k051649.h
@@ -81,9 +81,9 @@ private:
int m_rate;
/* mixer tables and internal buffers */
- INT16 *m_mixer_table;
+ std::unique_ptr<INT16[]> m_mixer_table;
INT16 *m_mixer_lookup;
- short *m_mixer_buffer;
+ std::unique_ptr<short[]> m_mixer_buffer;
/* chip registers */
UINT8 m_test;
diff --git a/src/devices/sound/k053260.cpp b/src/devices/sound/k053260.cpp
index 134598a1f7c..f3ebc4b2445 100644
--- a/src/devices/sound/k053260.cpp
+++ b/src/devices/sound/k053260.cpp
@@ -274,7 +274,6 @@ void k053260_device::sound_stream_update(sound_stream &stream, stream_sample_t *
for (auto & voice : m_voice)
{
-
if (voice.playing())
voice.play(buffer);
}
diff --git a/src/devices/sound/k053260.h b/src/devices/sound/k053260.h
index 5f64ce86ad3..ace87855740 100644
--- a/src/devices/sound/k053260.h
+++ b/src/devices/sound/k053260.h
@@ -70,6 +70,10 @@ private:
class KDSC_Voice
{
public:
+ KDSC_Voice() : m_device(nullptr), m_position(0), m_counter(0), m_output(0), m_playing(false), m_start(0), m_length(0), m_pitch(0), m_volume(0), m_pan(0), m_loop(false), m_kadpcm(false)
+ {
+ }
+
inline void voice_start(k053260_device &device, int index);
inline void voice_reset();
inline void set_register(offs_t offset, UINT8 data);
diff --git a/src/devices/sound/k054539.cpp b/src/devices/sound/k054539.cpp
index e619e53a0bd..5270f5b80d6 100644
--- a/src/devices/sound/k054539.cpp
+++ b/src/devices/sound/k054539.cpp
@@ -105,7 +105,7 @@ void k054539_device::sound_stream_update(sound_stream &stream, stream_sample_t *
};
- INT16 *rbase = (INT16 *)ram;
+ INT16 *rbase = (INT16 *)ram.get();
if(!(regs[0x22f] & 1))
return;
@@ -306,10 +306,10 @@ void k054539_device::init_chip()
memset(posreg_latch, 0, sizeof(posreg_latch)); //*
flags |= UPDATE_AT_KEYON; //* make it default until proven otherwise
- ram = auto_alloc_array(machine(), unsigned char, 0x4000);
+ ram = std::make_unique<UINT8[]>(0x4000);
reverb_pos = 0;
cur_ptr = 0;
- memset(ram, 0, 0x4000);
+ memset(ram.get(), 0, 0x4000);
memory_region *reg = (m_rgnoverride != nullptr) ? owner()->memregion(m_rgnoverride) : region();
rom = reg->base();
@@ -324,7 +324,7 @@ void k054539_device::init_chip()
stream = stream_alloc(0, 2, clock() / 384);
save_item(NAME(regs));
- save_pointer(NAME(ram), 0x4000);
+ save_pointer(NAME(ram.get()), 0x4000);
save_item(NAME(cur_ptr));
}
@@ -428,7 +428,7 @@ WRITE8_MEMBER(k054539_device::write)
case 0x22e:
cur_zone =
- data == 0x80 ? ram :
+ data == 0x80 ? ram.get() :
rom + 0x20000*data;
cur_limit = data == 0x80 ? 0x4000 : 0x20000;
cur_ptr = 0;
@@ -466,7 +466,7 @@ WRITE8_MEMBER(k054539_device::write)
void k054539_device::device_post_load()
{
int data = regs[0x22e];
- cur_zone = data == 0x80 ? ram : rom + 0x20000*data;
+ cur_zone = data == 0x80 ? ram.get() : rom + 0x20000*data;
cur_limit = data == 0x80 ? 0x4000 : 0x20000;
}
diff --git a/src/devices/sound/k054539.h b/src/devices/sound/k054539.h
index dea41388837..fd196d306b8 100644
--- a/src/devices/sound/k054539.h
+++ b/src/devices/sound/k054539.h
@@ -94,7 +94,7 @@ private:
int flags;
unsigned char regs[0x230];
- unsigned char *ram;
+ std::unique_ptr<UINT8[]> ram;
int reverb_pos;
INT32 cur_ptr;
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/mos6560.cpp b/src/devices/sound/mos6560.cpp
index 61ca40f5829..f7c31e96ea9 100644
--- a/src/devices/sound/mos6560.cpp
+++ b/src/devices/sound/mos6560.cpp
@@ -626,7 +626,7 @@ void mos6560_device::sound_start()
/* buffer for fastest played sample for 5 second so we have enough data for min 5 second */
m_noisesize = NOISE_FREQUENCY_MAX * NOISE_BUFFER_SIZE_SEC;
- m_noise = auto_alloc_array(machine(), INT8, m_noisesize);
+ m_noise = std::make_unique<INT8[]>(m_noisesize);
{
int noiseshift = 0x7ffff8;
char data;
@@ -661,7 +661,7 @@ void mos6560_device::sound_start()
if (m_tonesize > 0)
{
- m_tone = auto_alloc_array(machine(), INT16, m_tonesize);
+ m_tone = std::make_unique<INT16[]>(m_tonesize);
for (i = 0; i < m_tonesize; i++)
{
diff --git a/src/devices/sound/mos6560.h b/src/devices/sound/mos6560.h
index c5259f72659..d84897027d5 100644
--- a/src/devices/sound/mos6560.h
+++ b/src/devices/sound/mos6560.h
@@ -223,8 +223,8 @@ protected:
m_noisesamples; /* count of samples to give out per tone */
sound_stream *m_channel;
- INT16 *m_tone;
- INT8 *m_noise;
+ std::unique_ptr<INT16[]> m_tone;
+ std::unique_ptr<INT8[]> m_noise;
emu_timer *m_line_timer;
};
diff --git a/src/devices/sound/mos6581.cpp b/src/devices/sound/mos6581.cpp
index 89ed5e375c8..6f9a4ae24cb 100644
--- a/src/devices/sound/mos6581.cpp
+++ b/src/devices/sound/mos6581.cpp
@@ -45,7 +45,7 @@ mos6581_device::mos6581_device(const machine_config &mconfig, device_type type,
m_stream(nullptr),
m_variant(variant)
{
- m_token = global_alloc_clear(SID6581_t);
+ m_token = global_alloc_clear<SID6581_t>();
}
mos6581_device::mos6581_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
@@ -56,7 +56,7 @@ mos6581_device::mos6581_device(const machine_config &mconfig, const char *tag, d
m_stream(nullptr),
m_variant(TYPE_6581)
{
- m_token = global_alloc_clear(SID6581_t);
+ m_token = global_alloc_clear<SID6581_t>();
}
mos6581_device::~mos6581_device()
@@ -126,7 +126,7 @@ void mos6581_device::sound_stream_update(sound_stream &stream, stream_sample_t *
READ8_MEMBER( mos6581_device::read )
{
- UINT8 data = 0;
+ UINT8 data;
switch (offset & 0x1f)
{
diff --git a/src/devices/sound/mos7360.cpp b/src/devices/sound/mos7360.cpp
index 1be8535b417..6478d931111 100644
--- a/src/devices/sound/mos7360.cpp
+++ b/src/devices/sound/mos7360.cpp
@@ -297,7 +297,7 @@ void mos7360_device::device_start()
// buffer for fastest played sample for 5 second so we have enough data for min 5 second
m_noisesize = NOISE_FREQUENCY_MAX * NOISE_BUFFER_SIZE_SEC;
- m_noise = auto_alloc_array(machine(), UINT8, m_noisesize);
+ m_noise = std::make_unique<UINT8[]>(m_noisesize);
{
int noiseshift = 0x7ffff8;
diff --git a/src/devices/sound/mos7360.h b/src/devices/sound/mos7360.h
index f1d755981b2..cba7b398762 100644
--- a/src/devices/sound/mos7360.h
+++ b/src/devices/sound/mos7360.h
@@ -185,7 +185,7 @@ protected:
double m_rastertime;
/* sound part */
- UINT8 *m_noise;
+ std::unique_ptr<UINT8[]> m_noise;
int m_tone1pos, m_tone2pos,
m_tone1samples, m_tone2samples,
m_noisesize, /* number of samples */
diff --git a/src/devices/sound/mpeg_audio.h b/src/devices/sound/mpeg_audio.h
index 615116b6021..428d18f63bc 100644
--- a/src/devices/sound/mpeg_audio.h
+++ b/src/devices/sound/mpeg_audio.h
@@ -54,9 +54,6 @@ public:
// Clear audio buffer
void clear();
- // Change the base pointer
- void set_base(const void *base);
-
private:
struct limit_hit {};
@@ -94,8 +91,6 @@ private:
double audio_buffer[2][32*32];
int audio_buffer_pos[2];
- int master_pos;
-
int current_pos, current_limit;
void read_header_amm(bool layer25);
@@ -111,7 +106,6 @@ private:
void build_amplitudes();
void build_next_segments(int step);
void retrieve_subbuffer(int step);
- void handle_block(int &pos);
void idct32(const double *input, double *output);
void resynthesis(const double *input, double *output);
void scale_and_clamp(const double *input, short *output, int step);
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/multipcm.h b/src/devices/sound/multipcm.h
index 388dfe6b84c..3abb6bd214e 100644
--- a/src/devices/sound/multipcm.h
+++ b/src/devices/sound/multipcm.h
@@ -126,7 +126,6 @@ private:
// Internal LFO functions
void lfo_init();
- INT32 lfo_float_to_fixed(const float value);
void lfo_compute_step(lfo_t *lfo, UINT32 lfo_frequency, UINT32 LFOS, INT32 amplitude_lfo);
INT32 pitch_lfo_step(lfo_t *lfo);
INT32 amplitude_lfo_step(lfo_t *lfo);
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/pokey.cpp b/src/devices/sound/pokey.cpp
index e38b92dd6b3..b23980c8b05 100644
--- a/src/devices/sound/pokey.cpp
+++ b/src/devices/sound/pokey.cpp
@@ -802,7 +802,7 @@ READ8_MEMBER( pokey_device::read )
UINT8 pokey_device::read(offs_t offset)
{
- int data = 0, pot;
+ int data, pot;
synchronize(SYNC_NOOP); /* force resync */
diff --git a/src/devices/sound/qs1000.cpp b/src/devices/sound/qs1000.cpp
index 44ff9017ea4..a892945adad 100644
--- a/src/devices/sound/qs1000.cpp
+++ b/src/devices/sound/qs1000.cpp
@@ -488,8 +488,6 @@ void qs1000_device::sound_stream_update(sound_stream &stream, stream_sample_t **
// Iterate over voices and accumulate sample data
for (auto & chan : m_channels)
{
-
-
UINT8 lvol = chan.m_regs[6];
UINT8 rvol = chan.m_regs[7];
UINT8 vol = chan.m_regs[8];
diff --git a/src/devices/sound/qs1000.h b/src/devices/sound/qs1000.h
index a807071fe22..1543a01b057 100644
--- a/src/devices/sound/qs1000.h
+++ b/src/devices/sound/qs1000.h
@@ -112,7 +112,6 @@ public:
};
void start_voice(int ch);
- void set_voice_regs(int ch);
bool m_external_rom;
diff --git a/src/devices/sound/qsound.cpp b/src/devices/sound/qsound.cpp
index c9bd30d3e74..cc5fc28560a 100644
--- a/src/devices/sound/qsound.cpp
+++ b/src/devices/sound/qsound.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Miguel Angel Horna
/***************************************************************************
@@ -224,7 +224,7 @@ READ8_MEMBER(qsound_device::qsound_r)
void qsound_device::write_data(UINT8 address, UINT16 data)
{
- int ch = 0, reg = 0;
+ int ch = 0, reg;
// direct sound reg
if (address < 0x80)
diff --git a/src/devices/sound/qsound.h b/src/devices/sound/qsound.h
index d17511455d7..cd90136238e 100644
--- a/src/devices/sound/qsound.h
+++ b/src/devices/sound/qsound.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Miguel Angel Horna
/*********************************************************
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 86131138697..97025b8c3c1 100644
--- a/src/devices/sound/s14001a.h
+++ b/src/devices/sound/s14001a.h
@@ -1,26 +1,38 @@
-// license:LGPL-2.1+
-// copyright-holders:Jonathan Gevaryahu,R. Belmont,Zsolt Vasvari
-#pragma once
+// license:BSD-3-Clause
+// 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,35 +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
-
- INT16 audiofilter();
- void shiftIntoFilter(INT16 inputvalue);
- 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/saa1099.cpp b/src/devices/sound/saa1099.cpp
index f1986196ddf..22ec858a36c 100644
--- a/src/devices/sound/saa1099.cpp
+++ b/src/devices/sound/saa1099.cpp
@@ -63,13 +63,6 @@
0x1c | ---- ---x | All channels enable (0 = off, 1 = on)
0x1c | ---- --x- | Synch & Reset generators
- Version History:
- ================
- ??-??-200? - First version of the driver submitted for MESS (GPL/MESS license)
- ??-??-200? - Submitted to DOSBOX for Creative Music System/Game Blaster emulation
- ??-??-201? - Driver relicensed to BSD 3 Clause (GPL+ compatible)
- 06-27-2015 - Applied clock divisor fix from DOSBOX SVN, http://www.vogons.org/viewtopic.php?p=344227#p344227
-
***************************************************************************/
#include "emu.h"
diff --git a/src/devices/sound/scsp.cpp b/src/devices/sound/scsp.cpp
index 10868deb158..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;
}
@@ -540,10 +543,10 @@ void scsp_device::init()
int iTL =(i>>0x0)&0xff;
int iPAN=(i>>0x8)&0x1f;
int iSDL=(i>>0xD)&0x07;
- float TL=1.0f;
+ float TL;
float SegaDB=0.0f;
- float fSDL=1.0f;
- float PAN=1.0f;
+ float fSDL;
+ float PAN;
float LPAN,RPAN;
if(iTL&0x01) SegaDB-=0.4f;
@@ -617,8 +620,8 @@ void scsp_device::init()
}
LFO_Init();
- m_buffertmpl=auto_alloc_array_clear(machine(), signed int, 44100);
- m_buffertmpr=auto_alloc_array_clear(machine(), signed int, 44100);
+ m_buffertmpl=make_unique_clear<INT32[]>(44100);
+ m_buffertmpr=make_unique_clear<INT32[]>(44100);
// no "pend"
m_udata.data[0x20/2] = 0;
diff --git a/src/devices/sound/scsp.h b/src/devices/sound/scsp.h
index d2242958ff5..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,18 +112,19 @@ 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;
- INT32 *m_buffertmpl,*m_buffertmpr;
+ std::unique_ptr<INT32[]> m_buffertmpl;
+ std::unique_ptr<INT32[]> m_buffertmpr;
UINT32 m_IrqTimA;
UINT32 m_IrqTimBC;
@@ -166,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];
@@ -175,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();
@@ -190,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/scspdsp.cpp b/src/devices/sound/scspdsp.cpp
index 75b30cfe85a..9989e48b08a 100644
--- a/src/devices/sound/scspdsp.cpp
+++ b/src/devices/sound/scspdsp.cpp
@@ -65,14 +65,14 @@ void SCSPDSP_Step(SCSPDSP *DSP)
{
INT32 ACC=0; //26 bit
INT32 SHIFTED=0; //24 bit
- INT32 X=0; //24 bit
+ INT32 X; //24 bit
INT32 Y=0; //13 bit
- INT32 B=0; //26 bit
- INT32 INPUTS=0; //24 bit
+ INT32 B; //26 bit
+ INT32 INPUTS; //24 bit
INT32 MEMVAL=0;
INT32 FRC_REG=0; //13 bit
INT32 Y_REG=0; //24 bit
- UINT32 ADDR=0;
+ UINT32 ADDR;
UINT32 ADRS_REG=0; //13 bit
int step;
diff --git a/src/devices/sound/segapcm.cpp b/src/devices/sound/segapcm.cpp
index 8e92167c708..555ee019b16 100644
--- a/src/devices/sound/segapcm.cpp
+++ b/src/devices/sound/segapcm.cpp
@@ -37,16 +37,16 @@ void segapcm_device::device_start()
{
int mask, rom_mask;
- m_ram = auto_alloc_array(machine(), UINT8, 0x800);
+ m_ram = std::make_unique<UINT8[]>(0x800);
- memset(m_ram, 0xff, 0x800);
+ memset(m_ram.get(), 0xff, 0x800);
m_bankshift = (UINT8) m_bank;
mask = m_bank >> 16;
if (!mask)
mask = BANK_MASK7 >> 16;
- for(rom_mask = 1; rom_mask < m_rom.length(); rom_mask *= 2);
+ for(rom_mask = 1; rom_mask < m_rom.length(); rom_mask *= 2) { };
rom_mask--;
m_bankmask = mask & (rom_mask >> m_bankshift);
@@ -54,7 +54,7 @@ void segapcm_device::device_start()
m_stream = stream_alloc(0, 2, clock() / 128);
save_item(NAME(m_low));
- save_pointer(NAME(m_ram), 0x800);
+ save_pointer(NAME(m_ram.get()), 0x800);
}
@@ -92,7 +92,7 @@ void segapcm_device::sound_stream_update(sound_stream &stream, stream_sample_t *
/* loop over channels */
for (int ch = 0; ch < 16; ch++)
{
- UINT8 *regs = m_ram+8*ch;
+ UINT8 *regs = m_ram.get()+8*ch;
/* only process active channels */
if (!(regs[0x86]&1))
@@ -106,7 +106,7 @@ void segapcm_device::sound_stream_update(sound_stream &stream, stream_sample_t *
/* loop over samples on this channel */
for (i = 0; i < samples; i++)
{
- INT8 v = 0;
+ INT8 v;
/* handle looping if we've hit the end */
if ((addr >> 16) == end)
diff --git a/src/devices/sound/segapcm.h b/src/devices/sound/segapcm.h
index a56a9062688..48474134b46 100644
--- a/src/devices/sound/segapcm.h
+++ b/src/devices/sound/segapcm.h
@@ -56,7 +56,7 @@ protected:
private:
required_region_ptr<UINT8> m_rom;
- UINT8* m_ram;
+ std::unique_ptr<UINT8[]> m_ram;
UINT8 m_low[16];
int m_bank;
int m_bankshift;
diff --git a/src/devices/sound/sid.cpp b/src/devices/sound/sid.cpp
index d040702eeae..a2a406c13d6 100644
--- a/src/devices/sound/sid.cpp
+++ b/src/devices/sound/sid.cpp
@@ -19,8 +19,8 @@
#include "sidenvel.h"
#include "sid.h"
-static float *filterTable;
-static float *bandPassParam;
+static std::unique_ptr<float[]> filterTable;
+static std::unique_ptr<float[]> bandPassParam;
#define lowPassParam filterTable
static float filterResTable[16];
@@ -168,8 +168,8 @@ static void filterTableInit(running_machine &machine)
float resDyMin;
float resDy;
- filterTable = auto_alloc_array(machine, float, 0x800);
- bandPassParam = auto_alloc_array(machine, float, 0x800);
+ filterTable = std::make_unique<float[]>(0x800);
+ bandPassParam = std::make_unique<float[]>(0x800);
uk = 0;
for ( rk = 0; rk < 0x800; rk++ )
diff --git a/src/devices/sound/sidvoice.cpp b/src/devices/sound/sidvoice.cpp
index 3104f69d680..33f4039891a 100644
--- a/src/devices/sound/sidvoice.cpp
+++ b/src/devices/sound/sidvoice.cpp
@@ -23,7 +23,7 @@ static const UINT8* waveform70;
static UINT8 noiseTableLSB[1<<8];
#endif
-static INT8* ampMod1x8;
+static std::unique_ptr<INT8[]> ampMod1x8;
static const UINT32 noiseSeed = 0x7ffff8;
@@ -35,7 +35,7 @@ void sidInitMixerEngine(running_machine &machine)
/* 8-bit volume modulation tables. */
float filterAmpl = 0.7f;
- ampMod1x8=auto_alloc_array(machine, INT8, 256*256);
+ ampMod1x8=std::make_unique<INT8[]>(256*256);
uk = 0;
for ( si = 0; si < 256; si++ )
diff --git a/src/devices/sound/sn76477.cpp b/src/devices/sound/sn76477.cpp
index bc89db04447..e1fe3f4d3fc 100644
--- a/src/devices/sound/sn76477.cpp
+++ b/src/devices/sound/sn76477.cpp
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Zsolt Vasvari
+// thanks-to:Derrick Renaud
/*****************************************************************************
Texas Instruments SN76477 emulator
@@ -15,6 +16,9 @@
application at http://zunzun.com to come up with the functions.
Known issues/to-do's:
+ * Use RES_INF for unconnected resistor pins and treat 0 as a short
+ circuit
+
* VCO
* confirm value of VCO_MAX_EXT_VOLTAGE, VCO_TO_SLF_VOLTAGE_DIFF
VCO_CAP_VOLTAGE_MIN and VCO_CAP_VOLTAGE_MAX
@@ -22,11 +26,15 @@
* get real formulas for VCO cap charging and discharging
* get real formula for VCO duty cycle
* what happens if no vco_res
- * what happens if no vco_cap
+ * what happens if no vco_cap (needed for laserbat/lazarian)
* Attack/Decay
* get real formulas for a/d cap charging and discharging
+ * Output
+ * what happens if output is taken at pin 12 with no feedback_res
+ (needed for laserbat/lazarian)
+
*****************************************************************************/
#include "emu.h"
@@ -68,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))
/*****************************************************************************
*
@@ -158,28 +149,28 @@ sn76477_device::sn76477_device(const machine_config &mconfig, const char *tag, d
m_envelope_mode(0),
m_vco_mode(0),
m_mixer_mode(0),
- m_one_shot_res(0),
+ m_one_shot_res(RES_INF),
m_one_shot_cap(0),
m_one_shot_cap_voltage_ext(0),
- m_slf_res(0),
+ m_slf_res(RES_INF),
m_slf_cap(0),
m_slf_cap_voltage_ext(0),
m_vco_voltage(0),
- m_vco_res(0),
+ m_vco_res(RES_INF),
m_vco_cap(0),
m_vco_cap_voltage_ext(0),
- m_noise_clock_res(0),
+ m_noise_clock_res(RES_INF),
m_noise_clock_ext(0),
m_noise_clock(0),
- m_noise_filter_res(0),
+ m_noise_filter_res(RES_INF),
m_noise_filter_cap(0),
m_noise_filter_cap_voltage_ext(0),
- m_attack_res(0),
- m_decay_res(0),
+ m_attack_res(RES_INF),
+ m_decay_res(RES_INF),
m_attack_decay_cap(0),
m_attack_decay_cap_voltage_ext(0),
- m_amplitude_res(0),
- m_feedback_res(0),
+ m_amplitude_res(RES_INF),
+ m_feedback_res(RES_INF),
m_pitch_voltage(0),
m_one_shot_cap_voltage(0),
m_one_shot_running_ff(0),
@@ -225,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;
@@ -958,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
-}
-
-
/*****************************************************************************
*
@@ -1004,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
@@ -1225,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)
{
@@ -1253,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
@@ -1328,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)
{
@@ -1356,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
@@ -1429,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)
{
@@ -1457,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
@@ -1532,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)
{
@@ -1548,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
@@ -1661,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)
{
@@ -1689,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
@@ -1793,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)
{
@@ -1823,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
@@ -1974,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 7d19a442453..849229c22d7 100644
--- a/src/devices/sound/sn76477.h
+++ b/src/devices/sound/sn76477.h
@@ -63,7 +63,7 @@
sn76477_device::set_amp_res(*device, _amp_res);
#define MCFG_SN76477_FEEDBACK_RES(_feedback_res) \
- sn76477_device::set_feedack_res(*device, _feedback_res);
+ sn76477_device::set_feedback_res(*device, _feedback_res);
#define MCFG_SN76477_VCO_PARAMS(_volt, _cap, _res) \
sn76477_device::set_vco_params(*device, _volt, _cap, _res);
@@ -111,7 +111,7 @@ public:
dev.m_attack_res = res;
}
static void set_amp_res(device_t &device, double amp_res) { downcast<sn76477_device &>(device).m_amplitude_res = amp_res; }
- static void set_feedack_res(device_t &device, double feedback_res) { downcast<sn76477_device &>(device).m_feedback_res = feedback_res; }
+ static void set_feedback_res(device_t &device, double feedback_res) { downcast<sn76477_device &>(device).m_feedback_res = feedback_res; }
static void set_vco_params(device_t &device, double volt, double cap, double res)
{
sn76477_device &dev = downcast<sn76477_device &>(device);
@@ -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/sn76496.cpp b/src/devices/sound/sn76496.cpp
index 305daa62b5b..f39fc04bc38 100644
--- a/src/devices/sound/sn76496.cpp
+++ b/src/devices/sound/sn76496.cpp
@@ -335,7 +335,7 @@ void sn76496_base_device::sound_stream_update(sound_stream &stream, stream_sampl
stream_sample_t *lbuffer = outputs[0];
stream_sample_t *rbuffer = (m_stereo)? outputs[1] : nullptr;
- INT16 out = 0;
+ INT16 out;
INT16 out2 = 0;
while (samples > 0)
diff --git a/src/devices/sound/sp0256.cpp b/src/devices/sound/sp0256.cpp
index 1ba54669ab2..f009516a807 100644
--- a/src/devices/sound/sp0256.cpp
+++ b/src/devices/sound/sp0256.cpp
@@ -125,8 +125,8 @@ void sp0256_device::device_start()
/* -------------------------------------------------------------------- */
/* Allocate a scratch buffer for generating ~10kHz samples. */
/* -------------------------------------------------------------------- */
- m_scratch = auto_alloc_array(machine(), INT16, SCBUF_SIZE);
- save_pointer(NAME(m_scratch), SCBUF_SIZE);
+ m_scratch = std::make_unique<INT16[]>(SCBUF_SIZE);
+ save_pointer(NAME(m_scratch.get()), SCBUF_SIZE);
m_sc_head = m_sc_tail = 0;
@@ -759,7 +759,7 @@ void sp0256_device::bitrevbuff(UINT8 *buffer, unsigned int start, unsigned int l
/* ======================================================================== */
UINT32 sp0256_device::getb( int len )
{
- UINT32 data = 0;
+ UINT32 data;
UINT32 d0, d1;
/* -------------------------------------------------------------------- */
@@ -822,8 +822,8 @@ void sp0256_device::micro()
UINT8 immed4;
UINT8 opcode;
UINT16 cr;
- int ctrl_xfer = 0;
- int repeat = 0;
+ int ctrl_xfer;
+ int repeat;
int i, idx0, idx1;
/* -------------------------------------------------------------------- */
@@ -1357,7 +1357,7 @@ void sp0256_device::sound_stream_update(sound_stream &stream, stream_sample_t **
else
{
did_samp += lpc12_update(&m_filt, do_samp,
- m_scratch, &m_sc_head);
+ m_scratch.get(), &m_sc_head);
}
m_sc_head &= SCBUF_MASK;
diff --git a/src/devices/sound/sp0256.h b/src/devices/sound/sp0256.h
index c1e486883d6..c7215cb4e6c 100644
--- a/src/devices/sound/sp0256.h
+++ b/src/devices/sound/sp0256.h
@@ -108,7 +108,7 @@ private:
int m_silent; /* Flag: SP0256 is silent. */
- INT16 *m_scratch; /* Scratch buffer for audio. */
+ std::unique_ptr<INT16[]> m_scratch; /* Scratch buffer for audio. */
UINT32 m_sc_head; /* Head pointer into scratch circular buf */
UINT32 m_sc_tail; /* Tail pointer into scratch circular buf */
diff --git a/src/devices/sound/spu.cpp b/src/devices/sound/spu.cpp
index 50276f3c486..3686fab3f9d 100644
--- a/src/devices/sound/spu.cpp
+++ b/src/devices/sound/spu.cpp
@@ -1147,7 +1147,7 @@ void spu_device::kill_sound()
READ16_MEMBER( spu_device::read )
{
- unsigned short ret=0, *rp=(unsigned short *)(reg+((offset*2)&0x1ff));
+ unsigned short ret, *rp=(unsigned short *)(reg+((offset*2)&0x1ff));
m_stream->update();
diff --git a/src/devices/sound/spu.h b/src/devices/sound/spu.h
index 4c0a090bd71..6381464c7cd 100644
--- a/src/devices/sound/spu.h
+++ b/src/devices/sound/spu.h
@@ -165,7 +165,6 @@ protected:
void *fmnoise_ptr,
void *outxptr,
unsigned int *tleft);
- void process();
void process_until(const unsigned int tsample);
void update_voice_loop(const unsigned int v);
bool update_voice_state(const unsigned int v);
@@ -233,8 +232,6 @@ public:
void reinit_sound();
void kill_sound();
- void update();
-
void start_dma(UINT8 *mainram, bool to_spu, UINT32 size);
bool play_xa(const unsigned int sector, const unsigned char *sec);
bool play_cdda(const unsigned int sector, const unsigned char *sec);
diff --git a/src/devices/sound/spureverb.h b/src/devices/sound/spureverb.h
index 8a8cb040ba8..9f64c5c7f19 100644
--- a/src/devices/sound/spureverb.h
+++ b/src/devices/sound/spureverb.h
@@ -66,7 +66,6 @@
const int wetvol_r,
const unsigned int sz);
- void reset();
};
#endif
diff --git a/src/devices/sound/tiasound.cpp b/src/devices/sound/tiasound.cpp
index 960520b6b79..71b7b5a107e 100644
--- a/src/devices/sound/tiasound.cpp
+++ b/src/devices/sound/tiasound.cpp
@@ -162,7 +162,7 @@ static const UINT8 Div31[POLY5_SIZE] =
void tia_write(void *_chip, offs_t offset, UINT8 data)
{
struct tia *chip = (struct tia *)_chip;
- UINT16 new_val = 0;
+ UINT16 new_val;
UINT8 chan;
/* determine which address was changed */
@@ -564,7 +564,7 @@ void *tia_sound_init(device_t *device, int clock, int sample_rate, int gain)
struct tia *chip;
int chan;
- chip = global_alloc_clear(struct tia);
+ chip = global_alloc_clear<struct tia>();
/* set the gain factor (normally use TIA_DEFAULT_GAIN) */
chip->tia_gain = gain;
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 5b5eb3c5124..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
@@ -66,10 +66,6 @@ public:
DECLARE_READ8_MEMBER( romclk_hack_r );
void set_frequency(int frequency);
-
- int _speech_rom_read_bit();
- void _speech_rom_set_addr(int addr);
-
protected:
// device-level overrides
virtual void device_start() override;
@@ -101,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 */
@@ -195,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/vrender0.cpp b/src/devices/sound/vrender0.cpp
index e063daf3d42..7226f35d304 100644
--- a/src/devices/sound/vrender0.cpp
+++ b/src/devices/sound/vrender0.cpp
@@ -161,7 +161,7 @@ void vrender0_device::VR0_RenderAudio(int nsamples, stream_sample_t *l, stream_s
{
INT16 *SAMPLES;
UINT32 st=STATUS;
- signed int lsample=0,rsample=0;
+ signed int lsample,rsample=0;
UINT32 CLK=(m_SOUNDREGS[0x600/4]>>0)&0xff;
UINT32 NCH=(m_SOUNDREGS[0x600/4]>>8)&0xff;
UINT32 CT1=(m_SOUNDREGS[0x600/4]>>16)&0xff;
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 7573bfa4323..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
/*
**
@@ -2008,7 +2008,7 @@ static YM2413 *OPLLCreate(device_t *device, int clock, int rate)
if (OPLL_LockTable(device) == -1) return nullptr;
/* allocate memory block */
- chip = auto_alloc_clear(device->machine(), YM2413);
+ chip = auto_alloc_clear(device->machine(), <YM2413>());
chip->device = device;
chip->clock = clock;
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 84f0c22466d..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
/*
**
@@ -2342,7 +2342,7 @@ static OPL3 *OPL3Create(device_t *device, int clock, int rate, int type)
if (OPL3_LockTable(device) == -1) return nullptr;
/* allocate memory block */
- chip = auto_alloc_clear(device->machine(), OPL3);
+ chip = auto_alloc_clear(device->machine(), <OPL3>());
chip->device = device;
chip->type = type;
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 1d0eec4fa5d..653285f18a1 100644
--- a/src/devices/sound/ymf271.cpp
+++ b/src/devices/sound/ymf271.cpp
@@ -399,7 +399,7 @@ void ymf271_device::update_lfo(YMF271Slot *slot)
slot->lfo_phase += slot->lfo_step;
slot->lfo_amplitude = m_lut_alfo[slot->lfowave][(slot->lfo_phase >> LFO_SHIFT) & (LFO_LENGTH-1)];
- slot->lfo_phasemod = m_lut_plfo[slot->lfowave][slot->pms][(slot->lfo_phase >> LFO_SHIFT) & (LFO_LENGTH-1)];
+ slot->lfo_phasemod = m_lut_plfo[slot->lfowave][slot->pms].get()[(slot->lfo_phase >> LFO_SHIFT) & (LFO_LENGTH-1)];
calculate_step(slot);
}
@@ -544,12 +544,12 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
int op;
INT32 *mixp;
- memset(m_mix_buffer, 0, sizeof(m_mix_buffer[0])*samples*2);
+ memset(m_mix_buffer.get(), 0, sizeof(m_mix_buffer[0])*samples*2);
for (j = 0; j < 12; j++)
{
YMF271Group *slot_group = &m_groups[j];
- mixp = m_mix_buffer;
+ mixp = m_mix_buffer.get();
if (slot_group->pfm && slot_group->sync != 3)
{
@@ -567,14 +567,14 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
int slot2 = j + (1*12);
int slot3 = j + (2*12);
int slot4 = j + (3*12);
- mixp = m_mix_buffer;
+ mixp = m_mix_buffer.get();
if (m_slots[slot1].active)
{
for (i = 0; i < samples; i++)
{
INT64 output1 = 0, output2 = 0, output3 = 0, output4 = 0;
- INT64 phase_mod1 = 0, phase_mod2 = 0, phase_mod3 = 0;
+ INT64 phase_mod1, phase_mod2, phase_mod3;
switch (m_slots[slot1].algorithm)
{
// <--------|
@@ -794,13 +794,13 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
int slot1 = j + ((op + 0) * 12);
int slot3 = j + ((op + 2) * 12);
- mixp = m_mix_buffer;
+ mixp = m_mix_buffer.get();
if (m_slots[slot1].active)
{
for (i = 0; i < samples; i++)
{
INT64 output1 = 0, output3 = 0;
- INT64 phase_mod1, phase_mod3 = 0;
+ INT64 phase_mod1, phase_mod3;
switch (m_slots[slot1].algorithm & 3)
{
// <--------|
@@ -856,14 +856,14 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
int slot1 = j + (0*12);
int slot2 = j + (1*12);
int slot3 = j + (2*12);
- mixp = m_mix_buffer;
+ mixp = m_mix_buffer.get();
if (m_slots[slot1].active)
{
for (i = 0; i < samples; i++)
{
INT64 output1 = 0, output2 = 0, output3 = 0;
- INT64 phase_mod1 = 0, phase_mod3 = 0;
+ INT64 phase_mod1, phase_mod3;
switch (m_slots[slot1].algorithm & 7)
{
// <--------|
@@ -959,7 +959,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
}
}
- mixp = m_mix_buffer;
+ mixp = m_mix_buffer.get();
update_pcm(j + (3*12), mixp, samples);
break;
}
@@ -976,7 +976,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
}
}
- mixp = m_mix_buffer;
+ mixp = m_mix_buffer.get();
for (i = 0; i < samples; i++)
{
outputs[0][i] = (*mixp++)>>2;
@@ -1505,13 +1505,13 @@ void ymf271_device::init_tables()
int i, j;
for (i = 0; i < 8; i++)
- m_lut_waves[i] = auto_alloc_array(machine(), INT16, SIN_LEN);
+ m_lut_waves[i] = std::make_unique<INT16[]>(SIN_LEN);
for (i = 0; i < 4*8; i++)
- m_lut_plfo[i>>3][i&7] = auto_alloc_array(machine(), double, LFO_LENGTH);
+ m_lut_plfo[i>>3][i&7] = std::make_unique<double[]>(LFO_LENGTH);
for (i = 0; i < 4; i++)
- m_lut_alfo[i] = auto_alloc_array(machine(), int, LFO_LENGTH);
+ m_lut_alfo[i] = std::make_unique<int[]>(LFO_LENGTH);
for (i = 0; i < SIN_LEN; i++)
{
@@ -1568,14 +1568,14 @@ void ymf271_device::init_tables()
for (j = 0; j < 4; j++)
{
- m_lut_plfo[j][0][i] = pow(2.0, 0.0);
- m_lut_plfo[j][1][i] = pow(2.0, (3.378 * plfo[j]) / 1200.0);
- m_lut_plfo[j][2][i] = pow(2.0, (5.0646 * plfo[j]) / 1200.0);
- m_lut_plfo[j][3][i] = pow(2.0, (6.7495 * plfo[j]) / 1200.0);
- m_lut_plfo[j][4][i] = pow(2.0, (10.1143 * plfo[j]) / 1200.0);
- m_lut_plfo[j][5][i] = pow(2.0, (20.1699 * plfo[j]) / 1200.0);
- m_lut_plfo[j][6][i] = pow(2.0, (40.1076 * plfo[j]) / 1200.0);
- m_lut_plfo[j][7][i] = pow(2.0, (79.307 * plfo[j]) / 1200.0);
+ m_lut_plfo[j][0].get()[i] = pow(2.0, 0.0);
+ m_lut_plfo[j][1].get()[i] = pow(2.0, (3.378 * plfo[j]) / 1200.0);
+ m_lut_plfo[j][2].get()[i] = pow(2.0, (5.0646 * plfo[j]) / 1200.0);
+ m_lut_plfo[j][3].get()[i] = pow(2.0, (6.7495 * plfo[j]) / 1200.0);
+ m_lut_plfo[j][4].get()[i] = pow(2.0, (10.1143 * plfo[j]) / 1200.0);
+ m_lut_plfo[j][5].get()[i] = pow(2.0, (20.1699 * plfo[j]) / 1200.0);
+ m_lut_plfo[j][6].get()[i] = pow(2.0, (40.1076 * plfo[j]) / 1200.0);
+ m_lut_plfo[j][7].get()[i] = pow(2.0, (79.307 * plfo[j]) / 1200.0);
}
// LFO amplitude modulation
@@ -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();
@@ -1717,7 +1717,7 @@ void ymf271_device::device_start()
init_state();
m_stream = machine().sound().stream_alloc(*this, 0, 2, clock()/384);
- m_mix_buffer = auto_alloc_array(machine(), INT32, 44100*2);
+ m_mix_buffer = std::make_unique<INT32[]>(44100*2);
}
//-------------------------------------------------
@@ -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 81c59164512..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);
@@ -121,9 +120,9 @@ private:
inline bool check_envelope_end(YMF271Slot *slot);
// lookup tables
- INT16 *m_lut_waves[8];
- double *m_lut_plfo[4][8];
- int *m_lut_alfo[4];
+ std::unique_ptr<INT16[]> m_lut_waves[8];
+ std::unique_ptr<double[]> m_lut_plfo[4][8];
+ std::unique_ptr<int[]> m_lut_alfo[4];
double m_lut_ar[64];
double m_lut_dc[64];
double m_lut_lfo[256];
@@ -147,13 +146,14 @@ 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;
- INT32 *m_mix_buffer;
+ std::unique_ptr<INT32[]> m_mix_buffer;
devcb_write_line m_irq_handler;
devcb_read8 m_ext_read_handler;
diff --git a/src/devices/sound/ymf278b.cpp b/src/devices/sound/ymf278b.cpp
index 160d609126d..af186ff0100 100644
--- a/src/devices/sound/ymf278b.cpp
+++ b/src/devices/sound/ymf278b.cpp
@@ -220,7 +220,7 @@ void ymf278b_device::compute_envelope(YMF278BSlot *slot)
void ymf278b_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
int i, j;
- YMF278BSlot *slot = nullptr;
+ YMF278BSlot *slot;
INT16 sample = 0;
INT32 *mixp;
INT32 vl, vr;
@@ -231,7 +231,7 @@ void ymf278b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
return;
}
- memset(m_mix_buffer, 0, sizeof(m_mix_buffer[0])*samples*2);
+ memset(m_mix_buffer.get(), 0, sizeof(m_mix_buffer[0])*samples*2);
for (i = 0; i < 24; i++)
{
@@ -239,7 +239,7 @@ void ymf278b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
if (slot->active)
{
- mixp = m_mix_buffer;
+ mixp = m_mix_buffer.get();
for (j = 0; j < samples; j++)
{
@@ -299,7 +299,7 @@ void ymf278b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
}
}
- mixp = m_mix_buffer;
+ mixp = m_mix_buffer.get();
vl = m_mix_level[m_pcm_l];
vr = m_mix_level[m_pcm_r];
for (i = 0; i < samples; i++)
@@ -463,7 +463,7 @@ void ymf278b_device::C_w(UINT8 reg, UINT8 data)
// Handle slot registers specifically
if (reg >= 0x08 && reg <= 0xf7)
{
- YMF278BSlot *slot = nullptr;
+ YMF278BSlot *slot;
int snum;
snum = (reg-8) % 24;
slot = &m_slots[snum];
@@ -985,7 +985,7 @@ void ymf278b_device::device_start()
}
m_stream = machine().sound().stream_alloc(*this, 0, 2, clock()/768);
- m_mix_buffer = auto_alloc_array(machine(), INT32, 44100*2);
+ m_mix_buffer = std::make_unique<INT32[]>(44100*2);
// rate tables
precompute_rate_tables();
diff --git a/src/devices/sound/ymf278b.h b/src/devices/sound/ymf278b.h
index 8037af45d82..6c750fcfd91 100644
--- a/src/devices/sound/ymf278b.h
+++ b/src/devices/sound/ymf278b.h
@@ -130,7 +130,7 @@ private:
int m_clock;
sound_stream * m_stream;
- INT32 *m_mix_buffer;
+ std::unique_ptr<INT32[]> m_mix_buffer;
direct_read_data * m_direct;
const address_space_config m_space_config;
devcb_write_line m_irq_handler;
diff --git a/src/devices/sound/ymz280b.cpp b/src/devices/sound/ymz280b.cpp
index c9c19277780..fad4f1b7558 100644
--- a/src/devices/sound/ymz280b.cpp
+++ b/src/devices/sound/ymz280b.cpp
@@ -451,7 +451,7 @@ void ymz280b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
struct YMZ280BVoice *voice = &m_voice[v];
INT16 prev = voice->last_sample;
INT16 curr = voice->curr_sample;
- INT16 *curr_data = m_scratch;
+ INT16 *curr_data = m_scratch.get();
INT32 *ldest = lacc;
INT32 *rdest = racc;
UINT32 new_samples, samples_left;
@@ -496,10 +496,10 @@ void ymz280b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
/* generate them into our buffer */
switch (voice->playing << 7 | voice->mode)
{
- case 0x81: samples_left = generate_adpcm(voice, m_scratch, new_samples); break;
- case 0x82: samples_left = generate_pcm8(voice, m_scratch, new_samples); break;
- case 0x83: samples_left = generate_pcm16(voice, m_scratch, new_samples); break;
- default: samples_left = 0; memset(m_scratch, 0, new_samples * sizeof(m_scratch[0])); break;
+ case 0x81: samples_left = generate_adpcm(voice, m_scratch.get(), new_samples); break;
+ case 0x82: samples_left = generate_pcm8(voice, m_scratch.get(), new_samples); break;
+ case 0x83: samples_left = generate_pcm16(voice, m_scratch.get(), new_samples); break;
+ default: samples_left = 0; memset(m_scratch.get(), 0, new_samples * sizeof(m_scratch[0])); break;
}
if (samples_left || voice->ended)
@@ -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);
@@ -595,7 +600,7 @@ void ymz280b_device::device_start()
/* allocate memory */
assert(MAX_SAMPLE_CHUNK < 0x10000);
- m_scratch = auto_alloc_array(machine(), INT16, MAX_SAMPLE_CHUNK);
+ m_scratch = std::make_unique<INT16[]>(MAX_SAMPLE_CHUNK);
/* state save */
save_item(NAME(m_current_register));
diff --git a/src/devices/sound/ymz280b.h b/src/devices/sound/ymz280b.h
index 4f53d955499..44cd6e16665 100644
--- a/src/devices/sound/ymz280b.h
+++ b/src/devices/sound/ymz280b.h
@@ -121,7 +121,7 @@ private:
UINT8 *m_mem_base; /* pointer to the base of external memory */
UINT32 m_mem_size;
sound_stream *m_stream; /* which stream are we using */
- INT16 *m_scratch;
+ std::unique_ptr<INT16[]> m_scratch;
#if MAKE_WAVS
void *m_wavresample; /* resampled waveform */
#endif
diff --git a/src/devices/sound/zsg2.cpp b/src/devices/sound/zsg2.cpp
index f7f7f53ae16..805acd892cc 100644
--- a/src/devices/sound/zsg2.cpp
+++ b/src/devices/sound/zsg2.cpp
@@ -88,12 +88,12 @@ void zsg2_device::device_start()
m_stream = stream_alloc(0, 2, clock() / 768);
m_mem_blocks = m_mem_base.length();
- m_mem_copy = auto_alloc_array_clear(machine(), UINT32, m_mem_blocks);
- m_full_samples = auto_alloc_array_clear(machine(), INT16, m_mem_blocks * 4 + 4); // +4 is for empty block
+ m_mem_copy = make_unique_clear<UINT32[]>(m_mem_blocks);
+ m_full_samples = make_unique_clear<INT16[]>(m_mem_blocks * 4 + 4); // +4 is for empty block
// register for savestates
- save_pointer(NAME(m_mem_copy), m_mem_blocks / sizeof(UINT32));
- save_pointer(NAME(m_full_samples), (m_mem_blocks * 4 + 4) / sizeof(INT16));
+ save_pointer(NAME(m_mem_copy.get()), m_mem_blocks / sizeof(UINT32));
+ save_pointer(NAME(m_full_samples.get()), (m_mem_blocks * 4 + 4) / sizeof(INT16));
save_item(NAME(m_read_address));
for (int ch = 0; ch < 48; ch++)
diff --git a/src/devices/sound/zsg2.h b/src/devices/sound/zsg2.h
index ce953a5be48..c88e2c60cc5 100644
--- a/src/devices/sound/zsg2.h
+++ b/src/devices/sound/zsg2.h
@@ -70,9 +70,9 @@ private:
required_region_ptr<UINT32> m_mem_base;
UINT32 m_read_address;
- UINT32 *m_mem_copy;
+ std::unique_ptr<UINT32[]> m_mem_copy;
UINT32 m_mem_blocks;
- INT16 *m_full_samples;
+ std::unique_ptr<INT16[]> m_full_samples;
sound_stream *m_stream;
diff --git a/src/devices/video/315_5313.cpp b/src/devices/video/315_5313.cpp
index 6a655874da4..22b63f36d5b 100644
--- a/src/devices/video/315_5313.cpp
+++ b/src/devices/video/315_5313.cpp
@@ -113,24 +113,24 @@ void sega315_5313_device::device_start()
m_32x_interrupt_func.bind_relative_to(*owner());
m_32x_scanline_helper_func.bind_relative_to(*owner());
- m_vram = auto_alloc_array(machine(), UINT16, 0x10000/2);
- m_cram = auto_alloc_array(machine(), UINT16, 0x80/2);
- m_vsram = auto_alloc_array(machine(), UINT16, 0x80/2);
- m_regs = auto_alloc_array(machine(), UINT16, 0x40/2);
- m_internal_sprite_attribute_table = auto_alloc_array(machine(), UINT16, 0x400/2);
+ m_vram = std::make_unique<UINT16[]>(0x10000/2);
+ m_cram = std::make_unique<UINT16[]>(0x80/2);
+ m_vsram = std::make_unique<UINT16[]>(0x80/2);
+ m_regs = std::make_unique<UINT16[]>(0x40/2);
+ m_internal_sprite_attribute_table = std::make_unique<UINT16[]>(0x400/2);
- memset(m_vram, 0x00, 0x10000);
- memset(m_cram, 0x00, 0x80);
- memset(m_vsram, 0x00, 0x80);
- memset(m_regs, 0x00, 0x40);
- memset(m_internal_sprite_attribute_table, 0x00, 0x400);
+ memset(m_vram.get(), 0x00, 0x10000);
+ memset(m_cram.get(), 0x00, 0x80);
+ memset(m_vsram.get(), 0x00, 0x80);
+ memset(m_regs.get(), 0x00, 0x40);
+ memset(m_internal_sprite_attribute_table.get(), 0x00, 0x400);
- save_pointer(NAME(m_vram), 0x10000/2);
- save_pointer(NAME(m_cram), 0x80/2);
- save_pointer(NAME(m_vsram), 0x80/2);
- save_pointer(NAME(m_regs), 0x40/2);
- save_pointer(NAME(m_internal_sprite_attribute_table), 0x400/2);
+ save_pointer(NAME(m_vram.get()), 0x10000/2);
+ save_pointer(NAME(m_cram.get()), 0x80/2);
+ save_pointer(NAME(m_vsram.get()), 0x80/2);
+ save_pointer(NAME(m_regs.get()), 0x40/2);
+ save_pointer(NAME(m_internal_sprite_attribute_table.get()), 0x400/2);
save_item(NAME(m_command_pending));
save_item(NAME(m_command_part1));
@@ -152,42 +152,42 @@ void sega315_5313_device::device_start()
save_item(NAME(m_vblank_flag));
save_item(NAME(m_total_scanlines));
- m_sprite_renderline = auto_alloc_array(machine(), UINT8, 1024);
- m_highpri_renderline = auto_alloc_array(machine(), UINT8, 320);
- m_video_renderline = auto_alloc_array(machine(), UINT32, 320);
+ m_sprite_renderline = std::make_unique<UINT8[]>(1024);
+ m_highpri_renderline = std::make_unique<UINT8[]>(320);
+ m_video_renderline = std::make_unique<UINT32[]>(320);
- m_palette_lookup = auto_alloc_array(machine(), UINT16, 0x40);
- m_palette_lookup_sprite = auto_alloc_array(machine(), UINT16, 0x40);
+ m_palette_lookup = std::make_unique<UINT16[]>(0x40);
+ m_palette_lookup_sprite = std::make_unique<UINT16[]>(0x40);
- m_palette_lookup_shadow = auto_alloc_array(machine(), UINT16, 0x40);
- m_palette_lookup_highlight = auto_alloc_array(machine(), UINT16, 0x40);
+ m_palette_lookup_shadow = std::make_unique<UINT16[]>(0x40);
+ m_palette_lookup_highlight = std::make_unique<UINT16[]>(0x40);
- memset(m_palette_lookup,0x00,0x40*2);
- memset(m_palette_lookup_sprite,0x00,0x40*2);
+ memset(m_palette_lookup.get(),0x00,0x40*2);
+ memset(m_palette_lookup_sprite.get(),0x00,0x40*2);
- memset(m_palette_lookup_shadow,0x00,0x40*2);
- memset(m_palette_lookup_highlight,0x00,0x40*2);
+ memset(m_palette_lookup_shadow.get(),0x00,0x40*2);
+ memset(m_palette_lookup_highlight.get(),0x00,0x40*2);
if (!m_use_alt_timing)
- m_render_bitmap = auto_bitmap_ind16_alloc(machine(), 320, 512); // allocate maximum sizes we're going to use, it's safer.
+ m_render_bitmap = std::make_unique<bitmap_ind16>(320, 512); // allocate maximum sizes we're going to use, it's safer.
else
- m_render_line = auto_alloc_array(machine(), UINT16, 320);
+ m_render_line = std::make_unique<UINT16[]>(320);
- m_render_line_raw = auto_alloc_array(machine(), UINT16, 320);
+ m_render_line_raw = std::make_unique<UINT16[]>(320);
// FIXME: are these all needed? I'm pretty sure some of these (most?) are just helpers which don't need to be saved,
// but better safe than sorry...
- save_pointer(NAME(m_sprite_renderline), 1024);
- save_pointer(NAME(m_highpri_renderline), 320);
- save_pointer(NAME(m_video_renderline), 320/4);
- save_pointer(NAME(m_palette_lookup), 0x40);
- save_pointer(NAME(m_palette_lookup_sprite), 0x40);
- save_pointer(NAME(m_palette_lookup_shadow), 0x40);
- save_pointer(NAME(m_palette_lookup_highlight), 0x40);
- save_pointer(NAME(m_render_line_raw), 320/2);
+ save_pointer(NAME(m_sprite_renderline.get()), 1024);
+ save_pointer(NAME(m_highpri_renderline.get()), 320);
+ save_pointer(NAME(m_video_renderline.get()), 320/4);
+ save_pointer(NAME(m_palette_lookup.get()), 0x40);
+ save_pointer(NAME(m_palette_lookup_sprite.get()), 0x40);
+ save_pointer(NAME(m_palette_lookup_shadow.get()), 0x40);
+ save_pointer(NAME(m_palette_lookup_highlight.get()), 0x40);
+ save_pointer(NAME(m_render_line_raw.get()), 320/2);
if (m_use_alt_timing)
- save_pointer(NAME(m_render_line), 320/2);
+ save_pointer(NAME(m_render_line.get()), 320/2);
m_irq6_on_timer = machine().scheduler().timer_alloc(FUNC(irq6_on_timer_callback), (void*)this);
m_irq4_on_timer = machine().scheduler().timer_alloc(FUNC(irq4_on_timer_callback), (void*)this);
@@ -1310,7 +1310,7 @@ void sega315_5313_device::render_spriteline_to_spritebuffer(int scanline)
/* Clear our Render Buffer */
- memset(m_sprite_renderline, 0, 1024);
+ memset(m_sprite_renderline.get(), 0, 1024);
{
@@ -1319,7 +1319,7 @@ void sega315_5313_device::render_spriteline_to_spritebuffer(int scanline)
int drawypos;
int /*drawwidth,*/ drawheight;
int spritemask = 0;
- UINT8 height,width=0,link=0,xflip,yflip,colour,pri;
+ UINT8 height,width,link,xflip,yflip,colour,pri;
/* Get Sprite Attribs */
spritenum = 0;
@@ -1506,7 +1506,7 @@ void sega315_5313_device::render_videoline_to_videobuffer(int scanline)
int x;
int window_hsize=0;
int window_vsize=0;
- int window_is_bugged = 0;
+ int window_is_bugged;
int non_window_firstcol;
int non_window_lastcol;
int screenheight = MEGADRIVE_REG01_240_LINE?240:224;
@@ -1517,7 +1517,7 @@ void sega315_5313_device::render_videoline_to_videobuffer(int scanline)
m_video_renderline[x]=MEGADRIVE_REG07_BGCOLOUR | 0x20000; // mark as BG
}
- memset(m_highpri_renderline, 0, 320);
+ memset(m_highpri_renderline.get(), 0, 320);
/* is this line enabled? */
if (!MEGADRIVE_REG01_DISP_ENABLE)
@@ -2518,7 +2518,7 @@ void sega315_5313_device::render_videobuffer_to_screenbuffer(int scanline)
}
else
- lineptr = m_render_line;
+ lineptr = m_render_line.get();
for (int x = 0; x < 320; x++)
{
diff --git a/src/devices/video/315_5313.h b/src/devices/video/315_5313.h
index 90f5f0a1cd2..d7ca05ee2e6 100644
--- a/src/devices/video/315_5313.h
+++ b/src/devices/video/315_5313.h
@@ -240,9 +240,9 @@ public:
m_render_bitmap->fill(0);
}
- bitmap_ind16* m_render_bitmap;
- UINT16* m_render_line;
- UINT16* m_render_line_raw;
+ std::unique_ptr<bitmap_ind16> m_render_bitmap;
+ std::unique_ptr<UINT16[]> m_render_line;
+ std::unique_ptr<UINT16[]> m_render_line_raw;
TIMER_DEVICE_CALLBACK_MEMBER( megadriv_scanline_timer_callback_alt_timing );
TIMER_DEVICE_CALLBACK_MEMBER( megadriv_scanline_timer_callback );
@@ -295,13 +295,13 @@ private:
int m_use_cram; // c2 uses it's own palette ram, so it sets this to 0
int m_dma_delay; // SVP and SegaCD have some 'lag' in DMA transfers
- UINT16* m_regs;
- UINT16* m_vram;
- UINT16* m_cram;
- UINT16* m_vsram;
+ std::unique_ptr<UINT16[]> m_regs;
+ std::unique_ptr<UINT16[]> m_vram;
+ std::unique_ptr<UINT16[]> m_cram;
+ std::unique_ptr<UINT16[]> m_vsram;
/* The VDP keeps a 0x400 byte on-chip cache of the Sprite Attribute Table
to speed up processing, Castlevania Bloodlines abuses this on the upside down level */
- UINT16* m_internal_sprite_attribute_table;
+ std::unique_ptr<UINT16[]> m_internal_sprite_attribute_table;
// these are used internally by the VDP to schedule when after the start of a scanline
// to trigger the various interrupts / rendering to our bitmap, bit of a hack really
@@ -342,13 +342,13 @@ private:
void render_videobuffer_to_screenbuffer(int scanline);
/* variables used during emulation - not saved */
- UINT8* m_sprite_renderline;
- UINT8* m_highpri_renderline;
- UINT32* m_video_renderline;
- UINT16* m_palette_lookup;
- UINT16* m_palette_lookup_sprite; // for C2
- UINT16* m_palette_lookup_shadow;
- UINT16* m_palette_lookup_highlight;
+ std::unique_ptr<UINT8[]> m_sprite_renderline;
+ std::unique_ptr<UINT8[]> m_highpri_renderline;
+ std::unique_ptr<UINT32[]> m_video_renderline;
+ std::unique_ptr<UINT16[]> m_palette_lookup;
+ std::unique_ptr<UINT16[]> m_palette_lookup_sprite; // for C2
+ std::unique_ptr<UINT16[]> m_palette_lookup_shadow;
+ std::unique_ptr<UINT16[]> m_palette_lookup_highlight;
address_space *m_space68k;
m68000_base_device* m_cpu68k;
diff --git a/src/devices/video/clgd542x.cpp b/src/devices/video/clgd542x.cpp
index 854611d1c80..f7950c879a9 100644
--- a/src/devices/video/clgd542x.cpp
+++ b/src/devices/video/clgd542x.cpp
@@ -1094,7 +1094,7 @@ WRITE8_MEMBER(cirrus_gd5428_device::port_03d0_w)
UINT8 cirrus_gd5428_device::cirrus_crtc_reg_read(UINT8 index)
{
- UINT8 res = 0xff;
+ UINT8 res;
switch(index)
{
diff --git a/src/devices/video/ef9340_1.cpp b/src/devices/video/ef9340_1.cpp
index 1875ef3cf15..39654a32ba9 100644
--- a/src/devices/video/ef9340_1.cpp
+++ b/src/devices/video/ef9340_1.cpp
@@ -234,7 +234,7 @@ void ef9340_1_device::ef9341_write( UINT8 command, UINT8 b, UINT8 data )
UINT8 ef9340_1_device::ef9341_read( UINT8 command, UINT8 b )
{
- UINT8 data = 0xFF;
+ UINT8 data;
logerror("ef9341 %s read, t%s\n", command ? "command" : "data", b ? "B" : "A" );
if ( command )
diff --git a/src/devices/video/ef9365.cpp b/src/devices/video/ef9365.cpp
index 8cb14fe1782..f923cfd0813 100644
--- a/src/devices/video/ef9365.cpp
+++ b/src/devices/video/ef9365.cpp
@@ -1,30 +1,135 @@
// license:BSD-3-Clause
-// copyright-holders:Jean-François DEL NERO
+// copyright-holders:Jean-Francois DEL NERO
+
/*********************************************************************
ef9365.c
- Thomson EF9365 video controller emulator code
-
+ Thomson EF9365/EF9366 video controller emulator code
+
+ The EF9365/EF9366 is a video controller driving a frame buffer
+ and having built-in vectors and characters drawing engines.
+ This is natively a "black and white" chip (1 bitplane),
+ but it is possible to add more bitplanes to have colors with a
+ hardware trick. The system don't have direct access to the video
+ memory, but indirect access is possible through the 0x0F command
+ and some hardware glue logics.
+ The current implementation emulate the main functions :
+
+ Video modes supported (Hardware implementation dependent):
+ - 256 x 256 (EF9365 with 4 bits shifters per bitplane and FMAT to VSS)
+ - 512 x 512 interlaced (EF9365 with 8 bits shifters per bitplane and FMAT to VCC)
+ - 512 x 256 non interlaced (EF9366 with 8 bits shifters per bitplane)
+ - 128 x 128 (EF9365 with 2 bits shifters per bitplane and FMAT to VSS)
+ - 64 x 64 (EF9365 with FMAT to VSS)
+
+ - 1 bitplane up to 8 bitplanes hardware configuration.
+ - 2 up to 256 colors fixed palette.
+
+ Character & block drawing :
+ - Normal / Titled mode
+ - Horizontal / Vertical orientation
+ - P & Q Zoom factors (1 up to 16)
+
+ Vector drawing :
+ - Normal / Dotted / Dashed / Dotted-Dashed mode
+ - All directions and size supported.
+
+ General :
+ - Clear Screen
+ - Fill Screen
+ - Clear X & Y registers
+ - Video RAM readback supported (Command 0x0F)
+
+ What is NOT yet currently implemented:
+ - Light pen support
+ (To be done when i will find a software using the lightpen)
+
+ What is implemented but not really tested:
+ - Interrupts output.
+ My target system (Squale Apollo 7) doesn't use the interruption
+ for this chip. So i add the interrupt line support, but
+ bug(s) is possible.
+
+ The needed charset file charset_ef9365.rom (CRC 8d3053be) is available
+ there : http://hxc2001.free.fr/Squale/rom/charset_ef9365.zip
+ This ROM charset is into the EF9365/EF9366.
+
+ To see how to use this driver, have a look to the Squale machine
+ driver (squale.cpp).
+ If you have any question, don't hesitate to contact me at the email
+ present on this website : http://hxc2001.free.fr/
+
+ 12/29/2015
+ Jean-Francois DEL NERO
*********************************************************************/
#include "emu.h"
#include "ef9365.h"
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
+#ifdef DBGMODE
+//-------------------------------------------------
+// Some debug mode const strings
+// to trace the commands and registers accesses.
+//-------------------------------------------------
+
+// Registers list
+const char * register_names[]=
+{
+ "0x00 - CMD / STATUS",
+ "0x01 - CTRL 1 ",
+ "0x02 - CTRL 2 ",
+ "0x03 - CSIZE ",
+ "0x04 - RESERVED ",
+ "0x05 - DELTA X ",
+ "0x06 - RESERVED ",
+ "0x07 - DELTA Y ",
+ "0x08 - X MSBs ",
+ "0x09 - X LSBs ",
+ "0x0A - Y MSBs ",
+ "0x0B - Y LSBs ",
+ "0x0C - XLP ",
+ "0x0D - YLP ",
+ "0x0E - RESERVED ",
+ "0x0F - RESERVED "
+};
+
+// Commands list
+const char * commands_names[]=
+{
+ "0x00 - Set bit 1 of CTRL1 : Pen selection",
+ "0x01 - Clear bit 1 of CTRL1 : Eraser selection",
+ "0x02 - Set bit 0 of CTRL1 : Pen/Eraser down selection",
+ "0x03 - Clear bit 0 of CTRL1 : Pen/Eraser up selection",
+ "0x04 - Clear screen",
+ "0x05 - X and Y registers reset to 0",
+ "0x06 - X and Y registers reset to 0 and clear screen",
+ "0x07 - Clear screen, set CSIZE to code \"minsize\". All other registers reset to 0",
+ "0x08 - Light-pen initialization (/White forced low)",
+ "0x09 - Light-pen initialization",
+ "0x0A - 5x8 block drawing (size according to CSIZE)",
+ "0x0B - 4x4 block drawing (size according to CSIZE)",
+ "0x0C - Screen scanning : pen or Eraser as defined by CTRL1",
+ "0x0D - X reset to 0",
+ "0x0E - Y reset to 0",
+ "0x0F - Direct image memory access request for the next free cycle.",
+ "0x10<>0x17 - Vector generation",
+ "0x18<>0x1F - Special direction vectors",
+ "0x20<>0x7F - Character Drawing",
+ "0x80<>0xFF - Small vector generation",
+};
+
+#endif
// devices
const device_type EF9365 = &device_creator<ef9365_device>;
+//-------------------------------------------------
// default address map
-// Up to 4 bitplans @ 256*256
+// Up to 512*512 per bitplane, 8 bitplanes max.
+//-------------------------------------------------
static ADDRESS_MAP_START( ef9365, AS_0, 8, ef9365_device )
- AM_RANGE(0x0000, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x7fff) AM_RAM
+ AM_RANGE(0x00000, ( ( EF936X_BITPLANE_MAX_SIZE * EF936X_MAX_BITPLANES ) - 1 ) ) AM_RAM
ADDRESS_MAP_END
//-------------------------------------------------
@@ -54,9 +159,11 @@ ef9365_device::ef9365_device(const machine_config &mconfig, const char *tag, dev
device_t(mconfig, EF9365, "EF9365", tag, owner, clock, "ef9365", __FILE__),
device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
- m_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, nullptr, *ADDRESS_MAP_NAME(ef9365)),
- m_palette(*this)
+ m_space_config("videoram", ENDIANNESS_LITTLE, 8, 18, 0, nullptr, *ADDRESS_MAP_NAME(ef9365)),
+ m_palette(*this),
+ m_irq_handler(*this)
{
+ clock_freq = clock;
}
//-------------------------------------------------
@@ -70,26 +177,97 @@ void ef9365_device::static_set_palette_tag(device_t &device, const char *tag)
}
//-------------------------------------------------
-// static_set_color_filler: Set the color value
-// used by the chip to draw/fill the memory
+// static_set_nb_of_bitplanes: Set the number of bitplanes
//-------------------------------------------------
-void ef9365_device::static_set_color_filler( UINT8 color )
+void ef9365_device::static_set_nb_bitplanes(device_t &device, int nb_bitplanes )
{
- m_current_color = color;
+ if( nb_bitplanes > 0 && nb_bitplanes <= 8 )
+ {
+ downcast<ef9365_device &>(device).nb_of_bitplanes = nb_bitplanes;
+ downcast<ef9365_device &>(device).nb_of_colors = pow(2,nb_bitplanes);
+ }
+}
+
+//-------------------------------------------------
+// static_set_display_mode: Set the display mode
+//-------------------------------------------------
+
+void ef9365_device::static_set_display_mode(device_t &device, int display_mode )
+{
+ switch(display_mode)
+ {
+ case EF936X_256x256_DISPLAY_MODE:
+ downcast<ef9365_device &>(device).bitplane_xres = 256;
+ downcast<ef9365_device &>(device).bitplane_yres = 256;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFF00;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
+ break;
+ case EF936X_512x512_DISPLAY_MODE:
+ downcast<ef9365_device &>(device).bitplane_xres = 512;
+ downcast<ef9365_device &>(device).bitplane_yres = 512;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 506;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFE00;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFE00;
+ break;
+ case EF936X_512x256_DISPLAY_MODE:
+ downcast<ef9365_device &>(device).bitplane_xres = 512;
+ downcast<ef9365_device &>(device).bitplane_yres = 256;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFE00;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
+ break;
+ case EF936X_128x128_DISPLAY_MODE:
+ downcast<ef9365_device &>(device).bitplane_xres = 128;
+ downcast<ef9365_device &>(device).bitplane_yres = 128;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 124;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFF80;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFF80;
+ break;
+ case EF936X_64x64_DISPLAY_MODE:
+ downcast<ef9365_device &>(device).bitplane_xres = 64;
+ downcast<ef9365_device &>(device).bitplane_yres = 64;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 62;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFFC0;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFFC0;
+ break;
+ default:
+ downcast<ef9365_device &>(device).logerror("Invalid EF9365 Display mode: %02x\n", display_mode);
+ downcast<ef9365_device &>(device).bitplane_xres = 256;
+ downcast<ef9365_device &>(device).bitplane_yres = 256;
+ downcast<ef9365_device &>(device).vsync_scanline_pos = 250;
+ downcast<ef9365_device &>(device).overflow_mask_x = 0xFF00;
+ downcast<ef9365_device &>(device).overflow_mask_y = 0xFF00;
+ break;
+ }
}
//-------------------------------------------------
-// static_set_color_entry: Set the color value
+// set_color_entry: Set the color value
// into the palette
//-------------------------------------------------
-void ef9365_device::static_set_color_entry( int index, UINT8 r, UINT8 g, UINT8 b )
+void ef9365_device::set_color_entry( int index, UINT8 r, UINT8 g, UINT8 b )
{
- if( index < 16 )
+ if( index < nb_of_colors )
{
palette[index] = rgb_t(r, g, b);
}
+ else
+ {
+ logerror("Invalid EF9365 Palette entry : %02x\n", index);
+ }
+}
+
+//-------------------------------------------------
+// set_color_filler: Set the color number
+// used by the chip to draw/fill the memory
+//-------------------------------------------------
+
+void ef9365_device::set_color_filler( UINT8 color )
+{
+ m_current_color = color;
}
//-------------------------------------------------
@@ -100,12 +278,19 @@ void ef9365_device::device_start()
{
int i;
+ m_irq_handler.resolve_safe();
+
m_busy_timer = timer_alloc(BUSY_TIMER);
m_videoram = &space(0);
m_charset = region();
m_current_color = 0x0F;
+ m_irq_vb = 0;
+ m_irq_lb = 0;
+ m_irq_rdy = 0;
+ m_irq_state = 0;
+
// Default palette : Black and white
palette[0] = rgb_t(0, 0, 0);
for( i = 1; i < 16 ; i++ )
@@ -113,23 +298,34 @@ void ef9365_device::device_start()
palette[i] = rgb_t(255, 255, 255);
}
- m_screen_out.allocate(496, m_screen->height());
+ m_screen_out.allocate( bitplane_xres, m_screen->height() );
save_item(NAME(m_border));
save_item(NAME(m_registers));
save_item(NAME(m_bf));
save_item(NAME(m_state));
+ save_item(NAME(m_irq_state));
+ save_item(NAME(m_irq_vb));
+ save_item(NAME(m_irq_lb));
+ save_item(NAME(m_irq_rdy));
+
save_item(NAME(m_screen_out));
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
+
void ef9365_device::device_reset()
{
m_state = 0;
+
m_bf = 0;
+ m_irq_state = 0;
+ m_irq_vb = 0;
+ m_irq_lb = 0;
+ m_irq_rdy = 0;
memset(m_registers, 0, sizeof(m_registers));
memset(m_border, 0, sizeof(m_border));
@@ -137,32 +333,104 @@ void ef9365_device::device_reset()
m_screen_out.fill(0);
set_video_mode();
+
+ m_irq_handler(FALSE);
+}
+
+//-------------------------------------------------
+// update_interrupts
+//-------------------------------------------------
+void ef9365_device::update_interrupts()
+{
+ int new_state = ( m_irq_vb && (m_registers[EF936X_REG_CTRL1] & 0x20) )
+ || ( m_irq_rdy && (m_registers[EF936X_REG_CTRL1] & 0x40) )
+ || ( m_irq_lb && (m_registers[EF936X_REG_CTRL1] & 0x10) );
+
+ if (new_state != m_irq_state)
+ {
+ m_irq_state = new_state;
+ m_irq_handler(m_irq_state);
+ }
}
//-------------------------------------------------
// device_timer - handler timer events
//-------------------------------------------------
+
void ef9365_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
switch(id)
{
case BUSY_TIMER:
m_bf = 0;
+
+ if( m_registers[EF936X_REG_CTRL1] & 0x40 )
+ {
+ m_irq_rdy = 1;
+ }
+
+ update_interrupts();
+
break;
}
}
-// set busy flag and timer to clear it
+//-------------------------------------------------
+// set_busy_flag: set busy flag and
+// timer to clear it
+//-------------------------------------------------
+
void ef9365_device::set_busy_flag(int period)
{
m_bf = 1;
m_busy_timer->adjust(attotime::from_usec(period));
}
-// set then ef9365 mode
+//-------------------------------------------------
+// get_x_reg: Get the X register value
+//-------------------------------------------------
+
+unsigned int ef9365_device::get_x_reg()
+{
+ return (m_registers[EF936X_REG_X_MSB]<<8) | m_registers[EF936X_REG_X_LSB];
+}
+
+//-------------------------------------------------
+// get_y_reg: Get the Y register value
+//-------------------------------------------------
+
+unsigned int ef9365_device::get_y_reg()
+{
+ return (m_registers[EF936X_REG_Y_MSB]<<8) | m_registers[EF936X_REG_Y_LSB];
+}
+
+//-------------------------------------------------
+// set_x_reg: Set the X register value
+//-------------------------------------------------
+
+void ef9365_device::set_x_reg(unsigned int x)
+{
+ m_registers[EF936X_REG_X_MSB] = x >> 8;
+ m_registers[EF936X_REG_X_LSB] = x & 0xFF;
+}
+
+//-------------------------------------------------
+// set_y_reg: Set the Y register value
+//-------------------------------------------------
+
+void ef9365_device::set_y_reg(unsigned int y)
+{
+ m_registers[EF936X_REG_Y_MSB] = y >> 8;
+ m_registers[EF936X_REG_Y_LSB] = y & 0xFF;
+}
+
+//-------------------------------------------------
+// set_video_mode: Set output screen format
+//-------------------------------------------------
+
void ef9365_device::set_video_mode(void)
{
- UINT16 new_width = 256;
+ UINT16 new_width = bitplane_xres;
if (m_screen->width() != new_width)
{
@@ -176,20 +444,317 @@ void ef9365_device::set_video_mode(void)
memset(m_border, 0, sizeof(m_border));
}
+//-------------------------------------------------
+// get_last_readback_word: Read back the latched
+// bitplane words
+//-------------------------------------------------
+
+UINT8 ef9365_device::get_last_readback_word(int bitplane_number, int * pixel_offset)
+{
+ if( pixel_offset )
+ *pixel_offset = m_readback_latch_pix_offset;
+
+ if( bitplane_number < nb_of_bitplanes )
+ {
+ return m_readback_latch[bitplane_number];
+ }
+ else
+ {
+ return 0x00;
+ }
+}
+
+//-------------------------------------------------
+// draw_border: Draw the left and right borders
+// ( No border for the moment ;) )
+//-------------------------------------------------
+
void ef9365_device::draw_border(UINT16 line)
{
+}
+
+//-------------------------------------------------
+// plot: Plot a pixel to the bitplanes
+// at the x & y position with the m_current_color color
+//-------------------------------------------------
+
+void ef9365_device::plot(int x_pos,int y_pos)
+{
+ int p;
+ if( ( x_pos >= 0 && y_pos >= 0 ) && ( x_pos < bitplane_xres && y_pos < bitplane_yres ) )
+ {
+ if ( m_registers[EF936X_REG_CTRL1] & 0x01 )
+ {
+ y_pos = ( (bitplane_yres - 1) - y_pos );
+
+ if( (m_registers[EF936X_REG_CTRL1] & 0x02) )
+ {
+ // Pen
+ for( p = 0 ; p < nb_of_bitplanes ; p++ )
+ {
+ if( m_current_color & (0x01 << p) )
+ m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
+ else
+ m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) & ~(0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
+ }
+ }
+ else
+ {
+ // Eraser
+ for( p = 0 ; p < nb_of_bitplanes ; p++ )
+ {
+ m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y_pos*bitplane_xres) + x_pos)>>3)) | (0x80 >> (((y_pos*bitplane_xres) + x_pos)&7) ) );
+ }
+ }
+ }
+ }
}
-void ef9365_device::draw_character( unsigned char c, int block, int smallblock )
+
+const static unsigned int vectortype_code[][8] =
+{
+ {0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // Continous drawing
+ {0x82,0x02,0x00,0x00,0x00,0x00,0x00,0x00}, // Dotted - 2 dots on, 2 dots off
+ {0x84,0x04,0x00,0x00,0x00,0x00,0x00,0x00}, // Dashed - 4 dots on, 4 dots off
+ {0x8A,0x02,0x82,0x02,0x00,0x00,0x00,0x00} // Dotted-Dashed - 10 dots on, 2 dots off, 2 dots on, 2 dots off
+};
+
+//-------------------------------------------------
+// draw_vector: Vector drawing function
+// from the x1 & y1 position to the x2 & y2 position
+// with the m_current_color color
+// (Bresenham's line algorithm)
+//-------------------------------------------------
+
+int ef9365_device::draw_vector(int x1,int y1,int x2,int y2)
+{
+ int dx;
+ int dy,t;
+ int e;
+ int x,y;
+ int incy;
+ int diago,horiz;
+ unsigned char c1;
+
+ int pen_state;
+ unsigned int state_counter;
+ int dot_code_ptr;
+ int compute_cycles;
+
+ compute_cycles = 0;
+
+ c1=0;
+ incy=1;
+
+ dot_code_ptr = 0;
+ state_counter = vectortype_code[m_registers[EF936X_REG_CTRL2] & 0x3][dot_code_ptr&7];
+ if(state_counter&0x80)
+ pen_state = 1;
+ else
+ pen_state = 0;
+ state_counter &= ~0x80;
+
+ if(x2>x1)
+ dx = x2 - x1;
+ else
+ dx = x1 - x2;
+
+ if(y2>y1)
+ dy = y2 - y1;
+ else
+ dy = y1 - y2;
+
+ if( dy > dx )
+ {
+ t = y2;
+ y2 = x2;
+ x2 = t;
+
+ t = y1;
+ y1 = x1;
+ x1 = t;
+
+ t = dx;
+ dx = dy;
+ dy = t;
+
+ c1 = 1;
+ }
+
+ if( x1 > x2 )
+ {
+ t = y2;
+ y2 = y1;
+ y1 = t;
+
+ t = x1;
+ x1 = x2;
+ x2 = t;
+ }
+
+ horiz = dy<<1;
+ diago = ( dy - dx )<<1;
+ e = ( dy<<1 ) - dx;
+
+ if( y1 <= y2 )
+ incy = 1;
+ else
+ incy = -1;
+
+ x = x1;
+ y = y1;
+
+ if(c1)
+ {
+ do
+ {
+ if(pen_state)
+ plot(y,x);
+
+ compute_cycles++;
+
+ set_x_reg(y);
+ set_y_reg(x);
+
+ state_counter--;
+
+ if( !state_counter )
+ {
+ dot_code_ptr++;
+
+ state_counter = vectortype_code[m_registers[EF936X_REG_CTRL2] & 0x3][dot_code_ptr&7];
+
+ if(!state_counter)
+ {
+ dot_code_ptr = 0;
+ state_counter = vectortype_code[m_registers[EF936X_REG_CTRL2] & 0x3][dot_code_ptr&7];
+ }
+
+ if( state_counter & 0x80 )
+ {
+ pen_state = 1;
+ }
+ else
+ {
+ pen_state = 0;
+ }
+
+ state_counter &= ~0x80;
+ }
+
+ if( e > 0 )
+ {
+ y = y + incy;
+ e = e + diago;
+ }
+ else
+ {
+ e = e + horiz;
+ }
+
+ x++;
+
+ }while( x <= x2 );
+ }
+ else
+ {
+ do
+ {
+ if(pen_state)
+ plot(x,y);
+
+ compute_cycles++;
+
+ set_x_reg(x);
+ set_y_reg(y);
+
+ state_counter--;
+
+ if( !state_counter )
+ {
+ dot_code_ptr++;
+
+ state_counter = vectortype_code[m_registers[EF936X_REG_CTRL2] & 0x3][dot_code_ptr&7];
+
+ if(!state_counter)
+ {
+ dot_code_ptr = 0;
+ state_counter = vectortype_code[m_registers[EF936X_REG_CTRL2] & 0x3][dot_code_ptr&7];
+ }
+
+ if( state_counter & 0x80 )
+ {
+ pen_state = 1;
+ }
+ else
+ {
+ pen_state = 0;
+ }
+
+ state_counter &= ~0x80;
+ }
+
+ if( e > 0 )
+ {
+ y = y + incy;
+ e = e + diago;
+ }
+ else
+ {
+ e = e + horiz;
+ }
+
+ x++;
+
+ }while( x <= x2 );
+ }
+
+ return compute_cycles;
+}
+
+//-------------------------------------------------
+// get_char_pix: Get a character pixel state
+// from the charset.
+//-------------------------------------------------
+
+int ef9365_device::get_char_pix( unsigned char c, int x, int y )
{
- int x_char,y_char;
int char_base,char_pix;
- unsigned int x, y, p;
+
+ if(c<96)
+ {
+ if( x < 5 && y < 8 )
+ {
+ char_base = c * 5;
+ char_pix = ( y * 5 ) + x;
+
+ if ( m_charset->u8(char_base + (char_pix>>3) ) & ( 0x80 >> (char_pix&7)) )
+ return 1;
+ else
+ return 0;
+ }
+ }
+
+ return 0;
+}
+
+//-------------------------------------------------
+// draw_character: Character and block drawing function
+// Set smallblock to draw a 4x4 block
+// Set block to draw a 5x8 block
+//-------------------------------------------------
+
+int ef9365_device::draw_character( unsigned char c, int block, int smallblock )
+{
+ int x_char,y_char;
+ unsigned int x, y;
int x_char_res,y_char_res;
+ int p_factor,q_factor,p,q;
+ int compute_cycles;
- x = ( (m_registers[EF9365_REG_X_MSB]<<8) | m_registers[EF9365_REG_X_LSB]);
- y = ( (m_registers[EF9365_REG_Y_MSB]<<8) | m_registers[EF9365_REG_Y_LSB]);
+ x = get_x_reg();
+ y = get_y_reg();
x_char_res = 5;
y_char_res = 8;
@@ -201,213 +766,254 @@ void ef9365_device::draw_character( unsigned char c, int block, int smallblock )
y_char_res = 4;
}
+ p_factor = (m_registers[EF936X_REG_CSIZE] >> 4);
+ if(!p_factor)
+ p_factor = 16;
+
+ q_factor = (m_registers[EF936X_REG_CSIZE] & 0xF);
+ if(!q_factor)
+ q_factor = 16;
+
+ compute_cycles = ( ( x_char_res + 1 ) * p_factor ) * ( y_char_res * q_factor );
+
if(c<96)
{
- y = ( 256 - y ) - y_char_res;
-
- if( ( x < ( 256 - 5 ) ) && ( y < ( 256 - y_char_res ) ) )
+ for( x_char=0 ; x_char < x_char_res ; x_char++ )
{
- char_base = c * 5; // 5 bytes per char.
- char_pix = 0;
-
- if ( block )
+ for( y_char = y_char_res - 1 ; y_char >= 0 ; y_char-- )
{
- // 5x8 or 4x4 block
-
- for( y_char = 0 ; y_char < y_char_res ; y_char++ )
+ if ( block || get_char_pix( c, x_char, ( (y_char_res - 1) - y_char ) ) )
{
- for( x_char = 0 ; x_char < x_char_res ; x_char++ )
+ if( m_registers[EF936X_REG_CTRL2] & 0x04) // Titled character ?
{
- for( p = 0 ; p < 4 ; p++ )
+ for(q = 0; q < q_factor; q++)
{
- if( m_current_color & (0x01 << p) )
- m_videoram->write_byte ( (0x2000*p) + ((((y_char+y)*256) + (x_char+x))>>3), m_videoram->read_byte( (0x2000*p) + ((((y_char+y)*256) + (x_char+x))>>3)) | (0x80 >> ((((y_char+y)*256) + (x_char+x))&7) ) );
- else
- m_videoram->write_byte ( (0x2000*p) + ((((y_char+y)*256) + (x_char+x))>>3), m_videoram->read_byte( (0x2000*p) + ((((y_char+y)*256) + (x_char+x))>>3)) & ~(0x80 >> ((((y_char+y)*256) + (x_char+x))&7) ) );
+ for(p = 0; p < p_factor; p++)
+ {
+ if( !(m_registers[EF936X_REG_CTRL2] & 0x08) )
+ { // Titled - Horizontal orientation
+ plot(
+ x + ( (y_char*q_factor) + q ) + ( (x_char*p_factor) + p ),
+ y + ( (y_char*q_factor) + q )
+ );
+ }
+ else
+ {
+ // Titled - Vertical orientation
+ plot(
+ x - ( (y_char*q_factor)+ q ),
+ y + ( (x_char*p_factor)+ p ) - ( ( ( (y_char_res - 1 ) - y_char) * q_factor ) + ( q_factor - q ) )
+ );
+ }
+ }
}
- char_pix++;
}
- }
- }
- else
- {
- // 5x8 character
- for( y_char=0 ; y_char < y_char_res ;y_char++ )
- {
- for( x_char=0 ; x_char < x_char_res ; x_char++ )
+ else
{
- if ( m_charset->u8(char_base + (char_pix>>3) ) & ( 0x80 >> (char_pix&7)))
+ for(q = 0; q < q_factor; q++)
{
- for( p = 0 ; p < 4 ; p++ )
+ for(p = 0; p < p_factor; p++)
{
- if( m_current_color & (0x01 << p) )
- m_videoram->write_byte ( (0x2000*p) + ((((y_char+y)*256) + (x_char+x))>>3), m_videoram->read_byte( (0x2000*p) + ((((y_char+y)*256) + (x_char+x))>>3)) | (0x80 >> ((((y_char+y)*256) + (x_char+x))&7) ) );
+ if( !(m_registers[EF936X_REG_CTRL2] & 0x08) )
+ { // Normal - Horizontal orientation
+ plot(
+ x + ( (x_char*p_factor) + p ),
+ y + ( (y_char*q_factor) + q )
+ );
+ }
else
- m_videoram->write_byte ( (0x2000*p) + ((((y_char+y)*256) + (x_char+x))>>3), m_videoram->read_byte( (0x2000*p) + ((((y_char+y)*256) + (x_char+x))>>3)) & ~(0x80 >> ((((y_char+y)*256) + (x_char+x))&7) ) );
+ { // Normal - Vertical orientation
+ plot(
+ x - ( (y_char*q_factor) + q ),
+ y + ( (x_char*p_factor) + p )
+ );
+ }
}
}
-
- char_pix++;
}
}
}
+ }
+
+ if(!(m_registers[EF936X_REG_CTRL2] & 0x08))
+ {
+ x = x + ( (x_char_res + 1 ) * p_factor ) ;
+ set_x_reg(x);
+ }
+ else
+ {
+ y = y + ( (x_char_res + 1 ) * p_factor ) ;
+ set_x_reg(y);
+ }
+ }
- x = x + ( x_char_res + 1 );
+ return compute_cycles;
+}
+
+//-------------------------------------------------
+// cycles_to_us: Convert a number of clock cycles to us
+//-------------------------------------------------
+
+int ef9365_device::cycles_to_us(int cycles)
+{
+ return ( (float)cycles * ( (float)1000000 / (float)clock_freq ) );
+}
- m_registers[EF9365_REG_X_MSB] = x >> 8;
- m_registers[EF9365_REG_X_LSB] = x & 0xFF;
+//-------------------------------------------------
+// dump_bitplanes_word: Latch the bitplane words
+// pointed by the x & y regiters
+// (Memory read back function)
+//-------------------------------------------------
+
+void ef9365_device::dump_bitplanes_word()
+{
+ int p;
+ int pixel_ptr;
+
+ pixel_ptr = ( ( ( ( bitplane_yres - 1 ) - ( get_y_reg() & ( bitplane_yres - 1 ) ) ) * bitplane_xres ) + ( get_x_reg() & ( bitplane_xres - 1 ) ) );
+
+ #ifdef DBGMODE
+ printf("dump : x = %d , y = %d\n", get_x_reg() ,get_y_reg());
+ #endif
+
+ for( p = 0; p < nb_of_bitplanes ; p++ )
+ {
+ if( pixel_ptr & 0x4 )
+ {
+ m_readback_latch[p] = ( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) ) & 0xF ;
}
+ else
+ {
+ m_readback_latch[p] = ( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (pixel_ptr>>3) ) >> 4 ) & 0xF ;
+ }
+
}
+
+ m_readback_latch_pix_offset = pixel_ptr & 0x3;
}
+//-------------------------------------------------
+// screen_scanning: Fill / Clear framebuffer memory
+//-------------------------------------------------
+
void ef9365_device::screen_scanning( int force_clear )
{
int x,y,p;
- if( (m_registers[EF9365_REG_CTRL1] & 0x02) && !force_clear )
+ if( (m_registers[EF936X_REG_CTRL1] & 0x02) && !force_clear )
{
- for( y = 0; y < 256; y++ )
+ for( y = 0; y < bitplane_yres; y++ )
{
- for( x = 0; x < 256; x++ )
+ for( x = 0; x < bitplane_xres; x++ )
{
- for( p = 0 ; p < 4 ; p++ )
+ for( p = 0 ; p < nb_of_bitplanes ; p++ )
{
if( m_current_color & (0x01 << p) )
- m_videoram->write_byte ( (0x2000*p) + (((y*256) + x)>>3), m_videoram->read_byte( (0x2000*p) + (((y*256) + x)>>3)) | (0x80 >> (((y*256) + x)&7) ) );
+ m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) );
else
- m_videoram->write_byte ( (0x2000*p) + (((y*256) + x)>>3), m_videoram->read_byte( (0x2000*p) + (((y*256) + x)>>3)) & ~(0x80 >> (((y*256) + x)&7) ) );
+ m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) & ~(0x80 >> (((y*bitplane_xres) + x)&7) ) );
}
}
}
}
else
{
- for( y = 0; y < 256; y++)
+ for( y = 0; y < bitplane_yres; y++)
{
- for( x = 0; x < 256; x++)
+ for( x = 0; x < bitplane_xres; x++)
{
- for( p = 0 ; p < 4 ; p++ )
+ for( p = 0 ; p < nb_of_bitplanes ; p++ )
{
- m_videoram->write_byte ( (0x2000*p) + (((y*256) + x)>>3), m_videoram->read_byte( (0x2000*p) + (((y*256) + x)>>3)) & ~(0x80 >> (((y*256) + x)&7) ) );
+ m_videoram->write_byte ( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3), m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (((y*bitplane_xres) + x)>>3)) | (0x80 >> (((y*bitplane_xres) + x)&7) ) );
}
}
}
}
}
-// Execute EF9365 command
+//-------------------------------------------------
+// ef9365_exec: EF936X Command decoder and execution
+//-------------------------------------------------
+
void ef9365_device::ef9365_exec(UINT8 cmd)
{
+ int tmp_delta_x,tmp_delta_y;
+ int busy_cycles;
m_state = 0;
- set_busy_flag(4);
-
if( ( cmd>>4 ) == 0 )
{
+ #ifdef DBGMODE
+ printf("EF9365 Command : %s\n", commands_names[cmd & 0xF]);
+ #endif
+
switch(cmd & 0xF)
{
case 0x0: // Set bit 1 of CTRL1 : Pen Selection
- #ifdef DBGMODE
- printf("Set bit 1 of CTRL1 : Pen Selection\n");
- #endif
- m_registers[EF9365_REG_CTRL1] |= 0x02;
+ m_registers[EF936X_REG_CTRL1] |= 0x02;
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0x1: // Clear bit 1 of CTRL1 : Eraser Selection
- #ifdef DBGMODE
- printf("Clear bit 1 of CTRL1 : Eraser Selection\n");
- #endif
- m_registers[EF9365_REG_CTRL1] &= (~0x02);
+ m_registers[EF936X_REG_CTRL1] &= (~0x02);
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0x2: // Set bit 0 of CTRL1 : Pen/Eraser down selection
- #ifdef DBGMODE
- printf("Set bit 0 of CTRL1 : Pen/Eraser down selection\n");
- #endif
- m_registers[EF9365_REG_CTRL1] |= 0x01;
+ m_registers[EF936X_REG_CTRL1] |= 0x01;
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0x3: // Clear bit 0 of CTRL1 : Pen/Eraser up selection
- #ifdef DBGMODE
- printf("Clear bit 0 of CTRL1 : Pen/Eraser up selection\n");
- #endif
- m_registers[EF9365_REG_CTRL1] &= (~0x01);
+ m_registers[EF936X_REG_CTRL1] &= (~0x01);
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0x4: // Clear screen
- #ifdef DBGMODE
- printf("Clear screen\n");
- #endif
screen_scanning(1);
+ set_busy_flag( cycles_to_us( bitplane_xres*bitplane_yres ) ); // Timing to check on the real hardware
break;
case 0x5: // X and Y registers reset to 0
- #ifdef DBGMODE
- printf("X and Y registers reset to 0\n");
- #endif
- m_registers[EF9365_REG_X_MSB] = 0;
- m_registers[EF9365_REG_X_LSB] = 0;
-
- m_registers[EF9365_REG_Y_MSB] = 0;
- m_registers[EF9365_REG_Y_LSB] = 0;
+ set_x_reg(0);
+ set_y_reg(0);
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0x6: // X and Y registers reset to 0 and clear screen
- #ifdef DBGMODE
- printf("X and Y registers reset to 0 and clear screen\n");
- #endif
- m_registers[EF9365_REG_X_MSB] = 0;
- m_registers[EF9365_REG_X_LSB] = 0;
-
- m_registers[EF9365_REG_Y_MSB] = 0;
- m_registers[EF9365_REG_Y_LSB] = 0;
+ set_x_reg(0);
+ set_y_reg(0);
+ screen_scanning(1);
+ set_busy_flag( cycles_to_us( bitplane_xres*bitplane_yres ) ); // Timing to check on the real hardware
break;
case 0x7: // Clear screen, set CSIZE to code "minsize". All other registers reset to 0
- #ifdef DBGMODE
- printf("Clear screen, set CSIZE to code \"minsize\". All other registers reset to 0\n");
- #endif
+ m_registers[EF936X_REG_CSIZE] = 0x11;
screen_scanning(1);
+ set_busy_flag( cycles_to_us( bitplane_xres*bitplane_yres ) ); // Timing to check on the real hardware
break;
case 0x8: // Light-pen initialization (/White forced low)
- #ifdef DBGMODE
- printf("Light-pen initialization (/White forced low)\n");
- #endif
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0x9: // Light-pen initialization
- #ifdef DBGMODE
- printf("Light-pen initialization\n");
- #endif
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0xA: // 5x8 block drawing (size according to CSIZE)
- #ifdef DBGMODE
- printf("5x8 block drawing (size according to CSIZE)\n");
- #endif
- draw_character( 0x00 , 1 , 0 );
+ busy_cycles = draw_character( 0x00 , 1 , 0 );
+ set_busy_flag( cycles_to_us( busy_cycles ) );
break;
case 0xB: // 4x4 block drawing (size according to CSIZE)
- #ifdef DBGMODE
- printf("4x4 block drawing (size according to CSIZE)\n");
- #endif
- draw_character( 0x00 , 1 , 1 );
+ busy_cycles = draw_character( 0x00 , 1 , 1 );
+ set_busy_flag( cycles_to_us( busy_cycles ) );
break;
case 0xC: // Screen scanning : pen or Eraser as defined by CTRL1
- #ifdef DBGMODE
- printf("Screen scanning : pen or Eraser as defined by CTRL1\n");
- #endif
screen_scanning(0);
+ set_busy_flag( cycles_to_us( bitplane_xres*bitplane_yres ) ); // Timing to check on the real hardware
break;
case 0xD: // X reset to 0
- #ifdef DBGMODE
- printf("X reset to 0\n");
- #endif
- m_registers[EF9365_REG_X_MSB] = 0;
- m_registers[EF9365_REG_X_LSB] = 0;
+ set_x_reg(0);
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0xE: // Y reset to 0
- #ifdef DBGMODE
- printf("Y reset to 0\n");
- #endif
- m_registers[EF9365_REG_Y_MSB] = 0;
- m_registers[EF9365_REG_Y_LSB] = 0;
+ set_y_reg(0);
+ set_busy_flag( cycles_to_us( 4 ) ); // Timing to check on the real hardware
break;
case 0xF: // Direct image memory access request for the next free cycle.
- #ifdef DBGMODE
- printf("Direct image memory access request for the next free cycle.\n");
- #endif
+ set_busy_flag( cycles_to_us( 64 ) ); // Timing to check on the real hardware
+ dump_bitplanes_word();
break;
default:
logerror("Unemulated EF9365 cmd: %02x\n", cmd);
@@ -417,82 +1023,139 @@ void ef9365_device::ef9365_exec(UINT8 cmd)
{
if ( ( cmd>>4 ) == 1 )
{
- if( ( cmd & 0xF ) < 0x8 )
+ #ifdef DBGMODE
+ if( cmd & 0x08 )
+ printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x11]);
+ else
+ printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x10]);
+ #endif
+
+ tmp_delta_x = m_registers[EF936X_REG_DELTAX];
+ tmp_delta_y = m_registers[EF936X_REG_DELTAY];
+
+ if( cmd & 0x08 )
{
- // Vector generation ( for b2,b1,0 see small vector definition)
- #ifdef DBGMODE
- printf("Vector generation ( for b2,b1,0 see small vector definition)\n");
- #endif
+ if(tmp_delta_x > tmp_delta_y )
+ tmp_delta_y = tmp_delta_x;
+ if(tmp_delta_y > tmp_delta_x )
+ tmp_delta_y = tmp_delta_x;
}
- else
+
+ // Vector / Special direction vector generation
+ switch ( cmd & 0x7 ) // Direction code
{
- // Special direction vectors generation ( for b2,b1,0 see small vector definition)
- #ifdef DBGMODE
- printf("Special direction vectors generation ( for b2,b1,0 see small vector definition)\n");
- #endif
+ case 0x1:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() + tmp_delta_x, get_y_reg() + tmp_delta_y);
+ break;
+ case 0x3:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() - tmp_delta_x, get_y_reg() + tmp_delta_y);
+ break;
+ case 0x5:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() + tmp_delta_x, get_y_reg() - tmp_delta_y);
+ break;
+ case 0x7:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() - tmp_delta_x, get_y_reg() - tmp_delta_y);
+ break;
+
+ case 0x0:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() + tmp_delta_x, get_y_reg() );
+ break;
+ case 0x2:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg(), get_y_reg() + tmp_delta_y);
+ break;
+ case 0x4:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg(), get_y_reg() - tmp_delta_y);
+ break;
+ case 0x6:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() - tmp_delta_x, get_y_reg() );
+ break;
}
+ set_busy_flag( cycles_to_us( busy_cycles ) );
}
else
{
if( ( cmd>>4 ) >= 0x8 )
{
- // Small vector definition.
#ifdef DBGMODE
- printf("Small vector definition.\n");
+ printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x13]);
#endif
+
+ tmp_delta_x = ( cmd >> 5 ) & 3;
+ tmp_delta_y = ( cmd >> 3 ) & 3;
+
+ // Small vector.
+ switch ( cmd & 0x7 ) // Direction code
+ {
+ case 0x1:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() + tmp_delta_x, get_y_reg() + tmp_delta_y);
+ break;
+ case 0x3:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() - tmp_delta_x, get_y_reg() + tmp_delta_y);
+ break;
+ case 0x5:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() + tmp_delta_x, get_y_reg() - tmp_delta_y);
+ break;
+ case 0x7:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() - tmp_delta_x, get_y_reg() - tmp_delta_y);
+ break;
+
+ case 0x0:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() + tmp_delta_x, get_y_reg() );
+ break;
+ case 0x2:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg(), get_y_reg() + tmp_delta_y);
+ break;
+ case 0x4:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg(), get_y_reg() - tmp_delta_y);
+ break;
+ case 0x6:
+ busy_cycles = draw_vector ( get_x_reg(), get_y_reg(), get_x_reg() - tmp_delta_x, get_y_reg() );
+ break;
+ }
+
+ set_busy_flag( cycles_to_us( busy_cycles ) );
}
else
{
// Draw character
+
#ifdef DBGMODE
- printf("Draw character\n");
+ printf("EF9365 Command : [0x%.2X] %s\n", cmd, commands_names[0x12]);
#endif
- draw_character( cmd - 0x20, 0 , 0 );
+
+ busy_cycles = draw_character( cmd - 0x20, 0 , 0 );
+ set_busy_flag( cycles_to_us( busy_cycles ) );
}
}
}
}
-
-/**************************************************************
- EF9365 interface
-**************************************************************/
+//-------------------------------------------------
+// screen_update: Framebuffer video ouput
+//-------------------------------------------------
UINT32 ef9365_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- int i,j,k;
+ int i,j,ptr,p;
unsigned char color_index;
- k = 0;
- for(i=0;i<256;i++)
+ for(j=0;j<bitplane_yres;j++)
{
- for(j=0;j<256;j++)
+ for(i=0;i<bitplane_xres;i++)
{
color_index = 0x00;
- if( m_videoram->read_byte(0x0000 + (k>>3)) & (0x80>>(k&7)))
- {
- color_index |= 0x01;
- }
-
- if( m_videoram->read_byte(0x2000 + (k>>3)) & (0x80>>(k&7)))
- {
- color_index |= 0x02;
- }
+ ptr = ( bitplane_xres * j ) + i;
- if( m_videoram->read_byte(0x4000 + (k>>3)) & (0x80>>(k&7)))
+ for( p = 0; p < nb_of_bitplanes; p++)
{
- color_index |= 0x04;
- }
-
- if( m_videoram->read_byte(0x6000 + (k>>3)) & (0x80>>(k&7)))
- {
- color_index |= 0x08;
+ if( m_videoram->read_byte( (EF936X_BITPLANE_MAX_SIZE*p) + (ptr>>3)) & (0x80>>(ptr&7)))
+ {
+ color_index |= (0x01<<p);
+ }
}
- m_screen_out.pix32(i, j) = palette[ color_index&0xF ];
-
- k++;
+ m_screen_out.pix32(j, i) = palette[ color_index ];
}
}
@@ -500,48 +1163,170 @@ UINT32 ef9365_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
return 0;
}
+//-------------------------------------------------
+// update_scanline: Scanline callback
+//-------------------------------------------------
+
void ef9365_device::update_scanline(UINT16 scanline)
{
- if (scanline == 250)
+ if (scanline == vsync_scanline_pos)
+ {
m_state |= (0x02); // vsync
+ if( m_registers[EF936X_REG_CTRL1] & 0x20 )
+ {
+ m_irq_vb = 1;
+ }
+
+ update_interrupts();
+ }
if (scanline == 0)
{
m_state &= (~0x02);
draw_border(0);
}
-
- else if (scanline < 120)
- {
- }
- else if (scanline < 250)
- {
- }
}
+//-------------------------------------------------
+// data_r: Registers read access callback
+//-------------------------------------------------
+
READ8_MEMBER( ef9365_device::data_r )
{
- if (offset & 0xF)
- return m_registers[offset & 0xF];
+ unsigned char return_value;
- if (m_bf)
- m_state &= (~0x04);
- else
- m_state |= 0x04;
+ switch(offset & 0xF)
+ {
+ case EF936X_REG_STATUS:
+ if (m_bf)
+ m_state &= (~0x04);
+ else
+ m_state |= 0x04;
+
+ if ( ( overflow_mask_x & get_x_reg() ) || ( overflow_mask_y & get_y_reg() ) )
+ {
+ m_state |= 0x08;
+ }
+
+ if( m_irq_vb || m_irq_lb || m_irq_rdy )
+ {
+ m_state |= 0x80;
+ }
+
+ if( m_irq_lb )
+ {
+ m_state |= 0x10;
+ m_irq_lb = 0;
+ }
+
+ if( m_irq_vb )
+ {
+ m_state |= 0x20;
+ m_irq_vb = 0;
+ }
+
+ if( m_irq_rdy )
+ {
+ m_state |= 0x40;
+ m_irq_rdy = 0;
+ }
+
+ update_interrupts();
+
+ return_value = m_state;
+ break;
+ case EF936X_REG_CTRL1:
+ return_value = m_registers[EF936X_REG_CTRL1] & 0x7F;
+ break;
+ case EF936X_REG_CTRL2:
+ return_value = m_registers[EF936X_REG_CTRL2] & 0x0F;
+ break;
+ case EF936X_REG_CSIZE:
+ return_value = m_registers[EF936X_REG_CSIZE];
+ break;
+ case EF936X_REG_DELTAX:
+ return_value = m_registers[EF936X_REG_DELTAX];
+ break;
+ case EF936X_REG_DELTAY:
+ return_value = m_registers[EF936X_REG_DELTAY];
+ break;
+ case EF936X_REG_X_MSB:
+ return_value = m_registers[EF936X_REG_X_MSB] & 0x0F;
+ break;
+ case EF936X_REG_X_LSB:
+ return_value = m_registers[EF936X_REG_X_LSB];
+ break;
+ case EF936X_REG_Y_MSB:
+ return_value = m_registers[EF936X_REG_Y_MSB] & 0x0F;
+ break;
+ case EF936X_REG_Y_LSB:
+ return_value = m_registers[EF936X_REG_Y_LSB];
+ break;
+ case EF936X_REG_XLP:
+ return_value = m_registers[EF936X_REG_XLP] & 0xFD;
+ break;
+ case EF936X_REG_YLP:
+ return_value = m_registers[EF936X_REG_YLP];
+ break;
+ default:
+ return_value = 0xFF;
+ break;
+ }
#ifdef DBGMODE
- printf("rd ef9365 [0x%2x] = [0x%2x]\n", offset&0xF,m_state );
+ printf("EF9365 [ %s ] RD> [ 0x%.2X ] - %s\n", register_names[offset&0xF],return_value, machine().describe_context() );
#endif
- return m_state;
+
+ return return_value;
}
+//-------------------------------------------------
+// data_w: Registers write access callback
+//-------------------------------------------------
+
WRITE8_MEMBER( ef9365_device::data_w )
{
- m_registers[offset & 0xF] = data;
#ifdef DBGMODE
- printf("wr ef9365 [0x%2x] = [0x%2x]\n", offset&0xF,data );
+ printf("EF9365 [ %s ] <WR [ 0x%.2X ] - %s\n", register_names[offset&0xF],data, machine().describe_context() );
#endif
- if (!offset)
- ef9365_exec(m_registers[0] & 0xff);
+ switch(offset & 0xF)
+ {
+ case EF936X_REG_CMD:
+ ef9365_exec( data & 0xff);
+ break;
+ case EF936X_REG_CTRL1:
+ m_registers[EF936X_REG_CTRL1] = data & 0x7F;
+ break;
+ case EF936X_REG_CTRL2:
+ m_registers[EF936X_REG_CTRL2] = data & 0x0F;
+ break;
+ case EF936X_REG_CSIZE:
+ m_registers[EF936X_REG_CSIZE] = data;
+ break;
+ case EF936X_REG_DELTAX:
+ m_registers[EF936X_REG_DELTAX] = data;
+ break;
+ case EF936X_REG_DELTAY:
+ m_registers[EF936X_REG_DELTAY] = data;
+ break;
+ case EF936X_REG_X_MSB:
+ m_registers[EF936X_REG_X_MSB] = data & 0x0F;
+ break;
+ case EF936X_REG_X_LSB:
+ m_registers[EF936X_REG_X_LSB] = data;
+ break;
+ case EF936X_REG_Y_MSB:
+ m_registers[EF936X_REG_Y_MSB] = data & 0x0F;
+ break;
+ case EF936X_REG_Y_LSB:
+ m_registers[EF936X_REG_Y_LSB] = data;
+ break;
+ case EF936X_REG_XLP:
+ break;
+ case EF936X_REG_YLP:
+ break;
+ default:
+ break;
+ }
}
diff --git a/src/devices/video/ef9365.h b/src/devices/video/ef9365.h
index c4d4b2160b2..e29b3adca33 100644
--- a/src/devices/video/ef9365.h
+++ b/src/devices/video/ef9365.h
@@ -1,10 +1,10 @@
// license:BSD-3-Clause
-// copyright-holders:Jean-François DEL NERO
+// copyright-holders:Jean-Francois DEL NERO
/*********************************************************************
ef9365.h
- Thomson EF9365 video controller
+ Thomson EF9365/EF9366 video controller
*********************************************************************/
@@ -13,10 +13,21 @@
#ifndef __EF9365_H__
#define __EF9365_H__
+#define EF936X_BITPLANE_MAX_SIZE 0x8000
+#define EF936X_MAX_BITPLANES 8
-#define MCFG_EF9365_PALETTE(_palette_tag) \
+#define MCFG_EF936X_PALETTE(_palette_tag) \
ef9365_device::static_set_palette_tag(*device, "^" _palette_tag);
+#define MCFG_EF936X_BITPLANES_CNT(_bitplanes_number) \
+ ef9365_device::static_set_nb_bitplanes(*device,_bitplanes_number);
+
+#define MCFG_EF936X_DISPLAYMODE(_display_mode) \
+ ef9365_device::static_set_display_mode(*device,_display_mode);
+
+#define MCFG_EF936X_IRQ_HANDLER(_devcb) \
+ devcb = &ef9365_device::set_irq_handler(*device, DEVCB_##_devcb);
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -33,14 +44,20 @@ public:
// static configuration
static void static_set_palette_tag(device_t &device, const char *tag);
+ static void static_set_nb_bitplanes(device_t &device, int nb_bitplanes );
+ static void static_set_display_mode(device_t &device, int display_mode );
+ template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ef9365_device &>(device).m_irq_handler.set_callback(object); }
// device interface
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w );
void update_scanline(UINT16 scanline);
- void static_set_color_filler( UINT8 color );
- void static_set_color_entry( int index, UINT8 r, UINT8 g, UINT8 b );
+ void set_color_filler( UINT8 color );
+ void set_color_entry( int index, UINT8 r, UINT8 g, UINT8 b );
+
+ UINT8 get_last_readback_word(int bitplane_number, int * pixel_offset);
+
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
protected:
@@ -58,12 +75,22 @@ protected:
// inline helper
private:
- void draw_character( unsigned char c, int block, int smallblock );
+ int get_char_pix( unsigned char c, int x, int y );
+ void plot(int x_pos,int y_pos);
+ int draw_character( unsigned char c, int block, int smallblock );
+ int draw_vector(int x1,int y1,int x2,int y2);
+ unsigned int get_x_reg();
+ unsigned int get_y_reg();
+ void set_x_reg(unsigned int x);
+ void set_y_reg(unsigned int y);
void screen_scanning( int force_clear );
void set_busy_flag(int period);
void set_video_mode(void);
void draw_border(UINT16 line);
void ef9365_exec(UINT8 cmd);
+ int cycles_to_us(int cycles);
+ void dump_bitplanes_word();
+ void update_interrupts();
// internal state
static const device_timer_id BUSY_TIMER = 0;
@@ -71,36 +98,60 @@ private:
memory_region *m_charset;
address_space *m_videoram;
+ UINT8 m_irq_state;
+ UINT8 m_irq_vb;
+ UINT8 m_irq_lb;
+ UINT8 m_irq_rdy;
UINT8 m_current_color;
UINT8 m_bf; //busy flag
UINT8 m_registers[0x10]; //registers
UINT8 m_state; //status register
UINT8 m_border[80]; //border color
- rgb_t palette[16];
+ rgb_t palette[256]; // 8 bitplanes max -> 256 colors max
+ int nb_of_bitplanes;
+ int nb_of_colors;
+ int bitplane_xres;
+ int bitplane_yres;
+ UINT16 overflow_mask_x;
+ UINT16 overflow_mask_y;
+ int vsync_scanline_pos;
+
+ UINT8 m_readback_latch[EF936X_MAX_BITPLANES]; // Last DRAM Readback buffer (Filled after a Direct Memory Access Request command)
+ int m_readback_latch_pix_offset;
+
+ UINT32 clock_freq;
bitmap_rgb32 m_screen_out;
// timers
emu_timer *m_busy_timer;
required_device<palette_device> m_palette;
+ devcb_write_line m_irq_handler;
};
// device type definition
extern const device_type EF9365;
-#define EF9365_REG_STATUS 0x00
-#define EF9365_REG_CMD 0x00
-#define EF9365_REG_CTRL1 0x01
-#define EF9365_REG_CTRL2 0x02
-#define EF9365_REG_CSIZE 0x03
-#define EF9365_REG_DELTAX 0x05
-#define EF9365_REG_DELTAY 0x07
-#define EF9365_REG_X_MSB 0x08
-#define EF9365_REG_X_LSB 0x09
-#define EF9365_REG_Y_MSB 0x0A
-#define EF9365_REG_Y_LSB 0x0B
-#define EF9365_REG_XLP 0x0C
-#define EF9365_REG_YLP 0x0D
+#define EF936X_REG_STATUS 0x00
+#define EF936X_REG_CMD 0x00
+#define EF936X_REG_CTRL1 0x01
+#define EF936X_REG_CTRL2 0x02
+#define EF936X_REG_CSIZE 0x03
+#define EF936X_REG_DELTAX 0x05
+#define EF936X_REG_DELTAY 0x07
+#define EF936X_REG_X_MSB 0x08
+#define EF936X_REG_X_LSB 0x09
+#define EF936X_REG_Y_MSB 0x0A
+#define EF936X_REG_Y_LSB 0x0B
+#define EF936X_REG_XLP 0x0C
+#define EF936X_REG_YLP 0x0D
+
+#define EF936X_256x256_DISPLAY_MODE 0x00
+#define EF936X_512x512_DISPLAY_MODE 0x01
+#define EF936X_512x256_DISPLAY_MODE 0x02
+#define EF936X_128x128_DISPLAY_MODE 0x03
+#define EF936X_64x64_DISPLAY_MODE 0x04
+
#endif
diff --git a/src/devices/video/epic12.cpp b/src/devices/video/epic12.cpp
index fa9c8522198..fa168e5ac36 100644
--- a/src/devices/video/epic12.cpp
+++ b/src/devices/video/epic12.cpp
@@ -41,11 +41,11 @@ TIMER_CALLBACK_MEMBER( epic12_device::blitter_delay_callback )
void epic12_device::device_start()
{
m_gfx_size = 0x2000 * 0x1000;
- m_bitmaps = auto_bitmap_rgb32_alloc(machine(), 0x2000, 0x1000);
+ m_bitmaps = std::make_unique<bitmap_rgb32>( 0x2000, 0x1000);
m_clip = m_bitmaps->cliprect();
m_clip.set(0, 0x2000-1, 0, 0x1000-1);
- m_ram16_copy = auto_alloc_array(machine(), UINT16, m_main_ramsize/2);
+ m_ram16_copy = std::make_unique<UINT16[]>(m_main_ramsize/2);
m_blitter_delay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(epic12_device::blitter_delay_callback),this));
m_blitter_delay_timer->adjust(attotime::never);
@@ -60,7 +60,7 @@ void epic12_device::device_reset()
}
else
{
- m_use_ram = m_ram16_copy; // slow mode
+ m_use_ram = m_ram16_copy.get(); // slow mode
m_work_queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_HIGH_FREQ);
}
@@ -186,7 +186,7 @@ inline void epic12_device::gfx_upload(offs_t *addr)
}
}
-#define draw_params m_bitmaps, &m_clip, &m_bitmaps->pix(0,0),src_x,src_y, x,y, dimx,dimy, flipy, s_alpha, d_alpha, &tint_clr
+#define draw_params m_bitmaps.get(), &m_clip, &m_bitmaps->pix(0,0),src_x,src_y, x,y, dimx,dimy, flipy, s_alpha, d_alpha, &tint_clr
diff --git a/src/devices/video/epic12.h b/src/devices/video/epic12.h
index fac967b1a3d..5e6301b44f8 100644
--- a/src/devices/video/epic12.h
+++ b/src/devices/video/epic12.h
@@ -76,7 +76,7 @@ public:
UINT32 m_gfx_scroll_1_x, m_gfx_scroll_1_y;
int m_gfx_size;
- bitmap_rgb32 *m_bitmaps;
+ std::unique_ptr<bitmap_rgb32> m_bitmaps;
rectangle m_clip;
UINT16* m_use_ram;
@@ -95,7 +95,7 @@ public:
UINT32 m_gfx_addr_shadowcopy;
UINT32 m_gfx_scroll_0_x_shadowcopy, m_gfx_scroll_0_y_shadowcopy;
UINT32 m_gfx_scroll_1_x_shadowcopy, m_gfx_scroll_1_y_shadowcopy;
- UINT16* m_ram16_copy;
+ std::unique_ptr<UINT16[]> m_ram16_copy;
inline void gfx_upload_shadow_copy(address_space &space, offs_t *addr);
inline void gfx_create_shadow_copy(address_space &space);
inline UINT16 COPY_NEXT_WORD(address_space &space, offs_t *addr);
diff --git a/src/devices/video/fixfreq.cpp b/src/devices/video/fixfreq.cpp
index 355150ccfb6..d75232808e9 100644
--- a/src/devices/video/fixfreq.cpp
+++ b/src/devices/video/fixfreq.cpp
@@ -149,9 +149,9 @@ void fixedfreq_device::recompute_parameters(bool postload)
bool needs_realloc = (m_htotal != m_hbackporch) && (m_vtotal != m_vbackporch);
if (m_bitmap[0] != nullptr || needs_realloc)
- auto_free(machine(), m_bitmap[0]);
+ m_bitmap[0] = nullptr;
if (m_bitmap[1] != nullptr || needs_realloc)
- auto_free(machine(), m_bitmap[0]);
+ m_bitmap[1] = nullptr;
m_htotal = m_hbackporch;
m_vtotal = m_vbackporch;
@@ -162,8 +162,8 @@ void fixedfreq_device::recompute_parameters(bool postload)
m_mult = (double) (m_monitor_clock) / (double) m_htotal * 1.0; // / (3.0 + 3.0);
VERBOSE_OUT(("trigger %f with len %f\n", m_int_trig, 1e6 / m_mult));
- m_bitmap[0] = auto_bitmap_rgb32_alloc(machine(),m_htotal, m_vtotal);
- m_bitmap[1] = auto_bitmap_rgb32_alloc(machine(),m_htotal, m_vtotal);
+ m_bitmap[0] = std::make_unique<bitmap_rgb32>(m_htotal, m_vtotal);
+ m_bitmap[1] = std::make_unique<bitmap_rgb32>(m_htotal, m_vtotal);
rectangle visarea(
m_hbackporch - m_hfrontporch,
@@ -235,7 +235,7 @@ UINT32 fixedfreq_device::screen_update(screen_device &screen, bitmap_rgb32 &bitm
NETDEV_ANALOG_CALLBACK_MEMBER(fixedfreq_device::update_vid)
{
- bitmap_rgb32 *bm = m_bitmap[m_cur_bm];
+ bitmap_rgb32 *bm = m_bitmap[m_cur_bm].get();
const int has_fields = (m_fieldcount > 1) ? 1: 0;
int pixels = round((time - m_line_time).as_double() / m_clock_period.as_double());
diff --git a/src/devices/video/fixfreq.h b/src/devices/video/fixfreq.h
index b8cdc9c711e..38fde1c5f3b 100644
--- a/src/devices/video/fixfreq.h
+++ b/src/devices/video/fixfreq.h
@@ -126,7 +126,7 @@ private:
attotime m_last_vsync_time;
attotime m_refresh;
attotime m_clock_period;
- bitmap_rgb32 *m_bitmap[2];
+ std::unique_ptr<bitmap_rgb32> m_bitmap[2];
int m_cur_bm;
/* adjustable by drivers */
diff --git a/src/devices/video/gf4500.cpp b/src/devices/video/gf4500.cpp
index f3061597002..d4b7e86f056 100644
--- a/src/devices/video/gf4500.cpp
+++ b/src/devices/video/gf4500.cpp
@@ -57,9 +57,9 @@ void gf4500_device::device_config_complete()
void gf4500_device::device_start()
{
- m_data = auto_alloc_array_clear(machine(), UINT32, 0x140000/4);
+ m_data = make_unique_clear<UINT32[]>(0x140000/4);
- save_pointer(NAME(m_data), 0x140000/4);
+ save_pointer(NAME(m_data.get()), 0x140000/4);
save_item(NAME(m_screen_x));
save_item(NAME(m_screen_y));
save_item(NAME(m_screen_x_max));
@@ -83,7 +83,7 @@ void gf4500_device::vram_write16( UINT16 data )
{
if ((m_screen_x < m_screen_x_max) && (m_screen_y < m_screen_y_max))
{
- UINT16 *vram = (UINT16 *)((UINT8 *)m_data + GF4500_FRAMEBUF_OFFSET + (((m_screen_y_min + m_screen_y) * (320 + 1)) + (m_screen_x_min + m_screen_x)) * 2);
+ UINT16 *vram = (UINT16 *)((UINT8 *)m_data.get() + GF4500_FRAMEBUF_OFFSET + (((m_screen_y_min + m_screen_y) * (320 + 1)) + (m_screen_x_min + m_screen_x)) * 2);
*vram = data;
m_screen_x++;
}
@@ -100,7 +100,7 @@ static rgb_t gf4500_get_color_16( UINT16 data )
UINT32 gf4500_device::screen_update(screen_device &device, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- UINT16 *vram = (UINT16 *)(m_data + GF4500_FRAMEBUF_OFFSET / 4);
+ UINT16 *vram = (UINT16 *)(m_data.get() + GF4500_FRAMEBUF_OFFSET / 4);
int x, y;
for (y = 0; y < 240; y++)
{
diff --git a/src/devices/video/gf4500.h b/src/devices/video/gf4500.h
index 1a64abaded2..aa8bf8ebf63 100644
--- a/src/devices/video/gf4500.h
+++ b/src/devices/video/gf4500.h
@@ -35,7 +35,7 @@ private:
void vram_write16(UINT16 data);
- UINT32 *m_data;
+ std::unique_ptr<UINT32[]> m_data;
int m_screen_x;
int m_screen_y;
int m_screen_x_max;
diff --git a/src/devices/video/h63484.cpp b/src/devices/video/h63484.cpp
index 75b8f881eb0..1e0d7cbb0d8 100644
--- a/src/devices/video/h63484.cpp
+++ b/src/devices/video/h63484.cpp
@@ -1918,7 +1918,7 @@ READ16_MEMBER( h63484_device::status_r )
READ16_MEMBER( h63484_device::data_r )
{
- UINT16 res = 0xffff;
+ UINT16 res;
if(m_ar == 0) // FIFO read
{
diff --git a/src/devices/video/hd44780.cpp b/src/devices/video/hd44780.cpp
index c54adc6538f..00c75e3cd2a 100644
--- a/src/devices/video/hd44780.cpp
+++ b/src/devices/video/hd44780.cpp
@@ -288,7 +288,7 @@ const UINT8 *hd44780_device::render()
{
UINT16 char_pos = line * 0x40 + ((pos + m_disp_shift) % line_size);
- int char_base = 0;
+ int char_base;
if (m_ddram[char_pos] < 0x10)
{
// draw CGRAM characters
diff --git a/src/devices/video/hd61830.cpp b/src/devices/video/hd61830.cpp
index da996128773..d60354ef8a8 100644
--- a/src/devices/video/hd61830.cpp
+++ b/src/devices/video/hd61830.cpp
@@ -420,7 +420,7 @@ void hd61830_device::draw_char(bitmap_ind16 &bitmap, const rectangle &cliprect,
{
int sy = y * m_vp + cl;
int sx = x * m_hp + cr;
- UINT8 data = 0;
+ UINT8 data;
if (m_mcr & MODE_EXTERNAL_CG)
{
diff --git a/src/devices/video/hd63484.cpp b/src/devices/video/hd63484.cpp
index d23081564a6..9dab25d3669 100644
--- a/src/devices/video/hd63484.cpp
+++ b/src/devices/video/hd63484.cpp
@@ -70,9 +70,9 @@ hd63484_device::hd63484_device(const machine_config &mconfig, const char *tag, d
void hd63484_device::device_start()
{
- m_ram = auto_alloc_array_clear(machine(), UINT16, HD63484_RAM_SIZE);
+ m_ram = make_unique_clear<UINT16[]>(HD63484_RAM_SIZE);
- save_pointer(NAME(m_ram), HD63484_RAM_SIZE);
+ save_pointer(NAME(m_ram.get()), HD63484_RAM_SIZE);
save_item(NAME(m_reg));
save_item(NAME(m_fifo_counter));
save_item(NAME(m_fifo));
diff --git a/src/devices/video/hd63484.h b/src/devices/video/hd63484.h
index 8dc2cc25aa0..aca908fe008 100644
--- a/src/devices/video/hd63484.h
+++ b/src/devices/video/hd63484.h
@@ -46,7 +46,7 @@ protected:
private:
// internal state
- UINT16 * m_ram;
+ std::unique_ptr<UINT16[]> m_ram;
UINT16 m_reg[256/2];
int m_fifo_counter;
diff --git a/src/devices/video/huc6260.cpp b/src/devices/video/huc6260.cpp
index 7d3ccc75f78..ca9a9b0510d 100644
--- a/src/devices/video/huc6260.cpp
+++ b/src/devices/video/huc6260.cpp
@@ -253,7 +253,7 @@ WRITE8_MEMBER( huc6260_device::write )
void huc6260_device::device_start()
{
m_timer = timer_alloc();
- m_bmp = auto_bitmap_ind16_alloc( machine(), HUC6260_WPF, HUC6260_LPF );
+ m_bmp = std::make_unique<bitmap_ind16>(HUC6260_WPF, HUC6260_LPF );
/* Resolve callbacks */
m_hsync_changed_cb.resolve();
diff --git a/src/devices/video/huc6260.h b/src/devices/video/huc6260.h
index 36131787fbe..85552fbd265 100644
--- a/src/devices/video/huc6260.h
+++ b/src/devices/video/huc6260.h
@@ -88,7 +88,7 @@ private:
UINT8 m_pixel_clock;
emu_timer *m_timer;
- bitmap_ind16 *m_bmp;
+ std::unique_ptr<bitmap_ind16> m_bmp;
};
diff --git a/src/devices/video/huc6261.cpp b/src/devices/video/huc6261.cpp
index 295f8d8abf9..69caa26008e 100644
--- a/src/devices/video/huc6261.cpp
+++ b/src/devices/video/huc6261.cpp
@@ -398,7 +398,7 @@ void huc6261_device::device_start()
m_huc6270_a = machine().device<huc6270_device>(m_huc6270_a_tag);
m_huc6270_b = machine().device<huc6270_device>(m_huc6270_b_tag);
- m_bmp = auto_bitmap_rgb32_alloc( machine(), HUC6261_WPF, HUC6261_LPF );
+ m_bmp = std::make_unique<bitmap_rgb32>(HUC6261_WPF, HUC6261_LPF );
/* We want to have valid devices */
assert( m_huc6270_a != nullptr );
diff --git a/src/devices/video/huc6261.h b/src/devices/video/huc6261.h
index b8a86f0e69e..ab04cd01c22 100644
--- a/src/devices/video/huc6261.h
+++ b/src/devices/video/huc6261.h
@@ -70,7 +70,7 @@ private:
UINT8 m_pixel_clock;
emu_timer *m_timer;
- bitmap_rgb32 *m_bmp;
+ std::unique_ptr<bitmap_rgb32> m_bmp;
INT32 m_uv_lookup[65536][3];
};
diff --git a/src/devices/video/huc6270.cpp b/src/devices/video/huc6270.cpp
index c0fe5225c8e..42527fbcf16 100644
--- a/src/devices/video/huc6270.cpp
+++ b/src/devices/video/huc6270.cpp
@@ -804,10 +804,10 @@ void huc6270_device::device_start()
/* Resolve callbacks */
m_irq_changed_cb.resolve_safe();
- m_vram = auto_alloc_array_clear(machine(), UINT16, m_vram_size/sizeof(UINT16));
+ m_vram = make_unique_clear<UINT16[]>(m_vram_size/sizeof(UINT16));
m_vram_mask = (m_vram_size >> 1) - 1;
- save_pointer(NAME(m_vram), m_vram_size/sizeof(UINT16));
+ save_pointer(NAME(m_vram.get()), m_vram_size/sizeof(UINT16));
save_item(NAME(m_register_index));
save_item(NAME(m_mawr));
diff --git a/src/devices/video/huc6270.h b/src/devices/video/huc6270.h
index c104fe15347..fdaca3b4f5c 100644
--- a/src/devices/video/huc6270.h
+++ b/src/devices/video/huc6270.h
@@ -128,7 +128,7 @@ private:
int m_sprites_this_line;
int m_sprite_row_index;
UINT16 m_sprite_row[1024];
- UINT16 *m_vram;
+ std::unique_ptr<UINT16[]> m_vram;
UINT16 m_vram_mask;
const static UINT8 vram_increments[4];
diff --git a/src/devices/video/i8244.cpp b/src/devices/video/i8244.cpp
index 82ddeed4e43..8adb5b5ed15 100644
--- a/src/devices/video/i8244.cpp
+++ b/src/devices/video/i8244.cpp
@@ -285,7 +285,7 @@ offs_t i8244_device::fix_register_mirrors( offs_t offset )
READ8_MEMBER(i8244_device::read)
{
- UINT8 data = 0;
+ UINT8 data;
offset = fix_register_mirrors( offset );
diff --git a/src/devices/video/i82730.cpp b/src/devices/video/i82730.cpp
index 84bed542f24..d344c7006ef 100644
--- a/src/devices/video/i82730.cpp
+++ b/src/devices/video/i82730.cpp
@@ -126,7 +126,7 @@ UINT8 i82730_device::read_byte(offs_t address)
UINT16 i82730_device::read_word(offs_t address)
{
- UINT16 data = 0xffff;
+ UINT16 data;
if (sysbus_16bit() && !(address & 1))
{
diff --git a/src/devices/video/i8275.cpp b/src/devices/video/i8275.cpp
index 4f75d7cbc1a..433f222cb92 100644
--- a/src/devices/video/i8275.cpp
+++ b/src/devices/video/i8275.cpp
@@ -367,7 +367,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param,
m_hlgt = (data & CA_H) ? 1 : 0;
m_vsp = (data & CA_B) ? 1 : 0;
- UINT8 ca = 0;
+ UINT8 ca;
int cccc = (data >> 2) & 0x0f;
if (line_counter < UNDERLINE)
@@ -448,7 +448,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param,
READ8_MEMBER( i8275_device::read )
{
- UINT8 data = 0;
+ UINT8 data;
if (offset & 0x01)
{
diff --git a/src/devices/video/m50458.cpp b/src/devices/video/m50458.cpp
index e2121cf565d..38e5eeb6e9a 100644
--- a/src/devices/video/m50458.cpp
+++ b/src/devices/video/m50458.cpp
@@ -205,7 +205,7 @@ void m50458_device::device_start()
/* Create an array for shadow gfx */
/* this will spread the source ROM into four directions (up-left, up-right, down-left, down-right) thus creating a working shadow copy */
- m_shadow_gfx = auto_alloc_array_clear(machine(), UINT8, 0x1200);
+ m_shadow_gfx = make_unique_clear<UINT8[]>(0x1200);
for(tile=0;tile<0x80;tile++)
{
diff --git a/src/devices/video/m50458.h b/src/devices/video/m50458.h
index fe6cc087f13..9744ff6d361 100644
--- a/src/devices/video/m50458.h
+++ b/src/devices/video/m50458.h
@@ -71,7 +71,7 @@ protected:
UINT16 m_current_cmd;
int m_cmd_stream_pos;
UINT16 m_osd_addr;
- UINT8 *m_shadow_gfx;
+ std::unique_ptr<UINT8[]> m_shadow_gfx;
UINT8 m_bg_pen;
UINT8 m_phase;
diff --git a/src/devices/video/mb_vcu.cpp b/src/devices/video/mb_vcu.cpp
index 8ee9e835ddc..eda7751a768 100644
--- a/src/devices/video/mb_vcu.cpp
+++ b/src/devices/video/mb_vcu.cpp
@@ -178,8 +178,8 @@ void mb_vcu_device::device_validity_check(validity_checker &valid) const
void mb_vcu_device::device_start()
{
// TODO: m_screen_tag
- m_ram = auto_alloc_array_clear(machine(), UINT8, 0x800);
- m_palram = auto_alloc_array_clear(machine(), UINT8, 0x100);
+ m_ram = make_unique_clear<UINT8[]>(0x800);
+ m_palram = make_unique_clear<UINT8[]>(0x100);
{
static const int resistances_r[2] = { 4700, 2200 };
@@ -193,8 +193,8 @@ void mb_vcu_device::device_start()
}
save_item(NAME(m_status));
- save_pointer(NAME(m_ram), 0x800);
- save_pointer(NAME(m_palram), 0x100);
+ save_pointer(NAME(m_ram.get()), 0x800);
+ save_pointer(NAME(m_palram.get()), 0x100);
save_item(NAME(m_param_offset_latch));
save_item(NAME(m_xpos));
save_item(NAME(m_ypos));
diff --git a/src/devices/video/mb_vcu.h b/src/devices/video/mb_vcu.h
index 8cdc0261be0..e5fe1b2e62e 100644
--- a/src/devices/video/mb_vcu.h
+++ b/src/devices/video/mb_vcu.h
@@ -55,8 +55,8 @@ private:
const address_space_config m_videoram_space_config;
const address_space_config m_paletteram_space_config;
UINT8 m_status;
- UINT8 *m_ram;
- UINT8 *m_palram;
+ std::unique_ptr<UINT8[]> m_ram;
+ std::unique_ptr<UINT8[]> m_palram;
UINT16 m_param_offset_latch;
INT16 m_xpos, m_ypos;
diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp
index 827854b0824..57813f574ab 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);
diff --git a/src/devices/video/mc6847.h b/src/devices/video/mc6847.h
index 26eeb048afe..ac8279080e0 100644
--- a/src/devices/video/mc6847.h
+++ b/src/devices/video/mc6847.h
@@ -411,7 +411,7 @@ protected:
UINT32 emit_mc6847_samples(UINT8 mode, const UINT8 *data, int length, pixel_t *RESTRICT pixels, const pixel_t *RESTRICT palette,
mc6847_get_char_rom_delegate get_char_rom, int x, int y)
{
- UINT32 result = 0;
+ UINT32 result;
if (mode & MODE_AG)
{
/* graphics */
@@ -447,12 +447,12 @@ protected:
break;
}
}
- else if (!get_char_rom.isnull() && ((mode & (MODE_AG|MODE_AS|MODE_INTEXT)) == MODE_INTEXT))
+ else if (!m_charrom_cb.isnull() && ((mode & (MODE_AG|MODE_AS|MODE_INTEXT)) == MODE_INTEXT))
{
/* external ROM */
for (int i = 0; i < length; i++)
{
- UINT8 byte = get_char_rom(data[i], y % 12) ^ (mode & MODE_INV ? 0xFF : 0x00);
+ UINT8 byte = m_charrom_cb(data[i], y % 12) ^ (mode & MODE_INV ? 0xFF : 0x00);
emit_extbytes<1, xscale>(&byte, 1, &pixels[i * 8], (mode & MODE_CSS) ? 14 : 12, palette);
}
result = length * 8 * xscale;
@@ -623,9 +623,6 @@ private:
void record_body_scanline(UINT16 physical_scanline, UINT16 scanline, INT32 start_pos, INT32 end_pos);
pixel_t border_value(UINT8 mode, const pixel_t *palette, bool is_mc6847t1);
- template<int xscale>
- void emit_samples(UINT8 mode, const UINT8 *data, int length, pixel_t *pixels, int x, int y);
-
// template function for doing video update collection
template<int sample_count, int yres>
void record_scanline_res(int scanline, INT32 start_pos, INT32 end_pos);
diff --git a/src/devices/video/mos6566.cpp b/src/devices/video/mos6566.cpp
index d39e8cb041a..f6b9ca75a62 100644
--- a/src/devices/video/mos6566.cpp
+++ b/src/devices/video/mos6566.cpp
@@ -2138,7 +2138,7 @@ void mos6566_device::draw_sprites()
UINT8 snum, sbit;
UINT8 spr_coll = 0, gfx_coll = 0;
UINT32 plane0_l, plane0_r, plane1_l, plane1_r;
- UINT32 sdata_l = 0, sdata_r = 0;
+ UINT32 sdata_l, sdata_r;
for (i = 0; i < 0x400; i++)
m_spr_coll_buf[i] = 0;
diff --git a/src/devices/video/msm6222b.cpp b/src/devices/video/msm6222b.cpp
index 4287916ce1d..efa82d7c119 100644
--- a/src/devices/video/msm6222b.cpp
+++ b/src/devices/video/msm6222b.cpp
@@ -67,7 +67,7 @@ void msm6222b_device::device_start()
void msm6222b_device::control_w(UINT8 data)
{
int cmd;
- for(cmd = 7; cmd >= 0 && !(data & (1<<cmd)); cmd--);
+ for(cmd = 7; cmd >= 0 && !(data & (1<<cmd)); cmd--) {};
switch(cmd) {
case 0:
memset(ddram, 0x20, sizeof(ddram));
diff --git a/src/devices/video/msm6222b.h b/src/devices/video/msm6222b.h
index 50268e9e0f1..d86bcd63629 100644
--- a/src/devices/video/msm6222b.h
+++ b/src/devices/video/msm6222b.h
@@ -27,7 +27,6 @@ public:
void control_w(UINT8 data);
UINT8 control_r();
void data_w(UINT8 data);
- UINT8 data_r();
// Character n bits are at bytes n*16..n*16+7 when 8-high, +10 when 11-high. Only the low 5 bits are used.
// In one line mode n = 0..79. In two line mode first line is 0..39 and second is 40..79.
diff --git a/src/devices/video/pc_vga.cpp b/src/devices/video/pc_vga.cpp
index fa8131e5b88..7710e3402c3 100644
--- a/src/devices/video/pc_vga.cpp
+++ b/src/devices/video/pc_vga.cpp
@@ -992,7 +992,7 @@ UINT32 svga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c
UINT32 s3_vga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- UINT8 cur_mode = 0;
+ UINT8 cur_mode;
svga_device::screen_update(screen, bitmap, cliprect);
@@ -3387,7 +3387,7 @@ void ibm8514a_device::ibm8514_write_bg(UINT32 offset)
void ibm8514a_device::ibm8514_write(UINT32 offset, UINT32 src)
{
int data_size = 8;
- UINT32 xfer = 0;
+ UINT32 xfer;
address_space& space = machine().device("maincpu")->memory().space(AS_PROGRAM);
switch(ibm8514.pixel_control & 0x00c0)
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/poly.h b/src/devices/video/poly.h
index 613ae78df14..2ecc72491f7 100644
--- a/src/devices/video/poly.h
+++ b/src/devices/video/poly.h
@@ -186,16 +186,16 @@ private:
// construction
poly_array(running_machine &machine, poly_manager &manager)
: m_manager(manager),
- m_base(auto_alloc_array_clear(machine, UINT8, k_itemsize * _Count)),
+ m_base(make_unique_clear<UINT8[]>(k_itemsize * _Count)),
m_next(0),
m_max(0),
m_waits(0) { }
// destruction
- ~poly_array() { auto_free(m_manager.machine(), m_base); }
+ ~poly_array() { m_base = nullptr; }
// operators
- _Type &operator[](int index) const { assert(index >= 0 && index < _Count); return *reinterpret_cast<_Type *>(m_base + index * k_itemsize); }
+ _Type &operator[](int index) const { assert(index >= 0 && index < _Count); return *reinterpret_cast<_Type *>(m_base.get() + index * k_itemsize); }
// getters
int count() const { return m_next; }
@@ -203,18 +203,18 @@ private:
int waits() const { return m_waits; }
int itemsize() const { return k_itemsize; }
int allocated() const { return _Count; }
- int indexof(_Type &item) const { int result = (reinterpret_cast<UINT8 *>(&item) - m_base) / k_itemsize; assert(result >= 0 && result < _Count); return result; }
+ int indexof(_Type &item) const { int result = (reinterpret_cast<UINT8 *>(&item) - m_base.get()) / k_itemsize; assert(result >= 0 && result < _Count); return result; }
// operations
void reset() { m_next = 0; }
- _Type &next() { if (m_next > m_max) m_max = m_next; assert(m_next < _Count); return *new(m_base + m_next++ * k_itemsize) _Type; }
+ _Type &next() { if (m_next > m_max) m_max = m_next; assert(m_next < _Count); return *new(m_base.get() + m_next++ * k_itemsize) _Type; }
_Type &last() const { return (*this)[m_next - 1]; }
void wait_for_space(int count = 1) { while ((m_next + count) >= _Count) { m_waits++; m_manager.wait(""); } }
private:
// internal state
poly_manager & m_manager;
- UINT8 * m_base;
+ std::unique_ptr<UINT8[]> m_base;
int m_next;
int m_max;
int m_waits;
diff --git a/src/devices/video/polylgcy.cpp b/src/devices/video/polylgcy.cpp
index b18c6941515..b5daf5a924b 100644
--- a/src/devices/video/polylgcy.cpp
+++ b/src/devices/video/polylgcy.cpp
@@ -315,7 +315,7 @@ legacy_poly_manager *poly_alloc(running_machine &machine, int max_polys, size_t
legacy_poly_manager *poly;
/* allocate the manager itself */
- poly = auto_alloc_clear(machine, legacy_poly_manager);
+ poly = auto_alloc_clear(machine, <legacy_poly_manager>());
poly->flags = flags;
/* allocate polygons */
diff --git a/src/devices/video/psx.cpp b/src/devices/video/psx.cpp
index 9268c6dc575..1caf2a92284 100644
--- a/src/devices/video/psx.cpp
+++ b/src/devices/video/psx.cpp
@@ -127,7 +127,7 @@ void psxgpu_device::DebugMeshInit( void )
m_debug.b_clear = 1;
m_debug.n_coord = 0;
m_debug.n_skip = 0;
- m_debug.mesh = auto_bitmap_ind16_alloc( machine(), width, height );
+ m_debug.mesh = std::make_unique<bitmap_ind16>(width, height );
}
void psxgpu_device::DebugMesh( int n_coordx, int n_coordy )
@@ -469,7 +469,7 @@ void psxgpu_device::psx_gpu_init( int n_gputype )
n_lightgun_y = 0;
b_reverseflag = 0;
- p_vram = auto_alloc_array_clear( machine(), UINT16, width * height );
+ p_vram = make_unique_clear<UINT16[]>(width * height );
for( n_line = 0; n_line < 1024; n_line++ )
{
@@ -570,7 +570,7 @@ void psxgpu_device::psx_gpu_init( int n_gputype )
// icky!!!
machine().save().save_memory( this, "globals", nullptr, 0, "m_packet", (UINT8 *)&m_packet, 1, sizeof( m_packet ) );
- save_pointer(NAME(p_vram), width * height );
+ save_pointer(NAME(p_vram.get()), width * height );
save_item(NAME(n_gpu_buffer_offset));
save_item(NAME(n_vramx));
save_item(NAME(n_vramy));
diff --git a/src/devices/video/psx.h b/src/devices/video/psx.h
index f1767df722d..ae96761cb02 100644
--- a/src/devices/video/psx.h
+++ b/src/devices/video/psx.h
@@ -58,7 +58,7 @@ extern const device_type CXD8654Q;
struct psx_gpu_debug
{
- bitmap_ind16 *mesh;
+ std::unique_ptr<bitmap_ind16> mesh;
int b_clear;
int b_mesh;
int n_skip;
@@ -240,7 +240,7 @@ private:
INT32 n_iy;
INT32 n_ti;
- UINT16 *p_vram;
+ std::unique_ptr<UINT16[]> p_vram;
UINT32 n_vramx;
UINT32 n_vramy;
UINT32 n_twy;
diff --git a/src/devices/video/ramdac.cpp b/src/devices/video/ramdac.cpp
index 1cda8c4b658..b05cccfa10b 100644
--- a/src/devices/video/ramdac.cpp
+++ b/src/devices/video/ramdac.cpp
@@ -103,7 +103,7 @@ void ramdac_device::device_validity_check(validity_checker &valid) const
void ramdac_device::device_start()
{
- m_palram = auto_alloc_array_clear(machine(), UINT8, 1 << 10);
+ m_palram = make_unique_clear<UINT8[]>(1 << 10);
}
diff --git a/src/devices/video/ramdac.h b/src/devices/video/ramdac.h
index 4ad5b076a07..a006312c59f 100644
--- a/src/devices/video/ramdac.h
+++ b/src/devices/video/ramdac.h
@@ -71,7 +71,7 @@ private:
UINT8 m_pal_index[2];
UINT8 m_pal_mask;
UINT8 m_int_index[2];
- UINT8 *m_palram;
+ std::unique_ptr<UINT8[]> m_palram;
const address_space_config m_space_config;
required_device<palette_device> m_palette;
diff --git a/src/devices/video/snes_ppu.cpp b/src/devices/video/snes_ppu.cpp
index 134f3e84a97..7fdd700278c 100644
--- a/src/devices/video/snes_ppu.cpp
+++ b/src/devices/video/snes_ppu.cpp
@@ -216,9 +216,9 @@ void snes_ppu_device::device_start()
{
m_openbus_cb.resolve_safe(0);
- m_vram = auto_alloc_array(machine(), UINT8, SNES_VRAM_SIZE);
- m_cgram = auto_alloc_array(machine(), UINT16, SNES_CGRAM_SIZE/2);
- m_oam_ram = auto_alloc_array(machine(), UINT16, SNES_OAM_SIZE/2);
+ m_vram = std::make_unique<UINT8[]>(SNES_VRAM_SIZE);
+ m_cgram = std::make_unique<UINT16[]>(SNES_CGRAM_SIZE/2);
+ m_oam_ram = std::make_unique<UINT16[]>(SNES_OAM_SIZE/2);
for (int i = 0; i < 2; i++)
{
@@ -355,9 +355,9 @@ void snes_ppu_device::device_start()
save_item(NAME(m_regs));
- save_pointer(NAME(m_vram), SNES_VRAM_SIZE);
- save_pointer(NAME(m_cgram), SNES_CGRAM_SIZE/2);
- save_pointer(NAME(m_oam_ram), SNES_OAM_SIZE/2);
+ save_pointer(NAME(m_vram.get()), SNES_VRAM_SIZE);
+ save_pointer(NAME(m_cgram.get()), SNES_CGRAM_SIZE/2);
+ save_pointer(NAME(m_oam_ram.get()), SNES_OAM_SIZE/2);
}
void snes_ppu_device::device_reset()
@@ -393,13 +393,13 @@ void snes_ppu_device::device_reset()
}
/* Init VRAM */
- memset(m_vram, 0, SNES_VRAM_SIZE);
+ memset(m_vram.get(), 0, SNES_VRAM_SIZE);
/* Init Palette RAM */
- memset((UINT8 *)m_cgram, 0, SNES_CGRAM_SIZE);
+ memset((UINT8 *)m_cgram.get(), 0, SNES_CGRAM_SIZE);
/* Init oam RAM */
- memset((UINT8 *)m_oam_ram, 0xff, SNES_OAM_SIZE);
+ memset((UINT8 *)m_oam_ram.get(), 0xff, SNES_OAM_SIZE);
m_stat78 = 0;
@@ -474,7 +474,7 @@ void snes_ppu_device::device_reset()
inline UINT16 snes_ppu_device::get_bgcolor( UINT8 direct_colors, UINT16 palette, UINT8 color )
{
- UINT16 c = 0;
+ UINT16 c;
if (direct_colors)
{
@@ -801,8 +801,8 @@ inline void snes_ppu_device::update_line( UINT16 curline, UINT8 layer, UINT8 pri
if (offset_per_tile != SNES_OPT_NONE)
{
int opt_x = ii + (xoff & 7);
- UINT32 haddr = 0, vaddr = 0;
- UINT16 hval = 0, vval = 0;
+ UINT32 haddr, vaddr;
+ UINT16 hval, vval;
if (opt_x >= 8)
{
@@ -1156,7 +1156,7 @@ void snes_ppu_device::update_obsel( void )
void snes_ppu_device::oam_list_build( void )
{
- UINT8 *oamram = (UINT8 *)m_oam_ram;
+ UINT8 *oamram = (UINT8 *)m_oam_ram.get();
INT16 oam = 0x1ff;
UINT16 oam_extra = oam + 0x20;
UINT16 extra = 0;
@@ -1275,7 +1275,7 @@ void snes_ppu_device::update_objects_rto( UINT16 curline )
UINT8 height, width, vflip, hflip, priority, pal;
UINT16 tile;
INT16 x, y;
- UINT32 name_sel = 0;
+ UINT32 name_sel;
oam_list_build();
@@ -2047,7 +2047,7 @@ inline UINT32 snes_ppu_device::get_vram_address()
READ8_MEMBER( snes_ppu_device::vram_read )
{
- UINT8 res = 0;
+ UINT8 res;
offset &= 0xffff; // only 64KB are present on SNES
if (m_screen_disabled)
@@ -2208,7 +2208,7 @@ WRITE8_MEMBER( snes_ppu_device::oam_write )
READ8_MEMBER( snes_ppu_device::cgram_read )
{
- UINT8 res = 0;
+ UINT8 res;
offset &= 0x1ff;
#if 0
@@ -2222,7 +2222,7 @@ READ8_MEMBER( snes_ppu_device::cgram_read )
}
#endif
- res = ((UINT8 *)m_cgram)[offset];
+ res = ((UINT8 *)m_cgram.get())[offset];
// CGRAM palette data format is 15-bits (0,bbbbb,ggggg,rrrrr).
// Highest bit is simply ignored.
@@ -2255,7 +2255,7 @@ WRITE8_MEMBER( snes_ppu_device::cgram_write )
if (offset & 0x01)
data &= 0x7f;
- ((UINT8 *)m_cgram)[offset] = data;
+ ((UINT8 *)m_cgram.get())[offset] = data;
}
UINT8 snes_ppu_device::read(address_space &space, UINT32 offset, UINT8 wrio_bit7)
diff --git a/src/devices/video/snes_ppu.h b/src/devices/video/snes_ppu.h
index f9fa754b549..68634c5db60 100644
--- a/src/devices/video/snes_ppu.h
+++ b/src/devices/video/snes_ppu.h
@@ -256,7 +256,6 @@ public:
void set_latch_hv(INT16 x, INT16 y);
void dynamic_res_change();
inline UINT32 get_vram_address();
- UINT8 dbg_video(UINT16 curline);
UINT8 read(address_space &space, UINT32 offset, UINT8 wrio_bit7);
void write(address_space &space, UINT32 offset, UINT8 data);
@@ -267,9 +266,9 @@ public:
DECLARE_WRITE8_MEMBER( cgram_write );
DECLARE_READ8_MEMBER( vram_read );
DECLARE_WRITE8_MEMBER( vram_write );
- UINT16 *m_oam_ram; /* Object Attribute Memory */
- UINT16 *m_cgram; /* Palette RAM */
- UINT8 *m_vram; /* Video RAM (TODO: Should be 16-bit, but it's easier this way) */
+ std::unique_ptr<UINT16[]> m_oam_ram; /* Object Attribute Memory */
+ std::unique_ptr<UINT16[]> m_cgram; /* Palette RAM */
+ std::unique_ptr<UINT8[]> m_vram; /* Video RAM (TODO: Should be 16-bit, but it's easier this way) */
protected:
// device-level overrides
diff --git a/src/devices/video/stvvdp1.cpp b/src/devices/video/stvvdp1.cpp
index e467bb4a68c..a98dc8fe709 100644
--- a/src/devices/video/stvvdp1.cpp
+++ b/src/devices/video/stvvdp1.cpp
@@ -337,7 +337,7 @@ READ32_MEMBER ( saturn_state::saturn_vdp1_vram_r )
WRITE32_MEMBER ( saturn_state::saturn_vdp1_vram_w )
{
- UINT8 *vdp1 = m_vdp1.gfx_decode;
+ UINT8 *vdp1 = m_vdp1.gfx_decode.get();
COMBINE_DATA (&m_vdp1_vram[offset]);
@@ -2099,7 +2099,7 @@ void saturn_state::video_update_vdp1( void )
void saturn_state::stv_vdp1_state_save_postload( void )
{
- UINT8 *vdp1 = m_vdp1.gfx_decode;
+ UINT8 *vdp1 = m_vdp1.gfx_decode.get();
int offset;
UINT32 data;
@@ -2121,14 +2121,14 @@ void saturn_state::stv_vdp1_state_save_postload( void )
int saturn_state::stv_vdp1_start ( void )
{
- m_vdp1_regs = auto_alloc_array_clear(machine(), UINT16, 0x020/2 );
- m_vdp1_vram = auto_alloc_array_clear(machine(), UINT32, 0x100000/4 );
- m_vdp1.gfx_decode = auto_alloc_array(machine(), UINT8, 0x100000 );
+ m_vdp1_regs = make_unique_clear<UINT16[]>(0x020/2 );
+ m_vdp1_vram = make_unique_clear<UINT32[]>(0x100000/4 );
+ m_vdp1.gfx_decode = std::make_unique<UINT8[]>(0x100000 );
- stv_vdp1_shading_data = auto_alloc(machine(), struct stv_vdp1_poly_scanline_data);
+ stv_vdp1_shading_data = std::make_unique<struct stv_vdp1_poly_scanline_data>();
- m_vdp1.framebuffer[0] = auto_alloc_array(machine(), UINT16, 1024 * 256 * 2 ); /* *2 is for double interlace */
- m_vdp1.framebuffer[1] = auto_alloc_array(machine(), UINT16, 1024 * 256 * 2 );
+ m_vdp1.framebuffer[0] = std::make_unique<UINT16[]>(1024 * 256 * 2 ); /* *2 is for double interlace */
+ m_vdp1.framebuffer[1] = std::make_unique<UINT16[]>(1024 * 256 * 2 );
m_vdp1.framebuffer_display_lines = auto_alloc_array(machine(), UINT16 *, 512);
m_vdp1.framebuffer_draw_lines = auto_alloc_array(machine(), UINT16 *, 512);
@@ -2147,8 +2147,8 @@ int saturn_state::stv_vdp1_start ( void )
m_vdp1.user_cliprect.set(0, 512, 0, 256);
// save state
- save_pointer(NAME(m_vdp1_regs), 0x020/2);
- save_pointer(NAME(m_vdp1_vram), 0x100000/4);
+ save_pointer(NAME(m_vdp1_regs.get()), 0x020/2);
+ save_pointer(NAME(m_vdp1_vram.get()), 0x100000/4);
save_item(NAME(m_vdp1.fbcr_accessed));
save_item(NAME(m_vdp1.framebuffer_current_display));
save_item(NAME(m_vdp1.framebuffer_current_draw));
diff --git a/src/devices/video/stvvdp2.cpp b/src/devices/video/stvvdp2.cpp
index 07b718741c2..566b802e553 100644
--- a/src/devices/video/stvvdp2.cpp
+++ b/src/devices/video/stvvdp2.cpp
@@ -2104,7 +2104,7 @@ bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09
void saturn_state::stv_vdp2_fill_rotation_parameter_table( UINT8 rot_parameter )
{
- UINT32 address = 0;
+ UINT32 address;
address = (((STV_VDP2_RPTAU << 16) | STV_VDP2_RPTAL) << 1);
if ( rot_parameter == 1 )
@@ -2390,7 +2390,7 @@ void saturn_state::stv_vdp2_drawgfxzoom(
if (gfx->has_pen_usage() && transparency == STV_TRANSPARENCY_PEN)
{
- int transmask = 0;
+ int transmask;
transmask = 1 << (transparent_color & 0xff);
@@ -2580,7 +2580,7 @@ void saturn_state::stv_vdp2_drawgfxzoom_rgb555(
rectangle myclip;
UINT8* gfxdata;
- gfxdata = m_vdp2.gfx_decode + code * 0x20;
+ gfxdata = m_vdp2.gfx_decode.get() + code * 0x20;
if(stv2_current_tilemap.window_control.enabled[0] ||
stv2_current_tilemap.window_control.enabled[1])
@@ -2806,7 +2806,7 @@ void saturn_state::stv_vdp2_drawgfx_rgb555( bitmap_rgb32 &dest_bmp, const rectan
UINT8* gfxdata;
int sprite_screen_width, sprite_screen_height;
- gfxdata = m_vdp2.gfx_decode + code * 0x20;
+ gfxdata = m_vdp2.gfx_decode.get() + code * 0x20;
sprite_screen_width = sprite_screen_height = 8;
if(stv2_current_tilemap.window_control.enabled[0] ||
@@ -2920,7 +2920,7 @@ void saturn_state::stv_vdp2_drawgfx_rgb888( bitmap_rgb32 &dest_bmp, const rectan
UINT8* gfxdata;
int sprite_screen_width, sprite_screen_height;
- gfxdata = m_vdp2.gfx_decode + code * 0x20;
+ gfxdata = m_vdp2.gfx_decode.get() + code * 0x20;
sprite_screen_width = sprite_screen_height = 8;
if(stv2_current_tilemap.window_control.enabled[0] ||
@@ -3185,7 +3185,7 @@ void saturn_state::draw_4bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &clipr
int xsize, ysize, xsize_mask, ysize_mask;
int xsrc,ysrc,xdst,ydst;
int src_offs;
- UINT8* vram = m_vdp2.gfx_decode;
+ UINT8* vram = m_vdp2.gfx_decode.get();
UINT32 map_offset = stv2_current_tilemap.bitmap_map * 0x20000;
int scrollx = stv2_current_tilemap.scrollx;
int scrolly = stv2_current_tilemap.scrolly;
@@ -3241,7 +3241,7 @@ void saturn_state::draw_8bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &clipr
int xsize, ysize, xsize_mask, ysize_mask;
int xsrc,ysrc,xdst,ydst;
int src_offs;
- UINT8* vram = m_vdp2.gfx_decode;
+ UINT8* vram = m_vdp2.gfx_decode.get();
UINT32 map_offset = stv2_current_tilemap.bitmap_map * 0x20000;
int scrollx = stv2_current_tilemap.scrollx;
int scrolly = stv2_current_tilemap.scrolly;
@@ -3300,7 +3300,7 @@ void saturn_state::draw_11bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &clip
int xsize, ysize, xsize_mask, ysize_mask;
int xsrc,ysrc,xdst,ydst;
int src_offs;
- UINT8* vram = m_vdp2.gfx_decode;
+ UINT8* vram = m_vdp2.gfx_decode.get();
UINT32 map_offset = stv2_current_tilemap.bitmap_map * 0x20000;
int scrollx = stv2_current_tilemap.scrollx;
int scrolly = stv2_current_tilemap.scrolly;
@@ -3358,7 +3358,7 @@ void saturn_state::draw_rgb15_bitmap(bitmap_rgb32 &bitmap, const rectangle &clip
int xsize, ysize, xsize_mask, ysize_mask;
int xsrc,ysrc,xdst,ydst;
int src_offs;
- UINT8* vram = m_vdp2.gfx_decode;
+ UINT8* vram = m_vdp2.gfx_decode.get();
UINT32 map_offset = stv2_current_tilemap.bitmap_map * 0x20000;
int scrollx = stv2_current_tilemap.scrollx;
int scrolly = stv2_current_tilemap.scrolly;
@@ -3416,7 +3416,7 @@ void saturn_state::draw_rgb32_bitmap(bitmap_rgb32 &bitmap, const rectangle &clip
int xsize, ysize, xsize_mask, ysize_mask;
int xsrc,ysrc,xdst,ydst;
int src_offs;
- UINT8* vram = m_vdp2.gfx_decode;
+ UINT8* vram = m_vdp2.gfx_decode.get();
UINT32 map_offset = stv2_current_tilemap.bitmap_map * 0x20000;
int scrollx = stv2_current_tilemap.scrollx;
int scrolly = stv2_current_tilemap.scrolly;
@@ -3579,7 +3579,7 @@ map is always enabled?
void saturn_state::stv_vdp2_get_map_page( int x, int y, int *_map, int *_page )
{
int page = 0;
- int map = 0;
+ int map;
if ( stv2_current_tilemap.map_count == 4 )
{
@@ -4327,7 +4327,7 @@ void saturn_state::stv_vdp2_check_tilemap_with_linescroll(bitmap_rgb32 &bitmap,
void saturn_state::stv_vdp2_draw_line(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int x,y;
- UINT8* gfxdata = m_vdp2.gfx_decode;
+ UINT8* gfxdata = m_vdp2.gfx_decode.get();
UINT32 base_offs,base_mask;
UINT32 pix;
UINT8 interlace;
@@ -4576,11 +4576,11 @@ void saturn_state::stv_vdp2_copy_roz_bitmap(bitmap_rgb32 &bitmap,
{
if ( STV_VDP2_CRKTE == 0 )
{
- coeff_table_base = m_vdp2_vram;
+ coeff_table_base = m_vdp2_vram.get();
}
else
{
- coeff_table_base = m_vdp2_cram;
+ coeff_table_base = m_vdp2_cram.get();
}
if ( coeff_table_size == 0 )
{
@@ -5581,7 +5581,7 @@ void saturn_state::stv_vdp2_draw_RBG0(bitmap_rgb32 &bitmap, const rectangle &cli
void saturn_state::stv_vdp2_draw_back(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int x,y;
- UINT8* gfxdata = m_vdp2.gfx_decode;
+ UINT8* gfxdata = m_vdp2.gfx_decode.get();
UINT32 base_offs,base_mask;
UINT8 interlace;
@@ -5627,7 +5627,7 @@ READ32_MEMBER ( saturn_state::saturn_vdp2_vram_r )
WRITE32_MEMBER ( saturn_state::saturn_vdp2_vram_w )
{
- UINT8* gfxdata = m_vdp2.gfx_decode;
+ UINT8* gfxdata = m_vdp2.gfx_decode.get();
COMBINE_DATA(&m_vdp2_vram[offset]);
@@ -6057,7 +6057,7 @@ int saturn_state::get_vcounter( void )
void saturn_state::stv_vdp2_state_save_postload( void )
{
- UINT8 *gfxdata = m_vdp2.gfx_decode;
+ UINT8 *gfxdata = m_vdp2.gfx_decode.get();
int offset;
UINT32 data;
@@ -6101,10 +6101,10 @@ int saturn_state::stv_vdp2_start ( void )
{
machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(saturn_state::stv_vdp2_exit), this));
- m_vdp2_regs = auto_alloc_array_clear(machine(), UINT16, 0x040000/2 );
- m_vdp2_vram = auto_alloc_array_clear(machine(), UINT32, 0x100000/4 );
- m_vdp2_cram = auto_alloc_array_clear(machine(), UINT32, 0x080000/4 );
- m_vdp2.gfx_decode = auto_alloc_array(machine(), UINT8, 0x100000 );
+ m_vdp2_regs = make_unique_clear<UINT16[]>(0x040000/2 );
+ m_vdp2_vram = make_unique_clear<UINT32[]>(0x100000/4 );
+ m_vdp2_cram = make_unique_clear<UINT32[]>(0x080000/4 );
+ m_vdp2.gfx_decode = std::make_unique<UINT8[]>(0x100000 );
// m_gfxdecode->gfx(0)->granularity()=4;
// m_gfxdecode->gfx(1)->granularity()=4;
@@ -6113,9 +6113,9 @@ int saturn_state::stv_vdp2_start ( void )
stv_rbg_cache_data.is_cache_dirty = 3;
memset( &stv_vdp2_layer_data_placement, 0, sizeof(stv_vdp2_layer_data_placement));
- save_pointer(NAME(m_vdp2_regs), 0x040000/2);
- save_pointer(NAME(m_vdp2_vram), 0x100000/4);
- save_pointer(NAME(m_vdp2_cram), 0x080000/4);
+ save_pointer(NAME(m_vdp2_regs.get()), 0x040000/2);
+ save_pointer(NAME(m_vdp2_vram.get()), 0x100000/4);
+ save_pointer(NAME(m_vdp2_cram.get()), 0x080000/4);
machine().save().register_postload(save_prepost_delegate(FUNC(saturn_state::stv_vdp2_state_save_postload), this));
return 0;
@@ -6129,10 +6129,10 @@ VIDEO_START_MEMBER(saturn_state,stv_vdp2)
stv_vdp2_start();
stv_vdp1_start();
m_vdpdebug_roz = 0;
- m_gfxdecode->gfx(0)->set_source(m_vdp2.gfx_decode);
- m_gfxdecode->gfx(1)->set_source(m_vdp2.gfx_decode);
- m_gfxdecode->gfx(2)->set_source(m_vdp2.gfx_decode);
- m_gfxdecode->gfx(3)->set_source(m_vdp2.gfx_decode);
+ m_gfxdecode->gfx(0)->set_source(m_vdp2.gfx_decode.get());
+ m_gfxdecode->gfx(1)->set_source(m_vdp2.gfx_decode.get());
+ m_gfxdecode->gfx(2)->set_source(m_vdp2.gfx_decode.get());
+ m_gfxdecode->gfx(3)->set_source(m_vdp2.gfx_decode.get());
/* calc V counter offsets */
/* 224 mode */
diff --git a/src/devices/video/tms3556.cpp b/src/devices/video/tms3556.cpp
index b007d2fe137..716b1c0269d 100644
--- a/src/devices/video/tms3556.cpp
+++ b/src/devices/video/tms3556.cpp
@@ -557,8 +557,8 @@ void tms3556_device::draw_line_mixed(UINT16 *ln)
void tms3556_device::draw_line(bitmap_ind16 &bmp, int line)
{
- int double_lines = 0;
- UINT16 *ln, *ln2 = nullptr;
+ int double_lines;
+ UINT16 *ln, *ln2;
// if (m_control_regs[4] & 0x??)
// { // interlaced mode
diff --git a/src/devices/video/upd7220.cpp b/src/devices/video/upd7220.cpp
index cc892d66b33..23548f1ecd7 100644
--- a/src/devices/video/upd7220.cpp
+++ b/src/devices/video/upd7220.cpp
@@ -987,7 +987,7 @@ void upd7220_device::draw_rectangle(int x, int y)
void upd7220_device::draw_char(int x, int y)
{
int isize,psize;
- UINT16 tile_data = 0;
+ UINT16 tile_data;
LOG(("uPD7220 char check: %d %d %02x %08x %d %d %02x\n",x,y,m_figs.m_dir,m_ead,m_figs.m_d,m_figs.m_dc,m_figs.m_figure_type));
@@ -1623,10 +1623,10 @@ void upd7220_device::update_graphics(bitmap_rgb32 &bitmap, const rectangle &clip
Quarth (PC-98xx) doesn't seem to use pitch here and it definitely wants bsy to be /2 to make scrolling to work.
Xevious (PC-98xx) wants the pitch to be fixed at 80, and wants bsy to be /1
Dragon Buster (PC-98xx) contradicts with Xevious with regards of the pitch tho ... */
- addr = ((sad << 1) & 0x3ffff) + (y * (m_pitch << (im ? 0 : 1)));
+ addr = ((sad << 1) & 0x3ffff) + ((y / (mixed ? 1 : m_lr)) * (m_pitch << (im ? 0 : 1)));
if (!m_display_cb.isnull())
- draw_graphics_line(bitmap, addr, y + ((bsy + m_vbp) / (mixed ? 1 : m_lr)), wd, (m_pitch << interlace));
+ draw_graphics_line(bitmap, addr, y + bsy + m_vbp, wd, (m_pitch << interlace));
}
}
else
diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h
index 3f96783f7ec..dbde33a93f8 100644
--- a/src/devices/video/upd7220.h
+++ b/src/devices/video/upd7220.h
@@ -101,10 +101,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( ext_sync_w );
DECLARE_WRITE_LINE_MEMBER( lpen_w );
- DECLARE_WRITE8_MEMBER( bank_w );
- DECLARE_READ8_MEMBER( vram_r );
- DECLARE_WRITE8_MEMBER( vram_w );
-
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual const rom_entry *device_rom_region() const override;
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override;
diff --git a/src/devices/video/vic4567.cpp b/src/devices/video/vic4567.cpp
index e04a4851dcc..8df490408f8 100644
--- a/src/devices/video/vic4567.cpp
+++ b/src/devices/video/vic4567.cpp
@@ -172,7 +172,7 @@ void vic3_device::device_start()
width = m_screen->width();
height = m_screen->height();
- m_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_bitmap = std::make_unique<bitmap_ind16>(width, height);
m_dma_read_cb.resolve_safe(0);
m_dma_read_color_cb.resolve_safe(0);
diff --git a/src/devices/video/vic4567.h b/src/devices/video/vic4567.h
index ddf17a6a6b3..b4b179d43d5 100644
--- a/src/devices/video/vic4567.h
+++ b/src/devices/video/vic4567.h
@@ -185,7 +185,7 @@ private:
UINT16 m_chargenaddr, m_videoaddr, m_bitmapaddr;
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
int m_x_begin, m_x_end;
int m_y_begin, m_y_end;
diff --git a/src/devices/video/vooddefs.h b/src/devices/video/vooddefs.h
index bf14947df16..e394946d445 100644
--- a/src/devices/video/vooddefs.h
+++ b/src/devices/video/vooddefs.h
@@ -23,8 +23,7 @@ enum
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
@@ -2366,7 +2365,7 @@ static inline bool ATTR_FORCE_INLINE chromaKeyTest(voodoo_state *v, stats_block
else
{
INT32 low, high, test;
- int results = 0;
+ int results;
/* check blue */
low = v->reg[chromaKey].rgb.b;
@@ -3787,47 +3786,6 @@ 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) \
\
/* perform fogging */ \
@@ -3863,7 +3821,7 @@ skipdrawdepth:
; \
} \
while (0)
-#endif
+
/*************************************
@@ -4411,155 +4369,7 @@ 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) \
@@ -4716,7 +4526,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 72d94e994d4..4304b5ebf32 100644
--- a/src/devices/video/voodoo.cpp
+++ b/src/devices/video/voodoo.cpp
@@ -141,8 +141,6 @@ bits(7:4) and bit(24)), X, and Y:
**************************************************************************/
-#ifndef EXPAND_RASTERIZERS
-#define EXPAND_RASTERIZERS
#include "emu.h"
#include "video/polylgcy.h"
@@ -251,7 +249,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
@@ -268,7 +266,7 @@ static void raster_generic_2tmu(void *dest, INT32 scanline, const poly_extent *e
static const raster_info predef_raster_table[] =
{
-#include "voodoo.cpp"
+#include "voodoo_rast.inc"
{ nullptr }
};
@@ -3325,13 +3323,10 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
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);
@@ -3375,38 +3370,24 @@ 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) 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]);
+
+ /* 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;
- /* 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");
@@ -3414,7 +3395,7 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask)
/* 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,
- iterz, iterw, iterargb);
+ iterz, iterw, iterargb) {};
nextpixel:
/* advance our pointers */
x++;
@@ -5317,7 +5298,7 @@ static INT32 swapbuffer(voodoo_state *v, UINT32 data)
static INT32 triangle(voodoo_state *v)
{
- int texcount = 0;
+ int texcount;
UINT16 *drawbuf;
int destbuf;
int pixels;
@@ -5841,7 +5822,7 @@ 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);
+ m_token = global_alloc_clear<voodoo_state>();
}
voodoo_device::~voodoo_device()
@@ -6035,503 +6016,3 @@ RASTERIZER(generic_1tmu, 1, v->reg[fbzColorPath].u, v->reg[fbzMode].u, v->reg[al
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
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/addrmap.cpp b/src/emu/addrmap.cpp
index 708caf5d3ee..2ae44142ac1 100644
--- a/src/emu/addrmap.cpp
+++ b/src/emu/addrmap.cpp
@@ -9,6 +9,15 @@
***************************************************************************/
#include "emu.h"
+#include "validity.h"
+
+
+//**************************************************************************
+// PARAMETERS
+//**************************************************************************
+
+#define DETECT_OVERLAPPING_MEMORY (0)
+
//**************************************************************************
@@ -332,7 +341,7 @@ address_map::address_map(device_t &device, address_spacenum spacenum)
// and then the configuration for the current address space
const address_space_config *spaceconfig = memintf->space_config(spacenum);
- if (!device.interface(memintf))
+ if (spaceconfig == nullptr)
throw emu_fatalerror("No memory address space configuration found for device '%s', space %d\n", device.tag(), spacenum);
// construct the internal device map (first so it takes priority)
@@ -614,3 +623,145 @@ void address_map::uplift_submaps(running_machine &machine, device_t &device, dev
}
}
}
+
+
+//-------------------------------------------------
+// map_validity_check - perform validity checks on
+// one of the device's address maps
+//-------------------------------------------------
+
+void address_map::map_validity_check(validity_checker &valid, const device_t &device, address_spacenum spacenum) const
+{
+ // it's safe to assume here that the device has a memory interface and a config for this space
+ const address_space_config &spaceconfig = *device.memory().space_config(spacenum);
+ int datawidth = spaceconfig.m_databus_width;
+ int alignunit = datawidth / 8;
+
+ bool detected_overlap = DETECT_OVERLAPPING_MEMORY ? false : true;
+
+ // if this is an empty map, just ignore it
+ if (m_entrylist.first() == nullptr)
+ return;
+
+ // validate the global map parameters
+ if (m_spacenum != spacenum)
+ osd_printf_error("Space %d has address space %d handlers!\n", spacenum, m_spacenum);
+ if (m_databits != datawidth)
+ osd_printf_error("Wrong memory handlers provided for %s space! (width = %d, memory = %08x)\n", spaceconfig.m_name, datawidth, m_databits);
+
+ // loop over entries and look for errors
+ for (address_map_entry *entry = m_entrylist.first(); entry != nullptr; entry = entry->next())
+ {
+ UINT32 bytestart = spaceconfig.addr2byte(entry->m_addrstart);
+ UINT32 byteend = spaceconfig.addr2byte_end(entry->m_addrend);
+
+ // look for overlapping entries
+ if (!detected_overlap)
+ {
+ for (address_map_entry *scan = m_entrylist.first(); scan != entry; scan = scan->next())
+ if (entry->m_addrstart <= scan->m_addrend && entry->m_addrend >= scan->m_addrstart &&
+ ((entry->m_read.m_type != AMH_NONE && scan->m_read.m_type != AMH_NONE) ||
+ (entry->m_write.m_type != AMH_NONE && scan->m_write.m_type != AMH_NONE)))
+ {
+ osd_printf_warning("%s space has overlapping memory (%X-%X,%d,%d) vs (%X-%X,%d,%d)\n", spaceconfig.m_name, entry->m_addrstart, entry->m_addrend, entry->m_read.m_type, entry->m_write.m_type, scan->m_addrstart, scan->m_addrend, scan->m_read.m_type, scan->m_write.m_type);
+ detected_overlap = true;
+ break;
+ }
+ }
+
+ // look for inverted start/end pairs
+ if (byteend < bytestart)
+ osd_printf_error("Wrong %s memory read handler start = %08x > end = %08x\n", spaceconfig.m_name, entry->m_addrstart, entry->m_addrend);
+
+ // look for misaligned entries
+ if ((bytestart & (alignunit - 1)) != 0 || (byteend & (alignunit - 1)) != (alignunit - 1))
+ osd_printf_error("Wrong %s memory read handler start = %08x, end = %08x ALIGN = %d\n", spaceconfig.m_name, entry->m_addrstart, entry->m_addrend, alignunit);
+
+ // if this is a program space, auto-assign implicit ROM entries
+ if (entry->m_read.m_type == AMH_ROM && entry->m_region == nullptr)
+ {
+ entry->m_region = device.tag();
+ entry->m_rgnoffs = entry->m_addrstart;
+ }
+
+ // if this entry references a memory region, validate it
+ if (entry->m_region != nullptr && entry->m_share == nullptr)
+ {
+ // make sure we can resolve the full path to the region
+ bool found = false;
+ std::string entry_region = entry->m_devbase.subtag(entry->m_region);
+
+ // look for the region
+ device_iterator deviter(device.mconfig().root_device());
+ for (device_t *dev = deviter.first(); dev != nullptr; dev = deviter.next())
+ for (const rom_entry *romp = rom_first_region(*dev); romp != nullptr && !found; romp = rom_next_region(romp))
+ {
+ if (rom_region_name(*dev, romp) == entry_region)
+ {
+ // verify the address range is within the region's bounds
+ offs_t length = ROMREGION_GETLENGTH(romp);
+ if (entry->m_rgnoffs + (byteend - bytestart + 1) > length)
+ osd_printf_error("%s space memory map entry %X-%X extends beyond region '%s' size (%X)\n", spaceconfig.m_name, entry->m_addrstart, entry->m_addrend, entry->m_region, length);
+ found = true;
+ }
+ }
+
+ // error if not found
+ if (!found)
+ osd_printf_error("%s space memory map entry %X-%X references non-existant region '%s'\n", spaceconfig.m_name, entry->m_addrstart, entry->m_addrend, entry->m_region);
+ }
+
+ // make sure all devices exist
+ if (entry->m_read.m_type == AMH_DEVICE_DELEGATE)
+ {
+ // extract the device tag from the proto-delegate
+ const char *devtag = nullptr;
+ switch (entry->m_read.m_bits)
+ {
+ case 8: devtag = entry->m_rproto8.device_name(); break;
+ case 16: devtag = entry->m_rproto16.device_name(); break;
+ case 32: devtag = entry->m_rproto32.device_name(); break;
+ case 64: devtag = entry->m_rproto64.device_name(); break;
+ }
+ if (entry->m_devbase.subdevice(devtag) == nullptr)
+ osd_printf_error("%s space memory map entry reads from nonexistant device '%s'\n", spaceconfig.m_name,
+ devtag != nullptr ? devtag : "<unspecified>");
+ }
+ if (entry->m_write.m_type == AMH_DEVICE_DELEGATE)
+ {
+ // extract the device tag from the proto-delegate
+ const char *devtag = nullptr;
+ switch (entry->m_write.m_bits)
+ {
+ case 8: devtag = entry->m_wproto8.device_name(); break;
+ case 16: devtag = entry->m_wproto16.device_name(); break;
+ case 32: devtag = entry->m_wproto32.device_name(); break;
+ case 64: devtag = entry->m_wproto64.device_name(); break;
+ }
+ if (entry->m_devbase.subdevice(devtag) == nullptr)
+ osd_printf_error("%s space memory map entry writes to nonexistant device '%s'\n", spaceconfig.m_name,
+ devtag != nullptr ? devtag : "<unspecified>");
+ }
+ if (entry->m_setoffsethd.m_type == AMH_DEVICE_DELEGATE)
+ {
+ // extract the device tag from the proto-delegate
+ const char *devtag = entry->m_soproto.device_name();
+ if (entry->m_devbase.subdevice(devtag) == nullptr)
+ osd_printf_error("%s space memory map entry references nonexistant device '%s'\n", spaceconfig.m_name,
+ devtag != nullptr ? devtag : "<unspecified>");
+ }
+
+ // make sure ports exist
+// if ((entry->m_read.m_type == AMH_PORT && entry->m_read.m_tag != NULL && portlist.find(entry->m_read.m_tag) == NULL) ||
+// (entry->m_write.m_type == AMH_PORT && entry->m_write.m_tag != NULL && portlist.find(entry->m_write.m_tag) == NULL))
+// osd_printf_error("%s space memory map entry references nonexistant port tag '%s'\n", spaceconfig.m_name, entry->m_read.m_tag);
+
+ // validate bank and share tags
+ if (entry->m_read.m_type == AMH_BANK)
+ valid.validate_tag(entry->m_read.m_tag);
+ if (entry->m_write.m_type == AMH_BANK)
+ valid.validate_tag(entry->m_write.m_tag);
+ if (entry->m_share != nullptr)
+ valid.validate_tag(entry->m_share);
+ }
+}
diff --git a/src/emu/addrmap.h b/src/emu/addrmap.h
index 0e767570b05..492ad21b03b 100644
--- a/src/emu/addrmap.h
+++ b/src/emu/addrmap.h
@@ -43,6 +43,10 @@ enum map_handler_type
// TYPE DEFINITIONS
//**************************************************************************
+// forward declarations
+class validity_checker;
+
+
// address map handler data
class map_handler_data
{
@@ -289,6 +293,7 @@ public:
simple_list<address_map_entry> m_entrylist; // list of entries
void uplift_submaps(running_machine &machine, device_t &device, device_t &owner, endianness_t endian);
+ void map_validity_check(validity_checker &valid, const device_t &device, address_spacenum spacenum) const;
};
@@ -309,6 +314,7 @@ void ADDRESS_MAP_NAME(_name)(address_map &map, device_t &device) \
typedef write##_bits##_delegate write_delegate ATTR_UNUSED; \
address_map_entry##_bits *curentry = NULL; \
(void)curentry; \
+ assert(&device != nullptr); \
map.configure(_space, _bits); \
typedef _class drivdata_class ATTR_UNUSED;
#define DEVICE_ADDRESS_MAP_START(_name, _bits, _class) \
@@ -318,6 +324,7 @@ void _class :: _name(::address_map &map, device_t &device) \
typedef write##_bits##_delegate write_delegate ATTR_UNUSED; \
address_map_entry##_bits *curentry = NULL; \
(void)curentry; \
+ assert(&device != nullptr); \
map.configure(AS_PROGRAM, _bits); \
typedef _class drivdata_class ATTR_UNUSED;
#define ADDRESS_MAP_END \
diff --git a/src/emu/audit.cpp b/src/emu/audit.cpp
index 714fadcc32e..b1016967931 100644
--- a/src/emu/audit.cpp
+++ b/src/emu/audit.cpp
@@ -369,10 +369,9 @@ media_auditor::summary media_auditor::summarize(const char *name, std::string *o
case audit_record::SUBSTATUS_FOUND_BAD_CHECKSUM:
if (output != nullptr)
{
- std::string tempstr;
strcatprintf(*output,"INCORRECT CHECKSUM:\n");
- strcatprintf(*output,"EXPECTED: %s\n", record->expected_hashes().macro_string(tempstr));
- strcatprintf(*output," FOUND: %s\n", record->actual_hashes().macro_string(tempstr));
+ strcatprintf(*output,"EXPECTED: %s\n", record->expected_hashes().macro_string().c_str());
+ strcatprintf(*output," FOUND: %s\n", record->actual_hashes().macro_string().c_str());
}
break;
diff --git a/src/emu/bookkeeping.cpp b/src/emu/bookkeeping.cpp
new file mode 100644
index 00000000000..b93493db9a4
--- /dev/null
+++ b/src/emu/bookkeeping.cpp
@@ -0,0 +1,215 @@
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria
+/*********************************************************************
+
+ bookkeeping.c
+
+ Bookkeeping simple machine functions.
+
+*********************************************************************/
+
+#include "emu.h"
+#include "config.h"
+
+
+//**************************************************************************
+// BOOKKEEPING MANAGER
+//**************************************************************************
+
+//-------------------------------------------------
+// bookkeeping_manager - constructor
+//-------------------------------------------------
+
+bookkeeping_manager::bookkeeping_manager(running_machine &machine)
+ : m_machine(machine),
+ m_dispensed_tickets(0)
+{
+ /* reset coin counters */
+ for (int counternum = 0; counternum < COIN_COUNTERS; counternum++)
+ {
+ m_lastcoin[counternum] = 0;
+ m_coinlockedout[counternum] = 0;
+ m_coin_count[counternum] = 0;
+ }
+
+ // 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));
+ machine.save().save_item(NAME(m_dispensed_tickets));
+
+ // register for configuration
+ machine.configuration().config_register("counters", config_saveload_delegate(FUNC(bookkeeping_manager::config_load), this), config_saveload_delegate(FUNC(bookkeeping_manager::config_save), this));
+}
+
+
+
+/***************************************************************************
+ TICKETS
+***************************************************************************/
+
+/*-------------------------------------------------
+ get_dispensed_tickets - return the number of
+ tickets dispensed
+-------------------------------------------------*/
+
+int bookkeeping_manager::get_dispensed_tickets() const
+{
+ return m_dispensed_tickets;
+}
+
+
+/*-------------------------------------------------
+ increment_dispensed_tickets - increment the
+ number of dispensed tickets
+-------------------------------------------------*/
+
+void bookkeeping_manager::increment_dispensed_tickets(int delta)
+{
+ m_dispensed_tickets += delta;
+}
+
+
+
+/***************************************************************************
+ COIN COUNTERS
+***************************************************************************/
+
+/*-------------------------------------------------
+ config_load - load the state of the counters
+ and tickets
+-------------------------------------------------*/
+
+void bookkeeping_manager::config_load(config_type cfg_type, xml_data_node *parentnode)
+{
+ xml_data_node *coinnode, *ticketnode;
+
+ /* on init, reset the counters */
+ if (cfg_type == config_type::CONFIG_TYPE_INIT)
+ {
+ memset(m_coin_count, 0, sizeof(m_coin_count));
+ m_dispensed_tickets = 0;
+ }
+
+ /* only care about game-specific data */
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
+ return;
+
+ /* might not have any data */
+ if (parentnode == nullptr)
+ return;
+
+ /* iterate over coins nodes */
+ for (coinnode = xml_get_sibling(parentnode->child, "coins"); coinnode; coinnode = xml_get_sibling(coinnode->next, "coins"))
+ {
+ int index = xml_get_attribute_int(coinnode, "index", -1);
+ if (index >= 0 && index < COIN_COUNTERS)
+ m_coin_count[index] = xml_get_attribute_int(coinnode, "number", 0);
+ }
+
+ /* get the single tickets node */
+ ticketnode = xml_get_sibling(parentnode->child, "tickets");
+ if (ticketnode != nullptr)
+ m_dispensed_tickets = xml_get_attribute_int(ticketnode, "number", 0);
+}
+
+
+/*-------------------------------------------------
+ config_save - save the state of the counters
+ and tickets
+-------------------------------------------------*/
+
+void bookkeeping_manager::config_save(config_type cfg_type, xml_data_node *parentnode)
+{
+ int i;
+
+ /* only care about game-specific data */
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
+ return;
+
+ /* iterate over coin counters */
+ for (i = 0; i < COIN_COUNTERS; i++)
+ if (m_coin_count[i] != 0)
+ {
+ xml_data_node *coinnode = xml_add_child(parentnode, "coins", nullptr);
+ if (coinnode != nullptr)
+ {
+ xml_set_attribute_int(coinnode, "index", i);
+ xml_set_attribute_int(coinnode, "number", m_coin_count[i]);
+ }
+ }
+
+ /* output tickets */
+ if (m_dispensed_tickets != 0)
+ {
+ xml_data_node *tickets = xml_add_child(parentnode, "tickets", nullptr);
+ if (tickets != nullptr)
+ xml_set_attribute_int(tickets, "number", m_dispensed_tickets);
+ }
+}
+
+
+/*-------------------------------------------------
+ coin_counter_w - sets input for coin counter
+-------------------------------------------------*/
+
+void bookkeeping_manager::coin_counter_w(int num, int on)
+{
+ if (num >= ARRAY_LENGTH(m_coin_count))
+ return;
+
+ /* Count it only if the data has changed from 0 to non-zero */
+ if (on && (m_lastcoin[num] == 0))
+ m_coin_count[num]++;
+ m_lastcoin[num] = on;
+}
+
+
+/*-------------------------------------------------
+ coin_counter_get_count - return the coin count
+ for a given coin
+-------------------------------------------------*/
+
+int bookkeeping_manager::coin_counter_get_count(int num)
+{
+ if (num >= ARRAY_LENGTH(m_coin_count))
+ return 0;
+ return m_coin_count[num];
+}
+
+
+/*-------------------------------------------------
+ coin_lockout_w - locks out one coin input
+-------------------------------------------------*/
+
+void bookkeeping_manager::coin_lockout_w(int num,int on)
+{
+ if (num >= ARRAY_LENGTH(m_coinlockedout))
+ return;
+ m_coinlockedout[num] = on;
+}
+
+
+/*-------------------------------------------------
+ coin_lockout_get_state - return current lockout
+ state for a particular coin
+-------------------------------------------------*/
+
+int bookkeeping_manager::coin_lockout_get_state(int num)
+{
+ if (num >= ARRAY_LENGTH(m_coinlockedout))
+ return FALSE;
+ return m_coinlockedout[num];
+}
+
+
+/*-------------------------------------------------
+ coin_lockout_global_w - locks out all the coin
+ inputs
+-------------------------------------------------*/
+
+void bookkeeping_manager::coin_lockout_global_w(int on)
+{
+ for (int i = 0; i < ARRAY_LENGTH(m_coinlockedout); i++)
+ coin_lockout_w(i, on);
+}
diff --git a/src/emu/bookkeeping.h b/src/emu/bookkeeping.h
new file mode 100644
index 00000000000..7285a40f058
--- /dev/null
+++ b/src/emu/bookkeeping.h
@@ -0,0 +1,78 @@
+// license:BSD-3-Clause
+// copyright-holders:Nicola Salmoria
+/*********************************************************************
+
+ bookkeeping.h
+
+ Bookkeeping simple machine functions.
+
+*********************************************************************/
+
+#pragma once
+
+#ifndef __BOOKKEEPING_H__
+#define __BOOKKEEPING_H__
+
+
+
+/***************************************************************************
+ CONSTANTS
+***************************************************************************/
+
+/* total # of coin counters */
+#define COIN_COUNTERS 8
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+
+// ======================> bookkeeping_manager
+
+enum class config_type;
+
+class bookkeeping_manager
+{
+public:
+ // construction/destruction
+ bookkeeping_manager(running_machine &machine);
+
+ // ----- tickets -----
+ // return the number of tickets dispensed
+ int get_dispensed_tickets() const;
+
+ // increment the number of dispensed tickets
+ void increment_dispensed_tickets(int delta);
+
+ // ----- 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
+ void coin_lockout_w(int num, int on);
+
+ // return current lockout state for a particular coin
+ int coin_lockout_get_state(int num);
+
+ // enable/disable global coin lockout
+ void coin_lockout_global_w(int on);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+private:
+ void config_load(config_type cfg_type, xml_data_node *parentnode);
+ void config_save(config_type cfg_type, xml_data_node *parentnode);
+
+ // internal state
+ running_machine & m_machine; // reference to our machine
+
+ UINT32 m_dispensed_tickets;
+ UINT32 m_coin_count[COIN_COUNTERS];
+ UINT32 m_coinlockedout[COIN_COUNTERS];
+ UINT32 m_lastcoin[COIN_COUNTERS];
+};
+
+#endif /* __BOOKKEEPING_H__ */
diff --git a/src/emu/cheat.cpp b/src/emu/cheat.cpp
index 8b1584bbd2a..16291063985 100644
--- a/src/emu/cheat.cpp
+++ b/src/emu/cheat.cpp
@@ -102,28 +102,23 @@
// the format
//-------------------------------------------------
-inline const char *number_and_format::format(std::string &str) const
+inline std::string number_and_format::format() const
{
switch (m_format)
{
default:
case XML_INT_FORMAT_DECIMAL:
- strprintf(str, "%d", (UINT32)m_value);
- break;
+ return strformat("%d", (UINT32)m_value);
case XML_INT_FORMAT_DECIMAL_POUND:
- strprintf(str, "#%d", (UINT32)m_value);
- break;
+ return strformat("#%d", (UINT32)m_value);
case XML_INT_FORMAT_HEX_DOLLAR:
- strprintf(str, "$%X", (UINT32)m_value);
- break;
+ return strformat("$%X", (UINT32)m_value);
case XML_INT_FORMAT_HEX_C:
- strprintf(str, "0x%X", (UINT32)m_value);
- break;
+ return strformat("0x%X", (UINT32)m_value);
}
- return str.c_str();
}
@@ -206,15 +201,14 @@ void cheat_parameter::save(emu_file &cheatfile) const
cheatfile.printf("\t\t<parameter");
// if no items, just output min/max/step
- std::string str;
if (!has_itemlist())
{
if (m_minval != 0)
- cheatfile.printf(" min=\"%s\"", m_minval.format(str));
+ cheatfile.printf(" min=\"%s\"", m_minval.format().c_str());
if (m_maxval != 0)
- cheatfile.printf(" max=\"%s\"", m_maxval.format(str));
+ cheatfile.printf(" max=\"%s\"", m_maxval.format().c_str());
if (m_stepval != 1)
- cheatfile.printf(" step=\"%s\"", m_stepval.format(str));
+ cheatfile.printf(" step=\"%s\"", m_stepval.format().c_str());
cheatfile.printf("/>\n");
}
@@ -222,7 +216,7 @@ void cheat_parameter::save(emu_file &cheatfile) const
else
{
for (const item *curitem = m_itemlist.first(); curitem != nullptr; curitem = curitem->next())
- cheatfile.printf("\t\t\t<item value=\"%s\">%s</item>\n", curitem->value().format(str), curitem->text());
+ cheatfile.printf("\t\t\t<item value=\"%s\">%s</item>\n", curitem->value().format().c_str(), curitem->text());
cheatfile.printf("\t\t</parameter>\n");
}
}
@@ -527,15 +521,13 @@ void cheat_script::script_entry::execute(cheat_manager &manager, UINT64 &arginde
void cheat_script::script_entry::save(emu_file &cheatfile) const
{
- std::string tempstring;
-
// output an action
if (m_format.empty())
{
cheatfile.printf("\t\t\t<action");
if (!m_condition.is_empty())
- cheatfile.printf(" condition=\"%s\"", cheat_manager::quote_expression(tempstring, m_condition));
- cheatfile.printf(">%s</action>\n", cheat_manager::quote_expression(tempstring, m_expression));
+ cheatfile.printf(" condition=\"%s\"", cheat_manager::quote_expression(m_condition).c_str());
+ cheatfile.printf(">%s</action>\n", cheat_manager::quote_expression(m_expression).c_str());
}
// output an output
@@ -543,7 +535,7 @@ void cheat_script::script_entry::save(emu_file &cheatfile) const
{
cheatfile.printf("\t\t\t<output format=\"%s\"", m_format.c_str());
if (!m_condition.is_empty())
- cheatfile.printf(" condition=\"%s\"", cheat_manager::quote_expression(tempstring, m_condition));
+ cheatfile.printf(" condition=\"%s\"", cheat_manager::quote_expression(m_condition).c_str());
if (m_line != 0)
cheatfile.printf(" line=\"%d\"", m_line);
if (m_justify == JUSTIFY_CENTER)
@@ -661,12 +653,10 @@ int cheat_script::script_entry::output_argument::values(UINT64 &argindex, UINT64
void cheat_script::script_entry::output_argument::save(emu_file &cheatfile) const
{
- std::string tempstring;
-
cheatfile.printf("\t\t\t\t<argument");
if (m_count != 1)
cheatfile.printf(" count=\"%d\"", (int)m_count);
- cheatfile.printf(">%s</argument>\n", cheat_manager::quote_expression(tempstring, m_expression));
+ cheatfile.printf(">%s</argument>\n", cheat_manager::quote_expression(m_expression).c_str());
}
@@ -706,10 +696,8 @@ cheat_entry::cheat_entry(cheat_manager &manager, symbol_table &globaltable, cons
// create the symbol table
m_symbols.add("argindex", symbol_table::READ_ONLY, &m_argindex);
- std::string tempname;
for (int curtemp = 0; curtemp < tempcount; curtemp++) {
- strprintf(tempname,"temp%d", curtemp);
- m_symbols.add(tempname.c_str(), symbol_table::READ_WRITE);
+ m_symbols.add(strformat("temp%d", curtemp).c_str(), symbol_table::READ_WRITE);
}
// read the first comment node
@@ -1267,9 +1255,9 @@ std::string &cheat_manager::get_output_astring(int row, int justify)
// document
//-------------------------------------------------
-const char *cheat_manager::quote_expression(std::string &str, const parsed_expression &expression)
+std::string cheat_manager::quote_expression(const parsed_expression &expression)
{
- str.assign(expression.original_string());
+ std::string str = expression.original_string();
strreplace(str, " && ", " and ");
strreplace(str, " &&", " and ");
@@ -1296,7 +1284,7 @@ const char *cheat_manager::quote_expression(std::string &str, const parsed_expre
strreplace(str, "<< ", " lshift ");
strreplace(str, "<<", " lshift ");
- return str.c_str();
+ return str;
}
diff --git a/src/emu/cheat.h b/src/emu/cheat.h
index 197de382cd3..8e49a8888bb 100644
--- a/src/emu/cheat.h
+++ b/src/emu/cheat.h
@@ -56,7 +56,7 @@ public:
operator const UINT64 &() const { return m_value; }
// format the number according to its format
- const char *format(std::string &str) const;
+ std::string format() const;
private:
// internal state
@@ -308,7 +308,7 @@ public:
std::string &get_output_astring(int row, int justify);
// global helpers
- static const char *quote_expression(std::string &str, const parsed_expression &expression);
+ static std::string quote_expression(const parsed_expression &expression);
static UINT64 execute_frombcd(symbol_table &table, void *ref, int params, const UINT64 *param);
static UINT64 execute_tobcd(symbol_table &table, void *ref, int params, const UINT64 *param);
diff --git a/src/emu/clifront.cpp b/src/emu/clifront.cpp
index 60d75272f82..05b0ace6116 100644
--- a/src/emu/clifront.cpp
+++ b/src/emu/clifront.cpp
@@ -72,11 +72,8 @@ private:
cli_frontend::cli_frontend(cli_options &options, osd_interface &osd)
: m_options(options),
m_osd(osd),
- m_result(MAMERR_NONE),
- m_start_memory(next_memory_id())
+ m_result(MAMERR_NONE)
{
- // begin tracking memory
- track_memory(true);
}
@@ -88,11 +85,6 @@ cli_frontend::~cli_frontend()
{
// nuke any device options since they will leak memory
m_options.remove_device_options();
-
- // report any unfreed memory on clean exits
- track_memory(false);
- if (m_result == MAMERR_NONE)
- dump_unfreed_mem(m_start_memory);
}
@@ -192,8 +184,7 @@ int cli_frontend::execute(int argc, char **argv)
osd_printf_error("Error in command line:\n%s\n", strtrimspace(option_errors).c_str());
// determine the base name of the EXE
- std::string exename;
- core_filename_extract_base(exename, argv[0], true);
+ std::string exename = core_filename_extract_base(argv[0], true);
// if we have a command, execute that
if (*(m_options.command()) != 0)
@@ -329,9 +320,8 @@ void cli_frontend::listsource(const char *gamename)
throw emu_fatalerror(MAMERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename);
// iterate through drivers and output the info
- std::string filename;
while (drivlist.next())
- osd_printf_info("%-16s %s\n", drivlist.driver().name, core_filename_extract_base(filename, drivlist.driver().source_file).c_str());
+ osd_printf_info("%-16s %s\n", drivlist.driver().name, core_filename_extract_base(drivlist.driver().source_file).c_str());
}
@@ -417,11 +407,10 @@ void cli_frontend::listbrothers(const char *gamename)
// output the entries found
drivlist.reset();
- std::string filename;
while (drivlist.next())
{
int clone_of = drivlist.clone();
- osd_printf_info("%-16s %-16s %-16s\n", core_filename_extract_base(filename, drivlist.driver().source_file).c_str(), drivlist.driver().name, (clone_of == -1 ? "" : drivlist.driver(clone_of).name));
+ osd_printf_info("%-16s %-16s %-16s\n", core_filename_extract_base(drivlist.driver().source_file).c_str(), drivlist.driver().name, (clone_of == -1 ? "" : drivlist.driver(clone_of).name));
}
}
@@ -468,7 +457,6 @@ void cli_frontend::listroms(const char *gamename)
throw emu_fatalerror(MAMERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename);
// iterate through matches
- std::string tempstr;
bool first = true;
while (drivlist.next())
{
@@ -506,7 +494,7 @@ void cli_frontend::listroms(const char *gamename)
{
if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
osd_printf_info(" BAD");
- osd_printf_info(" %s", hashes.macro_string(tempstr));
+ osd_printf_info(" %s", hashes.macro_string().c_str());
}
else
osd_printf_info(" NO GOOD DUMP KNOWN");
@@ -597,8 +585,6 @@ void cli_frontend::listdevices(const char *gamename)
// dump the results
for (auto device : device_list)
{
-
-
// extract the tag, stripping the leading colon
const char *tag = device->tag();
if (*tag == ':')
@@ -939,6 +925,67 @@ void cli_frontend::verifyroms(const char *gamename)
}
}
}
+ } else {
+ // check for subdevices with ROMs (a few devices are missed otherwise, e.g. MPU401)
+ device_iterator subiter(*dev);
+ for (device_t *device = subiter.first(); device != nullptr; device = subiter.next())
+ {
+ device_iterator subsubiter(*device);
+ for (device_t *subdev = subsubiter.first(); subdev != nullptr; subdev = subsubiter.next())
+ {
+ if (subdev->owner() == device && subdev->rom_region() != nullptr && subdev->shortname() != nullptr && subdev->shortname()[0] != '\0')
+ {
+ if (device_map.insert(subdev->shortname()).second)
+ {
+ if (core_strwildcmp(gamename, subdev->shortname()) == 0)
+ {
+ matched++;
+
+ // audit the ROMs in this set
+ media_auditor::summary summary = auditor.audit_device(subdev, AUDIT_VALIDATE_FAST);
+
+ // if not found, count that and leave it at that
+ if (summary == media_auditor::NOTFOUND)
+ notfound++;
+
+ // else display information about what we discovered
+ else if (summary != media_auditor::NONE_NEEDED)
+ {
+ // output the summary of the audit
+ std::string summary_string;
+ auditor.summarize(subdev->shortname(),&summary_string);
+ osd_printf_info("%s", summary_string.c_str());
+
+ // display information about what we discovered
+ osd_printf_info("romset %s ", subdev->shortname());
+
+ // switch off of the result
+ switch (summary)
+ {
+ case media_auditor::INCORRECT:
+ osd_printf_info("is bad\n");
+ incorrect++;
+ break;
+
+ case media_auditor::CORRECT:
+ osd_printf_info("is good\n");
+ correct++;
+ break;
+
+ case media_auditor::BEST_AVAILABLE:
+ osd_printf_info("is best available\n");
+ correct++;
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
const_cast<machine_config &>(config).device_remove(&config.root_device(), temptag.c_str());
@@ -1123,8 +1170,6 @@ void cli_frontend::verifysamples(const char *gamename)
void cli_frontend::output_single_softlist(FILE *out, software_list_device &swlistdev)
{
- std::string tempstr;
-
fprintf(out, "\t<softwarelist name=\"%s\" description=\"%s\">\n", swlistdev.list_name(), xml_normalize_string(swlistdev.description()));
for (software_info *swinfo = swlistdev.first_software_info(); swinfo != nullptr; swinfo = swinfo->next())
{
@@ -1176,7 +1221,7 @@ void cli_frontend::output_single_softlist(FILE *out, software_list_device &swlis
/* dump checksum information only if there is a known dump */
hash_collection hashes(ROM_GETHASHDATA(rom));
if ( !hashes.flag(hash_collection::FLAG_NO_DUMP) )
- fprintf( out, " %s", hashes.attribute_string(tempstr) );
+ fprintf( out, " %s", hashes.attribute_string().c_str() );
else
fprintf( out, " status=\"nodump\"" );
@@ -1541,9 +1586,8 @@ void cli_frontend::execute_commands(const char *exename)
// showusage?
if (strcmp(m_options.command(), CLICOMMAND_SHOWUSAGE) == 0)
{
- std::string helpstring;
emulator_info::printf_usage(exename, emulator_info::get_gamenoun());
- osd_printf_info("\n\nOptions:\n%s", m_options.output_help(helpstring));
+ osd_printf_info("\n\nOptions:\n%s", m_options.output_help().c_str());
return;
}
@@ -1551,9 +1595,10 @@ 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!\n");
+ throw emu_fatalerror(MAMERR_FAILED_VALIDITY, "Validity check failed (%d errors, %d warnings in total)\n", valid.errors(), valid.warnings());
return;
}
@@ -1572,8 +1617,7 @@ void cli_frontend::execute_commands(const char *exename)
throw emu_fatalerror("Unable to create file %s.ini\n",emulator_info::get_configname());
// generate the updated INI
- std::string initext;
- file.puts(m_options.output_ini(initext));
+ file.puts(m_options.output_ini().c_str());
return;
}
@@ -1581,8 +1625,7 @@ void cli_frontend::execute_commands(const char *exename)
if (strcmp(m_options.command(), CLICOMMAND_SHOWCONFIG) == 0)
{
// print the INI text
- std::string initext;
- printf("%s\n", m_options.output_ini(initext));
+ printf("%s\n", m_options.output_ini().c_str());
return;
}
@@ -1636,7 +1679,7 @@ void cli_frontend::execute_commands(const char *exename)
void cli_frontend::display_help()
{
- osd_printf_info("%s v%s - %s\n%s\n\n", emulator_info::get_applongname(),build_version,emulator_info::get_fulllongname(),emulator_info::get_copyright_info());
+ osd_printf_info("%s v%s\n%s\n\n", emulator_info::get_appname(),build_version,emulator_info::get_copyright_info());
osd_printf_info("%s\n", emulator_info::get_disclaimer());
emulator_info::printf_usage(emulator_info::get_appname(),emulator_info::get_gamenoun());
osd_printf_info("\n\n"
@@ -1783,8 +1826,7 @@ void media_identifier::identify_file(const char *name)
if (core_filename_ends_with(name, ".chd"))
{
// output the name
- std::string basename;
- osd_printf_info("%-20s", core_filename_extract_base(basename, name).c_str());
+ osd_printf_info("%-20s", core_filename_extract_base(name).c_str());
m_total++;
// attempt to open as a CHD; fail if not
@@ -1859,8 +1901,7 @@ void media_identifier::identify_data(const char *name, const UINT8 *data, int le
// output the name
m_total++;
- std::string basename;
- osd_printf_info("%-20s", core_filename_extract_base(basename, name).c_str());
+ osd_printf_info("%-20s", core_filename_extract_base(name).c_str());
// see if we can find a match in the ROMs
int found = find_by_hash(hashes, length);
diff --git a/src/emu/clifront.h b/src/emu/clifront.h
index b5613f94b76..584261660db 100644
--- a/src/emu/clifront.h
+++ b/src/emu/clifront.h
@@ -67,7 +67,6 @@ private:
cli_options & m_options;
osd_interface & m_osd;
int m_result;
- UINT64 m_start_memory;
};
diff --git a/src/emu/config.cpp b/src/emu/config.cpp
index 65dbea7ce38..691012a4a41 100644
--- a/src/emu/config.cpp
+++ b/src/emu/config.cpp
@@ -13,59 +13,22 @@
#include "config.h"
#include "xmlfile.h"
-
#define DEBUG_CONFIG 0
+//**************************************************************************
+// CONFIGURATION MANAGER
+//**************************************************************************
+//-------------------------------------------------
+// configuration_manager - constructor
+//-------------------------------------------------
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-struct config_type
-{
- config_type * next; /* next in line */
- const char * name; /* node name */
- config_saveload_delegate load; /* load callback */
- config_saveload_delegate save; /* save callback */
-};
-
-
-
-/***************************************************************************
- GLOBAL VARIABLES
-***************************************************************************/
-
-static config_type *typelist;
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-static int config_load_xml(running_machine &machine, emu_file &file, int type);
-static int config_save_xml(running_machine &machine, emu_file &file, int type);
-
-
-
-/***************************************************************************
- CORE IMPLEMENTATION
-***************************************************************************/
-
-/*************************************
- *
- * Reset the configuration callbacks
- *
- *************************************/
-void config_init(running_machine &machine)
+configuration_manager::configuration_manager(running_machine &machine)
+ : m_machine(machine)
{
- typelist = nullptr;
}
-
-
/*************************************
*
* Register to be involved in config
@@ -73,21 +36,14 @@ void config_init(running_machine &machine)
*
*************************************/
-void config_register(running_machine &machine, const char *nodename, config_saveload_delegate load, config_saveload_delegate save)
+void configuration_manager::config_register(const char* nodename, config_saveload_delegate load, config_saveload_delegate save)
{
- config_type *newtype;
- config_type **ptype;
-
- /* allocate a new type */
- newtype = auto_alloc(machine, config_type);
- newtype->next = nullptr;
- newtype->name = nodename;
- newtype->load = load;
- newtype->save = save;
-
- /* add us to the end */
- for (ptype = &typelist; *ptype; ptype = &(*ptype)->next) { }
- *ptype = newtype;
+ config_element element;
+ element.name = nodename;
+ element.load = load;
+ element.save = save;
+
+ m_typelist.push_back(element);
}
@@ -98,45 +54,44 @@ void config_register(running_machine &machine, const char *nodename, config_save
*
*************************************/
-int config_load_settings(running_machine &machine)
+int configuration_manager::load_settings()
{
- const char *controller = machine.options().ctrlr();
- config_type *type;
+ const char *controller = machine().options().ctrlr();
int loaded = 0;
/* loop over all registrants and call their init function */
- for (type = typelist; type; type = type->next)
- type->load(CONFIG_TYPE_INIT, nullptr);
+ for (auto type : m_typelist)
+ type.load(config_type::CONFIG_TYPE_INIT, nullptr);
/* now load the controller file */
if (controller[0] != 0)
{
/* open the config file */
- emu_file file(machine.options().ctrlr_path(), OPEN_FLAG_READ);
+ emu_file file(machine().options().ctrlr_path(), OPEN_FLAG_READ);
file_error filerr = file.open(controller, ".cfg");
if (filerr != FILERR_NONE)
throw emu_fatalerror("Could not load controller file %s.cfg", controller);
/* load the XML */
- if (!config_load_xml(machine, file, CONFIG_TYPE_CONTROLLER))
+ if (!load_xml(file, config_type::CONFIG_TYPE_CONTROLLER))
throw emu_fatalerror("Could not load controller file %s.cfg", controller);
}
/* next load the defaults file */
- emu_file file(machine.options().cfg_directory(), OPEN_FLAG_READ);
+ emu_file file(machine().options().cfg_directory(), OPEN_FLAG_READ);
file_error filerr = file.open("default.cfg");
if (filerr == FILERR_NONE)
- config_load_xml(machine, file, CONFIG_TYPE_DEFAULT);
+ load_xml(file, config_type::CONFIG_TYPE_DEFAULT);
/* finally, load the game-specific file */
- filerr = file.open(machine.basename(), ".cfg");
+ filerr = file.open(machine().basename(), ".cfg");
if (filerr == FILERR_NONE)
- loaded = config_load_xml(machine, file, CONFIG_TYPE_GAME);
+ loaded = load_xml(file, config_type::CONFIG_TYPE_GAME);
/* loop over all registrants and call their final function */
- for (type = typelist; type; type = type->next)
- type->load(CONFIG_TYPE_FINAL, nullptr);
+ for (auto type : m_typelist)
+ type.load(config_type::CONFIG_TYPE_FINAL, nullptr);
/* if we didn't find a saved config, return 0 so the main core knows that it */
/* is the first time the game is run and it should diplay the disclaimer. */
@@ -144,28 +99,26 @@ int config_load_settings(running_machine &machine)
}
-void config_save_settings(running_machine &machine)
+void configuration_manager::save_settings()
{
- config_type *type;
-
/* loop over all registrants and call their init function */
- for (type = typelist; type; type = type->next)
- type->save(CONFIG_TYPE_INIT, nullptr);
+ for (auto type : m_typelist)
+ type.save(config_type::CONFIG_TYPE_INIT, nullptr);
/* save the defaults file */
- emu_file file(machine.options().cfg_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ emu_file file(machine().options().cfg_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
file_error filerr = file.open("default.cfg");
if (filerr == FILERR_NONE)
- config_save_xml(machine, file, CONFIG_TYPE_DEFAULT);
+ save_xml(file, config_type::CONFIG_TYPE_DEFAULT);
/* finally, save the game-specific file */
- filerr = file.open(machine.basename(), ".cfg");
+ filerr = file.open(machine().basename(), ".cfg");
if (filerr == FILERR_NONE)
- config_save_xml(machine, file, CONFIG_TYPE_GAME);
+ save_xml(file, config_type::CONFIG_TYPE_GAME);
/* loop over all registrants and call their final function */
- for (type = typelist; type; type = type->next)
- type->save(CONFIG_TYPE_FINAL, nullptr);
+ for (auto type : m_typelist)
+ type.save(config_type::CONFIG_TYPE_FINAL, nullptr);
}
@@ -176,10 +129,9 @@ void config_save_settings(running_machine &machine)
*
*************************************/
-static int config_load_xml(running_machine &machine, emu_file &file, int which_type)
+int configuration_manager::load_xml(emu_file &file, config_type which_type)
{
xml_data_node *root, *confignode, *systemnode;
- config_type *type;
const char *srcfile;
int version, count;
@@ -199,13 +151,13 @@ static int config_load_xml(running_machine &machine, emu_file &file, int which_t
goto error;
/* strip off all the path crap from the source filename */
- srcfile = strrchr(machine.system().source_file, '/');
+ srcfile = strrchr(machine().system().source_file, '/');
if (!srcfile)
- srcfile = strrchr(machine.system().source_file, '\\');
+ srcfile = strrchr(machine().system().source_file, '\\');
if (!srcfile)
- srcfile = strrchr(machine.system().source_file, ':');
+ srcfile = strrchr(machine().system().source_file, ':');
if (!srcfile)
- srcfile = machine.system().source_file;
+ srcfile = machine().system().source_file;
else
srcfile++;
@@ -219,30 +171,32 @@ static int config_load_xml(running_machine &machine, emu_file &file, int which_t
/* based on the file type, determine whether we have a match */
switch (which_type)
{
- case CONFIG_TYPE_GAME:
+ case config_type::CONFIG_TYPE_GAME:
/* only match on the specific game name */
- if (strcmp(name, machine.system().name) != 0)
+ if (strcmp(name, machine().system().name) != 0)
continue;
break;
- case CONFIG_TYPE_DEFAULT:
+ case config_type::CONFIG_TYPE_DEFAULT:
/* only match on default */
if (strcmp(name, "default") != 0)
continue;
break;
- case CONFIG_TYPE_CONTROLLER:
+ case config_type::CONFIG_TYPE_CONTROLLER:
{
int clone_of;
/* match on: default, game name, source file name, parent name, grandparent name */
if (strcmp(name, "default") != 0 &&
- strcmp(name, machine.system().name) != 0 &&
+ strcmp(name, machine().system().name) != 0 &&
strcmp(name, srcfile) != 0 &&
- ((clone_of = driver_list::clone(machine.system())) == -1 || strcmp(name, driver_list::driver(clone_of).name) != 0) &&
+ ((clone_of = driver_list::clone(machine().system())) == -1 || strcmp(name, driver_list::driver(clone_of).name) != 0) &&
(clone_of == -1 || ((clone_of = driver_list::clone(clone_of)) == -1) || strcmp(name, driver_list::driver(clone_of).name) != 0))
continue;
break;
}
+ default:
+ break;
}
/* log that we are processing this entry */
@@ -250,8 +204,8 @@ static int config_load_xml(running_machine &machine, emu_file &file, int which_t
osd_printf_debug("Entry: %s -- processing\n", name);
/* loop over all registrants and call their load function */
- for (type = typelist; type; type = type->next)
- type->load(which_type, xml_get_sibling(systemnode->child, type->name));
+ for (auto type : m_typelist)
+ type.load(which_type, xml_get_sibling(systemnode->child, type.name.c_str()));
count++;
}
@@ -277,11 +231,10 @@ error:
*
*************************************/
-static int config_save_xml(running_machine &machine, emu_file &file, int which_type)
+int configuration_manager::save_xml(emu_file &file, config_type which_type)
{
xml_data_node *root = xml_file_create();
xml_data_node *confignode, *systemnode;
- config_type *type;
/* if we don't have a root, bail */
if (!root)
@@ -297,16 +250,16 @@ static int config_save_xml(running_machine &machine, emu_file &file, int which_t
systemnode = xml_add_child(confignode, "system", nullptr);
if (!systemnode)
goto error;
- xml_set_attribute(systemnode, "name", (which_type == CONFIG_TYPE_DEFAULT) ? "default" : machine.system().name);
+ xml_set_attribute(systemnode, "name", (which_type == config_type::CONFIG_TYPE_DEFAULT) ? "default" : machine().system().name);
/* create the input node and write it out */
/* loop over all registrants and call their save function */
- for (type = typelist; type; type = type->next)
+ for (auto type : m_typelist)
{
- xml_data_node *curnode = xml_add_child(systemnode, type->name, nullptr);
+ xml_data_node *curnode = xml_add_child(systemnode, type.name.c_str(), nullptr);
if (!curnode)
goto error;
- type->save(which_type, curnode);
+ type.save(which_type, curnode);
/* if nothing was added, just nuke the node */
if (!curnode->value && !curnode->child)
diff --git a/src/emu/config.h b/src/emu/config.h
index da3d7dc3bae..172f9f19daa 100644
--- a/src/emu/config.h
+++ b/src/emu/config.h
@@ -14,8 +14,6 @@
#include "xmlfile.h"
-
-
/*************************************
*
* Constants
@@ -24,7 +22,7 @@
#define CONFIG_VERSION 10
-enum
+enum class config_type
{
CONFIG_TYPE_INIT = 0, /* opportunity to initialize things first */
CONFIG_TYPE_CONTROLLER, /* loading from controller file */
@@ -33,27 +31,42 @@ enum
CONFIG_TYPE_FINAL /* opportunity to finish initialization */
};
-
-
/*************************************
*
* Type definitions
*
*************************************/
-typedef delegate<void (int, xml_data_node *)> config_saveload_delegate;
-
-
+typedef delegate<void (config_type, xml_data_node *)> config_saveload_delegate;
-/*************************************
- *
- * Function prototypes
- *
- *************************************/
+// ======================> configuration_manager
-void config_init(running_machine &machine);
-void config_register(running_machine &machine, const char *nodename, config_saveload_delegate load, config_saveload_delegate save);
-int config_load_settings(running_machine &machine);
-void config_save_settings(running_machine &machine);
+class configuration_manager
+{
+ struct config_element
+ {
+ std::string name; /* node name */
+ config_saveload_delegate load; /* load callback */
+ config_saveload_delegate save; /* save callback */
+ };
+
+public:
+ // construction/destruction
+ configuration_manager(running_machine &machine);
+
+ void config_register(const char* nodename, config_saveload_delegate load, config_saveload_delegate save);
+ int load_settings();
+ void save_settings();
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+private:
+ int load_xml(emu_file &file, config_type which_type);
+ int save_xml(emu_file &file, config_type which_type);
+
+ // internal state
+ running_machine & m_machine; // reference to our machine
+ std::vector<config_element> m_typelist;
+};
#endif /* __CONFIG_H__ */
diff --git a/src/emu/crsshair.cpp b/src/emu/crsshair.cpp
index 88cfb8dac02..a4bee628ae9 100644
--- a/src/emu/crsshair.cpp
+++ b/src/emu/crsshair.cpp
@@ -25,37 +25,9 @@
/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-struct crosshair_global
-{
- UINT8 usage; /* true if any crosshairs are used */
- UINT8 used[MAX_PLAYERS]; /* usage per player */
- UINT8 mode[MAX_PLAYERS]; /* visibility mode per player */
- UINT8 visible[MAX_PLAYERS]; /* visibility per player */
- bitmap_argb32 * bitmap[MAX_PLAYERS]; /* bitmap per player */
- render_texture * texture[MAX_PLAYERS]; /* texture per player */
- screen_device * screen[MAX_PLAYERS]; /* the screen on which this player's crosshair is drawn */
- float x[MAX_PLAYERS]; /* current X position */
- float y[MAX_PLAYERS]; /* current Y position */
- float last_x[MAX_PLAYERS]; /* last X position */
- float last_y[MAX_PLAYERS]; /* last Y position */
- UINT8 fade; /* color fading factor */
- UINT8 animation_counter; /* animation frame index */
- UINT16 auto_time; /* time in seconds to turn invisible */
- UINT16 time[MAX_PLAYERS]; /* time since last movement */
- char name[MAX_PLAYERS][CROSSHAIR_PIC_NAME_LENGTH + 1]; /* name of crosshair png file */
-};
-
-
-/***************************************************************************
GLOBAL VARIABLES
***************************************************************************/
-/* global state */
-static crosshair_global global;
-
/* raw bitmap */
static const UINT8 crosshair_raw_top[] =
{
@@ -123,71 +95,117 @@ static const rgb_t crosshair_colors[] =
rgb_t(0xff,0xff,0xff)
};
+//**************************************************************************
+// CROSSHAIR MANAGER
+//**************************************************************************
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
+//-------------------------------------------------
+// crosshair_manager - constructor
+//-------------------------------------------------
+
+crosshair_manager::crosshair_manager(running_machine &machine)
+ : m_machine(machine)
+{
+ /* request a callback upon exiting */
+ machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(crosshair_manager::exit), this));
-static void crosshair_exit(running_machine &machine);
-static void crosshair_load(running_machine &machine, int config_type, xml_data_node *parentnode);
-static void crosshair_save(running_machine &machine, int config_type, xml_data_node *parentnode);
+ /* setup the default auto visibility time */
+ m_auto_time = CROSSHAIR_VISIBILITY_AUTOTIME_DEFAULT;
-static void animate(running_machine &machine, screen_device &device, bool vblank_state);
+ /* determine who needs crosshairs */
+ for (ioport_port *port = machine.ioport().first_port(); port != nullptr; port = port->next())
+ for (ioport_field *field = port->first_field(); field != nullptr; field = field->next())
+ if (field->crosshair_axis() != CROSSHAIR_AXIS_NONE)
+ {
+ int player = field->player();
+ assert(player < MAX_PLAYERS);
-/***************************************************************************
- CORE IMPLEMENTATION
-***************************************************************************/
+ /* mark as used and set the default visibility and mode */
+ m_usage = TRUE;
+ m_used[player] = TRUE;
+ m_mode[player] = CROSSHAIR_VISIBILITY_DEFAULT;
+ m_visible[player] = (CROSSHAIR_VISIBILITY_DEFAULT == CROSSHAIR_VISIBILITY_OFF) ? FALSE : TRUE;
+ /* for now, use the main screen */
+ m_screen[player] = machine.first_screen();
+
+ create_bitmap(player);
+ }
+
+ /* register callbacks for when we load/save configurations */
+ if (m_usage)
+ machine.configuration().config_register("crosshairs", config_saveload_delegate(FUNC(crosshair_manager::config_load), this), config_saveload_delegate(FUNC(crosshair_manager::config_save), this));
+
+ /* register the animation callback */
+ if (machine.first_screen() != nullptr)
+ machine.first_screen()->register_vblank_callback(vblank_state_delegate(FUNC(crosshair_manager::animate), this));
+}
+
+/*-------------------------------------------------
+exit - free memory allocated for
+the crosshairs
+-------------------------------------------------*/
+
+void crosshair_manager::exit()
+{
+ /* free bitmaps and textures for each player */
+ for (int player = 0; player < MAX_PLAYERS; player++)
+ {
+ machine().render().texture_free(m_texture[player]);
+ m_texture[player] = nullptr;
+ m_bitmap[player] = nullptr;
+ }
+}
/*-------------------------------------------------
create_bitmap - create the rendering
structures for the given player
-------------------------------------------------*/
-static void create_bitmap(running_machine &machine, int player)
+void crosshair_manager::create_bitmap(int player)
{
int x, y;
char filename[20];
rgb_t color = crosshair_colors[player];
/* if we have a bitmap and texture for this player, kill it */
- if (global.bitmap[player] == nullptr) {
- global.bitmap[player] = global_alloc(bitmap_argb32);
- global.texture[player] = machine.render().texture_alloc(render_texture::hq_scale);
+ if (m_bitmap[player] == nullptr) {
+ m_bitmap[player] = std::make_unique<bitmap_argb32>();
+ m_texture[player] = machine().render().texture_alloc(render_texture::hq_scale);
}
- emu_file crossfile(machine.options().crosshair_path(), OPEN_FLAG_READ);
- if (global.name[player][0] != 0)
+ emu_file crossfile(machine().options().crosshair_path(), OPEN_FLAG_READ);
+ if (m_name[player][0] != 0)
{
/* look for user specified file */
- sprintf(filename, "%s.png", global.name[player]);
- render_load_png(*global.bitmap[player], crossfile, nullptr, filename);
+ sprintf(filename, "%s.png", m_name[player]);
+ render_load_png(*m_bitmap[player], crossfile, nullptr, filename);
}
else
{
/* look for default cross?.png in crsshair\game dir */
sprintf(filename, "cross%d.png", player + 1);
- render_load_png(*global.bitmap[player], crossfile, machine.system().name, filename);
+ render_load_png(*m_bitmap[player], crossfile, machine().system().name, filename);
/* look for default cross?.png in crsshair dir */
- if (!global.bitmap[player]->valid())
- render_load_png(*global.bitmap[player], crossfile, nullptr, filename);
+ if (!m_bitmap[player]->valid())
+ render_load_png(*m_bitmap[player], crossfile, nullptr, filename);
}
/* if that didn't work, use the built-in one */
- if (!global.bitmap[player]->valid())
+ if (!m_bitmap[player]->valid())
{
/* allocate a blank bitmap to start with */
- global.bitmap[player]->allocate(CROSSHAIR_RAW_SIZE, CROSSHAIR_RAW_SIZE);
- global.bitmap[player]->fill(rgb_t(0x00,0xff,0xff,0xff));
+ m_bitmap[player]->allocate(CROSSHAIR_RAW_SIZE, CROSSHAIR_RAW_SIZE);
+ m_bitmap[player]->fill(rgb_t(0x00,0xff,0xff,0xff));
/* extract the raw source data to it */
for (y = 0; y < CROSSHAIR_RAW_SIZE / 2; y++)
{
/* assume it is mirrored vertically */
- UINT32 *dest0 = &global.bitmap[player]->pix32(y);
- UINT32 *dest1 = &global.bitmap[player]->pix32(CROSSHAIR_RAW_SIZE - 1 - y);
+ UINT32 *dest0 = &m_bitmap[player]->pix32(y);
+ UINT32 *dest1 = &m_bitmap[player]->pix32(CROSSHAIR_RAW_SIZE - 1 - y);
/* extract to two rows simultaneously */
for (x = 0; x < CROSSHAIR_RAW_SIZE; x++)
@@ -197,123 +215,45 @@ static void create_bitmap(running_machine &machine, int player)
}
/* reference the new bitmap */
- global.texture[player]->set_bitmap(*global.bitmap[player], global.bitmap[player]->cliprect(), TEXFORMAT_ARGB32);
-}
-
-
-/*-------------------------------------------------
- crosshair_init - initialize the crosshair
- bitmaps and such
--------------------------------------------------*/
-
-void crosshair_init(running_machine &machine)
-{
- /* request a callback upon exiting */
- machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(crosshair_exit), &machine));
-
- /* clear all the globals */
- memset(&global, 0, sizeof(global));
-
- /* setup the default auto visibility time */
- global.auto_time = CROSSHAIR_VISIBILITY_AUTOTIME_DEFAULT;
-
- /* determine who needs crosshairs */
- for (ioport_port *port = machine.ioport().first_port(); port != nullptr; port = port->next())
- for (ioport_field *field = port->first_field(); field != nullptr; field = field->next())
- if (field->crosshair_axis() != CROSSHAIR_AXIS_NONE)
- {
- int player = field->player();
-
- assert(player < MAX_PLAYERS);
-
- /* mark as used and set the default visibility and mode */
- global.usage = TRUE;
- global.used[player] = TRUE;
- global.mode[player] = CROSSHAIR_VISIBILITY_DEFAULT;
- global.visible[player] = (CROSSHAIR_VISIBILITY_DEFAULT == CROSSHAIR_VISIBILITY_OFF) ? FALSE : TRUE;
-
- /* for now, use the main screen */
- global.screen[player] = machine.first_screen();
-
- create_bitmap(machine, player);
- }
-
- /* register callbacks for when we load/save configurations */
- if (global.usage)
- config_register(machine, "crosshairs", config_saveload_delegate(FUNC(crosshair_load), &machine), config_saveload_delegate(FUNC(crosshair_save), &machine));
-
- /* register the animation callback */
- if (machine.first_screen() != nullptr)
- machine.first_screen()->register_vblank_callback(vblank_state_delegate(FUNC(animate), &machine));
+ m_texture[player]->set_bitmap(*m_bitmap[player], m_bitmap[player]->cliprect(), TEXFORMAT_ARGB32);
}
-
/*-------------------------------------------------
- crosshair_exit - free memory allocated for
- the crosshairs
--------------------------------------------------*/
-
-static void crosshair_exit(running_machine &machine)
-{
- /* free bitmaps and textures for each player */
- for (int player = 0; player < MAX_PLAYERS; player++)
- {
- machine.render().texture_free(global.texture[player]);
- global.texture[player] = nullptr;
-
- global_free(global.bitmap[player]);
- global.bitmap[player] = nullptr;
- }
-}
-
-
-/*-------------------------------------------------
- crosshair_get_usage - return TRUE
- if any crosshairs are used
--------------------------------------------------*/
-
-int crosshair_get_usage(running_machine &machine)
-{
- return global.usage;
-}
-
-
-/*-------------------------------------------------
- crosshair_get_user_settings - return the
+ get_user_settings - return the
current crosshair settings for a player
Note: auto_time is common for all players
-------------------------------------------------*/
-void crosshair_get_user_settings(running_machine &machine, UINT8 player, crosshair_user_settings *settings)
+void crosshair_manager::get_user_settings(UINT8 player, crosshair_user_settings *settings)
{
- settings->auto_time = global.auto_time;
- settings->used = global.used[player];
- settings->mode = global.mode[player];
- strcpy(settings->name, global.name[player]);
+ settings->auto_time = m_auto_time;
+ settings->used = m_used[player];
+ settings->mode = m_mode[player];
+ strcpy(settings->name, m_name[player]);
}
/*-------------------------------------------------
- crosshair_set_user_settings - modify the
+ set_user_settings - modify the
current crosshair settings for a player
Note: auto_time is common for all players
-------------------------------------------------*/
-void crosshair_set_user_settings(running_machine &machine, UINT8 player, crosshair_user_settings *settings)
+void crosshair_manager::set_user_settings(UINT8 player, crosshair_user_settings *settings)
{
- global.auto_time = settings->auto_time;
- global.used[player] = settings->used;
- global.mode[player] = settings->mode;
+ m_auto_time = settings->auto_time;
+ m_used[player] = settings->used;
+ m_mode[player] = settings->mode;
/* set visibility as specified by mode */
/* auto mode starts with visibility off */
- global.visible[player] = (settings->mode == CROSSHAIR_VISIBILITY_ON) ? TRUE : FALSE;
+ m_visible[player] = (settings->mode == CROSSHAIR_VISIBILITY_ON) ? TRUE : FALSE;
/* update bitmap if name has changed */
- int changed = strcmp(settings->name, global.name[player]);
- strcpy(global.name[player], settings->name);
+ int changed = strcmp(settings->name, m_name[player]);
+ strcpy(m_name[player], settings->name);
if (changed != 0)
- create_bitmap(machine, player);
+ create_bitmap(player);
}
@@ -321,7 +261,7 @@ void crosshair_set_user_settings(running_machine &machine, UINT8 player, crossha
animate - animates the crosshair once a frame
-------------------------------------------------*/
-static void animate(running_machine &machine, screen_device &device, bool vblank_state)
+void crosshair_manager::animate(screen_device &device, bool vblank_state)
{
int player;
@@ -330,30 +270,30 @@ static void animate(running_machine &machine, screen_device &device, bool vblank
return;
/* increment animation counter */
- global.animation_counter += 0x08;
+ m_animation_counter += 0x08;
/* compute a fade factor from the current animation value */
- if (global.animation_counter < 0x80)
- global.fade = 0xa0 + (0x60 * ( global.animation_counter & 0x7f) / 0x80);
+ if (m_animation_counter < 0x80)
+ m_fade = 0xa0 + (0x60 * ( m_animation_counter & 0x7f) / 0x80);
else
- global.fade = 0xa0 + (0x60 * (~global.animation_counter & 0x7f) / 0x80);
+ m_fade = 0xa0 + (0x60 * (~m_animation_counter & 0x7f) / 0x80);
for (player = 0; player < MAX_PLAYERS; player++)
{
/* read all the lightgun values */
- if (global.used[player])
- device.machine().ioport().crosshair_position(player, global.x[player], global.y[player]);
+ if (m_used[player])
+ device.machine().ioport().crosshair_position(player, m_x[player], m_y[player]);
/* auto visibility */
- if (global.mode[player] == CROSSHAIR_VISIBILITY_AUTO)
+ if (m_mode[player] == CROSSHAIR_VISIBILITY_AUTO)
{
- if ((global.x[player] != global.last_x[player]) || (global.y[player] != global.last_y[player]))
+ if ((m_x[player] != m_last_x[player]) || (m_y[player] != m_last_y[player]))
{
/* crosshair has moved, keep crosshair visible */
- global.visible[player] = TRUE;
- global.last_x[player] = global.x[player];
- global.last_y[player] = global.y[player];
- global.time[player] = 0;
+ m_visible[player] = TRUE;
+ m_last_x[player] = m_x[player];
+ m_last_y[player] = m_y[player];
+ m_time[player] = 0;
}
else
{
@@ -361,12 +301,12 @@ static void animate(running_machine &machine, screen_device &device, bool vblank
/* slightly confusing formula, but the effect is: */
/* auto_time = 0 makes the crosshair barely visible while moved */
/* every increment in auto_time is about .2s at 60Hz */
- if (global.time[player] > global.auto_time * 12 + 2)
+ if (m_time[player] > m_auto_time * 12 + 2)
/* time exceeded so turn crosshair invisible */
- global.visible[player] = FALSE;
+ m_visible[player] = FALSE;
/* increment player visibility time */
- global.time[player]++;
+ m_time[player]++;
}
}
}
@@ -374,45 +314,33 @@ static void animate(running_machine &machine, screen_device &device, bool vblank
/*-------------------------------------------------
- crosshair_render - render the crosshairs
+ render - render the crosshairs
for the given screen
-------------------------------------------------*/
-void crosshair_render(screen_device &screen)
+void crosshair_manager::render(screen_device &screen)
{
int player;
for (player = 0; player < MAX_PLAYERS; player++)
/* draw if visible and the right screen */
- if (global.visible[player] &&
- ((global.screen[player] == &screen) || (global.screen[player] == CROSSHAIR_SCREEN_ALL)))
+ if (m_visible[player] &&
+ ((m_screen[player] == &screen) || (m_screen[player] == CROSSHAIR_SCREEN_ALL)))
{
/* add a quad assuming a 4:3 screen (this is not perfect) */
- screen.container().add_quad(global.x[player] - 0.03f, global.y[player] - 0.04f,
- global.x[player] + 0.03f, global.y[player] + 0.04f,
- rgb_t(0xc0, global.fade, global.fade, global.fade),
- global.texture[player], PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
+ screen.container().add_quad(m_x[player] - 0.03f, m_y[player] - 0.04f,
+ m_x[player] + 0.03f, m_y[player] + 0.04f,
+ rgb_t(0xc0, m_fade, m_fade, m_fade),
+ m_texture[player], PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
}
}
-
-/*-------------------------------------------------
- crosshair_set_screen - sets the screen(s) for a
- given player's crosshair
--------------------------------------------------*/
-
-void crosshair_set_screen(running_machine &machine, int player, screen_device *screen)
-{
- global.screen[player] = screen;
-}
-
-
/*-------------------------------------------------
- crosshair_load - read and apply data from the
+ config_load - read and apply data from the
configuration file
-------------------------------------------------*/
-static void crosshair_load(running_machine &machine, int config_type, xml_data_node *parentnode)
+void crosshair_manager::config_load(config_type cfg_type, xml_data_node *parentnode)
{
/* Note: crosshair_load() is only registered if croshairs are used */
@@ -420,7 +348,7 @@ static void crosshair_load(running_machine &machine, int config_type, xml_data_n
int auto_time;
/* we only care about game files */
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
/* might not have any data */
@@ -436,22 +364,22 @@ static void crosshair_load(running_machine &machine, int config_type, xml_data_n
/* check to make sure we have a valid player */
/* also check if the player really uses a crosshair */
- if (player >=0 && player < MAX_PLAYERS && global.used[player])
+ if (player >=0 && player < MAX_PLAYERS && m_used[player])
{
/* get, check, and store visibility mode */
mode = xml_get_attribute_int(crosshairnode, "mode", CROSSHAIR_VISIBILITY_DEFAULT);
if (mode >= CROSSHAIR_VISIBILITY_OFF && mode <= CROSSHAIR_VISIBILITY_AUTO)
{
- global.mode[player] = (UINT8)mode;
+ m_mode[player] = (UINT8)mode;
/* set visibility as specified by mode */
/* auto mode starts with visibility off */
- global.visible[player] = (mode == CROSSHAIR_VISIBILITY_ON) ? TRUE : FALSE;
+ m_visible[player] = (mode == CROSSHAIR_VISIBILITY_ON) ? TRUE : FALSE;
}
/* get and store crosshair pic name, truncate name to max length */
- strncpy(global.name[player], xml_get_attribute_string(crosshairnode, "pic", ""), CROSSHAIR_PIC_NAME_LENGTH);
+ strncpy(m_name[player], xml_get_attribute_string(crosshairnode, "pic", ""), CROSSHAIR_PIC_NAME_LENGTH);
/* update bitmap */
- create_bitmap(machine, player);
+ create_bitmap(player);
}
}
@@ -461,17 +389,17 @@ static void crosshair_load(running_machine &machine, int config_type, xml_data_n
{
auto_time = xml_get_attribute_int(crosshairnode, "val", CROSSHAIR_VISIBILITY_AUTOTIME_DEFAULT);
if ((auto_time >= CROSSHAIR_VISIBILITY_AUTOTIME_MIN) && (auto_time <= CROSSHAIR_VISIBILITY_AUTOTIME_MAX))
- global.auto_time = (UINT8)auto_time;
+ m_auto_time = (UINT8)auto_time;
}
}
/*-------------------------------------------------
- crosshair_save - save data to the
+ config_save - save data to the
configuration file
-------------------------------------------------*/
-static void crosshair_save(running_machine &machine, int config_type, xml_data_node *parentnode)
+void crosshair_manager::config_save(config_type cfg_type, xml_data_node *parentnode)
{
/* Note: crosshair_save() is only registered if crosshairs are used */
@@ -479,12 +407,12 @@ static void crosshair_save(running_machine &machine, int config_type, xml_data_n
int player;
/* we only care about game files */
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
for (player = 0; player < MAX_PLAYERS; player++)
{
- if (global.used[player])
+ if (m_used[player])
{
/* create a node */
crosshairnode = xml_add_child(parentnode, "crosshair", nullptr);
@@ -495,16 +423,16 @@ static void crosshair_save(running_machine &machine, int config_type, xml_data_n
xml_set_attribute_int(crosshairnode, "player", player);
- if (global.visible[player] != CROSSHAIR_VISIBILITY_DEFAULT)
+ if (m_visible[player] != CROSSHAIR_VISIBILITY_DEFAULT)
{
- xml_set_attribute_int(crosshairnode, "mode", global.mode[player]);
+ xml_set_attribute_int(crosshairnode, "mode", m_mode[player]);
changed = TRUE;
}
/* the default graphic name is "", so only save if not */
- if (*(global.name[player]) != 0)
+ if (*(m_name[player]) != 0)
{
- xml_set_attribute(crosshairnode, "pic", global.name[player]);
+ xml_set_attribute(crosshairnode, "pic", m_name[player]);
changed = TRUE;
}
@@ -516,13 +444,13 @@ static void crosshair_save(running_machine &machine, int config_type, xml_data_n
}
/* always store autotime so that it stays at the user value if it is needed */
- if (global.auto_time != CROSSHAIR_VISIBILITY_AUTOTIME_DEFAULT)
+ if (m_auto_time != CROSSHAIR_VISIBILITY_AUTOTIME_DEFAULT)
{
/* create a node */
crosshairnode = xml_add_child(parentnode, "autotime", nullptr);
if (crosshairnode != nullptr)
- xml_set_attribute_int(crosshairnode, "val", global.auto_time);
+ xml_set_attribute_int(crosshairnode, "val", m_auto_time);
}
}
diff --git a/src/emu/crsshair.h b/src/emu/crsshair.h
index 3f8643b797c..91becc37f58 100644
--- a/src/emu/crsshair.h
+++ b/src/emu/crsshair.h
@@ -50,28 +50,57 @@ struct crosshair_user_settings
};
+// ======================> crosshair_manager
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-/* initializes the crosshair system */
-void crosshair_init(running_machine &machine);
-
-/* draws crosshair(s) in a given screen, if necessary */
-void crosshair_render(screen_device &screen);
-
-/* sets the screen(s) for a given player's crosshair */
-void crosshair_set_screen(running_machine &machine, int player, screen_device *screen);
-
-/* return TRUE if any crosshairs are used */
-int crosshair_get_usage(running_machine &machine);
-
-/* return the current crosshair settings for the given player */
-void crosshair_get_user_settings(running_machine &machine, UINT8 player, crosshair_user_settings *settings);
-
-/* modify the current crosshair settings for the given player */
-void crosshair_set_user_settings(running_machine &machine, UINT8 player, crosshair_user_settings *settings);
-
+class crosshair_manager
+{
+public:
+ // construction/destruction
+ crosshair_manager(running_machine &machine);
+
+ /* draws crosshair(s) in a given screen, if necessary */
+ void render(screen_device &screen);
+
+ /* sets the screen(s) for a given player's crosshair */
+ void set_screen(int player, screen_device *screen) { m_screen[player] = screen; }
+
+ /* return TRUE if any crosshairs are used */
+ int get_usage() { return m_usage; }
+
+ /* return the current crosshair settings for the given player */
+ void get_user_settings(UINT8 player, crosshair_user_settings *settings);
+
+ /* modify the current crosshair settings for the given player */
+ void set_user_settings(UINT8 player, crosshair_user_settings *settings);
+ // getters
+ running_machine &machine() const { return m_machine; }
+private:
+ void create_bitmap(int player);
+ void exit();
+ void animate(screen_device &device, bool vblank_state);
+
+ void config_load(config_type cfg_type, xml_data_node *parentnode);
+ void config_save(config_type cfg_type, xml_data_node *parentnode);
+
+ // internal state
+ running_machine & m_machine; // reference to our machine
+
+ UINT8 m_usage; /* true if any crosshairs are used */
+ UINT8 m_used[MAX_PLAYERS]; /* usage per player */
+ UINT8 m_mode[MAX_PLAYERS]; /* visibility mode per player */
+ UINT8 m_visible[MAX_PLAYERS]; /* visibility per player */
+ std::unique_ptr<bitmap_argb32> m_bitmap[MAX_PLAYERS]; /* bitmap per player */
+ render_texture * m_texture[MAX_PLAYERS]; /* texture per player */
+ screen_device * m_screen[MAX_PLAYERS]; /* the screen on which this player's crosshair is drawn */
+ float m_x[MAX_PLAYERS]; /* current X position */
+ float m_y[MAX_PLAYERS]; /* current Y position */
+ float m_last_x[MAX_PLAYERS]; /* last X position */
+ float m_last_y[MAX_PLAYERS]; /* last Y position */
+ UINT8 m_fade; /* color fading factor */
+ UINT8 m_animation_counter; /* animation frame index */
+ UINT16 m_auto_time; /* time in seconds to turn invisible */
+ UINT16 m_time[MAX_PLAYERS]; /* time since last movement */
+ char m_name[MAX_PLAYERS][CROSSHAIR_PIC_NAME_LENGTH + 1]; /* name of crosshair png file */
+};
#endif /* __CRSSHAIR_H__ */
diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp
index 328079095c9..4558413b2c3 100644
--- a/src/emu/debug/debugcmd.cpp
+++ b/src/emu/debug/debugcmd.cpp
@@ -10,6 +10,7 @@
#include "emu.h"
#include "emuopts.h"
+#include "debugger.h"
#include "debugcmd.h"
#include "debugcon.h"
#include "debugcpu.h"
diff --git a/src/emu/debug/debugcon.cpp b/src/emu/debug/debugcon.cpp
index b35d4afc690..7bf80dd6118 100644
--- a/src/emu/debug/debugcon.cpp
+++ b/src/emu/debug/debugcon.cpp
@@ -385,7 +385,7 @@ CMDERR debug_console_execute_command(running_machine &machine, const char *comma
if (echo)
{
machine.debug_view().update_all();
- debugger_refresh_display(machine);
+ machine.debugger().refresh_display();
}
return result;
}
@@ -414,7 +414,7 @@ void debug_console_register_command(running_machine &machine, const char *comman
assert_always(machine.phase() == MACHINE_PHASE_INIT, "Can only call debug_console_register_command() at init time!");
assert_always((machine.debug_flags & DEBUG_FLAG_ENABLED) != 0, "Cannot call debug_console_register_command() when debugger is not running");
- cmd = auto_alloc_clear(machine, debug_command);
+ cmd = auto_alloc_clear(machine, <debug_command>());
/* fill in the command */
strcpy(cmd->command, command);
diff --git a/src/emu/debug/debugcon.h b/src/emu/debug/debugcon.h
index 6861530cdd5..7c688332ed4 100644
--- a/src/emu/debug/debugcon.h
+++ b/src/emu/debug/debugcon.h
@@ -18,8 +18,8 @@
CONSTANTS
***************************************************************************/
-#define MAX_COMMAND_LENGTH 512
-#define MAX_COMMAND_PARAMS 16
+#define MAX_COMMAND_LENGTH 4096
+#define MAX_COMMAND_PARAMS 128
/* flags for command parsing */
#define CMDFLAG_NONE (0x0000)
diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp
index 3a95a823594..82c175251fe 100644
--- a/src/emu/debug/debugcpu.cpp
+++ b/src/emu/debug/debugcpu.cpp
@@ -116,7 +116,7 @@ void debug_cpu_init(running_machine &machine)
int regnum;
/* allocate and reset globals */
- machine.debugcpu_data = global = auto_alloc_clear(machine, debugcpu_private);
+ machine.debugcpu_data = global = auto_alloc_clear(machine, <debugcpu_private>());
global->execution_state = EXECUTION_STATE_STOPPED;
global->bpindex = 1;
global->wpindex = 1;
@@ -1690,8 +1690,6 @@ device_debug::device_debug(device_t &device)
device_debug::~device_debug()
{
- auto_free(m_device.machine(), m_trace);
-
// free breakpoints and watchpoints
breakpoint_clear_all();
watchpoint_clear_all();
@@ -1756,7 +1754,7 @@ void device_debug::start_hook(const attotime &endtime)
}
}
// check for debug keypresses
- if (ui_input_pressed(m_device.machine(), IPT_UI_DEBUG_BREAK))
+ if (m_device.machine().ui_input().pressed(IPT_UI_DEBUG_BREAK))
global->visiblecpu->debug()->halt_on_next_instruction("User-initiated break\n");
}
@@ -1873,7 +1871,7 @@ void device_debug::instruction_hook(offs_t curpc)
{
machine.debug_view().update_all();
machine.debug_view().flush_osd_updates();
- debugger_refresh_display(machine);
+ machine.debugger().refresh_display();
}
}
}
@@ -1921,7 +1919,7 @@ void device_debug::instruction_hook(offs_t curpc)
// update all views
machine.debug_view().update_all();
- debugger_refresh_display(m_device.machine());
+ machine.debugger().refresh_display();
// wait for the debugger; during this time, disable sound output
m_device.machine().sound().debugger_mute(true);
@@ -1940,7 +1938,7 @@ void device_debug::instruction_hook(offs_t curpc)
if (global->memory_modified)
{
machine.debug_view().update_all(DVT_DISASSEMBLY);
- debugger_refresh_display(m_device.machine());
+ machine.debugger().refresh_display();
}
// check for commands in the source file
@@ -2759,12 +2757,11 @@ UINT32 device_debug::compute_opcode_crc32(offs_t pc) const
void device_debug::trace(FILE *file, bool trace_over, const char *action)
{
// delete any existing tracers
- auto_free(m_device.machine(), m_trace);
m_trace = nullptr;
// if we have a new file, make a new tracer
if (file != nullptr)
- m_trace = auto_alloc(m_device.machine(), tracer(*this, *file, trace_over, action));
+ m_trace = std::make_unique<tracer>(*this, *file, trace_over, action);
}
diff --git a/src/emu/debug/debugcpu.h b/src/emu/debug/debugcpu.h
index 33c17253354..754411cb3f0 100644
--- a/src/emu/debug/debugcpu.h
+++ b/src/emu/debug/debugcpu.h
@@ -360,7 +360,7 @@ private:
// (0 = not tracing over,
// ~0 = not currently tracing over)
};
- tracer * m_trace; // tracer state
+ std::unique_ptr<tracer> m_trace; // tracer state
// hotspots
struct hotspot_entry
diff --git a/src/emu/debug/dvbpoints.cpp b/src/emu/debug/dvbpoints.cpp
index 919f352842f..efb604e385d 100644
--- a/src/emu/debug/dvbpoints.cpp
+++ b/src/emu/debug/dvbpoints.cpp
@@ -9,6 +9,7 @@
***************************************************************************/
#include "emu.h"
+#include "debugger.h"
#include "dvbpoints.h"
diff --git a/src/emu/debug/dvbpoints.h b/src/emu/debug/dvbpoints.h
index 1867dcf2b6f..cd9d0b8c22a 100644
--- a/src/emu/debug/dvbpoints.h
+++ b/src/emu/debug/dvbpoints.h
@@ -34,10 +34,6 @@ class debug_view_breakpoints : public debug_view
debug_view_breakpoints(running_machine &machine, debug_view_osd_update_func osdupdate, void *osdprivate);
virtual ~debug_view_breakpoints();
-public:
- // getters
- // setters
-
protected:
// view overrides
virtual void view_update() override;
diff --git a/src/emu/debug/dvdisasm.cpp b/src/emu/debug/dvdisasm.cpp
index e873b0be8bb..e8becd1954d 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
diff --git a/src/emu/debug/dvmemory.cpp b/src/emu/debug/dvmemory.cpp
index 2327d7284cc..b792d002c27 100644
--- a/src/emu/debug/dvmemory.cpp
+++ b/src/emu/debug/dvmemory.cpp
@@ -315,7 +315,7 @@ void debug_view_memory::view_update()
UINT64 chunkdata = 0;
floatx80 chunkdata80 = { 0, 0 };
bool ismapped;
-
+
if (m_data_format != 11)
ismapped = read(m_bytes_per_chunk, addrbyte + chunknum * m_bytes_per_chunk, chunkdata);
else
diff --git a/src/emu/debug/dvmemory.h b/src/emu/debug/dvmemory.h
index afe597b8477..234bd0ed19b 100644
--- a/src/emu/debug/dvmemory.h
+++ b/src/emu/debug/dvmemory.h
@@ -103,11 +103,11 @@ private:
debug_view_expression m_expression; // expression describing the start address
UINT32 m_chunks_per_row; // number of chunks displayed per line
UINT8 m_bytes_per_chunk; // bytes per chunk
- int m_data_format; // 1-8 current values 9 32bit floating point
+ int m_data_format; // 1-8 current values 9 32bit floating point
bool m_reverse_view; // reverse-endian view?
bool m_ascii_view; // display ASCII characters?
bool m_no_translation; // don't run addresses through the cpu translation hook
- bool m_edit_enabled; // can modify contents ?
+ bool m_edit_enabled; // can modify contents ?
offs_t m_maxaddr; // (derived) maximum address to display
UINT32 m_bytes_per_row; // (derived) number of bytes displayed per line
UINT32 m_byte_offset; // (derived) offset of starting visible byte
diff --git a/src/emu/debug/dvstate.cpp b/src/emu/debug/dvstate.cpp
index dd3f3d33f9c..578b423725d 100644
--- a/src/emu/debug/dvstate.cpp
+++ b/src/emu/debug/dvstate.cpp
@@ -276,7 +276,7 @@ void debug_view_state::view_update()
if (m_last_update != total_cycles)
curitem->m_lastval = curitem->m_currval;
curitem->m_currval = source.m_stateintf->state_int(curitem->m_index);
- source.m_stateintf->state_string(curitem->m_index, valstr);
+ valstr = source.m_stateintf->state_string(curitem->m_index);
}
// see if we changed
diff --git a/src/emu/debugger.cpp b/src/emu/debugger.cpp
index b21e4ca779b..849b16d068d 100644
--- a/src/emu/debugger.cpp
+++ b/src/emu/debugger.cpp
@@ -16,108 +16,68 @@
#include "debug/debugvw.h"
#include <ctype.h>
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-struct machine_entry
-{
- machine_entry * next;
- running_machine * machine;
-};
-
-
-
/***************************************************************************
GLOBAL VARIABLES
***************************************************************************/
-static machine_entry *machine_list;
-static int atexit_registered;
+static running_machine *g_machine = nullptr;
+static int g_atexit_registered = FALSE;
+//**************************************************************************
+// DEBUGGER MANAGER
+//**************************************************************************
+//-------------------------------------------------
+// debugger_manager - constructor
+//-------------------------------------------------
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
+debugger_manager::debugger_manager(running_machine &machine)
+ : m_machine(machine)
+{
+ /* initialize the submodules */
+ debug_cpu_init(machine);
+ debug_command_init(machine);
-static void debugger_exit(running_machine &machine);
+ g_machine = &machine;
+ /* register an atexit handler if we haven't yet */
+ if (!g_atexit_registered)
+ atexit(debugger_flush_all_traces_on_abnormal_exit);
+ g_atexit_registered = TRUE;
+ /* listen in on the errorlog */
+ machine.add_logerror_callback(debug_errorlog_write_line);
-/***************************************************************************
- CENTRAL INITIALIZATION POINT
-***************************************************************************/
+ /* initialize osd debugger features */
+ machine.osd().init_debugger();
+}
/*-------------------------------------------------
- debugger_init - start up all subsections
+// debugger_manager - destructor
-------------------------------------------------*/
-void debugger_init(running_machine &machine)
+debugger_manager::~debugger_manager()
+{
+ g_machine = nullptr;
+}
+
+void debugger_manager::initialize()
{
/* only if debugging is enabled */
- if (machine.debug_flags & DEBUG_FLAG_ENABLED)
+ if (machine().debug_flags & DEBUG_FLAG_ENABLED)
{
- machine_entry *entry;
-
- /* initialize the submodules */
- machine.m_debug_view.reset(global_alloc(debug_view_manager(machine)));
- debug_cpu_init(machine);
- debug_command_init(machine);
- debug_console_init(machine);
-
- /* allocate a new entry for our global list */
- machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(debugger_exit), &machine));
- entry = global_alloc(machine_entry);
- entry->next = machine_list;
- entry->machine = &machine;
- machine_list = entry;
-
- /* register an atexit handler if we haven't yet */
- if (!atexit_registered)
- atexit(debugger_flush_all_traces_on_abnormal_exit);
- atexit_registered = TRUE;
-
- /* listen in on the errorlog */
- machine.add_logerror_callback(debug_errorlog_write_line);
-
- /* initialize osd debugger features */
- machine.osd().init_debugger();
+ debug_console_init(machine());
}
}
-
/*-------------------------------------------------
- debugger_refresh_display - redraw the current
+ refresh_display - redraw the current
video display
-------------------------------------------------*/
-void debugger_refresh_display(running_machine &machine)
-{
- machine.video().frame_update(true);
-}
-
-
-/*-------------------------------------------------
- debugger_exit - remove ourself from the
- global list of active machines for cleanup
--------------------------------------------------*/
-
-static void debugger_exit(running_machine &machine)
+void debugger_manager::refresh_display()
{
- machine_entry **entryptr;
-
- /* remove this machine from the list; it came down cleanly */
- for (entryptr = &machine_list; *entryptr != nullptr; entryptr = &(*entryptr)->next)
- if ((*entryptr)->machine == &machine)
- {
- machine_entry *deleteme = *entryptr;
- *entryptr = deleteme->next;
- global_free(deleteme);
- break;
- }
+ machine().video().frame_update(true);
}
@@ -129,12 +89,8 @@ static void debugger_exit(running_machine &machine)
void debugger_flush_all_traces_on_abnormal_exit(void)
{
- /* clear out the machine list and flush traces on each one */
- while (machine_list != nullptr)
+ if(g_machine!=nullptr)
{
- machine_entry *deleteme = machine_list;
- debug_cpu_flush_traces(*deleteme->machine);
- machine_list = deleteme->next;
- global_free(deleteme);
+ debug_cpu_flush_traces(*g_machine);
}
}
diff --git a/src/emu/debugger.h b/src/emu/debugger.h
index bde3ad7572b..4efcc5c3de6 100644
--- a/src/emu/debugger.h
+++ b/src/emu/debugger.h
@@ -15,17 +15,31 @@
#include "debug/debugcpu.h"
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
+// ======================> debugger_manager
+
+class debugger_manager
+{
+public:
+ // construction/destruction
+ debugger_manager(running_machine &machine);
+ ~debugger_manager();
-/* ----- core debugger functions ----- */
+ void initialize();
-/* initialize the debugger */
-void debugger_init(running_machine &machine);
+ /* redraw the current video display */
+ void refresh_display();
-/* redraw the current video display */
-void debugger_refresh_display(running_machine &machine);
+ // getters
+ running_machine &machine() const { return m_machine; }
+private:
+ // internal state
+ running_machine & m_machine; // reference to our machine
+};
+
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
/* OSD can call this to safely flush all traces in the event of a crash */
void debugger_flush_all_traces_on_abnormal_exit(void);
diff --git a/src/emu/devdelegate.h b/src/emu/devdelegate.h
index 531bea5bd44..b688cd31261 100644
--- a/src/emu/devdelegate.h
+++ b/src/emu/devdelegate.h
@@ -74,7 +74,10 @@ public:
device_delegate(const thistype &src, device_t &search_root) : basetype(src), device_delegate_helper(src.m_device_name) { bind_relative_to(search_root); }
// perform the binding
- void bind_relative_to(device_t &search_root) { if (!basetype::isnull()) basetype::late_bind(bound_object(search_root)); }
+ void bind_relative_to(device_t &search_root) { assert(&search_root != nullptr); if (!basetype::isnull()) basetype::late_bind(bound_object(search_root)); }
+
+ // getter (for validation purposes)
+ const char *device_name() const { return m_device_name; }
};
diff --git a/src/emu/devfind.h b/src/emu/devfind.h
index d3bc00711a4..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; }
@@ -270,7 +271,7 @@ public:
{
for (int index = 0; index < _Count; index++)
{
- strformat(m_tag[index], "%s.%d", basetag, index);
+ strprintf(m_tag[index], "%s.%d", basetag, index);
m_array[index] = std::make_unique<ioport_finder_type>(base, m_tag[index].c_str());
}
}
@@ -441,7 +442,7 @@ public:
{
for (int index = 0; index < _Count; index++)
{
- strformat(m_tag[index],"%s.%d", basetag, index);
+ strprintf(m_tag[index],"%s.%d", basetag, index);
m_array[index] = std::make_unique<shared_ptr_type>(base, m_tag[index].c_str(), width);
}
}
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 fec1654c72d..2b807d58d94 100644
--- a/src/emu/device.h
+++ b/src/emu/device.h
@@ -79,7 +79,7 @@ typedef device_t *(*device_type)(const machine_config &mconfig, const char *tag,
template<class _DeviceClass>
device_t *device_creator(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
{
- return global_alloc(_DeviceClass(mconfig, tag, owner, clock));
+ return global_alloc_clear<_DeviceClass>(mconfig, tag, owner, clock);
}
@@ -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/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 3dfe042f3f1..ec13147e966 100644
--- a/src/emu/digfx.h
+++ b/src/emu/digfx.h
@@ -199,14 +199,14 @@ 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
void decode_gfx(const gfx_decode_entry *gfxdecodeinfo);
void decode_gfx() { decode_gfx(m_gfxdecodeinfo); }
- void set_gfx(int index, gfx_element *element) { assert(index < MAX_GFX_ELEMENTS); m_gfx[index].reset(element); }
+ void set_gfx(int index, std::unique_ptr<gfx_element> &&element) { assert(index < MAX_GFX_ELEMENTS); m_gfx[index] = std::move(element); }
protected:
// interface-level overrides
@@ -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 c0104da34e2..392da316dbb 100644
--- a/src/emu/diimage.cpp
+++ b/src/emu/diimage.cpp
@@ -17,6 +17,7 @@
#include "ui/imgcntrl.h"
#include "softlist.h"
#include "image.h"
+#include "formats/ioprocs.h"
//**************************************************************************
// DEVICE CONFIG IMAGE INTERFACE
@@ -378,7 +379,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;
}
@@ -391,7 +393,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;
}
@@ -508,14 +512,39 @@ UINT32 device_image_interface::crc()
-------------------------------------------------*/
void device_image_interface::battery_load(void *buffer, int length, int fill)
{
+ assert_always(buffer && (length > 0), "Must specify sensical buffer/length");
+
+ file_error filerr;
+ int bytes_read = 0;
std::string fname = std::string(device().machine().system().name).append(PATH_SEPARATOR).append(m_basename_noext.c_str()).append(".nv");
- image_battery_load_by_name(device().machine().options(), fname.c_str(), buffer, length, fill);
+
+ /* try to open the battery file and read it in, if possible */
+ emu_file file(device().machine().options().nvram_directory(), OPEN_FLAG_READ);
+ filerr = file.open(fname.c_str());
+ if (filerr == FILERR_NONE)
+ bytes_read = file.read(buffer, length);
+
+ /* fill remaining bytes (if necessary) */
+ memset(((char *)buffer) + bytes_read, fill, length - bytes_read);
}
void device_image_interface::battery_load(void *buffer, int length, void *def_buffer)
{
+ assert_always(buffer && (length > 0), "Must specify sensical buffer/length");
+
+ file_error filerr;
+ int bytes_read = 0;
std::string fname = std::string(device().machine().system().name).append(PATH_SEPARATOR).append(m_basename_noext.c_str()).append(".nv");
- image_battery_load_by_name(device().machine().options(), fname.c_str(), buffer, length, def_buffer);
+
+ /* try to open the battery file and read it in, if possible */
+ emu_file file(device().machine().options().nvram_directory(), OPEN_FLAG_READ);
+ filerr = file.open(fname.c_str());
+ if (filerr == FILERR_NONE)
+ bytes_read = file.read(buffer, length);
+
+ /* if no file was present, copy the default battery */
+ if (bytes_read == 0 && def_buffer)
+ memcpy((char *)buffer, (char *)def_buffer, length);
}
/*-------------------------------------------------
@@ -526,9 +555,14 @@ void device_image_interface::battery_load(void *buffer, int length, void *def_bu
-------------------------------------------------*/
void device_image_interface::battery_save(const void *buffer, int length)
{
+ assert_always(buffer && (length > 0), "Must specify sensical buffer/length");
std::string fname = std::string(device().machine().system().name).append(PATH_SEPARATOR).append(m_basename_noext.c_str()).append(".nv");
- image_battery_save_by_name(device().machine().options(), fname.c_str(), buffer, length);
+ /* try to open the battery file and write it out, if possible */
+ emu_file file(device().machine().options().nvram_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
+ file_error filerr = file.open(fname.c_str());
+ if (filerr == FILERR_NONE)
+ file.write(buffer, length);
}
//-------------------------------------------------
@@ -711,9 +745,8 @@ void device_image_interface::determine_open_plan(int is_create, UINT32 *open_pla
static void dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes)
{
- std::string tempstr;
- osd_printf_error(" EXPECTED: %s\n", hashes.macro_string(tempstr));
- osd_printf_error(" FOUND: %s\n", acthashes.macro_string(tempstr));
+ osd_printf_error(" EXPECTED: %s\n", hashes.macro_string().c_str());
+ osd_printf_error(" FOUND: %s\n", acthashes.macro_string().c_str());
}
/*-------------------------------------------------
@@ -735,8 +768,7 @@ static int verify_length_and_hash(emu_file *file, const char *name, UINT32 exple
}
/* If there is no good dump known, write it */
- std::string tempstr;
- hash_collection &acthashes = file->hashes(hashes.hash_types(tempstr));
+ hash_collection &acthashes = file->hashes(hashes.hash_types().c_str());
if (hashes.flag(hash_collection::FLAG_NO_DUMP))
{
osd_printf_error("%s NO GOOD DUMP KNOWN\n", name);
@@ -832,18 +864,18 @@ bool device_image_interface::load_software(software_list_device &swlist, const c
// - if we are using lists, we have: list/clonename, list/parentname, clonename, parentname
// try to load from list/setname
if ((m_mame_file == nullptr) && (tag2.c_str() != nullptr))
- filerr = common_process_file(device().machine().options(), tag2.c_str(), has_crc, crc, romp, &m_mame_file);
+ m_mame_file = common_process_file(device().machine().options(), tag2.c_str(), has_crc, crc, romp, filerr);
// try to load from list/parentname
if ((m_mame_file == nullptr) && (tag3.c_str() != nullptr))
- filerr = common_process_file(device().machine().options(), tag3.c_str(), has_crc, crc, romp, &m_mame_file);
+ m_mame_file = common_process_file(device().machine().options(), tag3.c_str(), has_crc, crc, romp, filerr);
// try to load from setname
if ((m_mame_file == nullptr) && (tag4.c_str() != nullptr))
- filerr = common_process_file(device().machine().options(), tag4.c_str(), has_crc, crc, romp, &m_mame_file);
+ m_mame_file = common_process_file(device().machine().options(), tag4.c_str(), has_crc, crc, romp, filerr);
// try to load from parentname
if ((m_mame_file == nullptr) && (tag5.c_str() != nullptr))
- filerr = common_process_file(device().machine().options(), tag5.c_str(), has_crc, crc, romp, &m_mame_file);
+ m_mame_file = common_process_file(device().machine().options(), tag5.c_str(), has_crc, crc, romp, filerr);
- warningcount += verify_length_and_hash(m_mame_file,ROM_GETNAME(romp),ROM_GETLENGTH(romp),hash_collection(ROM_GETHASHDATA(romp)));
+ warningcount += verify_length_and_hash(m_mame_file.get(),ROM_GETNAME(romp),ROM_GETLENGTH(romp),hash_collection(ROM_GETHASHDATA(romp)));
if (filerr == FILERR_NONE)
{
@@ -1090,7 +1122,6 @@ void device_image_interface::clear()
{
if (m_mame_file)
{
- global_free(m_mame_file);
m_mame_file = nullptr;
m_file = nullptr;
} else {
@@ -1209,7 +1240,7 @@ void device_image_interface::software_name_split(const char *swlist_swname, std:
}
-software_part *device_image_interface::find_software_item(const char *path, bool restrict_to_interface)
+software_part *device_image_interface::find_software_item(const char *path, bool restrict_to_interface) const
{
// split full software name into software list name and short software name
std::string swlist_name, swinfo_name, swpart_name;
@@ -1307,7 +1338,7 @@ bool device_image_interface::load_software_part(const char *path, software_part
{
const char *option = device().mconfig().options().value(req_image->brief_instance_name());
// mount only if not already mounted
- if (strlen(option) == 0 && !req_image->filename())
+ if (*option == '\0' && !req_image->filename())
{
req_image->set_init_phase();
req_image->load(requirement);
@@ -1325,11 +1356,11 @@ bool device_image_interface::load_software_part(const char *path, software_part
// software_get_default_slot
//-------------------------------------------------
-void device_image_interface::software_get_default_slot(std::string &result, const char *default_card_slot)
+std::string device_image_interface::software_get_default_slot(const char *default_card_slot) const
{
const char *path = device().mconfig().options().value(instance_name());
- result.clear();
- if (strlen(path) > 0)
+ std::string result;
+ if (*path != '\0')
{
result.assign(default_card_slot);
software_part *swpart = find_software_item(path, true);
@@ -1340,6 +1371,7 @@ void device_image_interface::software_get_default_slot(std::string &result, cons
result.assign(slot);
}
}
+ return result;
}
/*-------------------------------------------------
@@ -1349,5 +1381,42 @@ void device_image_interface::software_get_default_slot(std::string &result, cons
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 auto_alloc_clear(machine, <ui_menu_control_device_image>(machine, container, this));
+}
+
+/* ----------------------------------------------------------------------- */
+
+static int image_fseek_thunk(void *file, INT64 offset, int whence)
+{
+ device_image_interface *image = (device_image_interface *) file;
+ return image->fseek(offset, whence);
+}
+
+static size_t image_fread_thunk(void *file, void *buffer, size_t length)
+{
+ device_image_interface *image = (device_image_interface *) file;
+ return image->fread(buffer, length);
+}
+
+static size_t image_fwrite_thunk(void *file, const void *buffer, size_t length)
+{
+ device_image_interface *image = (device_image_interface *) file;
+ return image->fwrite(buffer, length);
}
+
+static UINT64 image_fsize_thunk(void *file)
+{
+ device_image_interface *image = (device_image_interface *) file;
+ return image->length();
+}
+
+/* ----------------------------------------------------------------------- */
+
+struct io_procs image_ioprocs =
+{
+ nullptr,
+ image_fseek_thunk,
+ image_fread_thunk,
+ image_fwrite_thunk,
+ image_fsize_thunk
+};
diff --git a/src/emu/diimage.h b/src/emu/diimage.h
index e699194fd6c..b1a8a16ad70 100644
--- a/src/emu/diimage.h
+++ b/src/emu/diimage.h
@@ -21,6 +21,8 @@
// TYPE DEFINITIONS
//**************************************************************************
+extern struct io_procs image_ioprocs;
+
class software_list;
enum iodevice_t
@@ -257,9 +259,9 @@ protected:
void image_checkhash();
void update_names(const device_type device_type = nullptr, const char *inst = nullptr, const char *brief = nullptr);
- software_part *find_software_item(const char *path, bool restrict_to_interface);
+ software_part *find_software_item(const char *path, bool restrict_to_interface) const;
bool load_software_part(const char *path, software_part *&swpart);
- void software_get_default_slot(std::string &result, const char *default_card_slot);
+ std::string software_get_default_slot(const char *default_card_slot) const;
// derived class overrides
@@ -273,7 +275,7 @@ protected:
/* variables that are only non-zero when an image is mounted */
core_file *m_file;
- emu_file *m_mame_file;
+ std::unique_ptr<emu_file> m_mame_file;
std::string m_image_name;
std::string m_basename;
std::string m_basename_noext;
diff --git a/src/emu/dimemory.cpp b/src/emu/dimemory.cpp
index 0650ebfab70..b245d51a0b9 100644
--- a/src/emu/dimemory.cpp
+++ b/src/emu/dimemory.cpp
@@ -13,14 +13,6 @@
//**************************************************************************
-// PARAMETERS
-//**************************************************************************
-
-#define DETECT_OVERLAPPING_MEMORY (0)
-
-
-
-//**************************************************************************
// CONSTANTS
//**************************************************************************
@@ -238,127 +230,16 @@ bool device_memory_interface::memory_readop(offs_t offset, int size, UINT64 &val
void device_memory_interface::interface_validity_check(validity_checker &valid) const
{
- bool detected_overlap = DETECT_OVERLAPPING_MEMORY ? false : true;
-
// loop over all address spaces
for (address_spacenum spacenum = AS_0; spacenum < ADDRESS_SPACES; ++spacenum)
{
- const address_space_config *spaceconfig = space_config(spacenum);
- if (spaceconfig != nullptr)
+ if (space_config(spacenum) != nullptr)
{
- int datawidth = spaceconfig->m_databus_width;
- int alignunit = datawidth / 8;
-
- // construct the maps
- auto map = global_alloc(::address_map(const_cast<device_t &>(device()), spacenum));
-
- // if this is an empty map, just skip it
- if (map->m_entrylist.first() == nullptr)
- {
- global_free(map);
- continue;
- }
-
- // validate the global map parameters
- if (map->m_spacenum != spacenum)
- osd_printf_error("Space %d has address space %d handlers!\n", spacenum, map->m_spacenum);
- if (map->m_databits != datawidth)
- osd_printf_error("Wrong memory handlers provided for %s space! (width = %d, memory = %08x)\n", spaceconfig->m_name, datawidth, map->m_databits);
-
- // loop over entries and look for errors
- for (address_map_entry *entry = map->m_entrylist.first(); entry != nullptr; entry = entry->next())
- {
- UINT32 bytestart = spaceconfig->addr2byte(entry->m_addrstart);
- UINT32 byteend = spaceconfig->addr2byte_end(entry->m_addrend);
-
- // look for overlapping entries
- if (!detected_overlap)
- {
- address_map_entry *scan;
- for (scan = map->m_entrylist.first(); scan != entry; scan = scan->next())
- if (entry->m_addrstart <= scan->m_addrend && entry->m_addrend >= scan->m_addrstart &&
- ((entry->m_read.m_type != AMH_NONE && scan->m_read.m_type != AMH_NONE) ||
- (entry->m_write.m_type != AMH_NONE && scan->m_write.m_type != AMH_NONE)))
- {
- osd_printf_warning("%s space has overlapping memory (%X-%X,%d,%d) vs (%X-%X,%d,%d)\n", spaceconfig->m_name, entry->m_addrstart, entry->m_addrend, entry->m_read.m_type, entry->m_write.m_type, scan->m_addrstart, scan->m_addrend, scan->m_read.m_type, scan->m_write.m_type);
- detected_overlap = true;
- break;
- }
- }
-
- // look for inverted start/end pairs
- if (byteend < bytestart)
- osd_printf_error("Wrong %s memory read handler start = %08x > end = %08x\n", spaceconfig->m_name, entry->m_addrstart, entry->m_addrend);
-
- // look for misaligned entries
- if ((bytestart & (alignunit - 1)) != 0 || (byteend & (alignunit - 1)) != (alignunit - 1))
- osd_printf_error("Wrong %s memory read handler start = %08x, end = %08x ALIGN = %d\n", spaceconfig->m_name, entry->m_addrstart, entry->m_addrend, alignunit);
-
- // if this is a program space, auto-assign implicit ROM entries
- if (entry->m_read.m_type == AMH_ROM && entry->m_region == nullptr)
- {
- entry->m_region = device().tag();
- entry->m_rgnoffs = entry->m_addrstart;
- }
-
- // if this entry references a memory region, validate it
- if (entry->m_region != nullptr && entry->m_share == nullptr)
- {
- // make sure we can resolve the full path to the region
- bool found = false;
- std::string entry_region = entry->m_devbase.subtag(entry->m_region);
-
- // look for the region
- device_iterator deviter(device().mconfig().root_device());
- for (device_t *device = deviter.first(); device != nullptr; device = deviter.next())
- for (const rom_entry *romp = rom_first_region(*device); romp != nullptr && !found; romp = rom_next_region(romp))
- {
- if (rom_region_name(*device, romp) == entry_region)
- {
- // verify the address range is within the region's bounds
- offs_t length = ROMREGION_GETLENGTH(romp);
- if (entry->m_rgnoffs + (byteend - bytestart + 1) > length)
- osd_printf_error("%s space memory map entry %X-%X extends beyond region '%s' size (%X)\n", spaceconfig->m_name, entry->m_addrstart, entry->m_addrend, entry->m_region, length);
- found = true;
- }
- }
-
- // error if not found
- if (!found)
- osd_printf_error("%s space memory map entry %X-%X references non-existant region '%s'\n", spaceconfig->m_name, entry->m_addrstart, entry->m_addrend, entry->m_region);
- }
-
- // make sure all devices exist
- // FIXME: This doesn't work! AMH_DEVICE_DELEGATE entries don't even set m_tag, the device tag is inside the proto-delegate
- if (entry->m_read.m_type == AMH_DEVICE_DELEGATE && entry->m_read.m_tag != nullptr)
- {
- std::string temp(entry->m_read.m_tag);
- if (device().siblingdevice(temp.c_str()) == nullptr)
- osd_printf_error("%s space memory map entry references nonexistant device '%s'\n", spaceconfig->m_name, entry->m_read.m_tag);
- }
- if (entry->m_write.m_type == AMH_DEVICE_DELEGATE && entry->m_write.m_tag != nullptr)
- {
- std::string temp(entry->m_write.m_tag);
- if (device().siblingdevice(temp.c_str()) == nullptr)
- osd_printf_error("%s space memory map entry references nonexistant device '%s'\n", spaceconfig->m_name, entry->m_write.m_tag);
- }
-
- // make sure ports exist
-// if ((entry->m_read.m_type == AMH_PORT && entry->m_read.m_tag != NULL && portlist.find(entry->m_read.m_tag) == NULL) ||
-// (entry->m_write.m_type == AMH_PORT && entry->m_write.m_tag != NULL && portlist.find(entry->m_write.m_tag) == NULL))
-// osd_printf_error("%s space memory map entry references nonexistant port tag '%s'\n", spaceconfig->m_name, entry->m_read.m_tag);
-
- // validate bank and share tags
- if (entry->m_read.m_type == AMH_BANK)
- valid.validate_tag(entry->m_read.m_tag);
- if (entry->m_write.m_type == AMH_BANK)
- valid.validate_tag(entry->m_write.m_tag);
- if (entry->m_share != nullptr)
- valid.validate_tag(entry->m_share);
- }
-
- // release the address map
- global_free(map);
+ // construct the map
+ ::address_map addrmap(const_cast<device_t &>(device()), spacenum);
+
+ // let the map check itself
+ addrmap.map_validity_check(valid, device(), spacenum);
}
}
}
diff --git a/src/emu/dioutput.cpp b/src/emu/dioutput.cpp
index 32e1338d091..176b5c8efc5 100644
--- a/src/emu/dioutput.cpp
+++ b/src/emu/dioutput.cpp
@@ -38,7 +38,7 @@ device_output_interface::~device_output_interface()
void device_output_interface::set_output_value(int value) const
{
if (m_output_name)
- output_set_value(m_output_name, value);
+ device().machine().output().set_value(m_output_name, value);
else
fatalerror("Output name not set!");
}
@@ -46,23 +46,23 @@ void device_output_interface::set_output_value(int value) const
void device_output_interface::set_led_value(int value) const
{
if (m_output_name)
- output_set_value(m_output_name, value);
+ device().machine().output().set_value(m_output_name, value);
else
- output_set_led_value(m_output_index, value);
+ device().machine().output().set_led_value(m_output_index, value);
}
void device_output_interface::set_lamp_value(int value) const
{
if (m_output_name)
- output_set_value(m_output_name, value);
+ device().machine().output().set_value(m_output_name, value);
else
- output_set_lamp_value(m_output_index, value);
+ device().machine().output().set_lamp_value(m_output_index, value);
}
void device_output_interface::set_digit_value(int value) const
{
if (m_output_name)
- output_set_value(m_output_name, value);
+ device().machine().output().set_value(m_output_name, value);
else
- output_set_digit_value(m_output_index, value);
+ device().machine().output().set_digit_value(m_output_index, value);
}
diff --git a/src/emu/dislot.cpp b/src/emu/dislot.cpp
index 697eb673a9f..051dc33bdb2 100644
--- a/src/emu/dislot.cpp
+++ b/src/emu/dislot.cpp
@@ -63,17 +63,15 @@ device_slot_option *device_slot_interface::static_option(device_t &device, const
device_t* device_slot_interface::get_card_device()
{
- const char *subtag;
+ std::string subtag;
device_t *dev = nullptr;
- std::string temp;
- if (!device().mconfig().options().exists(device().tag()+1)) {
- subtag = m_default_option;
- } else {
- subtag = device().mconfig().options().main_value(temp,device().tag()+1);
- }
- if (subtag && *subtag != 0) {
+ if (device().mconfig().options().exists(device().tag()+1))
+ subtag = device().mconfig().options().main_value(device().tag()+1);
+ else if (m_default_option != nullptr)
+ subtag.assign(m_default_option);
+ if (!subtag.empty()) {
device_slot_card_interface *intf = nullptr;
- dev = device().subdevice(subtag);
+ dev = device().subdevice(subtag.c_str());
if (dev!=nullptr && !dev->interface(intf))
throw emu_fatalerror("get_card_device called for device '%s' with no slot card interface", dev->tag());
}
diff --git a/src/emu/dislot.h b/src/emu/dislot.h
index 3c89b1350d3..573d8fa2221 100644
--- a/src/emu/dislot.h
+++ b/src/emu/dislot.h
@@ -116,7 +116,7 @@ public:
const char *default_option() const { return m_default_option; }
device_slot_option *first_option() const { return m_options.first(); }
device_slot_option *option(const char *name) const { if (name) return m_options.find(name); return nullptr; }
- virtual void get_default_card_software(std::string &result) { result.clear(); }
+ virtual std::string get_default_card_software() { return std::string(); }
device_t *get_card_device();
private:
diff --git a/src/emu/distate.cpp b/src/emu/distate.cpp
index 77ed3307946..9986b261e93 100644
--- a/src/emu/distate.cpp
+++ b/src/emu/distate.cpp
@@ -113,8 +113,7 @@ device_state_entry &device_state_entry::formatstr(const char *_format)
// set the DSF_CUSTOM_STRING flag by formatting with a NULL string
m_flags &= ~DSF_CUSTOM_STRING;
- std::string dummy;
- format(dummy, nullptr);
+ format(nullptr);
return *this;
}
@@ -164,8 +163,9 @@ UINT64 device_state_entry::value() const
// pieces of indexed state as a string
//-------------------------------------------------
-std::string &device_state_entry::format(std::string &dest, const char *string, bool maxout) const
+std::string device_state_entry::format(const char *string, bool maxout) const
{
+ std::string dest;
UINT64 result = value();
// parse the format
@@ -436,12 +436,12 @@ UINT64 device_state_interface::state_int(int index)
// pieces of indexed state as a string
//-------------------------------------------------
-std::string &device_state_interface::state_string(int index, std::string &dest)
+std::string device_state_interface::state_string(int index) const
{
// NULL or out-of-range entry returns bogus string
const device_state_entry *entry = state_find_entry(index);
if (entry == nullptr)
- return dest.assign("???");
+ return std::string("???");
// get the custom string if needed
std::string custom;
@@ -449,7 +449,7 @@ std::string &device_state_interface::state_string(int index, std::string &dest)
state_string_export(*entry, custom);
// ask the entry to format itself
- return entry->format(dest, custom.c_str());
+ return entry->format(custom.c_str());
}
@@ -466,8 +466,7 @@ int device_state_interface::state_string_max_length(int index)
return 3;
// ask the entry to format itself maximally
- std::string tempstring;
- return entry->format(tempstring, "", true).length();
+ return entry->format("", true).length();
}
@@ -591,7 +590,7 @@ void device_state_interface::state_string_import(const device_state_entry &entry
// written to perform any post-processing
//-------------------------------------------------
-void device_state_interface::state_string_export(const device_state_entry &entry, std::string &str)
+void device_state_interface::state_string_export(const device_state_entry &entry, std::string &str) const
{
// do nothing by default
}
@@ -615,7 +614,7 @@ void device_state_interface::interface_post_start()
// state entry for the given index
//-------------------------------------------------
-const device_state_entry *device_state_interface::state_find_entry(int index)
+const device_state_entry *device_state_interface::state_find_entry(int index) const
{
// use fast lookup if possible
if (index >= FAST_STATE_MIN && index <= FAST_STATE_MAX)
diff --git a/src/emu/distate.h b/src/emu/distate.h
index f762bd9fb13..67734fefa4b 100644
--- a/src/emu/distate.h
+++ b/src/emu/distate.h
@@ -87,7 +87,7 @@ protected:
// return the current value -- only for our friends who handle export
bool needs_export() const { return ((m_flags & DSF_EXPORT) != 0); }
UINT64 value() const;
- std::string &format(std::string &dest, const char *string, bool maxout = false) const;
+ std::string format(const char *string, bool maxout = false) const;
// set the current value -- only for our friends who handle import
bool needs_import() const { return ((m_flags & DSF_IMPORT) != 0); }
@@ -128,7 +128,7 @@ public:
// state getters
UINT64 state_int(int index);
- std::string &state_string(int index, std::string &dest);
+ std::string state_string(int index) const;
int state_string_max_length(int index);
offs_t pc() { return state_int(STATE_GENPC); }
offs_t pcbase() { return state_int(STATE_GENPCBASE); }
@@ -163,13 +163,13 @@ protected:
virtual void state_import(const device_state_entry &entry);
virtual void state_export(const device_state_entry &entry);
virtual void state_string_import(const device_state_entry &entry, std::string &str);
- virtual void state_string_export(const device_state_entry &entry, std::string &str);
+ virtual void state_string_export(const device_state_entry &entry, std::string &str) const;
// internal operation overrides
virtual void interface_post_start() override;
// find the entry for a given index
- const device_state_entry *state_find_entry(int index);
+ const device_state_entry *state_find_entry(int index) const;
// constants
static const int FAST_STATE_MIN = -4; // range for fast state
diff --git a/src/emu/drawgfx.cpp b/src/emu/drawgfx.cpp
index 2da798bfa97..30bde314664 100644
--- a/src/emu/drawgfx.cpp
+++ b/src/emu/drawgfx.cpp
@@ -43,7 +43,7 @@ static inline int readbit(const UINT8 *src, unsigned int bitnum)
than the width
-------------------------------------------------*/
-static inline INT32 normalize_xscroll(bitmap_t &bitmap, INT32 xscroll)
+static inline INT32 normalize_xscroll(const bitmap_t &bitmap, INT32 xscroll)
{
return (xscroll >= 0) ? xscroll % bitmap.width() : (bitmap.width() - (-xscroll) % bitmap.width());
}
@@ -55,7 +55,7 @@ static inline INT32 normalize_xscroll(bitmap_t &bitmap, INT32 xscroll)
than the height
-------------------------------------------------*/
-static inline INT32 normalize_yscroll(bitmap_t &bitmap, INT32 yscroll)
+static inline INT32 normalize_yscroll(const bitmap_t &bitmap, INT32 yscroll)
{
return (yscroll >= 0) ? yscroll % bitmap.height() : (bitmap.height() - (-yscroll) % bitmap.height());
}
@@ -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),
@@ -1855,12 +1857,12 @@ void draw_scanline32(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 lengt
scanline of a bitmap to an 8bpp buffer
-------------------------------------------------*/
-void extract_scanline8(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr)
+void extract_scanline8(const bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr)
{
EXTRACTSCANLINE_CORE(UINT16);
}
-void extract_scanline8(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr)
+void extract_scanline8(const bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr)
{
EXTRACTSCANLINE_CORE(UINT32);
}
@@ -1871,12 +1873,12 @@ void extract_scanline8(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 lengt
scanline of a bitmap to a 16bpp buffer
-------------------------------------------------*/
-void extract_scanline16(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr)
+void extract_scanline16(const bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr)
{
EXTRACTSCANLINE_CORE(UINT16);
}
-void extract_scanline16(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr)
+void extract_scanline16(const bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr)
{
EXTRACTSCANLINE_CORE(UINT32);
}
@@ -1887,12 +1889,12 @@ void extract_scanline16(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 leng
scanline of a bitmap to a 32bpp buffer
-------------------------------------------------*/
-void extract_scanline32(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr)
+void extract_scanline32(const bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr)
{
EXTRACTSCANLINE_CORE(UINT16);
}
-void extract_scanline32(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr)
+void extract_scanline32(const bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr)
{
EXTRACTSCANLINE_CORE(UINT32);
}
@@ -1908,13 +1910,13 @@ void extract_scanline32(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 leng
copying all unclipped pixels
-------------------------------------------------*/
-void copybitmap(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect)
+void copybitmap(bitmap_ind16 &dest, const bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect)
{
DECLARE_NO_PRIORITY;
COPYBITMAP_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
}
-void copybitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect)
+void copybitmap(bitmap_rgb32 &dest, const bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect)
{
DECLARE_NO_PRIORITY;
COPYBITMAP_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
@@ -1927,7 +1929,7 @@ void copybitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT
those that match transpen
-------------------------------------------------*/
-void copybitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 trans_pen)
+void copybitmap_trans(bitmap_ind16 &dest, const bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 trans_pen)
{
DECLARE_NO_PRIORITY;
if (trans_pen > 0xffff)
@@ -1936,7 +1938,7 @@ void copybitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flip
COPYBITMAP_CORE(UINT16, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
}
-void copybitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 trans_pen)
+void copybitmap_trans(bitmap_rgb32 &dest, const bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 trans_pen)
{
DECLARE_NO_PRIORITY;
if (trans_pen == 0xffffffff)
@@ -1957,14 +1959,14 @@ void copybitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flip
applying scrolling to one or more rows/columns
-------------------------------------------------*/
-void copyscrollbitmap(bitmap_ind16 &dest, bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect)
+void copyscrollbitmap(bitmap_ind16 &dest, const bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect)
{
// just call through to the transparent case as the underlying copybitmap will
// optimize for pen == 0xffffffff
copyscrollbitmap_trans(dest, src, numrows, rowscroll, numcols, colscroll, cliprect, 0xffffffff);
}
-void copyscrollbitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect)
+void copyscrollbitmap(bitmap_rgb32 &dest, const bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect)
{
// just call through to the transparent case as the underlying copybitmap will
// optimize for pen == 0xffffffff
@@ -1980,7 +1982,7 @@ void copyscrollbitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, con
-------------------------------------------------*/
template<class _BitmapClass>
-static inline void copyscrollbitmap_trans_common(_BitmapClass &dest, _BitmapClass &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 trans_pen)
+static inline void copyscrollbitmap_trans_common(_BitmapClass &dest, const _BitmapClass &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 trans_pen)
{
// no rowscroll and no colscroll means no scroll
if (numrows == 0 && numcols == 0)
@@ -2078,10 +2080,10 @@ static inline void copyscrollbitmap_trans_common(_BitmapClass &dest, _BitmapClas
}
}
-void copyscrollbitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 trans_pen)
+void copyscrollbitmap_trans(bitmap_ind16 &dest, const bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 trans_pen)
{ copyscrollbitmap_trans_common(dest, src, numrows, rowscroll, numcols, colscroll, cliprect, trans_pen); }
-void copyscrollbitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 trans_pen)
+void copyscrollbitmap_trans(bitmap_rgb32 &dest, const bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 trans_pen)
{ copyscrollbitmap_trans_common(dest, src, numrows, rowscroll, numcols, colscroll, cliprect, trans_pen); }
@@ -2096,13 +2098,13 @@ void copyscrollbitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrow
pixels
-------------------------------------------------*/
-void copyrozbitmap(bitmap_ind16 &dest, const rectangle &cliprect, bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound)
+void copyrozbitmap(bitmap_ind16 &dest, const rectangle &cliprect, const bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound)
{
DECLARE_NO_PRIORITY;
COPYROZBITMAP_CORE(UINT16, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
}
-void copyrozbitmap(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound)
+void copyrozbitmap(bitmap_rgb32 &dest, const rectangle &cliprect, const bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound)
{
DECLARE_NO_PRIORITY;
COPYROZBITMAP_CORE(UINT32, PIXEL_OP_COPY_OPAQUE, NO_PRIORITY);
@@ -2116,13 +2118,13 @@ void copyrozbitmap(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &
transpen
-------------------------------------------------*/
-void copyrozbitmap_trans(bitmap_ind16 &dest, const rectangle &cliprect, bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 trans_pen)
+void copyrozbitmap_trans(bitmap_ind16 &dest, const rectangle &cliprect, const bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 trans_pen)
{
DECLARE_NO_PRIORITY;
COPYROZBITMAP_CORE(UINT16, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
}
-void copyrozbitmap_trans(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 trans_pen)
+void copyrozbitmap_trans(bitmap_rgb32 &dest, const rectangle &cliprect, const bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 trans_pen)
{
DECLARE_NO_PRIORITY;
COPYROZBITMAP_CORE(UINT32, PIXEL_OP_COPY_TRANSPEN, NO_PRIORITY);
diff --git a/src/emu/drawgfx.h b/src/emu/drawgfx.h
index a8be4a5f286..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; }
@@ -326,28 +328,28 @@ void draw_scanline32(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 lengt
// ----- scanline extraction -----
// copy pixels from a single scanline of a bitmap to an 8bpp buffer
-void extract_scanline8(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr);
-void extract_scanline8(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr);
+void extract_scanline8(const bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr);
+void extract_scanline8(const bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT8 *destptr);
// copy pixels from a single scanline of a bitmap to a 16bpp buffer
-void extract_scanline16(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr);
-void extract_scanline16(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr);
+void extract_scanline16(const bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr);
+void extract_scanline16(const bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT16 *destptr);
// copy pixels from a single scanline of a bitmap to a 32bpp buffer
-void extract_scanline32(bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr);
-void extract_scanline32(bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr);
+void extract_scanline32(const bitmap_ind16 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr);
+void extract_scanline32(const bitmap_rgb32 &bitmap, INT32 srcx, INT32 srcy, INT32 length, UINT32 *destptr);
// ----- bitmap copying -----
// copy from one bitmap to another, copying all unclipped pixels
-void copybitmap(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect);
-void copybitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect);
+void copybitmap(bitmap_ind16 &dest, const bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect);
+void copybitmap(bitmap_rgb32 &dest, const bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect);
// copy from one bitmap to another, copying all unclipped pixels except those that match transpen
-void copybitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen);
-void copybitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen);
+void copybitmap_trans(bitmap_ind16 &dest, const bitmap_ind16 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen);
+void copybitmap_trans(bitmap_rgb32 &dest, const bitmap_rgb32 &src, int flipx, int flipy, INT32 destx, INT32 desty, const rectangle &cliprect, UINT32 transpen);
/*
Copy a bitmap onto another with scroll and wraparound.
@@ -362,12 +364,12 @@ void copybitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, int flipx, int flip
*/
// copy from one bitmap to another, copying all unclipped pixels, and applying scrolling to one or more rows/columns
-void copyscrollbitmap(bitmap_ind16 &dest, bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect);
-void copyscrollbitmap(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect);
+void copyscrollbitmap(bitmap_ind16 &dest, const bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect);
+void copyscrollbitmap(bitmap_rgb32 &dest, const bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect);
// copy from one bitmap to another, copying all unclipped pixels except those that match transpen, and applying scrolling to one or more rows/columns
-void copyscrollbitmap_trans(bitmap_ind16 &dest, bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen);
-void copyscrollbitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen);
+void copyscrollbitmap_trans(bitmap_ind16 &dest, const bitmap_ind16 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen);
+void copyscrollbitmap_trans(bitmap_rgb32 &dest, const bitmap_rgb32 &src, UINT32 numrows, const INT32 *rowscroll, UINT32 numcols, const INT32 *colscroll, const rectangle &cliprect, UINT32 transpen);
/*
Copy a bitmap applying rotation, zooming, and arbitrary distortion.
@@ -399,12 +401,12 @@ void copyscrollbitmap_trans(bitmap_rgb32 &dest, bitmap_rgb32 &src, UINT32 numrow
*/
// copy from one bitmap to another, with zoom and rotation, copying all unclipped pixels
-void copyrozbitmap(bitmap_ind16 &dest, const rectangle &cliprect, bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound);
-void copyrozbitmap(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound);
+void copyrozbitmap(bitmap_ind16 &dest, const rectangle &cliprect, const bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound);
+void copyrozbitmap(bitmap_rgb32 &dest, const rectangle &cliprect, const bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound);
// copy from one bitmap to another, with zoom and rotation, copying all unclipped pixels whose values do not match transpen
-void copyrozbitmap_trans(bitmap_ind16 &dest, const rectangle &cliprect, bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transparent_color);
-void copyrozbitmap_trans(bitmap_rgb32 &dest, const rectangle &cliprect, bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transparent_color);
+void copyrozbitmap_trans(bitmap_ind16 &dest, const rectangle &cliprect, const bitmap_ind16 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transparent_color);
+void copyrozbitmap_trans(bitmap_rgb32 &dest, const rectangle &cliprect, const bitmap_rgb32 &src, INT32 startx, INT32 starty, INT32 incxx, INT32 incxy, INT32 incyx, INT32 incyy, int wraparound, UINT32 transparent_color);
diff --git a/src/emu/drivenum.h b/src/emu/drivenum.h
index e3bf3117861..faaf685304a 100644
--- a/src/emu/drivenum.h
+++ b/src/emu/drivenum.h
@@ -120,7 +120,7 @@ private:
void release_current() const;
static const int CONFIG_CACHE_COUNT = 100;
-
+
// internal state
int m_current;
int m_filtered_count;
diff --git a/src/emu/driver.cpp b/src/emu/driver.cpp
index ee4ec8bebdb..7d61c40e582 100644
--- a/src/emu/driver.cpp
+++ b/src/emu/driver.cpp
@@ -211,7 +211,7 @@ void driver_device::device_start()
(*m_system->driver_init)(machine());
// finish image devices init process
- image_postdevice_init(machine());
+ machine().image().postdevice_init();
// start the various pieces
driver_start();
@@ -565,6 +565,23 @@ void driver_device::flip_screen_y_set(UINT32 on)
}
+/***************************************************************************
+PORT READING HELPERS
+***************************************************************************/
+
+/*-------------------------------------------------
+custom_port_read - act like input_port_read
+but it is a custom port, it is useful for
+e.g. input ports which expect the same port
+repeated both in the upper and lower half
+-------------------------------------------------*/
+
+CUSTOM_INPUT_MEMBER(driver_device::custom_port_read)
+{
+ const char *tag = (const char *)param;
+ return ioport(tag)->read();
+}
+
//**************************************************************************
// MISC READ/WRITE HANDLERS
diff --git a/src/emu/driver.h b/src/emu/driver.h
index 9a122bbdf42..20d4036dc43 100644
--- a/src/emu/driver.h
+++ b/src/emu/driver.h
@@ -137,6 +137,9 @@ public:
// memory helpers
address_space &generic_space() const { return space(AS_PROGRAM); }
+ // output heler
+ output_manager &output() const { return machine().output(); }
+
// generic interrupt generators
void generic_pulse_irq_line(device_execute_interface &exec, int irqline, int cycles);
void generic_pulse_irq_line_and_vector(device_execute_interface &exec, int irqline, int vector, int cycles);
@@ -284,7 +287,7 @@ device_t *driver_device_creator(const machine_config &mconfig, const char *tag,
{
assert(owner == nullptr);
assert(clock == 0);
- return global_alloc_clear(_DriverClass(mconfig, &driver_device_creator<_DriverClass>, tag));
+ return global_alloc_clear<_DriverClass>(mconfig, &driver_device_creator<_DriverClass>, tag);
}
diff --git a/src/emu/emu.h b/src/emu/emu.h
index 24de3559ab2..4e78d67282f 100644
--- a/src/emu/emu.h
+++ b/src/emu/emu.h
@@ -15,8 +15,6 @@
***************************************************************************/
-#pragma once
-
#ifndef __EMU_H__
#define __EMU_H__
@@ -112,7 +110,7 @@ typedef device_t * (*machine_config_constructor)(machine_config &config, device_
#include "devcb.h"
#include "dispatch.h"
#include "drivers/xtal.h"
-#include "machine/generic.h"
+#include "bookkeeping.h"
#include "video/generic.h"
#endif /* __EMU_H__ */
diff --git a/src/emu/emualloc.h b/src/emu/emualloc.h
index 192f1fca85e..4571762054f 100644
--- a/src/emu/emualloc.h
+++ b/src/emu/emualloc.h
@@ -17,32 +17,15 @@
#include "osdcore.h"
#include "coretmpl.h"
-
-//**************************************************************************
-// DEBUGGING
-//**************************************************************************
-
-// set to 1 to track memory allocated by emualloc.h itself as well
-#define TRACK_SELF_MEMORY (0)
-
-
-
//**************************************************************************
// MACROS
//**************************************************************************
-// self-allocation helpers
-#if TRACK_SELF_MEMORY
-#define EMUALLOC_SELF_NEW new(__FILE__, __LINE__)
-#else
-#define EMUALLOC_SELF_NEW new
-#endif
-
// pool allocation helpers
-#define pool_alloc(_pool, _type) (_pool).add_object(new(__FILE__, __LINE__) _type)
-#define pool_alloc_clear(_pool, _type) (_pool).add_object(new(__FILE__, __LINE__, zeromem) _type)
-#define pool_alloc_array(_pool, _type, _num) (_pool).add_array(new(__FILE__, __LINE__) _type[_num], (_num))
-#define pool_alloc_array_clear(_pool, _type, _num) (_pool).add_array(new(__FILE__, __LINE__, zeromem) _type[_num], (_num))
+#define pool_alloc(_pool, _type) (_pool).add_object(global_alloc(_type))
+#define pool_alloc_clear(_pool, _type) (_pool).add_object(global_alloc_clear _type)
+#define pool_alloc_array(_pool, _type, _num) (_pool).add_array(global_alloc_array(_type,_num), (_num))
+#define pool_alloc_array_clear(_pool, _type, _num) (_pool).add_array(global_alloc_array_clear<_type>(_num), (_num))
#define pool_free(_pool, v) (_pool).remove(v)
@@ -136,8 +119,8 @@ public:
bool contains(void *ptrstart, void *ptrend);
void clear();
- template<class _ObjectClass> _ObjectClass *add_object(_ObjectClass* object) { add(*EMUALLOC_SELF_NEW resource_pool_object<_ObjectClass>(object), sizeof(_ObjectClass), typeid(_ObjectClass).name()); return object; }
- template<class _ObjectClass> _ObjectClass *add_array(_ObjectClass* array, int count) { add(*EMUALLOC_SELF_NEW resource_pool_array<_ObjectClass>(array, count), sizeof(_ObjectClass), typeid(_ObjectClass).name()); return array; }
+ template<class _ObjectClass> _ObjectClass *add_object(_ObjectClass* object) { add(*new resource_pool_object<_ObjectClass>(object), sizeof(_ObjectClass), typeid(_ObjectClass).name()); return object; }
+ template<class _ObjectClass> _ObjectClass *add_array(_ObjectClass* array, int count) { add(*new resource_pool_array<_ObjectClass>(array, count), sizeof(_ObjectClass), typeid(_ObjectClass).name()); return array; }
private:
int m_hash_size;
diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp
index 11938000fe7..aa1b0482edc 100644
--- a/src/emu/emuopts.cpp
+++ b/src/emu/emuopts.cpp
@@ -185,6 +185,7 @@ const options_entry emu_options::s_option_entries[] =
{ 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" },
+ { OPTION_CONSOLE, "0", OPTION_BOOLEAN, "enable emulator LUA console" },
{ nullptr }
};
@@ -280,8 +281,7 @@ void emu_options::update_slot_options()
const char *name = slot->device().tag() + 1;
if (exists(name) && slot->first_option() != nullptr)
{
- std::string defvalue;
- slot->get_default_card_software(defvalue);
+ std::string defvalue = slot->get_default_card_software();
if (defvalue.length() > 0)
{
set_default_value(name, defvalue.c_str());
@@ -469,11 +469,10 @@ void emu_options::parse_standard_inis(std::string &error_string)
}
// next parse "source/<sourcefile>.ini"; if that doesn't exist, try <sourcefile>.ini
- std::string sourcename;
- core_filename_extract_base(sourcename, cursystem->source_file, true).insert(0, "source" PATH_SEPARATOR);
+ std::string sourcename = core_filename_extract_base(cursystem->source_file, true).insert(0, "source" PATH_SEPARATOR);
if (!parse_one_ini(sourcename.c_str(), OPTION_PRIORITY_SOURCE_INI, &error_string))
{
- core_filename_extract_base(sourcename, cursystem->source_file, true);
+ sourcename = core_filename_extract_base(cursystem->source_file, true);
parse_one_ini(sourcename.c_str(), OPTION_PRIORITY_SOURCE_INI, &error_string);
}
@@ -500,8 +499,7 @@ void emu_options::parse_standard_inis(std::string &error_string)
const game_driver *emu_options::system() const
{
- std::string tempstr;
- int index = driver_list::find(core_filename_extract_base(tempstr, system_name(), true).c_str());
+ int index = driver_list::find(core_filename_extract_base(system_name(), true).c_str());
return (index != -1) ? &driver_list::driver(index) : nullptr;
}
@@ -567,19 +565,19 @@ bool emu_options::parse_one_ini(const char *basename, int priority, std::string
}
-const char *emu_options::main_value(std::string &buffer, const char *name) const
+std::string emu_options::main_value(const char *name) const
{
- buffer = value(name);
+ std::string buffer = value(name);
int pos = buffer.find_first_of(',');
if (pos != -1)
buffer = buffer.substr(0, pos);
- return buffer.c_str();
+ return buffer;
}
-const char *emu_options::sub_value(std::string &buffer, const char *name, const char *subname) const
+std::string emu_options::sub_value(const char *name, const char *subname) const
{
std::string tmp = std::string(",").append(subname).append("=");
- buffer = value(name);
+ std::string buffer = value(name);
int pos = buffer.find(tmp);
if (pos != -1)
{
@@ -590,7 +588,7 @@ const char *emu_options::sub_value(std::string &buffer, const char *name, const
}
else
buffer.clear();
- return buffer.c_str();
+ return buffer;
}
diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h
index 3bd7cd8afd6..14597d0e67d 100644
--- a/src/emu/emuopts.h
+++ b/src/emu/emuopts.h
@@ -189,6 +189,8 @@ enum
#define OPTION_AUTOBOOT_DELAY "autoboot_delay"
#define OPTION_AUTOBOOT_SCRIPT "autoboot_script"
+#define OPTION_CONSOLE "console"
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -361,11 +363,13 @@ public:
int autoboot_delay() const { return int_value(OPTION_AUTOBOOT_DELAY); }
const char *autoboot_script() const { return value(OPTION_AUTOBOOT_SCRIPT); }
+ bool console() const { return bool_value(OPTION_CONSOLE); }
+
// FIXME: Couriersud: This should be in image_device_exit
void remove_device_options();
- const char *main_value(std::string &buffer, const char *option) const;
- const char *sub_value(std::string &buffer, const char *name, const char *subname) const;
+ 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);
private:
diff --git a/src/emu/fileio.cpp b/src/emu/fileio.cpp
index 8c982d03f19..0de5e021800 100644
--- a/src/emu/fileio.cpp
+++ b/src/emu/fileio.cpp
@@ -219,8 +219,7 @@ emu_file::operator core_file &()
hash_collection &emu_file::hashes(const char *types)
{
// determine the hashes we already have
- std::string already_have;
- m_hashes.hash_types(already_have);
+ std::string already_have = m_hashes.hash_types();
// determine which hashes we need
std::string needed;
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/hash.cpp b/src/emu/hash.cpp
index 20894f4fa3e..20fd59ecab6 100644
--- a/src/emu/hash.cpp
+++ b/src/emu/hash.cpp
@@ -115,14 +115,14 @@ bool hash_collection::operator==(const hash_collection &rhs) const
// a string
//-------------------------------------------------
-const char *hash_collection::hash_types(std::string &buffer) const
+std::string hash_collection::hash_types() const
{
- buffer.clear();
+ std::string buffer;
if (m_has_crc32)
buffer.push_back(HASH_CRC);
if (m_has_sha1)
buffer.push_back(HASH_SHA1);
- return buffer.c_str();
+ return buffer;
}
@@ -190,24 +190,24 @@ bool hash_collection::remove(char type)
// format
//-------------------------------------------------
-const char *hash_collection::internal_string(std::string &buffer) const
+std::string hash_collection::internal_string() const
{
- buffer.clear();
+ std::string buffer;
// handle CRCs
- std::string temp;
if (m_has_crc32) {
buffer.push_back(HASH_CRC);
- buffer.append(m_crc32.as_string(temp));
+ buffer.append(m_crc32.as_string());
}
// handle SHA1s
if (m_has_sha1) {
buffer.push_back(HASH_SHA1);
- buffer.append(m_sha1.as_string(temp));
+ buffer.append(m_sha1.as_string());
}
// append flags
- return buffer.append(m_flags).c_str();
+ buffer.append(m_flags);
+ return buffer;
}
@@ -216,18 +216,17 @@ const char *hash_collection::internal_string(std::string &buffer) const
// flags to a string in the macroized format
//-------------------------------------------------
-const char *hash_collection::macro_string(std::string &buffer) const
+std::string hash_collection::macro_string() const
{
- buffer.clear();
+ std::string buffer;
// handle CRCs
- std::string temp;
if (m_has_crc32)
- buffer.append("CRC(").append(m_crc32.as_string(temp)).append(") ");
+ buffer.append("CRC(").append(m_crc32.as_string()).append(") ");
// handle SHA1s
if (m_has_sha1)
- buffer.append("SHA1(").append(m_sha1.as_string(temp)).append(") ");
+ buffer.append("SHA1(").append(m_sha1.as_string()).append(") ");
// append flags
if (flag(FLAG_NO_DUMP))
@@ -235,7 +234,7 @@ const char *hash_collection::macro_string(std::string &buffer) const
if (flag(FLAG_BAD_DUMP))
buffer.append("BAD_DUMP ");
strtrimspace(buffer);
- return buffer.c_str();
+ return buffer;
}
@@ -244,18 +243,17 @@ const char *hash_collection::macro_string(std::string &buffer) const
// flags to a string in XML attribute format
//-------------------------------------------------
-const char *hash_collection::attribute_string(std::string &buffer) const
+std::string hash_collection::attribute_string() const
{
- buffer.clear();
+ std::string buffer;
// handle CRCs
- std::string temp;
if (m_has_crc32)
- buffer.append("crc=\"").append(m_crc32.as_string(temp)).append("\" ");
+ buffer.append("crc=\"").append(m_crc32.as_string()).append("\" ");
// handle SHA1s
if (m_has_sha1)
- buffer.append("sha1=\"").append(m_sha1.as_string(temp)).append("\" ");
+ buffer.append("sha1=\"").append(m_sha1.as_string()).append("\" ");
// append flags
if (flag(FLAG_NO_DUMP))
@@ -263,7 +261,7 @@ const char *hash_collection::attribute_string(std::string &buffer) const
if (flag(FLAG_BAD_DUMP))
buffer.append("status=\"baddump\"");
strtrimspace(buffer);
- return buffer.c_str();
+ return buffer;
}
diff --git a/src/emu/hash.h b/src/emu/hash.h
index 52d5c6bf3b6..f225c7827a3 100644
--- a/src/emu/hash.h
+++ b/src/emu/hash.h
@@ -67,7 +67,7 @@ public:
// getters
bool flag(char flag) const { return (m_flags.find_first_of(flag) != std::string::npos); }
- const char *hash_types(std::string &buffer) const;
+ std::string hash_types() const;
// hash manipulators
void reset();
@@ -83,9 +83,9 @@ public:
void add_sha1(sha1_t sha1) { m_has_sha1 = true; m_sha1 = sha1; }
// string conversion
- const char *internal_string(std::string &buffer) const;
- const char *macro_string(std::string &buffer) const;
- const char *attribute_string(std::string &buffer) const;
+ std::string internal_string() const;
+ std::string macro_string() const;
+ std::string attribute_string() const;
bool from_internal_string(const char *string);
// creation
diff --git a/src/emu/hashfile.cpp b/src/emu/hashfile.cpp
index 374a09f5176..557d9c28d5f 100644
--- a/src/emu/hashfile.cpp
+++ b/src/emu/hashfile.cpp
@@ -604,13 +604,13 @@ bool hashfile_extrainfo(device_image_interface &image, std::string &result)
static void *expat_malloc(size_t size)
{
- return global_alloc_array_clear(UINT8,size);
+ return global_alloc_array_clear<UINT8>(size);
}
static void *expat_realloc(void *ptr, size_t size)
{
if (ptr) global_free_array((UINT8 *)ptr);
- return global_alloc_array_clear(UINT8,size);
+ return global_alloc_array_clear<UINT8>(size);
}
static void expat_free(void *ptr)
diff --git a/src/emu/image.cpp b/src/emu/image.cpp
index ab7f7406854..76de04714fb 100644
--- a/src/emu/image.cpp
+++ b/src/emu/image.cpp
@@ -15,61 +15,80 @@
#include "image.h"
#include "config.h"
#include "xmlfile.h"
-#include "formats/ioprocs.h"
-/* ----------------------------------------------------------------------- */
+//**************************************************************************
+// IMAGE MANAGER
+//**************************************************************************
-static int image_fseek_thunk(void *file, INT64 offset, int whence)
-{
- device_image_interface *image = (device_image_interface *) file;
- return image->fseek(offset, whence);
-}
+//-------------------------------------------------
+// image_manager - constructor
+//-------------------------------------------------
-static size_t image_fread_thunk(void *file, void *buffer, size_t length)
+image_manager::image_manager(running_machine &machine)
+ : m_machine(machine)
{
- device_image_interface *image = (device_image_interface *) file;
- return image->fread(buffer, length);
-}
+ const char *image_name;
-static size_t image_fwrite_thunk(void *file, const void *buffer, size_t length)
-{
- device_image_interface *image = (device_image_interface *) file;
- return image->fwrite(buffer, length);
-}
+ /* make sure that any required devices have been allocated */
+ image_interface_iterator iter(machine.root_device());
+ for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
+ {
+ /* is an image specified for this image */
+ image_name = machine.options().value(image->instance_name());
-static UINT64 image_fsize_thunk(void *file)
-{
- device_image_interface *image = (device_image_interface *) file;
- return image->length();
-}
+ if ((image_name != nullptr) && (image_name[0] != '\0'))
+ {
+ /* mark init state */
+ image->set_init_phase();
-/* ----------------------------------------------------------------------- */
+ /* try to load this image */
+ bool result = image->load(image_name);
-struct io_procs image_ioprocs =
-{
- nullptr,
- image_fseek_thunk,
- image_fread_thunk,
- image_fwrite_thunk,
- image_fsize_thunk
-};
+ /* did the image load fail? */
+ if (result)
+ {
+ /* retrieve image error message */
+ std::string image_err = std::string(image->error());
+ std::string image_basename(image_name);
-/***************************************************************************
- INITIALIZATION HELPERS
-***************************************************************************/
+ /* unload all images */
+ unload_all();
-/*-------------------------------------------------
- image_dirs_load - loads image device directory
- configuration items
--------------------------------------------------*/
+ fatalerror_exitcode(machine, MAMERR_DEVICE, "Device %s load (%s) failed: %s",
+ image->device().name(),
+ image_basename.c_str(),
+ image_err.c_str());
+ }
+ }
+ }
+
+ machine.configuration().config_register("image_directories", config_saveload_delegate(FUNC(image_manager::config_load), this), config_saveload_delegate(FUNC(image_manager::config_save), this));
+}
+
+//-------------------------------------------------
+// unload_all - unload all images and
+// extract options
+//-------------------------------------------------
+void image_manager::unload_all()
+{
+ // extract the options
+ options_extract();
+
+ image_interface_iterator iter(machine().root_device());
+ for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
+ {
+ // unload this image
+ image->unload();
+ }
+}
-static void image_dirs_load(running_machine &machine, int config_type, xml_data_node *parentnode)
+void image_manager::config_load(config_type cfg_type, xml_data_node *parentnode)
{
xml_data_node *node;
const char *dev_instance;
const char *working_directory;
- if ((config_type == CONFIG_TYPE_GAME) && (parentnode != nullptr))
+ if ((cfg_type == config_type::CONFIG_TYPE_GAME) && (parentnode != nullptr))
{
for (node = xml_get_sibling(parentnode->child, "device"); node; node = xml_get_sibling(node->next, "device"))
{
@@ -77,7 +96,7 @@ static void image_dirs_load(running_machine &machine, int config_type, xml_data_
if ((dev_instance != nullptr) && (dev_instance[0] != '\0'))
{
- image_interface_iterator iter(machine.root_device());
+ image_interface_iterator iter(machine().root_device());
for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
{
if (!strcmp(dev_instance, image->instance_name())) {
@@ -91,22 +110,20 @@ static void image_dirs_load(running_machine &machine, int config_type, xml_data_
}
}
-
-
/*-------------------------------------------------
- image_dirs_save - saves out image device
+ config_save - saves out image device
directories to the configuration file
-------------------------------------------------*/
-static void image_dirs_save(running_machine &machine, int config_type, xml_data_node *parentnode)
+void image_manager::config_save(config_type cfg_type, xml_data_node *parentnode)
{
xml_data_node *node;
const char *dev_instance;
/* only care about game-specific data */
- if (config_type == CONFIG_TYPE_GAME)
+ if (cfg_type == config_type::CONFIG_TYPE_GAME)
{
- image_interface_iterator iter(machine.root_device());
+ image_interface_iterator iter(machine().root_device());
for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
{
dev_instance = image->instance_name();
@@ -126,7 +143,7 @@ static void image_dirs_save(running_machine &machine, int config_type, xml_data_
INI files
-------------------------------------------------*/
-static int write_config(emu_options &options, const char *filename, const game_driver *gamedrv)
+int image_manager::write_config(emu_options &options, const char *filename, const game_driver *gamedrv)
{
char buffer[128];
int retval = 1;
@@ -141,8 +158,7 @@ static int write_config(emu_options &options, const char *filename, const game_d
file_error filerr = file.open(filename);
if (filerr == FILERR_NONE)
{
- std::string inistring;
- options.output_ini(inistring);
+ std::string inistring = options.output_ini();
file.puts(inistring.c_str());
retval = 0;
}
@@ -150,105 +166,46 @@ static int write_config(emu_options &options, const char *filename, const game_d
}
/*-------------------------------------------------
- image_options_extract - extract device options
+ options_extract - extract device options
out of core into the options
-------------------------------------------------*/
-static void image_options_extract(running_machine &machine)
+void image_manager::options_extract()
{
/* only extract the device options if we've added them
no need to assert in case they are missing */
{
int index = 0;
- image_interface_iterator iter(machine.root_device());
+ image_interface_iterator iter(machine().root_device());
for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
{
const char *filename = image->filename();
/* and set the option */
std::string error;
- machine.options().set_value(image->instance_name(), filename ? filename : "", OPTION_PRIORITY_CMDLINE, error);
+ machine().options().set_value(image->instance_name(), filename ? filename : "", OPTION_PRIORITY_CMDLINE, error);
index++;
}
}
/* write the config, if appropriate */
- if (machine.options().write_config())
- write_config(machine.options(), nullptr, &machine.system());
-}
-
-/*-------------------------------------------------
- image_unload_all - unload all images and
- extract options
--------------------------------------------------*/
-
-void image_unload_all(running_machine &machine)
-{
- // extract the options
- image_options_extract(machine);
-
- image_interface_iterator iter(machine.root_device());
- for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
- {
- // unload this image
- image->unload();
- }
+ if (machine().options().write_config())
+ write_config(machine().options(), nullptr, &machine().system());
}
-/*-------------------------------------------------
- image_device_init - initialize devices for a specific
- running_machine
--------------------------------------------------*/
-
-void image_device_init(running_machine &machine)
-{
- const char *image_name;
-
- /* make sure that any required devices have been allocated */
- image_interface_iterator iter(machine.root_device());
- for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
- {
- /* is an image specified for this image */
- image_name = machine.options().value(image->instance_name());
-
- if ((image_name != nullptr) && (image_name[0] != '\0'))
- {
- /* mark init state */
- image->set_init_phase();
-
- /* try to load this image */
- bool result = image->load(image_name);
-
- /* did the image load fail? */
- if (result)
- {
- /* retrieve image error message */
- std::string image_err = std::string(image->error());
- std::string image_basename(image_name);
- /* unload all images */
- image_unload_all(machine);
-
- fatalerror_exitcode(machine, MAMERR_DEVICE, "Device %s load (%s) failed: %s",
- image->device().name(),
- image_basename.c_str(),
- image_err.c_str());
- }
- }
- }
-}
/*-------------------------------------------------
image_mandatory_scan - search for devices which
need an image to be loaded
-------------------------------------------------*/
-std::string &image_mandatory_scan(running_machine &machine, std::string &mandatory)
+std::string &image_manager::mandatory_scan(std::string &mandatory)
{
mandatory.clear();
// make sure that any required image has a mounted file
- image_interface_iterator iter(machine.root_device());
+ image_interface_iterator iter(machine().root_device());
for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
{
if (image->filename() == nullptr && image->must_be_loaded())
@@ -258,14 +215,14 @@ std::string &image_mandatory_scan(running_machine &machine, std::string &mandato
}
/*-------------------------------------------------
- image_postdevice_init - initialize devices for a specific
+ postdevice_init - initialize devices for a specific
running_machine
-------------------------------------------------*/
-void image_postdevice_init(running_machine &machine)
+void image_manager::postdevice_init()
{
/* make sure that any required devices have been allocated */
- image_interface_iterator iter(machine.root_device());
+ image_interface_iterator iter(machine().root_device());
for (device_image_interface *image = iter.first(); image != nullptr; image = iter.next())
{
int result = image->finish_load();
@@ -276,98 +233,13 @@ void image_postdevice_init(running_machine &machine)
std::string image_err = std::string(image->error());
/* unload all images */
- image_unload_all(machine);
+ unload_all();
- fatalerror_exitcode(machine, MAMERR_DEVICE, "Device %s load failed: %s",
+ fatalerror_exitcode(machine(), MAMERR_DEVICE, "Device %s load failed: %s",
image->device().name(),
image_err.c_str());
}
}
-
/* add a callback for when we shut down */
- machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(image_unload_all), &machine));
-}
-/***************************************************************************
- INITIALIZATION
-***************************************************************************/
-
-/*-------------------------------------------------
- image_init - start up the image system
--------------------------------------------------*/
-
-void image_init(running_machine &machine)
-{
- image_device_init(machine);
- config_register(machine, "image_directories", config_saveload_delegate(FUNC(image_dirs_load), &machine), config_saveload_delegate(FUNC(image_dirs_save), &machine));
-}
-
-
-/****************************************************************************
- Battery functions
-
- These functions provide transparent access to battery-backed RAM on an
- image; typically for cartridges.
-****************************************************************************/
-
-/*-------------------------------------------------
- image_battery_load_by_name - retrieves the battery
- backed RAM for an image. A filename may be supplied
- to the function.
-
- The function comes in two flavors, depending on
- what should happen when no battery is available:
- we could fill the memory with a given value, or
- pass a default battery (for a pre-initialized
- battery from factory)
--------------------------------------------------*/
-
-void image_battery_load_by_name(emu_options &options, const char *filename, void *buffer, int length, int fill)
-{
- file_error filerr;
- int bytes_read = 0;
-
- assert_always(buffer && (length > 0), "Must specify sensical buffer/length");
-
- /* try to open the battery file and read it in, if possible */
- emu_file file(options.nvram_directory(), OPEN_FLAG_READ);
- filerr = file.open(filename);
- if (filerr == FILERR_NONE)
- bytes_read = file.read(buffer, length);
-
- /* fill remaining bytes (if necessary) */
- memset(((char *) buffer) + bytes_read, fill, length - bytes_read);
-}
-
-void image_battery_load_by_name(emu_options &options, const char *filename, void *buffer, int length, void *def_buffer)
-{
- file_error filerr;
- int bytes_read = 0;
-
- assert_always(buffer && (length > 0), "Must specify sensical buffer/length");
-
- /* try to open the battery file and read it in, if possible */
- emu_file file(options.nvram_directory(), OPEN_FLAG_READ);
- filerr = file.open(filename);
- if (filerr == FILERR_NONE)
- bytes_read = file.read(buffer, length);
-
- /* if no file was present, copy the default battery */
- if (bytes_read == 0 && def_buffer)
- memcpy((char *) buffer, (char *) def_buffer, length);
-}
-
-/*-------------------------------------------------
- image_battery_save_by_name - stores the battery
- backed RAM for an image. A filename may be supplied
- to the function.
--------------------------------------------------*/
-void image_battery_save_by_name(emu_options &options, const char *filename, const void *buffer, int length)
-{
- assert_always(buffer && (length > 0), "Must specify sensical buffer/length");
-
- /* try to open the battery file and write it out, if possible */
- emu_file file(options.nvram_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
- file_error filerr = file.open(filename);
- if (filerr == FILERR_NONE)
- file.write(buffer, length);
+ 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 592ed4e0f19..32b8035d14d 100644
--- a/src/emu/image.h
+++ b/src/emu/image.h
@@ -13,14 +13,29 @@
#ifndef __IMAGE_H__
#define __IMAGE_H__
-void image_init(running_machine &machine);
-void image_postdevice_init(running_machine &machine);
-std::string &image_mandatory_scan(running_machine &machine, std::string &mandatory);
-
-extern struct io_procs image_ioprocs;
-
-void image_battery_load_by_name(emu_options &options, const char *filename, void *buffer, int length, int fill);
-void image_battery_load_by_name(emu_options &options, const char *filename, void *buffer, int length, void *def_buffer);
-void image_battery_save_by_name(emu_options &options, const char *filename, const void *buffer, int length);
+// ======================> image_manager
+
+class image_manager
+{
+public:
+ // construction/destruction
+ image_manager(running_machine &machine);
+
+ void unload_all();
+ void postdevice_init();
+ std::string &mandatory_scan(std::string &mandatory);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+private:
+ void config_load(config_type cfg_type, xml_data_node *parentnode);
+ void config_save(config_type cfg_type, xml_data_node *parentnode);
+
+ void options_extract();
+ int write_config(emu_options &options, const char *filename, const game_driver *gamedrv);
+
+ // internal state
+ running_machine & m_machine; // reference to our machine
+};
#endif /* __IMAGE_H__ */
diff --git a/src/emu/info.cpp b/src/emu/info.cpp
index f09fba8fe94..4bae0daf37a 100644
--- a/src/emu/info.cpp
+++ b/src/emu/info.cpp
@@ -394,7 +394,7 @@ void info_xml_creator::output_devices()
device_iterator deviter(m_drivlist.config().root_device());
for (device_t *device = deviter.first(); device != nullptr; device = deviter.next())
{
- if (device->owner() != nullptr && device->shortname()!= nullptr && strlen(device->shortname())!=0)
+ if (device->owner() != nullptr && device->shortname()!= nullptr && device->shortname()[0]!='\0')
{
if (shortnames.insert(device->shortname()).second)
output_one_device(*device, device->tag());
@@ -424,7 +424,7 @@ void info_xml_creator::output_devices()
device_iterator deviter2(*dev);
for (device_t *device = deviter2.first(); device != nullptr; device = deviter2.next())
{
- if (device->owner() == dev && device->shortname()!= nullptr && strlen(device->shortname())!=0)
+ if (device->owner() == dev && device->shortname()!= nullptr && device->shortname()[0]!='\0')
{
if (shortnames.insert(device->shortname()).second)
output_one_device(*device, device->tag());
@@ -447,7 +447,7 @@ void info_xml_creator::output_device_roms()
{
device_iterator deviter(m_drivlist.config().root_device());
for (device_t *device = deviter.first(); device != nullptr; device = deviter.next())
- if (device->owner() != nullptr && device->shortname()!= nullptr && strlen(device->shortname())!=0)
+ if (device->owner() != nullptr && device->shortname()!= nullptr && device->shortname()[0]!='\0')
fprintf(m_output, "\t\t<device_ref name=\"%s\"/>\n", xml_normalize_string(device->shortname()));
}
@@ -572,8 +572,7 @@ void info_xml_creator::output_rom(device_t &device)
if (!hashes.flag(hash_collection::FLAG_NO_DUMP))
{
// iterate over hash function types and print m_output their values
- std::string tempstr;
- strcatprintf(output," %s", hashes.attribute_string(tempstr));
+ output.append(" ").append(hashes.attribute_string());
}
else
output.append(" status=\"nodump\"");
@@ -620,7 +619,7 @@ void info_xml_creator::output_sample(device_t &device)
for (const char *samplename = iter.first(); samplename != nullptr; samplename = iter.next())
{
// filter out duplicates
- if (already_printed.insert(samplename).second)
+ if (!already_printed.insert(samplename).second)
continue;
// output the sample name
@@ -1306,11 +1305,8 @@ void info_xml_creator::output_slots(device_t &device, const char *root_tag)
fprintf(m_output, "\t\t\t<slotoption");
fprintf(m_output, " name=\"%s\"", xml_normalize_string(option->name()));
fprintf(m_output, " devname=\"%s\"", xml_normalize_string(dev->shortname()));
- if (slot->default_option())
- {
- if (strcmp(slot->default_option(),option->name())==0)
- fprintf(m_output, " default=\"yes\"");
- }
+ if (slot->default_option() != nullptr && strcmp(slot->default_option(),option->name())==0)
+ fprintf(m_output, " default=\"yes\"");
fprintf(m_output, "/>\n");
const_cast<machine_config &>(m_drivlist.config()).device_remove(&m_drivlist.config().root_device(), "dummy");
}
diff --git a/src/emu/inpttype.h b/src/emu/inpttype.h
index 79843fdff34..7a07ea777b6 100644
--- a/src/emu/inpttype.h
+++ b/src/emu/inpttype.h
@@ -21,8 +21,10 @@
/* These input port macros expand to a great deal of code and break compilers */
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 4 || (__GNUC_MINOR__ == 4 && __GNUC_PATCHLEVEL__ >= 4))))
+#if not(defined(__arm__) || defined(__ARMEL__))
#pragma GCC push_options
#pragma GCC optimize ("O1")
+#endif
#elif defined(_MSC_VER)
#pragma optimize("", off)
#endif
@@ -830,7 +832,9 @@ void construct_core_types(simple_list<input_type_entry> &typelist)
construct_core_types_invalid(typelist);
}
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 4 || (__GNUC_MINOR__ == 4 && __GNUC_PATCHLEVEL__ >= 4))))
+#if not(defined(__arm__) || defined(__ARMEL__))
#pragma GCC pop_options
+#endif
#elif defined(_MSC_VER)
#pragma optimize("", on)
#endif
diff --git a/src/emu/input.cpp b/src/emu/input.cpp
index 2d19e6b1bf4..474680a7409 100644
--- a/src/emu/input.cpp
+++ b/src/emu/input.cpp
@@ -529,9 +529,10 @@ bool joystick_map::parse(const char *mapstring)
// friendly display
//-------------------------------------------------
-const char *joystick_map::to_string(std::string &str) const
+std::string joystick_map::to_string() const
{
- strprintf(str, "%s\n", m_origstring.c_str());
+ std::string str(m_origstring);
+ str.append("\n");
for (auto & elem : m_map)
{
str.append(" ");
@@ -553,7 +554,7 @@ const char *joystick_map::to_string(std::string &str) const
str.append("\n");
}
- return str.c_str();
+ return str;
}
@@ -676,7 +677,7 @@ bool input_seq::is_valid() const
for (auto code : m_code)
{
// invalid codes are never permitted
-
+
if (code == INPUT_CODE_INVALID)
return false;
@@ -808,14 +809,13 @@ input_device::input_device(input_class &_class, int devindex, const char *name,
mapstring = joystick_map_8way;
// parse it
- std::string tempstr;
if (!m_joymap.parse(mapstring))
{
osd_printf_error("Invalid joystick map: %s\n", mapstring);
m_joymap.parse(joystick_map_8way);
}
else if (mapstring != joystick_map_8way)
- osd_printf_verbose("Input: Default joystick map = %s\n", m_joymap.to_string(tempstr));
+ osd_printf_verbose("Input: Default joystick map = %s\n", m_joymap.to_string().c_str());
}
}
@@ -1460,21 +1460,18 @@ input_code input_manager::code_from_itemid(input_item_id itemid) const
// friendly name
//-------------------------------------------------
-const char *input_manager::code_name(std::string &str, input_code code) const
+std::string input_manager::code_name(input_code code) const
{
- str.clear();
-
// if nothing there, return an empty string
input_device_item *item = item_from_code(code);
if (item == nullptr)
- return str.c_str();
+ return std::string();
// determine the devclass part
const char *devclass = (*devclass_string_table)[code.device_class()];
// determine the devindex part
- std::string devindex;
- strprintf(devindex, "%d", code.device_index() + 1);
+ std::string devindex = strformat("%d", code.device_index() + 1);
// if we're unifying all devices, don't display a number
if (!m_class[code.device_class()]->multi())
@@ -1500,7 +1497,7 @@ const char *input_manager::code_name(std::string &str, input_code code) const
devcode = "";
// concatenate the strings
- str.assign(devclass);
+ std::string str(devclass);
if (!devindex.empty())
str.append(" ").append(devindex);
if (devcode[0] != 0)
@@ -1510,7 +1507,7 @@ const char *input_manager::code_name(std::string &str, input_code code) const
// delete any leading spaces
strtrimspace(str);
- return str.c_str();
+ return str;
}
@@ -1518,14 +1515,13 @@ const char *input_manager::code_name(std::string &str, input_code code) const
// code_to_token - create a token for a given code
//-------------------------------------------------
-const char *input_manager::code_to_token(std::string &str, input_code code) const
+std::string input_manager::code_to_token(input_code code) const
{
// determine the devclass part
const char *devclass = (*devclass_token_table)[code.device_class()];
// determine the devindex part; keyboard 0 doesn't show an index
- std::string devindex;
- strprintf(devindex, "%d", code.device_index() + 1);
+ std::string devindex = strformat("%d", code.device_index() + 1);
if (code.device_class() == DEVICE_CLASS_KEYBOARD && code.device_index() == 0)
devindex.clear();
@@ -1542,7 +1538,7 @@ const char *input_manager::code_to_token(std::string &str, input_code code) cons
itemclass = (*itemclass_token_table)[code.item_class()];
// concatenate the strings
- str.assign(devclass);
+ std::string str(devclass);
if (!devindex.empty())
str.append("_").append(devindex);
if (devcode[0] != 0)
@@ -1551,7 +1547,7 @@ const char *input_manager::code_to_token(std::string &str, input_code code) cons
str.append("_").append(modifier);
if (itemclass[0] != 0)
str.append("_").append(itemclass);
- return str.c_str();
+ return str;
}
@@ -1925,17 +1921,16 @@ bool input_manager::seq_poll()
// sequence
//-------------------------------------------------
-const char *input_manager::seq_name(std::string &str, const input_seq &seq) const
+std::string input_manager::seq_name(const input_seq &seq) const
{
// make a copy of our sequence, removing any invalid bits
input_code clean_codes[sizeof(seq) / sizeof(input_code)];
int clean_index = 0;
- std::string codestr;
for (int codenum = 0; seq[codenum] != input_seq::end_code; codenum++)
{
// if this is a code item which is not valid, don't copy it and remove any preceding ORs/NOTs
input_code code = seq[codenum];
- if (!code.internal() && *(code_name(codestr, code)) == 0)
+ if (!code.internal() && code_name(code).empty())
{
while (clean_index > 0 && clean_codes[clean_index - 1].internal())
clean_index--;
@@ -1946,10 +1941,10 @@ const char *input_manager::seq_name(std::string &str, const input_seq &seq) cons
// special case: empty
if (clean_index == 0)
- return str.assign((seq.length() == 0) ? "None" : "n/a").c_str();
+ return std::string((seq.length() == 0) ? "None" : "n/a");
// start with an empty buffer
- str.clear();
+ std::string str;
// loop until we hit the end
for (int codenum = 0; codenum < clean_index; codenum++)
@@ -1967,9 +1962,9 @@ const char *input_manager::seq_name(std::string &str, const input_seq &seq) cons
// otherwise, assume it is an input code and ask the input system to generate it
else
- str.append(code_name(codestr, code));
+ str.append(code_name(code));
}
- return str.c_str();
+ return str;
}
@@ -1978,13 +1973,12 @@ const char *input_manager::seq_name(std::string &str, const input_seq &seq) cons
// a sequence
//-------------------------------------------------
-const char *input_manager::seq_to_tokens(std::string &str, const input_seq &seq) const
+std::string input_manager::seq_to_tokens(const input_seq &seq) const
{
// start with an empty buffer
- str.clear();
+ std::string str;
// loop until we hit the end
- std::string codestr;
for (int codenum = 0; seq[codenum] != input_seq::end_code; codenum++)
{
// append a space if not the first code
@@ -2002,9 +1996,9 @@ const char *input_manager::seq_to_tokens(std::string &str, const input_seq &seq)
// otherwise, assume it is an input code and ask the input system to generate it
else
- str.append(code_to_token(codestr, code));
+ str.append(code_to_token(code));
}
- return str.c_str();
+ return str;
}
@@ -2072,8 +2066,7 @@ bool input_manager::set_global_joystick_map(const char *mapstring)
if (!map.parse(mapstring))
return false;
- std::string tempstr;
- osd_printf_verbose("Input: Changing default joystick map = %s\n", map.to_string(tempstr));
+ osd_printf_verbose("Input: Changing default joystick map = %s\n", map.to_string().c_str());
// iterate over joysticks and set the map
for (int joynum = 0; joynum <= m_joystick_class.maxindex(); joynum++)
diff --git a/src/emu/input.h b/src/emu/input.h
index b0f006d3fd9..a14f08099c0 100644
--- a/src/emu/input.h
+++ b/src/emu/input.h
@@ -365,7 +365,7 @@ public:
bool parse(const char *mapstring);
// create a friendly string
- const char *to_string(std::string &str) const;
+ std::string to_string() const;
// update the state of a live map
UINT8 update(INT32 xaxisval, INT32 yaxisval);
@@ -654,8 +654,8 @@ public:
input_device *device_from_code(input_code code) const;
input_device_item *item_from_code(input_code code) const;
input_code code_from_itemid(input_item_id itemid) const;
- const char *code_name(std::string &str, input_code code) const;
- const char *code_to_token(std::string &str, input_code code) const;
+ std::string code_name(input_code code) const;
+ std::string code_to_token(input_code code) const;
input_code code_from_token(const char *_token);
// input sequence readers
@@ -668,8 +668,8 @@ public:
const input_seq &seq_poll_final() const { return m_poll_seq; }
// input sequence helpers
- const char *seq_name(std::string &str, const input_seq &seq) const;
- const char *seq_to_tokens(std::string &str, const input_seq &seq) const;
+ std::string seq_name(const input_seq &seq) const;
+ std::string seq_to_tokens(const input_seq &seq) const;
void seq_from_tokens(input_seq &seq, const char *_token);
// misc
diff --git a/src/emu/ioport.cpp b/src/emu/ioport.cpp
index 9bb43f0c4ec..282cc5c256c 100644
--- a/src/emu/ioport.cpp
+++ b/src/emu/ioport.cpp
@@ -897,8 +897,7 @@ void natural_keyboard::post(unicode_char ch)
if (LOG_NATURAL_KEYBOARD)
{
const keycode_map_entry *code = find_code(ch);
- std::string tempstr;
- machine().logerror("natural_keyboard::post(): code=%i (%s) field->name='%s'\n", int(ch), unicode_to_string(tempstr, ch), (code != nullptr && code->field[0] != nullptr) ? code->field[0]->name() : "<null>");
+ machine().logerror("natural_keyboard::post(): code=%i (%s) field->name='%s'\n", int(ch), unicode_to_string(ch).c_str(), (code != nullptr && code->field[0] != nullptr) ? code->field[0]->name() : "<null>");
}
// can we post this key in the queue directly?
@@ -1101,8 +1100,7 @@ void natural_keyboard::build_codes(ioport_manager &manager)
if (LOG_NATURAL_KEYBOARD)
{
- std::string tempstr;
- machine().logerror("natural_keyboard: code=%i (%s) port=%p field->name='%s'\n", int(code), unicode_to_string(tempstr, code), (void *)port, field->name());
+ machine().logerror("natural_keyboard: code=%i (%s) port=%p field->name='%s'\n", int(code), unicode_to_string(code).c_str(), (void *)port, field->name());
}
}
}
@@ -1234,9 +1232,9 @@ void natural_keyboard::timer(void *ptr, int param)
// logging and debugging
//-------------------------------------------------
-const char *natural_keyboard::unicode_to_string(std::string &buffer, unicode_char ch)
+std::string natural_keyboard::unicode_to_string(unicode_char ch)
{
- buffer.clear();
+ std::string buffer;
switch (ch)
{
// check some magic values
@@ -1256,15 +1254,15 @@ const char *natural_keyboard::unicode_to_string(std::string &buffer, unicode_cha
{
// try to obtain a codename with code_name(); this can result in an empty string
input_code code(DEVICE_CLASS_KEYBOARD, 0, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, input_item_id(ch - UCHAR_MAMEKEY_BEGIN));
- machine().input().code_name(buffer, code);
+ buffer = machine().input().code_name(code);
}
// did we fail to resolve? if so, we have a last resort
- if (buffer.length() == 0)
+ if (buffer.empty())
strprintf(buffer,"U+%04X", unsigned(ch));
break;
}
- return buffer.c_str();
+ return buffer;
}
@@ -1307,8 +1305,10 @@ void natural_keyboard::frame_update(ioport_port &port, ioport_value &digital)
// key_name - returns the name of a specific key
//-------------------------------------------------
-const char *natural_keyboard::key_name(std::string &str, unicode_char ch)
+std::string natural_keyboard::key_name(unicode_char ch) const
{
+ std::string str;
+
// attempt to get the string from the character info table
const char_info *ci = char_info::find(ch);
const char *result = (ci != nullptr) ? ci->name : nullptr;
@@ -1327,7 +1327,7 @@ const char *natural_keyboard::key_name(std::string &str, unicode_char ch)
// otherwise, opt for question marks
else
str.assign("???");
- return str.c_str();
+ return str;
}
@@ -1337,15 +1337,15 @@ const char *natural_keyboard::key_name(std::string &str, unicode_char ch)
std::string natural_keyboard::dump()
{
- std::string buffer, tempstr;
+ std::string buffer;
const size_t left_column_width = 24;
// loop through all codes
for (auto & code : m_keycode_map)
{
// describe the character code
-
- strcatprintf(buffer,"%08X (%s) ", code.ch, unicode_to_string(tempstr, code.ch));
+
+ strcatprintf(buffer,"%08X (%s) ", code.ch, unicode_to_string(code.ch).c_str());
// pad with spaces
while (buffer.length() < left_column_width)
@@ -1965,7 +1965,7 @@ void ioport_field::frame_update(ioport_value &result, bool mouse_down)
}
// skip locked-out coin inputs
- if (curstate && m_type >= IPT_COIN1 && m_type <= IPT_COIN12 && coin_lockout_get_state(machine(), m_type - IPT_COIN1))
+ if (curstate && m_type >= IPT_COIN1 && m_type <= IPT_COIN12 && machine().bookkeeping().coin_lockout_get_state(m_type - IPT_COIN1))
{
bool verbose = machine().options().verbose();
#ifdef MAME_DEBUG
@@ -2173,20 +2173,19 @@ ioport_field_live::ioport_field_live(ioport_field &field, analog_field *analog)
if (field.type_class() == INPUT_CLASS_KEYBOARD && field.specific_name() == nullptr)
{
// loop through each character on the field
- std::string tempstr;
for (int which = 0; ; which++)
{
unicode_char ch = field.keyboard_code(which);
if (ch == 0)
break;
- strcatprintf(name, "%-*s ", MAX(SPACE_COUNT - 1, 0), field.manager().natkeyboard().key_name(tempstr, ch));
+ strcatprintf(name, "%-*s ", MAX(SPACE_COUNT - 1, 0), field.manager().natkeyboard().key_name(ch).c_str());
}
// trim extra spaces
strtrimspace(name);
// special case
- if (name.length() == 0)
+ if (name.empty())
name.assign("Unnamed Key");
}
}
@@ -2535,7 +2534,7 @@ time_t ioport_manager::initialize()
m_natkeyboard.initialize();
// register callbacks for when we load configurations
- config_register(machine(), "input", config_saveload_delegate(FUNC(ioport_manager::load_config), this), config_saveload_delegate(FUNC(ioport_manager::save_config), this));
+ machine().configuration().config_register("input", config_saveload_delegate(FUNC(ioport_manager::load_config), this), config_saveload_delegate(FUNC(ioport_manager::save_config), this));
// calculate "has..." values
{
@@ -2900,7 +2899,7 @@ g_profiler.start(PROFILER_INPUT);
// perform mouse hit testing
INT32 mouse_target_x, mouse_target_y;
bool mouse_button;
- render_target *mouse_target = ui_input_find_mouse(machine(), &mouse_target_x, &mouse_target_y, &mouse_button);
+ render_target *mouse_target = machine().ui_input().find_mouse(&mouse_target_x, &mouse_target_y, &mouse_button);
// if the button is pressed, map the point and determine what was hit
ioport_field *mouse_field = nullptr;
@@ -2958,10 +2957,10 @@ INT32 ioport_manager::frame_interpolate(INT32 oldval, INT32 newval)
// data from the XML nodes
//-------------------------------------------------
-void ioport_manager::load_config(int config_type, xml_data_node *parentnode)
+void ioport_manager::load_config(config_type cfg_type, xml_data_node *parentnode)
{
// in the completion phase, we finish the initialization with the final ports
- if (config_type == CONFIG_TYPE_FINAL)
+ if (cfg_type == config_type::CONFIG_TYPE_FINAL)
{
m_safe_to_read = true;
frame_update();
@@ -2972,7 +2971,7 @@ void ioport_manager::load_config(int config_type, xml_data_node *parentnode)
return;
// iterate over all the remap nodes for controller configs only
- if (config_type == CONFIG_TYPE_CONTROLLER)
+ if (cfg_type == config_type::CONFIG_TYPE_CONTROLLER)
load_remap_table(parentnode);
// iterate over all the port nodes
@@ -3002,7 +3001,7 @@ void ioport_manager::load_config(int config_type, xml_data_node *parentnode)
}
// if we're loading default ports, apply to the defaults
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
load_default_config(portnode, type, player, newseq);
else
load_game_config(portnode, type, player, newseq);
@@ -3010,7 +3009,7 @@ void ioport_manager::load_config(int config_type, xml_data_node *parentnode)
// after applying the controller config, push that back into the backup, since that is
// what we will diff against
- if (config_type == CONFIG_TYPE_CONTROLLER)
+ if (cfg_type == config_type::CONFIG_TYPE_CONTROLLER)
for (input_type_entry *entry = m_typelist.first(); entry != nullptr; entry = entry->next())
for (input_seq_type seqtype = SEQ_TYPE_STANDARD; seqtype < SEQ_TYPE_TOTAL; ++seqtype)
entry->defseq(seqtype) = entry->seq(seqtype);
@@ -3149,14 +3148,14 @@ bool ioport_manager::load_game_config(xml_data_node *portnode, int type, int pla
// port configuration
//-------------------------------------------------
-void ioport_manager::save_config(int config_type, xml_data_node *parentnode)
+void ioport_manager::save_config(config_type cfg_type, xml_data_node *parentnode)
{
// if no parentnode, ignore
if (parentnode == nullptr)
return;
// default ports save differently
- if (config_type == CONFIG_TYPE_DEFAULT)
+ if (cfg_type == config_type::CONFIG_TYPE_DEFAULT)
save_default_inputs(parentnode);
else
save_game_inputs(parentnode);
@@ -3175,7 +3174,7 @@ void ioport_manager::save_sequence(xml_data_node *parentnode, input_seq_type typ
if (seq.length() == 0)
seqstring.assign("NONE");
else
- machine().input().seq_to_tokens(seqstring, seq);
+ seqstring = machine().input().seq_to_tokens(seq);
// add the new node
xml_data_node *seqnode = xml_add_child(parentnode, "newseq", seqstring.c_str());
@@ -3233,8 +3232,7 @@ void ioport_manager::save_default_inputs(xml_data_node *parentnode)
if (portnode != nullptr)
{
// add the port information and attributes
- std::string tempstr;
- xml_set_attribute(portnode, "type", input_type_to_token(tempstr, entry->type(), entry->player()));
+ xml_set_attribute(portnode, "type", input_type_to_token(entry->type(), entry->player()).c_str());
// add only the sequences that have changed from the defaults
for (input_seq_type type = SEQ_TYPE_STANDARD; type < SEQ_TYPE_TOTAL; ++type)
@@ -3288,9 +3286,8 @@ void ioport_manager::save_game_inputs(xml_data_node *parentnode)
if (portnode != nullptr)
{
// add the identifying information and attributes
- std::string tempstr;
xml_set_attribute(portnode, "tag", port->tag());
- xml_set_attribute(portnode, "type", input_type_to_token(tempstr, field->type(), field->player()));
+ xml_set_attribute(portnode, "type", input_type_to_token(field->type(), field->player()).c_str());
xml_set_attribute_int(portnode, "mask", field->mask());
xml_set_attribute_int(portnode, "defvalue", field->defvalue() & field->mask());
@@ -4399,15 +4396,15 @@ ioport_type ioport_manager::token_to_input_type(const char *string, int &player)
// type and player to a string token
//-------------------------------------------------
-const char *ioport_manager::input_type_to_token(std::string &str, ioport_type type, int player)
+std::string ioport_manager::input_type_to_token(ioport_type type, int player)
{
// look up the port and return the token
input_type_entry *entry = m_type_to_entry[type][player];
if (entry != nullptr)
- return str.assign(entry->token()).c_str();
+ return std::string(entry->token());
// if that fails, carry on
- return strformat(str, "TYPE_OTHER(%d,%d)", type, player).c_str();
+ return strformat("TYPE_OTHER(%d,%d)", type, player);
}
diff --git a/src/emu/ioport.h b/src/emu/ioport.h
index ddb653b5926..89bd9e6964e 100644
--- a/src/emu/ioport.h
+++ b/src/emu/ioport.h
@@ -830,7 +830,7 @@ public:
void post_coded(const char *text, size_t length = 0, const attotime &rate = attotime::zero);
void frame_update(ioport_port &port, ioport_value &digital);
- const char *key_name(std::string &str, unicode_char ch);
+ std::string key_name(unicode_char ch) const;
// debugging
std::string dump();
@@ -850,7 +850,7 @@ private:
attotime choose_delay(unicode_char ch);
void internal_post(unicode_char ch);
void timer(void *ptr, int param);
- const char *unicode_to_string(std::string &buffer, unicode_char ch);
+ std::string unicode_to_string(unicode_char ch);
const keycode_map_entry *find_code(unicode_char ch) const;
// internal state
@@ -1353,6 +1353,8 @@ struct ioport_port_live
};
+enum class config_type;
+
// ======================> ioport_manager
// private input port state
@@ -1396,7 +1398,7 @@ public:
bool has_keyboard() const;
INT32 frame_interpolate(INT32 oldval, INT32 newval);
ioport_type token_to_input_type(const char *string, int &player) const;
- const char *input_type_to_token(std::string &str, ioport_type type, int player);
+ std::string input_type_to_token(ioport_type type, int player);
private:
// internal helpers
@@ -1411,12 +1413,12 @@ private:
input_seq_type token_to_seq_type(const char *string);
void update_defaults();
- void load_config(int config_type, xml_data_node *parentnode);
+ void load_config(config_type cfg_type, xml_data_node *parentnode);
void load_remap_table(xml_data_node *parentnode);
bool load_default_config(xml_data_node *portnode, int type, int player, const input_seq *newseq);
bool load_game_config(xml_data_node *portnode, int type, int player, const input_seq *newseq);
- void save_config(int config_type, xml_data_node *parentnode);
+ void save_config(config_type cfg_type, xml_data_node *parentnode);
void save_sequence(xml_data_node *parentnode, input_seq_type type, ioport_type porttype, const input_seq &seq);
bool save_this_input_field_type(ioport_type type);
void save_default_inputs(xml_data_node *parentnode);
diff --git a/src/emu/luaengine.cpp b/src/emu/luaengine.cpp
index 0aa4b45deb1..733c99537c7 100644
--- a/src/emu/luaengine.cpp
+++ b/src/emu/luaengine.cpp
@@ -9,6 +9,7 @@
***************************************************************************/
#include <limits>
+#include <thread>
#include "lua.hpp"
#include "luabridge/Source/LuaBridge/LuaBridge.h"
#include <signal.h>
@@ -330,7 +331,7 @@ void lua_engine::emu_hook_output(lua_State *L)
hook_output_cb.set(L, 1);
if (!output_notifier_set) {
- output_set_notifier(nullptr, s_output_notifier, this);
+ machine().output().set_notifier(nullptr, s_output_notifier, this);
output_notifier_set = true;
}
}
@@ -356,7 +357,7 @@ void lua_engine::emu_set_hook(lua_State *L)
if (strcmp(hookname, "output") == 0) {
hook_output_cb.set(L, 1);
if (!output_notifier_set) {
- output_set_notifier(nullptr, s_output_notifier, this);
+ machine().output().set_notifier(nullptr, s_output_notifier, this);
output_notifier_set = true;
}
} else if (strcmp(hookname, "frame") == 0) {
@@ -812,7 +813,7 @@ osd_lock *lock;
void lua_engine::serve_lua()
{
osd_sleep(osd_ticks_per_second() / 1000 * 50);
- printf("%s v%s - %s\n%s\n%s\n\n", emulator_info::get_applongname(),build_version,emulator_info::get_fulllongname(),emulator_info::get_copyright_info(),LUA_COPYRIGHT);
+ printf("%s v%s\n%s\n%s\n\n", emulator_info::get_appname(),build_version,emulator_info::get_copyright_info(),LUA_COPYRIGHT);
fflush(stdout);
char buff[LUA_MAXINPUT];
std::string oldbuff;
@@ -860,14 +861,12 @@ void lua_engine::serve_lua()
} 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;
}
-*/
//-------------------------------------------------
// lua_engine - constructor
@@ -1024,6 +1023,8 @@ void lua_engine::initialize()
void lua_engine::start_console()
{
+ std::thread th(::serve_lua, this);
+ th.detach();
}
//-------------------------------------------------
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp
index c2f0a2c85e3..a80a9c1aa74 100644
--- a/src/emu/machine.cpp
+++ b/src/emu/machine.cpp
@@ -118,10 +118,7 @@ running_machine::running_machine(const machine_config &_config, machine_manager
: firstcpu(nullptr),
primary_screen(nullptr),
debug_flags(0),
- romload_data(nullptr),
- ui_input_data(nullptr),
debugcpu_data(nullptr),
- generic_machine_data(nullptr),
m_config(_config),
m_system(_config.gamedrv()),
m_manager(manager),
@@ -217,15 +214,18 @@ TIMER_CALLBACK_MEMBER(running_machine::autoboot_callback)
void running_machine::start()
{
// initialize basic can't-fail systems here
- config_init(*this);
+ m_configuration = std::make_unique<configuration_manager>(*this);
m_input = std::make_unique<input_manager>(*this);
- output_init(*this);
+ m_output = std::make_unique<output_manager>(*this);
m_render = std::make_unique<render_manager>(*this);
- generic_machine_init(*this);
+ m_bookkeeping = std::make_unique<bookkeeping_manager>(*this);
// allocate a soft_reset timer
m_soft_reset_timer = m_scheduler.timer_alloc(timer_expired_delegate(FUNC(running_machine::soft_reset), this));
+ // intialize UI input
+ m_ui_input = make_unique_clear<ui_input_manager>(*this);
+
// init the osd layer
m_manager.osd().init(*this);
@@ -243,15 +243,12 @@ void running_machine::start()
if (newbase != 0)
m_base_time = newbase;
- // intialize UI input
- ui_input_init(*this);
-
// initialize the streams engine before the sound devices start
m_sound = std::make_unique<sound_manager>(*this);
// first load ROMs, then populate memory, and finally initialize CPUs
// these operations must proceed in this order
- rom_init(*this);
+ m_rom_load = make_unique_clear<rom_load_manager>(*this);
m_memory.initialize();
// initialize the watchdog
@@ -266,14 +263,18 @@ void running_machine::start()
save().save_item(NAME(m_rand_seed));
// initialize image devices
- image_init(*this);
+ m_image = std::make_unique<image_manager>(*this);
m_tilemap = std::make_unique<tilemap_manager>(*this);
- crosshair_init(*this);
- network_init(*this);
+ m_crosshair = make_unique_clear<crosshair_manager>(*this);
+ m_network = std::make_unique<network_manager>(*this);
// initialize the debugger
if ((debug_flags & DEBUG_FLAG_ENABLED) != 0)
- debugger_init(*this);
+ {
+ m_debug_view = std::make_unique<debug_view_manager>(*this);
+ m_debugger = std::make_unique<debugger_manager>(*this);
+ m_debugger->initialize();
+ }
m_render->resolve_tags();
@@ -335,7 +336,7 @@ int running_machine::run(bool firstrun)
start();
// load the configuration settings and NVRAM
- config_load_settings(*this);
+ m_configuration->load_settings();
// disallow save state registrations starting here.
// Don't do it earlier, config load can create network
@@ -390,7 +391,7 @@ int running_machine::run(bool firstrun)
// save the NVRAM and configuration
sound().ui_mute(true);
nvram_save();
- config_save_settings(*this);
+ m_configuration->save_settings();
}
catch (emu_fatalerror &fatal)
{
@@ -495,7 +496,7 @@ void running_machine::schedule_soft_reset()
// software
//-------------------------------------------------
-std::string running_machine::get_statename(const char *option)
+std::string running_machine::get_statename(const char *option) const
{
std::string statename_str("");
if (option == nullptr || option[0] == 0)
@@ -1173,42 +1174,35 @@ void running_machine::postload_all_devices()
NVRAM MANAGEMENT
***************************************************************************/
-const char *running_machine::image_parent_basename(device_t *device)
-{
- device_t *dev = device;
- while(dev != &root_device())
- {
- device_image_interface *intf = nullptr;
- if (dev!=nullptr && dev->interface(intf))
- {
- return intf->basename_noext();
- }
- dev = dev->owner();
- }
- return nullptr;
-}
-
/*-------------------------------------------------
nvram_filename - returns filename of system's
NVRAM depending of selected BIOS
-------------------------------------------------*/
-std::string &running_machine::nvram_filename(std::string &result, device_t &device)
+std::string running_machine::nvram_filename(device_t &device) const
{
// start with either basename or basename_biosnum
- result.assign(basename());
+ std::string result(basename());
if (root_device().system_bios() != 0 && root_device().default_bios() != root_device().system_bios())
strcatprintf(result, "_%d", root_device().system_bios() - 1);
// device-based NVRAM gets its own name in a subdirectory
- if (&device != &root_device())
+ if (device.owner() != nullptr)
{
// add per software nvrams into one folder
- const char *software = image_parent_basename(&device);
- if (software!=nullptr && strlen(software)>0)
+ const char *software = nullptr;
+ for (device_t *dev = &device; dev->owner() != nullptr; dev = dev->owner())
{
- result.append(PATH_SEPARATOR).append(software);
+ device_image_interface *intf;
+ if (dev->interface(intf))
+ {
+ software = intf->basename_noext();
+ break;
+ }
}
+ if (software != nullptr && *software != '\0')
+ result.append(PATH_SEPARATOR).append(software);
+
std::string tag(device.tag());
tag.erase(0, 1);
strreplacechr(tag,':', '_');
@@ -1226,9 +1220,8 @@ void running_machine::nvram_load()
nvram_interface_iterator iter(root_device());
for (device_nvram_interface *nvram = iter.first(); nvram != nullptr; nvram = iter.next())
{
- std::string filename;
emu_file file(options().nvram_directory(), OPEN_FLAG_READ);
- if (file.open(nvram_filename(filename, nvram->device()).c_str()) == FILERR_NONE)
+ if (file.open(nvram_filename(nvram->device()).c_str()) == FILERR_NONE)
{
nvram->nvram_load(file);
file.close();
@@ -1248,9 +1241,8 @@ void running_machine::nvram_save()
nvram_interface_iterator iter(root_device());
for (device_nvram_interface *nvram = iter.first(); nvram != nullptr; nvram = iter.next())
{
- std::string filename;
emu_file file(options().nvram_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
- if (file.open(nvram_filename(filename, nvram->device()).c_str()) == FILERR_NONE)
+ if (file.open(nvram_filename(nvram->device()).c_str()) == FILERR_NONE)
{
nvram->nvram_save(file);
file.close();
diff --git a/src/emu/machine.h b/src/emu/machine.h
index 755e8466384..24b0840c93d 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -73,13 +73,6 @@ const int DEBUG_FLAG_OSD_ENABLED = 0x00001000; // The OSD debugger is e
#define auto_alloc_array_clear(m, t, c) pool_alloc_array_clear(static_cast<running_machine &>(m).respool(), t, c)
#define auto_free(m, v) pool_free(static_cast<running_machine &>(m).respool(), v)
-#define auto_bitmap_ind8_alloc(m, w, h) auto_alloc(m, bitmap_ind8(w, h))
-#define auto_bitmap_ind16_alloc(m, w, h) auto_alloc(m, bitmap_ind16(w, h))
-#define auto_bitmap_ind32_alloc(m, w, h) auto_alloc(m, bitmap_ind32(w, h))
-#define auto_bitmap_rgb32_alloc(m, w, h) auto_alloc(m, bitmap_rgb32(w, h))
-
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -92,12 +85,19 @@ class video_manager;
class ui_manager;
class tilemap_manager;
class debug_view_manager;
+class network_manager;
+class bookkeeping_manager;
+class configuration_manager;
+class output_manager;
+class ui_input_manager;
+class crosshair_manager;
+class image_manager;
+class rom_load_manager;
+class debugger_manager;
class osd_interface;
+enum class config_type;
-struct romload_private;
-struct ui_input_private;
struct debugcpu_private;
-struct generic_machine_private;
// ======================> system_time
@@ -140,7 +140,6 @@ class running_machine
{
DISABLE_COPYING(running_machine);
- friend void debugger_init(running_machine &machine);
friend class sound_manager;
typedef void (*logerror_callback)(const running_machine &machine, const char *string);
@@ -170,9 +169,18 @@ public:
input_manager &input() const { assert(m_input != nullptr); return *m_input; }
sound_manager &sound() const { assert(m_sound != nullptr); return *m_sound; }
video_manager &video() const { assert(m_video != nullptr); return *m_video; }
+ network_manager &network() const { assert(m_network != nullptr); return *m_network; }
+ bookkeeping_manager &bookkeeping() const { assert(m_network != nullptr); return *m_bookkeeping; }
+ configuration_manager &configuration() const { assert(m_configuration != nullptr); return *m_configuration; }
+ output_manager &output() const { assert(m_output != nullptr); return *m_output; }
ui_manager &ui() const { assert(m_ui != nullptr); return *m_ui; }
+ ui_input_manager &ui_input() const { assert(m_ui_input != nullptr); return *m_ui_input; }
+ crosshair_manager &crosshair() const { assert(m_crosshair != nullptr); return *m_crosshair; }
+ image_manager &image() const { assert(m_image != nullptr); return *m_image; }
+ rom_load_manager &rom_load() const { assert(m_rom_load != nullptr); return *m_rom_load; }
tilemap_manager &tilemap() const { assert(m_tilemap != nullptr); return *m_tilemap; }
debug_view_manager &debug_view() const { assert(m_debug_view != nullptr); return *m_debug_view; }
+ debugger_manager &debugger() const { assert(m_debugger != nullptr); return *m_debugger; }
driver_device *driver_data() const { return &downcast<driver_device &>(root_device()); }
template<class _DriverClass> _DriverClass *driver_data() const { return &downcast<_DriverClass &>(root_device()); }
machine_phase phase() const { return m_current_phase; }
@@ -221,7 +229,7 @@ public:
// watchdog control
void watchdog_reset();
void watchdog_enable(bool enable = true);
- INT32 get_vblank_watchdog_counter() { return m_watchdog_counter; }
+ INT32 get_vblank_watchdog_counter() const { return m_watchdog_counter; }
// misc
void popmessage(const char *format, ...) const;
@@ -242,22 +250,18 @@ public:
UINT32 debug_flags; // the current debug flags
// internal core information
- romload_private * romload_data; // internal data from romload.c
- ui_input_private * ui_input_data; // internal data from uiinput.c
debugcpu_private * debugcpu_data; // internal data from debugcpu.c
- generic_machine_private *generic_machine_data; // internal data from machine/generic.c
private:
// internal helpers
void start();
void set_saveload_filename(const char *filename);
- std::string get_statename(const char *statename_opt);
+ std::string get_statename(const char *statename_opt) const;
void handle_saveload();
void soft_reset(void *ptr = nullptr, INT32 param = 0);
void watchdog_fired(void *ptr = nullptr, INT32 param = 0);
void watchdog_vblank(screen_device &screen, bool vblank_state);
- const char *image_parent_basename(device_t *device);
- std::string &nvram_filename(std::string &result, device_t &device);
+ std::string nvram_filename(device_t &device) const;
void nvram_load();
void nvram_save();
@@ -278,14 +282,23 @@ private:
const game_driver & m_system; // reference to the definition of the game machine
machine_manager & m_manager; // reference to machine manager system
// managers
- std::unique_ptr<cheat_manager> m_cheat; // internal data from cheat.c
- std::unique_ptr<render_manager> m_render; // internal data from render.c
- std::unique_ptr<input_manager> m_input; // internal data from input.c
- std::unique_ptr<sound_manager> m_sound; // internal data from sound.c
- std::unique_ptr<video_manager> m_video; // internal data from video.c
- std::unique_ptr<ui_manager> m_ui; // internal data from ui.c
- std::unique_ptr<tilemap_manager> m_tilemap; // internal data from tilemap.c
- std::unique_ptr<debug_view_manager> m_debug_view; // internal data from debugvw.c
+ std::unique_ptr<cheat_manager> m_cheat; // internal data from cheat.cpp
+ std::unique_ptr<render_manager> m_render; // internal data from render.cpp
+ std::unique_ptr<input_manager> m_input; // internal data from input.cpp
+ std::unique_ptr<sound_manager> m_sound; // internal data from sound.cpp
+ std::unique_ptr<video_manager> m_video; // internal data from video.cpp
+ std::unique_ptr<ui_manager> m_ui; // internal data from ui.cpp
+ std::unique_ptr<ui_input_manager> m_ui_input; // internal data from uiinput.cpp
+ std::unique_ptr<tilemap_manager> m_tilemap; // internal data from tilemap.cpp
+ std::unique_ptr<debug_view_manager> m_debug_view; // internal data from debugvw.cpp
+ 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
// system state
machine_phase m_current_phase; // current execution phase
diff --git a/src/emu/machine/generic.cpp b/src/emu/machine/generic.cpp
deleted file mode 100644
index 2f4b94fb718..00000000000
--- a/src/emu/machine/generic.cpp
+++ /dev/null
@@ -1,289 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria
-/*********************************************************************
-
- generic.c
-
- Generic simple machine functions.
-
-*********************************************************************/
-
-#include "emu.h"
-#include "config.h"
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-static void counters_load(running_machine &machine, int config_type, xml_data_node *parentnode);
-static void counters_save(running_machine &machine, int config_type, xml_data_node *parentnode);
-
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-struct generic_machine_private
-{
- /* tickets and coin counters */
- UINT32 dispensed_tickets;
- UINT32 coin_count[COIN_COUNTERS];
- UINT32 coinlockedout[COIN_COUNTERS];
- UINT32 lastcoin[COIN_COUNTERS];
-};
-
-
-
-/***************************************************************************
- INITIALIZATION
-***************************************************************************/
-
-/*-------------------------------------------------
- generic_machine_init - initialize globals and
- register for save states
--------------------------------------------------*/
-
-void generic_machine_init(running_machine &machine)
-{
- generic_machine_private *state;
- int counternum;
-
- /* allocate our state */
- machine.generic_machine_data = auto_alloc_clear(machine, generic_machine_private);
- state = machine.generic_machine_data;
-
- /* reset coin counters */
- for (counternum = 0; counternum < COIN_COUNTERS; counternum++)
- {
- state->lastcoin[counternum] = 0;
- state->coinlockedout[counternum] = 0;
- }
-
- /* register coin save state */
- machine.save().save_item(NAME(state->coin_count));
- machine.save().save_item(NAME(state->coinlockedout));
- machine.save().save_item(NAME(state->lastcoin));
-
- /* register for configuration */
- config_register(machine, "counters", config_saveload_delegate(FUNC(counters_load), &machine), config_saveload_delegate(FUNC(counters_save), &machine));
-}
-
-
-
-/***************************************************************************
- TICKETS
-***************************************************************************/
-
-/*-------------------------------------------------
- get_dispensed_tickets - return the number of
- tickets dispensed
--------------------------------------------------*/
-
-int get_dispensed_tickets(running_machine &machine)
-{
- generic_machine_private *state = machine.generic_machine_data;
- return state->dispensed_tickets;
-}
-
-
-/*-------------------------------------------------
- increment_dispensed_tickets - increment the
- number of dispensed tickets
--------------------------------------------------*/
-
-void increment_dispensed_tickets(running_machine &machine, int delta)
-{
- generic_machine_private *state = machine.generic_machine_data;
- state->dispensed_tickets += delta;
-}
-
-
-
-/***************************************************************************
- COIN COUNTERS
-***************************************************************************/
-
-/*-------------------------------------------------
- counters_load - load the state of the counters
- and tickets
--------------------------------------------------*/
-
-static void counters_load(running_machine &machine, int config_type, xml_data_node *parentnode)
-{
- generic_machine_private *state = machine.generic_machine_data;
- xml_data_node *coinnode, *ticketnode;
-
- /* on init, reset the counters */
- if (config_type == CONFIG_TYPE_INIT)
- {
- memset(state->coin_count, 0, sizeof(state->coin_count));
- state->dispensed_tickets = 0;
- }
-
- /* only care about game-specific data */
- if (config_type != CONFIG_TYPE_GAME)
- return;
-
- /* might not have any data */
- if (parentnode == nullptr)
- return;
-
- /* iterate over coins nodes */
- for (coinnode = xml_get_sibling(parentnode->child, "coins"); coinnode; coinnode = xml_get_sibling(coinnode->next, "coins"))
- {
- int index = xml_get_attribute_int(coinnode, "index", -1);
- if (index >= 0 && index < COIN_COUNTERS)
- state->coin_count[index] = xml_get_attribute_int(coinnode, "number", 0);
- }
-
- /* get the single tickets node */
- ticketnode = xml_get_sibling(parentnode->child, "tickets");
- if (ticketnode != nullptr)
- state->dispensed_tickets = xml_get_attribute_int(ticketnode, "number", 0);
-}
-
-
-/*-------------------------------------------------
- counters_save - save the state of the counters
- and tickets
--------------------------------------------------*/
-
-static void counters_save(running_machine &machine, int config_type, xml_data_node *parentnode)
-{
- generic_machine_private *state = machine.generic_machine_data;
- int i;
-
- /* only care about game-specific data */
- if (config_type != CONFIG_TYPE_GAME)
- return;
-
- /* iterate over coin counters */
- for (i = 0; i < COIN_COUNTERS; i++)
- if (state->coin_count[i] != 0)
- {
- xml_data_node *coinnode = xml_add_child(parentnode, "coins", nullptr);
- if (coinnode != nullptr)
- {
- xml_set_attribute_int(coinnode, "index", i);
- xml_set_attribute_int(coinnode, "number", state->coin_count[i]);
- }
- }
-
- /* output tickets */
- if (state->dispensed_tickets != 0)
- {
- xml_data_node *tickets = xml_add_child(parentnode, "tickets", nullptr);
- if (tickets != nullptr)
- xml_set_attribute_int(tickets, "number", state->dispensed_tickets);
- }
-}
-
-
-/*-------------------------------------------------
- coin_counter_w - sets input for coin counter
--------------------------------------------------*/
-
-void coin_counter_w(running_machine &machine, int num, int on)
-{
- generic_machine_private *state = machine.generic_machine_data;
- if (num >= ARRAY_LENGTH(state->coin_count))
- return;
-
- /* Count it only if the data has changed from 0 to non-zero */
- if (on && (state->lastcoin[num] == 0))
- state->coin_count[num]++;
- state->lastcoin[num] = on;
-}
-
-
-/*-------------------------------------------------
- coin_counter_get_count - return the coin count
- for a given coin
--------------------------------------------------*/
-
-int coin_counter_get_count(running_machine &machine, int num)
-{
- generic_machine_private *state = machine.generic_machine_data;
- if (num >= ARRAY_LENGTH(state->coin_count))
- return 0;
- return state->coin_count[num];
-}
-
-
-/*-------------------------------------------------
- coin_lockout_w - locks out one coin input
--------------------------------------------------*/
-
-void coin_lockout_w(running_machine &machine, int num,int on)
-{
- generic_machine_private *state = machine.generic_machine_data;
- if (num >= ARRAY_LENGTH(state->coinlockedout))
- return;
- state->coinlockedout[num] = on;
-}
-
-
-/*-------------------------------------------------
- coin_lockout_get_state - return current lockout
- state for a particular coin
--------------------------------------------------*/
-
-int coin_lockout_get_state(running_machine &machine, int num)
-{
- generic_machine_private *state = machine.generic_machine_data;
- if (num >= ARRAY_LENGTH(state->coinlockedout))
- return FALSE;
- return state->coinlockedout[num];
-}
-
-
-/*-------------------------------------------------
- coin_lockout_global_w - locks out all the coin
- inputs
--------------------------------------------------*/
-
-void coin_lockout_global_w(running_machine &machine, int on)
-{
- generic_machine_private *state = machine.generic_machine_data;
- int i;
-
- for (i = 0; i < ARRAY_LENGTH(state->coinlockedout); i++)
- coin_lockout_w(machine, i, on);
-}
-
-
-/***************************************************************************
- LED CODE
-***************************************************************************/
-
-/*-------------------------------------------------
- set_led_status - set the state of a given LED
--------------------------------------------------*/
-
-void set_led_status(running_machine &machine, int num, int on)
-{
- output_set_led_value(num, on);
-}
-
-
-
-
-/***************************************************************************
- PORT READING HELPERS
-***************************************************************************/
-
-/*-------------------------------------------------
- custom_port_read - act like input_port_read
- but it is a custom port, it is useful for
- e.g. input ports which expect the same port
- repeated both in the upper and lower half
--------------------------------------------------*/
-
-CUSTOM_INPUT_MEMBER( driver_device::custom_port_read )
-{
- const char *tag = (const char *)param;
- return ioport(tag)->read();
-}
diff --git a/src/emu/machine/generic.h b/src/emu/machine/generic.h
deleted file mode 100644
index b724a598a9d..00000000000
--- a/src/emu/machine/generic.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria
-/*********************************************************************
-
- generic.h
-
- Generic simple machine functions.
-
-*********************************************************************/
-
-#pragma once
-
-#ifndef __MACHINE_GENERIC_H__
-#define __MACHINE_GENERIC_H__
-
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-/* total # of coin counters */
-#define COIN_COUNTERS 8
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-
-/* ----- initialization ----- */
-
-/* set up all the common systems */
-void generic_machine_init(running_machine &machine);
-
-
-
-/* ----- tickets ----- */
-
-/* return the number of tickets dispensed */
-int get_dispensed_tickets(running_machine &machine);
-
-/* increment the number of dispensed tickets */
-void increment_dispensed_tickets(running_machine &machine, int delta);
-
-
-
-/* ----- coin counters ----- */
-
-/* write to a particular coin counter (clocks on active high edge) */
-void coin_counter_w(running_machine &machine, int num, int on);
-
-/* return the coin count for a given coin */
-int coin_counter_get_count(running_machine &machine, int num);
-
-/* enable/disable coin lockout for a particular coin */
-void coin_lockout_w(running_machine &machine, int num, int on);
-
-/* return current lockout state for a particular coin */
-int coin_lockout_get_state(running_machine &machine, int num);
-
-/* enable/disable global coin lockout */
-void coin_lockout_global_w(running_machine &machine, int on);
-
-/* ----- miscellaneous bits & pieces ----- */
-
-/* set the status of an LED */
-void set_led_status(running_machine &machine, int num, int value);
-
-#endif /* __MACHINE_GENERIC_H__ */
diff --git a/src/emu/mame.cpp b/src/emu/mame.cpp
index f3ca9059a8d..e18e41329ad 100644
--- a/src/emu/mame.cpp
+++ b/src/emu/mame.cpp
@@ -167,6 +167,9 @@ int machine_manager::execute()
int error = MAMERR_NONE;
m_lua->initialize();
+ if (m_options.console()) {
+ m_lua->start_console();
+ }
while (error == MAMERR_NONE && !exit_pending)
{
m_new_driver_pending = nullptr;
@@ -194,6 +197,7 @@ int machine_manager::execute()
if (system != nullptr)
{
validity_checker valid(m_options);
+ valid.set_verbose(false);
valid.check_shared_source(*system);
}
diff --git a/src/emu/mame.h b/src/emu/mame.h
index 88be67e3eb7..eb2f510c114 100644
--- a/src/emu/mame.h
+++ b/src/emu/mame.h
@@ -55,8 +55,6 @@ public:
static const char * get_appname();
static const char * get_appname_lower();
static const char * get_configname();
- static const char * get_applongname();
- static const char * get_fulllongname();
static const char * get_capgamenoun();
static const char * get_capstartgamenoun();
static const char * get_gamenoun();
diff --git a/src/emu/mconfig.cpp b/src/emu/mconfig.cpp
index 1d3b5a2effd..6c052d7ce23 100644
--- a/src/emu/mconfig.cpp
+++ b/src/emu/mconfig.cpp
@@ -39,15 +39,16 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options)
for (device_slot_interface *slot = slotiter.first(); slot != nullptr; slot = slotiter.next())
{
device_t &owner = slot->device();
- std::string temp;
- const char *selval = options.main_value(temp, owner.tag()+1);
+ std::string selval;
bool isdefault = (options.priority(owner.tag()+1)==OPTION_PRIORITY_DEFAULT);
- if (!is_selected_driver || !options.exists(owner.tag()+1))
- selval = slot->default_option();
+ if (is_selected_driver && options.exists(owner.tag()+1))
+ selval = options.main_value(owner.tag()+1);
+ else if (slot->default_option() != nullptr)
+ selval.assign(slot->default_option());
- if (selval != nullptr && *selval != 0)
+ if (!selval.empty())
{
- const device_slot_option *option = slot->option(selval);
+ const device_slot_option *option = slot->option(selval.c_str());
if (option && (isdefault || option->selectable()))
{
@@ -66,7 +67,7 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options)
device_t::static_set_input_default(*new_dev, input_device_defaults);
}
else
- throw emu_fatalerror("Unknown slot option '%s' in slot '%s'", selval, owner.tag()+1);
+ throw emu_fatalerror("Unknown slot option '%s' in slot '%s'", selval.c_str(), owner.tag()+1);
}
}
diff --git a/src/emu/memory.h b/src/emu/memory.h
index e04ac52f1b4..3b46ac33449 100644
--- a/src/emu/memory.h
+++ b/src/emu/memory.h
@@ -641,9 +641,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 +680,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
diff --git a/src/emu/network.cpp b/src/emu/network.cpp
index 5bcd8173618..0f5db2fd703 100644
--- a/src/emu/network.cpp
+++ b/src/emu/network.cpp
@@ -13,14 +13,29 @@
#include "config.h"
#include "xmlfile.h"
-/***************************************************************************
- INITIALIZATION HELPERS
-***************************************************************************/
+//**************************************************************************
+// NETWORK MANAGER
+//**************************************************************************
+
+//-------------------------------------------------
+// network_manager - constructor
+//-------------------------------------------------
+
+network_manager::network_manager(running_machine &machine)
+ : m_machine(machine)
+{
+ machine.configuration().config_register("network", config_saveload_delegate(FUNC(network_manager::config_load), this), config_saveload_delegate(FUNC(network_manager::config_save), this));
+}
+
+//-------------------------------------------------
+// config_load - read and apply data from the
+// configuration file
+//-------------------------------------------------
-static void network_load(running_machine &machine, int config_type, xml_data_node *parentnode)
+void network_manager::config_load(config_type cfg_type, xml_data_node *parentnode)
{
xml_data_node *node;
- if ((config_type == CONFIG_TYPE_GAME) && (parentnode != nullptr))
+ if ((cfg_type == config_type::CONFIG_TYPE_GAME) && (parentnode != nullptr))
{
for (node = xml_get_sibling(parentnode->child, "device"); node; node = xml_get_sibling(node->next, "device"))
{
@@ -28,18 +43,18 @@ static void network_load(running_machine &machine, int config_type, xml_data_nod
if ((tag != nullptr) && (tag[0] != '\0'))
{
- network_interface_iterator iter(machine.root_device());
+ network_interface_iterator iter(machine().root_device());
for (device_network_interface *network = iter.first(); network != nullptr; network = iter.next())
{
if (!strcmp(tag, network->device().tag())) {
int interface = xml_get_attribute_int(node, "interface", 0);
network->set_interface(interface);
const char *mac_addr = xml_get_attribute_string(node, "mac", nullptr);
- if (mac_addr != nullptr && strlen(mac_addr)==17) {
+ if (mac_addr != nullptr && strlen(mac_addr) == 17) {
char mac[7];
unsigned int mac_num[6];
- sscanf (mac_addr,"%02x:%02x:%02x:%02x:%02x:%02x",&mac_num[0],&mac_num[1],&mac_num[2],&mac_num[3],&mac_num[4],&mac_num[5]);
- for (int i=0;i<6;i++) mac[i]=mac_num[i];
+ sscanf(mac_addr, "%02x:%02x:%02x:%02x:%02x:%02x", &mac_num[0], &mac_num[1], &mac_num[2], &mac_num[3], &mac_num[4], &mac_num[5]);
+ for (int i = 0; i<6; i++) mac[i] = mac_num[i];
network->set_mac(mac);
}
@@ -49,15 +64,19 @@ static void network_load(running_machine &machine, int config_type, xml_data_nod
}
}
}
+//-------------------------------------------------
+// config_save - save data to the configuration
+// file
+//-------------------------------------------------
-static void network_save(running_machine &machine, int config_type, xml_data_node *parentnode)
+void network_manager::config_save(config_type cfg_type, xml_data_node *parentnode)
{
xml_data_node *node;
/* only care about game-specific data */
- if (config_type == CONFIG_TYPE_GAME)
+ if (cfg_type == config_type::CONFIG_TYPE_GAME)
{
- network_interface_iterator iter(machine.root_device());
+ network_interface_iterator iter(machine().root_device());
for (device_network_interface *network = iter.first(); network != nullptr; network = iter.next())
{
node = xml_add_child(parentnode, "device", nullptr);
@@ -66,23 +85,10 @@ static void network_save(running_machine &machine, int config_type, xml_data_nod
xml_set_attribute(node, "tag", network->device().tag());
xml_set_attribute_int(node, "interface", network->get_interface());
const char *mac = network->get_mac();
- char mac_addr[6*3];
- sprintf(mac_addr,"%02x:%02x:%02x:%02x:%02x:%02x",(UINT8)mac[0],(UINT8)mac[1],(UINT8)mac[2],(UINT8)mac[3],(UINT8)mac[4],(UINT8)mac[5]);
+ char mac_addr[6 * 3];
+ sprintf(mac_addr, "%02x:%02x:%02x:%02x:%02x:%02x", (UINT8)mac[0], (UINT8)mac[1], (UINT8)mac[2], (UINT8)mac[3], (UINT8)mac[4], (UINT8)mac[5]);
xml_set_attribute(node, "mac", mac_addr);
}
}
}
}
-
-/***************************************************************************
- INITIALIZATION
-***************************************************************************/
-
-/*-------------------------------------------------
- network_init - start up the network system
--------------------------------------------------*/
-
-void network_init(running_machine &machine)
-{
- config_register(machine, "network", config_saveload_delegate(FUNC(network_load), &machine), config_saveload_delegate(FUNC(network_save), &machine));
-}
diff --git a/src/emu/network.h b/src/emu/network.h
index fe1fec01016..41ed328c37d 100644
--- a/src/emu/network.h
+++ b/src/emu/network.h
@@ -12,6 +12,22 @@
#ifndef __NETWORK_H__
#define __NETWORK_H__
-void network_init(running_machine &machine);
+// ======================> network_manager
+
+class network_manager
+{
+public:
+ // construction/destruction
+ network_manager(running_machine &machine);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+private:
+ void config_load(config_type cfg_type, xml_data_node *parentnode);
+ void config_save(config_type cfg_type, xml_data_node *parentnode);
+
+ // internal state
+ running_machine & m_machine; // reference to our machine
+};
#endif /* __NETWORK_H__ */
diff --git a/src/emu/output.cpp b/src/emu/output.cpp
index 3977c0e809b..25d37dd4c43 100644
--- a/src/emu/output.cpp
+++ b/src/emu/output.cpp
@@ -10,93 +10,33 @@
#include "emu.h"
#include "coreutil.h"
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-#define HASH_SIZE 53
-
-
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-class output_notify
-{
-public:
- output_notify(output_notifier_func callback, void *param)
- : m_next(nullptr),
- m_notifier(callback),
- m_param(param) { }
-
- output_notify *next() const { return m_next; }
-
- output_notify * m_next; /* link to next item */
- output_notifier_func m_notifier; /* callback to call */
- void * m_param; /* parameter to pass the callback */
-};
-
-
-struct output_item
-{
- output_item * next; /* next item in list */
- std::string name; /* string name of the item */
- UINT32 hash; /* hash for this item name */
- UINT32 id; /* unique ID for this item */
- INT32 value; /* current value */
- simple_list<output_notify> notifylist; /* list of notifier callbacks */
-};
-
-
-
-/***************************************************************************
- GLOBAL VARIABLES
-***************************************************************************/
-
-static output_item *itemtable[HASH_SIZE];
-static simple_list<output_notify> global_notifylist;
-static UINT32 uniqueid = 12345;
-
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-static void output_pause(running_machine &machine);
-static void output_resume(running_machine &machine);
-static void output_exit(running_machine &machine);
-
-
-
-/***************************************************************************
- INLINE FUNCTIONS
-***************************************************************************/
+//**************************************************************************
+// OUTPUT MANAGER
+//**************************************************************************
-/*-------------------------------------------------
- get_hash - return the hash of an output value
--------------------------------------------------*/
+//-------------------------------------------------
+// output_manager - constructor
+//-------------------------------------------------
-static inline UINT32 get_hash(const char *string)
+output_manager::output_manager(running_machine &machine)
+ : m_machine(machine),
+ m_uniqueid(12345)
{
- return core_crc32(0, (UINT8 *)string, (UINT32)strlen(string));
+ /* add pause callback */
+ machine.add_notifier(MACHINE_NOTIFY_PAUSE, machine_notify_delegate(FUNC(output_manager::pause), this));
+ machine.add_notifier(MACHINE_NOTIFY_RESUME, machine_notify_delegate(FUNC(output_manager::resume), this));
}
-
/*-------------------------------------------------
find_item - find an item based on a string
-------------------------------------------------*/
-static inline output_item *find_item(const char *string)
+output_manager::output_item* output_manager::find_item(const char *string)
{
- UINT32 hash = get_hash(string);
- output_item *item;
-
/* use the hash as a starting point and find an entry */
- for (item = itemtable[hash % HASH_SIZE]; item != nullptr; item = item->next)
- if (item->hash == hash && strcmp(string, item->name.c_str()) == 0)
- return item;
+ for (auto &item : m_itemtable)
+ if (strcmp(string, item.second.name.c_str()) == 0)
+ return &item.second;
return nullptr;
}
@@ -106,85 +46,32 @@ static inline output_item *find_item(const char *string)
create_new_item - create a new item
-------------------------------------------------*/
-static inline output_item *create_new_item(const char *outname, INT32 value)
+output_manager::output_item *output_manager::create_new_item(const char *outname, INT32 value)
{
- auto item = global_alloc(output_item);
- UINT32 hash = get_hash(outname);
+ output_item item;
/* fill in the data */
- item->next = itemtable[hash % HASH_SIZE];
- item->name.assign(outname);
- item->hash = hash;
- item->id = uniqueid++;
- item->value = value;
+ item.name = outname;
+ item.id = m_uniqueid++;
+ item.value = value;
/* add us to the hash table */
- itemtable[hash % HASH_SIZE] = item;
- return item;
+ m_itemtable.insert(std::pair<std::string, output_item>(outname, item));
+ return &m_itemtable.find(outname)->second;
}
-
-
-/***************************************************************************
- CORE IMPLEMENTATION
-***************************************************************************/
-
-/*-------------------------------------------------
- output_init - initialize everything
--------------------------------------------------*/
-
-void output_init(running_machine &machine)
-{
- /* add pause callback */
- machine.add_notifier(MACHINE_NOTIFY_PAUSE, machine_notify_delegate(FUNC(output_pause), &machine));
- machine.add_notifier(MACHINE_NOTIFY_RESUME, machine_notify_delegate(FUNC(output_resume), &machine));
-
- /* get a callback when done */
- machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(output_exit), &machine));
-
- /* reset the lists */
- memset(itemtable, 0, sizeof(itemtable));
- global_notifylist.reset();
-}
-
-
/*-------------------------------------------------
output_pause - send pause message
-------------------------------------------------*/
-static void output_pause(running_machine &machine)
+void output_manager::pause()
{
- output_set_value("pause", 1);
+ set_value("pause", 1);
}
-static void output_resume(running_machine &machine)
+void output_manager::resume()
{
- output_set_value("pause", 0);
-}
-
-
-/*-------------------------------------------------
- output_exit - cleanup on exit
--------------------------------------------------*/
-
-static void output_exit(running_machine &machine)
-{
- output_item *item;
- int hash;
-
- /* remove all items */
- for (hash = 0; hash < HASH_SIZE; hash++)
- for (item = itemtable[hash]; item != nullptr; )
- {
- output_item *next = item->next;
-
- /* free the name and the item */
- global_free(item);
- item = next;
- }
-
- /* remove all global notifiers */
- global_notifylist.reset();
+ set_value("pause", 0);
}
@@ -192,7 +79,7 @@ static void output_exit(running_machine &machine)
output_set_value - set the value of an output
-------------------------------------------------*/
-void output_set_value(const char *outname, INT32 value)
+void output_manager::set_value(const char *outname, INT32 value)
{
output_item *item = find_item(outname);
INT32 oldval;
@@ -215,12 +102,12 @@ void output_set_value(const char *outname, INT32 value)
if (oldval != value)
{
/* call the local notifiers first */
- for (output_notify *notify = item->notifylist.first(); notify != nullptr; notify = notify->next())
- (*notify->m_notifier)(outname, value, notify->m_param);
+ for (auto notify : item->notifylist)
+ (*notify.m_notifier)(outname, value, notify.m_param);
/* call the global notifiers next */
- for (output_notify *notify = global_notifylist.first(); notify != nullptr; notify = notify->next())
- (*notify->m_notifier)(outname, value, notify->m_param);
+ for (auto notify : m_global_notifylist)
+ (*notify.m_notifier)(outname, value, notify.m_param);
}
}
@@ -230,7 +117,7 @@ void output_set_value(const char *outname, INT32 value)
indexed output
-------------------------------------------------*/
-void output_set_indexed_value(const char *basename, int index, int value)
+void output_manager::set_indexed_value(const char *basename, int index, int value)
{
char buffer[100];
char *dest = buffer;
@@ -247,7 +134,7 @@ void output_set_indexed_value(const char *basename, int index, int value)
*dest++ = 0;
/* set the value */
- output_set_value(buffer, value);
+ set_value(buffer, value);
}
@@ -256,7 +143,7 @@ void output_set_indexed_value(const char *basename, int index, int value)
output
-------------------------------------------------*/
-INT32 output_get_value(const char *outname)
+INT32 output_manager::get_value(const char *outname)
{
output_item *item = find_item(outname);
@@ -272,7 +159,7 @@ INT32 output_get_value(const char *outname)
indexed output
-------------------------------------------------*/
-INT32 output_get_indexed_value(const char *basename, int index)
+INT32 output_manager::get_indexed_value(const char *basename, int index)
{
char buffer[100];
char *dest = buffer;
@@ -289,7 +176,7 @@ INT32 output_get_indexed_value(const char *basename, int index)
*dest++ = 0;
/* set the value */
- return output_get_value(buffer);
+ return get_value(buffer);
}
@@ -299,8 +186,9 @@ INT32 output_get_indexed_value(const char *basename, int index)
if NULL is specified
-------------------------------------------------*/
-void output_set_notifier(const char *outname, output_notifier_func callback, void *param)
+void output_manager::set_notifier(const char *outname, output_notifier_func callback, void *param)
{
+ output_notify notify(callback, param);
/* if an item is specified, find it */
if (outname != nullptr)
{
@@ -309,10 +197,11 @@ void output_set_notifier(const char *outname, output_notifier_func callback, voi
/* if no item of that name, create a new one */
if (item == nullptr)
item = create_new_item(outname, 0);
- item->notifylist.append(*global_alloc(output_notify(callback, param)));
+
+ item->notifylist.push_back(notify);
}
else
- global_notifylist.append(*global_alloc(output_notify(callback, param)));
+ m_global_notifylist.push_back(notify);
}
@@ -321,15 +210,10 @@ void output_set_notifier(const char *outname, output_notifier_func callback, voi
notifier for all outputs
-------------------------------------------------*/
-void output_notify_all(output_notifier_func callback, void *param)
+void output_manager::notify_all(output_notifier_func callback, void *param)
{
- output_item *item;
- int hash;
-
- /* remove all items */
- for (hash = 0; hash < HASH_SIZE; hash++)
- for (item = itemtable[hash]; item != nullptr; item = item->next)
- (*callback)(item->name.c_str(), item->value, param);
+ for (auto &item : m_itemtable)
+ (*callback)(item.second.name.c_str(), item.second.value, param);
}
@@ -338,7 +222,7 @@ void output_notify_all(output_notifier_func callback, void *param)
a given name
-------------------------------------------------*/
-UINT32 output_name_to_id(const char *outname)
+UINT32 output_manager::name_to_id(const char *outname)
{
output_item *item = find_item(outname);
@@ -354,17 +238,12 @@ UINT32 output_name_to_id(const char *outname)
to a given unique ID
-------------------------------------------------*/
-const char *output_id_to_name(UINT32 id)
+const char *output_manager::id_to_name(UINT32 id)
{
- output_item *item;
- int hash;
-
- /* remove all items */
- for (hash = 0; hash < HASH_SIZE; hash++)
- for (item = itemtable[hash]; item != nullptr; item = item->next)
- if (item->id == id)
- return item->name.c_str();
+ for (auto &item : m_itemtable)
+ if (item.second.id == id)
+ return item.second.name.c_str();
- /* nothing found, return NULL */
+ /* nothing found, return nullptr */
return nullptr;
}
diff --git a/src/emu/output.h b/src/emu/output.h
index 95f8e40d821..77798c1eaf1 100644
--- a/src/emu/output.h
+++ b/src/emu/output.h
@@ -23,75 +23,83 @@
typedef void (*output_notifier_func)(const char *outname, INT32 value, void *param);
+// ======================> output_manager
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-/* core initialization */
-void output_init(running_machine &machine);
-
-/* set the value for a given output */
-void output_set_value(const char *outname, INT32 value);
-
-/* set an indexed value for an output (concatenates basename + index) */
-void output_set_indexed_value(const char *basename, int index, int value);
-
-/* return the current value for a given output */
-INT32 output_get_value(const char *outname);
-
-/* return the current value for a given indexed output */
-INT32 output_get_indexed_value(const char *outname, int index);
-
-/* set a notifier on a particular output, or globally if NULL */
-void output_set_notifier(const char *outname, output_notifier_func callback, void *param);
-
-/* set a notifier on a particular output, or globally if NULL */
-void output_notify_all(output_notifier_func callback, void *param);
-
-/* map a name to a unique ID */
-UINT32 output_name_to_id(const char *outname);
-
-/* map a unique ID back to a name */
-const char *output_id_to_name(UINT32 id);
-
-
-
-/***************************************************************************
- INLINES
-***************************************************************************/
-
-static inline void output_set_led_value(int index, int value)
-{
- output_set_indexed_value("led", index, value ? 1 : 0);
-}
-
-static inline void output_set_lamp_value(int index, int value)
+class output_manager
{
- output_set_indexed_value("lamp", index, value);
-}
-
-static inline void output_set_digit_value(int index, int value)
-{
- output_set_indexed_value("digit", index, value);
-}
-
-
-static inline INT32 output_get_led_value(int index)
-{
- return output_get_indexed_value("led", index);
-}
-
-static inline INT32 output_get_lamp_value(int index)
-{
- return output_get_indexed_value("lamp", index);
-}
-
-static inline INT32 output_get_digit_value(int index)
-{
- return output_get_indexed_value("digit", index);
-}
-
-
-#endif /* __OUTPUT_H__ */
+ class output_notify
+ {
+ public:
+ output_notify(output_notifier_func callback, void *param)
+ : m_notifier(callback),
+ m_param(param) { }
+
+ output_notifier_func m_notifier; // callback to call
+ void * m_param; // parameter to pass the callback
+ };
+
+
+ class output_item
+ {
+ public:
+ std::string name; // string name of the item
+ UINT32 hash; // hash for this item name
+ UINT32 id; // unique ID for this item
+ INT32 value; // current value
+ std::vector<output_notify> notifylist; // list of notifier callbacks
+ };
+
+public:
+ // construction/destruction
+ output_manager(running_machine &machine);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+
+ // set the value for a given output
+ void set_value(const char *outname, INT32 value);
+
+ // set an indexed value for an output (concatenates basename + index)
+ void set_indexed_value(const char *basename, int index, int value);
+
+ // return the current value for a given output
+ INT32 get_value(const char *outname);
+
+ // return the current value for a given indexed output
+ INT32 get_indexed_value(const char *outname, int index);
+
+ // set a notifier on a particular output, or globally if NULL
+ void set_notifier(const char *outname, output_notifier_func callback, void *param);
+
+ // set a notifier on a particular output, or globally if NULL
+ void notify_all(output_notifier_func callback, void *param);
+
+ // map a name to a unique ID
+ UINT32 name_to_id(const char *outname);
+
+ // map a unique ID back to a name
+ const char *id_to_name(UINT32 id);
+
+
+ // helpers
+ void set_led_value(int index, int value) { set_indexed_value("led", index, value ? 1 : 0); }
+ void set_lamp_value(int index, int value) { set_indexed_value("lamp", index, value); }
+ void set_digit_value(int index, int value) { set_indexed_value("digit", index, value); }
+ INT32 get_led_value(int index) { return get_indexed_value("led", index); }
+ INT32 get_lamp_value(int index) { return get_indexed_value("lamp", index); }
+ INT32 get_digit_value(int index) { return get_indexed_value("digit", index); }
+
+ void pause();
+ void resume();
+private:
+ output_item *find_item(const char *string);
+ output_item *create_new_item(const char *outname, INT32 value);
+
+ // internal state
+ running_machine & m_machine; // reference to our machine
+ std::unordered_map<std::string,output_item> m_itemtable;
+ std::vector<output_notify> m_global_notifylist;
+ UINT32 m_uniqueid;
+};
+
+#endif // __OUTPUT_H__
diff --git a/src/emu/render.cpp b/src/emu/render.cpp
index 0f9bc97d77d..baa5aa8db1b 100644
--- a/src/emu/render.cpp
+++ b/src/emu/render.cpp
@@ -1423,8 +1423,6 @@ void render_target::invalidate_all(void *refptr)
// iterate through all our primitive lists
for (auto & list : m_primlist)
{
-
-
// if we have a reference to this object, release our list
list.acquire_lock();
if (list.has_reference(refptr))
@@ -1456,13 +1454,13 @@ void render_target::debug_free(render_container &container)
//-------------------------------------------------
-// debug_top - move a debug view container to
-// the top of the list
+// debug_append - move a debug view container to
+// the end of the list
//-------------------------------------------------
-void render_target::debug_top(render_container &container)
+void render_target::debug_append(render_container &container)
{
- m_debug_containers.prepend(m_debug_containers.detach(container));
+ m_debug_containers.append(m_debug_containers.detach(container));
}
@@ -2405,7 +2403,7 @@ render_manager::render_manager(running_machine &machine)
m_ui_container(global_alloc(render_container(*this)))
{
// register callbacks
- config_register(machine, "video", config_saveload_delegate(FUNC(render_manager::config_load), this), config_saveload_delegate(FUNC(render_manager::config_save), this));
+ machine.configuration().config_register("video", config_saveload_delegate(FUNC(render_manager::config_load), this), config_saveload_delegate(FUNC(render_manager::config_save), this));
// create one container per screen
screen_device_iterator iter(machine.root_device());
@@ -2652,10 +2650,10 @@ void render_manager::container_free(render_container *container)
// configuration file
//-------------------------------------------------
-void render_manager::config_load(int config_type, xml_data_node *parentnode)
+void render_manager::config_load(config_type cfg_type, xml_data_node *parentnode)
{
// we only care about game files
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
// might not have any data
@@ -2711,10 +2709,10 @@ void render_manager::config_load(int config_type, xml_data_node *parentnode)
// file
//-------------------------------------------------
-void render_manager::config_save(int config_type, xml_data_node *parentnode)
+void render_manager::config_save(config_type cfg_type, xml_data_node *parentnode)
{
// we only care about game files
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
// write out the interface target
diff --git a/src/emu/render.h b/src/emu/render.h
index e4136ded0d1..df8896b712b 100644
--- a/src/emu/render.h
+++ b/src/emu/render.h
@@ -942,7 +942,7 @@ public:
// debug containers
render_container *debug_alloc();
void debug_free(render_container &container);
- void debug_top(render_container &container);
+ void debug_append(render_container &container);
// resolve tag lookups
void resolve_tags();
@@ -1057,8 +1057,8 @@ private:
void container_free(render_container *container);
// config callbacks
- void config_load(int config_type, xml_data_node *parentnode);
- void config_save(int config_type, xml_data_node *parentnode);
+ void config_load(config_type cfg_type, xml_data_node *parentnode);
+ void config_save(config_type cfg_type, xml_data_node *parentnode);
// internal state
running_machine & m_machine; // reference back to the machine
diff --git a/src/emu/rendlay.cpp b/src/emu/rendlay.cpp
index 582ed75fef2..a69ea831e44 100644
--- a/src/emu/rendlay.cpp
+++ b/src/emu/rendlay.cpp
@@ -2364,7 +2364,7 @@ layout_view::item::item(running_machine &machine, xml_data_node &itemnode, simpl
}
m_input_mask = xml_get_attribute_int_with_subst(machine, itemnode, "inputmask", 0);
if (m_output_name[0] != 0 && m_element != nullptr)
- output_set_value(m_output_name.c_str(), m_element->default_state());
+ machine.output().set_value(m_output_name.c_str(), m_element->default_state());
parse_bounds(machine, xml_get_sibling(itemnode.child, "bounds"), m_rawbounds);
parse_color(machine, xml_get_sibling(itemnode.child, "color"), m_color);
parse_orientation(machine, xml_get_sibling(itemnode.child, "orientation"), m_orientation);
@@ -2420,7 +2420,7 @@ int layout_view::item::state() const
// if configured to an output, fetch the output value
if (m_output_name[0] != 0)
- state = output_get_value(m_output_name.c_str());
+ state = m_element->machine().output().get_value(m_output_name.c_str());
// if configured to an input, fetch the input value
else if (m_input_tag[0] != 0)
diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp
index c5de902a482..28cc994402c 100644
--- a/src/emu/romload.cpp
+++ b/src/emu/romload.cpp
@@ -10,7 +10,6 @@
#include "emu.h"
#include "emuopts.h"
#include "drivenum.h"
-#include "chd.h"
#include "softlist.h"
#include "ui/ui.h"
@@ -25,71 +24,11 @@
#define TEMPBUFFER_MAX_SIZE (1024 * 1024 * 1024)
-
-
/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
-class open_chd
-{
- friend class simple_list<open_chd>;
-
-public:
- open_chd(const char *region)
- : m_next(nullptr),
- m_region(region) { }
-
- open_chd *next() const { return m_next; }
- const char *region() const { return m_region.c_str(); }
- chd_file &chd() { return m_diffchd.opened() ? m_diffchd : m_origchd; }
- chd_file &orig_chd() { return m_origchd; }
- chd_file &diff_chd() { return m_diffchd; }
-
-private:
- open_chd * m_next; /* pointer to next in the list */
- std::string m_region; /* disk region we came from */
- chd_file m_origchd; /* handle to the original CHD */
- chd_file m_diffchd; /* handle to the diff CHD */
-};
-
-
-struct romload_private
-{
- running_machine &machine() const { assert(m_machine != nullptr); return *m_machine; }
-
- running_machine *m_machine; /* machine object where needed */
-
- int warnings; /* warning count during processing */
- int knownbad; /* BAD_DUMP/NO_DUMP count during processing */
- int errors; /* error count during processing */
-
- int romsloaded; /* current ROMs loaded count */
- int romstotal; /* total number of ROMs to read */
- UINT32 romsloadedsize; /* total size of ROMs loaded so far */
- UINT32 romstotalsize; /* total size of ROMs to read */
-
- emu_file * file; /* current file */
- simple_list<open_chd> chd_list; /* disks */
-
- memory_region * region; /* info about current region */
-
- std::string errorstring; /* error string */
- std::string softwarningstring; /* software warning string */
-};
-
-
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-static void rom_exit(running_machine &machine);
-
-/***************************************************************************
- HELPERS (also used by devimage.c)
+ HELPERS (also used by diimage.cpp)
***************************************************************************/
-file_error common_process_file(emu_options &options, const char *location, const char *ext, const rom_entry *romp, emu_file &image_file)
+static file_error common_process_file(emu_options &options, const char *location, const char *ext, const rom_entry *romp, emu_file &image_file)
{
file_error filerr;
@@ -101,61 +40,22 @@ file_error common_process_file(emu_options &options, const char *location, const
return filerr;
}
-file_error common_process_file(emu_options &options, const char *location, bool has_crc, UINT32 crc, const rom_entry *romp, emu_file **image_file)
+std::unique_ptr<emu_file> common_process_file(emu_options &options, const char *location, bool has_crc, UINT32 crc, const rom_entry *romp, file_error &filerr)
{
- *image_file = global_alloc(emu_file(options.media_path(), OPEN_FLAG_READ));
- file_error filerr;
+ auto image_file = std::make_unique<emu_file>(options.media_path(), OPEN_FLAG_READ);
if (has_crc)
- filerr = (*image_file)->open(location, PATH_SEPARATOR, ROM_GETNAME(romp), crc);
+ filerr = image_file->open(location, PATH_SEPARATOR, ROM_GETNAME(romp), crc);
else
- filerr = (*image_file)->open(location, PATH_SEPARATOR, ROM_GETNAME(romp));
+ filerr = image_file->open(location, PATH_SEPARATOR, ROM_GETNAME(romp));
if (filerr != FILERR_NONE)
{
- global_free(*image_file);
- *image_file = nullptr;
+ image_file = nullptr;
}
- return filerr;
+ return image_file;
}
-
-/***************************************************************************
- HARD DISK HANDLING
-***************************************************************************/
-
-/*-------------------------------------------------
- get_disk_handle - return a pointer to the
- CHD file associated with the given region
--------------------------------------------------*/
-
-chd_file *get_disk_handle(running_machine &machine, const char *region)
-{
- for (open_chd *curdisk = machine.romload_data->chd_list.first(); curdisk != nullptr; curdisk = curdisk->next())
- if (strcmp(curdisk->region(), region) == 0)
- return &curdisk->chd();
- return nullptr;
-}
-
-
-/*-------------------------------------------------
- set_disk_handle - set a pointer to the CHD
- file associated with the given region
--------------------------------------------------*/
-
-int set_disk_handle(running_machine &machine, const char *region, const char *fullpath)
-{
- auto chd = global_alloc(open_chd(region));
- chd_error err = chd->orig_chd().open(fullpath);
- if (err == CHDERR_NONE)
- machine.romload_data->chd_list.append(*chd);
- else
- global_free(chd);
- return err;
-}
-
-
-
/***************************************************************************
ROM LOADING
***************************************************************************/
@@ -328,12 +228,44 @@ static void CLIB_DECL ATTR_PRINTF(1,2) debugload(const char *string, ...)
}
+/***************************************************************************
+ HARD DISK HANDLING
+***************************************************************************/
+
+/*-------------------------------------------------
+ get_disk_handle - return a pointer to the
+ CHD file associated with the given region
+-------------------------------------------------*/
+
+chd_file *rom_load_manager::get_disk_handle(const char *region)
+{
+ for (auto &curdisk : m_chd_list)
+ if (strcmp(curdisk->region(), region) == 0)
+ return &curdisk->chd();
+ return nullptr;
+}
+
+
+/*-------------------------------------------------
+ set_disk_handle - set a pointer to the CHD
+ file associated with the given region
+-------------------------------------------------*/
+
+int rom_load_manager::set_disk_handle(const char *region, const char *fullpath)
+{
+ auto chd = std::make_unique<open_chd>(region);
+ auto err = chd->orig_chd().open(fullpath);
+ if (err == CHDERR_NONE)
+ m_chd_list.push_back(std::move(chd));
+ return err;
+}
+
/*-------------------------------------------------
determine_bios_rom - determine system_bios
from SystemBios structure and OPTION_BIOS
-------------------------------------------------*/
-static void determine_bios_rom(romload_private *romdata, device_t *device, const char *specbios)
+void rom_load_manager::determine_bios_rom(device_t *device, const char *specbios)
{
const char *defaultname = nullptr;
const rom_entry *rom;
@@ -368,10 +300,10 @@ static void determine_bios_rom(romload_private *romdata, device_t *device, const
if (device->system_bios() == 0 && bios_count > 0)
{
/* if we got neither an empty string nor 'default' then warn the user */
- if (specbios[0] != 0 && strcmp(specbios, "default") != 0 && romdata != nullptr)
+ if (specbios[0] != 0 && strcmp(specbios, "default") != 0)
{
- strcatprintf(romdata->errorstring, "%s: invalid bios\n", specbios);
- romdata->errors++;
+ strcatprintf(m_errorstring, "%s: invalid bios\n", specbios);
+ m_errors++;
}
/* set to default */
@@ -387,23 +319,23 @@ static void determine_bios_rom(romload_private *romdata, device_t *device, const
that will need to be loaded
-------------------------------------------------*/
-static void count_roms(romload_private *romdata)
+void rom_load_manager::count_roms()
{
const rom_entry *region, *rom;
/* start with 0 */
- romdata->romstotal = 0;
- romdata->romstotalsize = 0;
+ m_romstotal = 0;
+ m_romstotalsize = 0;
/* loop over regions, then over files */
- device_iterator deviter(romdata->machine().config().root_device());
+ device_iterator deviter(machine().config().root_device());
for (device_t *device = deviter.first(); device != nullptr; device = deviter.next())
for (region = rom_first_region(*device); region != nullptr; region = rom_next_region(region))
for (rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom))
if (ROM_GETBIOSFLAGS(rom) == 0 || ROM_GETBIOSFLAGS(rom) == device->system_bios())
{
- romdata->romstotal++;
- romdata->romstotalsize += rom_file_size(rom);
+ m_romstotal++;
+ m_romstotalsize += rom_file_size(rom);
}
}
@@ -413,10 +345,10 @@ static void count_roms(romload_private *romdata)
random data
-------------------------------------------------*/
-static void fill_random(running_machine &machine, UINT8 *base, UINT32 length)
+void rom_load_manager::fill_random(UINT8 *base, UINT32 length)
{
while (length--)
- *base++ = machine.rand();
+ *base++ = machine().rand();
}
@@ -425,7 +357,7 @@ static void fill_random(running_machine &machine, UINT8 *base, UINT32 length)
for missing files
-------------------------------------------------*/
-static void handle_missing_file(romload_private *romdata, const rom_entry *romp, std::string tried_file_names, chd_error chderr)
+void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tried_file_names, chd_error chderr)
{
if(tried_file_names.length() != 0)
tried_file_names = " (tried in " + tried_file_names + ")";
@@ -438,30 +370,30 @@ static void handle_missing_file(romload_private *romdata, const rom_entry *romp,
bool is_chd_error = (is_chd && chderr != CHDERR_FILE_NOT_FOUND);
if (is_chd_error)
- strcatprintf(romdata->errorstring, "%s CHD ERROR: %s\n", name.c_str(), chd_file::error_string(chderr));
+ strcatprintf(m_errorstring, "%s CHD ERROR: %s\n", name.c_str(), chd_file::error_string(chderr));
/* optional files are okay */
if (ROM_ISOPTIONAL(romp))
{
if (!is_chd_error)
- strcatprintf(romdata->errorstring, "OPTIONAL %s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str());
- romdata->warnings++;
+ strcatprintf(m_errorstring, "OPTIONAL %s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str());
+ m_warnings++;
}
/* no good dumps are okay */
else if (hash_collection(ROM_GETHASHDATA(romp)).flag(hash_collection::FLAG_NO_DUMP))
{
if (!is_chd_error)
- strcatprintf(romdata->errorstring, "%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name.c_str(), tried_file_names.c_str());
- romdata->knownbad++;
+ strcatprintf(m_errorstring, "%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name.c_str(), tried_file_names.c_str());
+ m_knownbad++;
}
/* anything else is bad */
else
{
if (!is_chd_error)
- strcatprintf(romdata->errorstring, "%s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str());
- romdata->errors++;
+ strcatprintf(m_errorstring, "%s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str());
+ m_errors++;
}
}
@@ -472,11 +404,10 @@ static void handle_missing_file(romload_private *romdata, const rom_entry *romp,
correct checksums for a given ROM
-------------------------------------------------*/
-static void dump_wrong_and_correct_checksums(romload_private *romdata, const hash_collection &hashes, const hash_collection &acthashes)
+void rom_load_manager::dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes)
{
- std::string tempstr;
- strcatprintf(romdata->errorstring, " EXPECTED: %s\n", hashes.macro_string(tempstr));
- strcatprintf(romdata->errorstring, " FOUND: %s\n", acthashes.macro_string(tempstr));
+ strcatprintf(m_errorstring, " EXPECTED: %s\n", hashes.macro_string().c_str());
+ strcatprintf(m_errorstring, " FOUND: %s\n", acthashes.macro_string().c_str());
}
@@ -485,41 +416,40 @@ static void dump_wrong_and_correct_checksums(romload_private *romdata, const has
and hash signatures of a file
-------------------------------------------------*/
-static void verify_length_and_hash(romload_private *romdata, const char *name, UINT32 explength, const hash_collection &hashes)
+void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength, const hash_collection &hashes)
{
/* we've already complained if there is no file */
- if (romdata->file == nullptr)
+ if (m_file == nullptr)
return;
/* verify length */
- UINT32 actlength = romdata->file->size();
+ UINT32 actlength = m_file->size();
if (explength != actlength)
{
- strcatprintf(romdata->errorstring, "%s WRONG LENGTH (expected: %08x found: %08x)\n", name, explength, actlength);
- romdata->warnings++;
+ strcatprintf(m_errorstring, "%s WRONG LENGTH (expected: %08x found: %08x)\n", name, explength, actlength);
+ m_warnings++;
}
/* If there is no good dump known, write it */
- std::string tempstr;
- hash_collection &acthashes = romdata->file->hashes(hashes.hash_types(tempstr));
+ hash_collection &acthashes = m_file->hashes(hashes.hash_types().c_str());
if (hashes.flag(hash_collection::FLAG_NO_DUMP))
{
- strcatprintf(romdata->errorstring, "%s NO GOOD DUMP KNOWN\n", name);
- romdata->knownbad++;
+ strcatprintf(m_errorstring, "%s NO GOOD DUMP KNOWN\n", name);
+ m_knownbad++;
}
/* verify checksums */
else if (hashes != acthashes)
{
/* otherwise, it's just bad */
- strcatprintf(romdata->errorstring, "%s WRONG CHECKSUMS:\n", name);
- dump_wrong_and_correct_checksums(romdata, hashes, acthashes);
- romdata->warnings++;
+ strcatprintf(m_errorstring, "%s WRONG CHECKSUMS:\n", name);
+ dump_wrong_and_correct_checksums(hashes, acthashes);
+ m_warnings++;
}
/* If it matches, but it is actually a bad dump, write it */
else if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
{
- strcatprintf(romdata->errorstring, "%s ROM NEEDS REDUMP\n",name);
- romdata->knownbad++;
+ strcatprintf(m_errorstring, "%s ROM NEEDS REDUMP\n",name);
+ m_knownbad++;
}
}
@@ -529,17 +459,17 @@ static void verify_length_and_hash(romload_private *romdata, const char *name, U
messages about ROM loading to the user
-------------------------------------------------*/
-static void display_loading_rom_message(romload_private *romdata, const char *name, bool from_list)
+void rom_load_manager::display_loading_rom_message(const char *name, bool from_list)
{
char buffer[200];
if (name != nullptr)
- sprintf(buffer, "Loading %s (%d%%)", from_list ? "Software" : emulator_info::get_capstartgamenoun(), (UINT32)(100 * (UINT64)romdata->romsloadedsize / (UINT64)romdata->romstotalsize));
+ sprintf(buffer, "Loading %s (%d%%)", from_list ? "Software" : emulator_info::get_capstartgamenoun(), (UINT32)(100 * (UINT64)m_romsloadedsize / (UINT64)m_romstotalsize));
else
sprintf(buffer, "Loading Complete");
- if (!romdata->machine().ui().is_menu_active())
- romdata->machine().ui().set_startup_text(buffer, false);
+ if (!machine().ui().is_menu_active())
+ machine().ui().set_startup_text(buffer, false);
}
@@ -548,26 +478,26 @@ static void display_loading_rom_message(romload_private *romdata, const char *na
results of ROM loading
-------------------------------------------------*/
-static void display_rom_load_results(romload_private *romdata, bool from_list)
+void rom_load_manager::display_rom_load_results(bool from_list)
{
/* final status display */
- display_loading_rom_message(romdata, nullptr, from_list);
+ display_loading_rom_message(nullptr, from_list);
/* if we had errors, they are fatal */
- if (romdata->errors != 0)
+ if (m_errors != 0)
{
/* create the error message and exit fatally */
- osd_printf_error("%s", romdata->errorstring.c_str());
- fatalerror_exitcode(romdata->machine(), MAMERR_MISSING_FILES, "Required files are missing, the %s cannot be run.",emulator_info::get_gamenoun());
+ osd_printf_error("%s", m_errorstring.c_str());
+ fatalerror_exitcode(machine(), MAMERR_MISSING_FILES, "Required files are missing, the %s cannot be run.",emulator_info::get_gamenoun());
}
/* if we had warnings, output them, but continue */
- if ((romdata-> warnings) || (romdata->knownbad))
+ if ((m_warnings) || (m_knownbad))
{
- romdata->errorstring.append("WARNING: the ");
- romdata->errorstring.append(emulator_info::get_gamenoun());
- romdata->errorstring.append(" might not run correctly.");
- osd_printf_warning("%s\n", romdata->errorstring.c_str());
+ m_errorstring.append("WARNING: the ");
+ m_errorstring.append(emulator_info::get_gamenoun());
+ m_errorstring.append(" might not run correctly.");
+ osd_printf_warning("%s\n", m_errorstring.c_str());
}
}
@@ -577,9 +507,9 @@ static void display_rom_load_results(romload_private *romdata, bool from_list)
byte swapping and inverting data as necessary
-------------------------------------------------*/
-static void region_post_process(romload_private *romdata, const char *rgntag, bool invert)
+void rom_load_manager::region_post_process(const char *rgntag, bool invert)
{
- memory_region *region = romdata->machine().root_device().memregion(rgntag);
+ memory_region *region = machine().root_device().memregion(rgntag);
UINT8 *base;
int i, j;
@@ -619,14 +549,14 @@ static void region_post_process(romload_private *romdata, const char *rgntag, bo
up the parent and loading by checksum
-------------------------------------------------*/
-static int open_rom_file(romload_private *romdata, const char *regiontag, const rom_entry *romp, std::string &tried_file_names, bool from_list)
+int rom_load_manager::open_rom_file(const char *regiontag, const rom_entry *romp, std::string &tried_file_names, bool from_list)
{
file_error filerr = FILERR_NOT_FOUND;
UINT32 romsize = rom_file_size(romp);
tried_file_names = "";
/* update status display */
- display_loading_rom_message(romdata, ROM_GETNAME(romp), from_list);
+ display_loading_rom_message(ROM_GETNAME(romp), from_list);
/* extract CRC to use for searching */
UINT32 crc = 0;
@@ -634,16 +564,16 @@ static int open_rom_file(romload_private *romdata, const char *regiontag, const
/* attempt reading up the chain through the parents. It automatically also
attempts any kind of load by checksum supported by the archives. */
- romdata->file = nullptr;
- for (int drv = driver_list::find(romdata->machine().system()); romdata->file == nullptr && drv != -1; drv = driver_list::clone(drv)) {
+ m_file = nullptr;
+ for (int drv = driver_list::find(machine().system()); m_file == nullptr && drv != -1; drv = driver_list::clone(drv)) {
if (tried_file_names.length() != 0)
tried_file_names += " ";
tried_file_names += driver_list::driver(drv).name;
- filerr = common_process_file(romdata->machine().options(), driver_list::driver(drv).name, has_crc, crc, romp, &romdata->file);
+ m_file = common_process_file(machine().options(), driver_list::driver(drv).name, has_crc, crc, romp, filerr);
}
/* if the region is load by name, load the ROM from there */
- if (romdata->file == nullptr && regiontag != nullptr)
+ if (m_file == nullptr && regiontag != nullptr)
{
// check if we are dealing with softwarelists. if so, locationtag
// is actually a concatenation of: listname + setname + parentname
@@ -692,40 +622,40 @@ static int open_rom_file(romload_private *romdata, const char *regiontag, const
if (!is_list)
{
tried_file_names += " " + tag1;
- filerr = common_process_file(romdata->machine().options(), tag1.c_str(), has_crc, crc, romp, &romdata->file);
+ m_file = common_process_file(machine().options(), tag1.c_str(), has_crc, crc, romp, filerr);
}
else
{
// try to load from list/setname
- if ((romdata->file == nullptr) && (tag2.c_str() != nullptr))
+ if ((m_file == nullptr) && (tag2.c_str() != nullptr))
{
tried_file_names += " " + tag2;
- filerr = common_process_file(romdata->machine().options(), tag2.c_str(), has_crc, crc, romp, &romdata->file);
+ m_file = common_process_file(machine().options(), tag2.c_str(), has_crc, crc, romp, filerr);
}
// try to load from list/parentname
- if ((romdata->file == nullptr) && has_parent && (tag3.c_str() != nullptr))
+ if ((m_file == nullptr) && has_parent && (tag3.c_str() != nullptr))
{
tried_file_names += " " + tag3;
- filerr = common_process_file(romdata->machine().options(), tag3.c_str(), has_crc, crc, romp, &romdata->file);
+ m_file = common_process_file(machine().options(), tag3.c_str(), has_crc, crc, romp, filerr);
}
// try to load from setname
- if ((romdata->file == nullptr) && (tag4.c_str() != nullptr))
+ if ((m_file == nullptr) && (tag4.c_str() != nullptr))
{
tried_file_names += " " + tag4;
- filerr = common_process_file(romdata->machine().options(), tag4.c_str(), has_crc, crc, romp, &romdata->file);
+ m_file = common_process_file(machine().options(), tag4.c_str(), has_crc, crc, romp, filerr);
}
// try to load from parentname
- if ((romdata->file == nullptr) && has_parent && (tag5.c_str() != nullptr))
+ if ((m_file == nullptr) && has_parent && (tag5.c_str() != nullptr))
{
tried_file_names += " " + tag5;
- filerr = common_process_file(romdata->machine().options(), tag5.c_str(), has_crc, crc, romp, &romdata->file);
+ m_file = common_process_file(machine().options(), tag5.c_str(), has_crc, crc, romp, filerr);
}
}
}
/* update counters */
- romdata->romsloaded++;
- romdata->romsloadedsize += romsize;
+ m_romsloaded++;
+ m_romsloadedsize += romsize;
/* return the result */
return (filerr == FILERR_NONE);
@@ -737,15 +667,15 @@ static int open_rom_file(romload_private *romdata, const char *regiontag, const
random data for a NULL file
-------------------------------------------------*/
-static int rom_fread(romload_private *romdata, UINT8 *buffer, int length, const rom_entry *parent_region)
+int rom_load_manager::rom_fread(UINT8 *buffer, int length, const rom_entry *parent_region)
{
/* files just pass through */
- if (romdata->file != nullptr)
- return romdata->file->read(buffer, length);
+ if (m_file != nullptr)
+ return m_file->read(buffer, length);
/* otherwise, fill with randomness unless it was already specifically erased */
else if (!ROMREGION_ISERASE(parent_region))
- fill_random(romdata->machine(), buffer, length);
+ fill_random(buffer, length);
return length;
}
@@ -756,7 +686,7 @@ static int rom_fread(romload_private *romdata, UINT8 *buffer, int length, const
entry
-------------------------------------------------*/
-static int read_rom_data(romload_private *romdata, const rom_entry *parent_region, const rom_entry *romp)
+int rom_load_manager::read_rom_data(const rom_entry *parent_region, const rom_entry *romp)
{
int datashift = ROM_GETBITSHIFT(romp);
int datamask = ((1 << ROM_GETBITWIDTH(romp)) - 1) << datashift;
@@ -765,7 +695,7 @@ static int read_rom_data(romload_private *romdata, const rom_entry *parent_regio
int skip = ROM_GETSKIPCOUNT(romp);
int reversed = ROM_ISREVERSED(romp);
int numgroups = (numbytes + groupsize - 1) / groupsize;
- UINT8 *base = romdata->region->base() + ROM_GETOFFSET(romp);
+ UINT8 *base = m_region->base() + ROM_GETOFFSET(romp);
UINT32 tempbufsize;
int i;
@@ -776,7 +706,7 @@ static int read_rom_data(romload_private *romdata, const rom_entry *parent_regio
osd_printf_warning("Warning in RomModule definition: %s length not an even multiple of group size\n", ROM_GETNAME(romp));
/* make sure we only fill within the region space */
- if (ROM_GETOFFSET(romp) + numgroups * groupsize + (numgroups - 1) * skip > romdata->region->bytes())
+ if (ROM_GETOFFSET(romp) + numgroups * groupsize + (numgroups - 1) * skip > m_region->bytes())
fatalerror("Error in RomModule definition: %s out of memory region space\n", ROM_GETNAME(romp));
/* make sure the length was valid */
@@ -785,7 +715,7 @@ static int read_rom_data(romload_private *romdata, const rom_entry *parent_regio
/* special case for simple loads */
if (datamask == 0xff && (groupsize == 1 || !reversed) && skip == 0)
- return rom_fread(romdata, base, numbytes, parent_region);
+ return rom_fread(base, numbytes, parent_region);
/* use a temporary buffer for complex loads */
tempbufsize = MIN(TEMPBUFFER_MAX_SIZE, numbytes);
@@ -801,7 +731,7 @@ static int read_rom_data(romload_private *romdata, const rom_entry *parent_regio
/* read as much as we can */
LOG((" Reading %X bytes into buffer\n", bytesleft));
- if (rom_fread(romdata, bufptr, bytesleft, parent_region) != bytesleft)
+ if (rom_fread(bufptr, bytesleft, parent_region) != bytesleft)
return 0;
numbytes -= bytesleft;
@@ -871,13 +801,13 @@ static int read_rom_data(romload_private *romdata, const rom_entry *parent_regio
fill_rom_data - fill a region of ROM space
-------------------------------------------------*/
-static void fill_rom_data(romload_private *romdata, const rom_entry *romp)
+void rom_load_manager::fill_rom_data(const rom_entry *romp)
{
UINT32 numbytes = ROM_GETLENGTH(romp);
- UINT8 *base = romdata->region->base() + ROM_GETOFFSET(romp);
+ UINT8 *base = m_region->base() + ROM_GETOFFSET(romp);
/* make sure we fill within the region space */
- if (ROM_GETOFFSET(romp) + numbytes > romdata->region->bytes())
+ if (ROM_GETOFFSET(romp) + numbytes > m_region->bytes())
fatalerror("Error in RomModule definition: FILL out of memory region space\n");
/* make sure the length was valid */
@@ -893,15 +823,15 @@ static void fill_rom_data(romload_private *romdata, const rom_entry *romp)
copy_rom_data - copy a region of ROM space
-------------------------------------------------*/
-static void copy_rom_data(romload_private *romdata, const rom_entry *romp)
+void rom_load_manager::copy_rom_data(const rom_entry *romp)
{
- UINT8 *base = romdata->region->base() + ROM_GETOFFSET(romp);
+ UINT8 *base = m_region->base() + ROM_GETOFFSET(romp);
const char *srcrgntag = ROM_GETNAME(romp);
UINT32 numbytes = ROM_GETLENGTH(romp);
UINT32 srcoffs = (FPTR)ROM_GETHASHDATA(romp); /* srcoffset in place of hashdata */
/* make sure we copy within the region space */
- if (ROM_GETOFFSET(romp) + numbytes > romdata->region->bytes())
+ if (ROM_GETOFFSET(romp) + numbytes > m_region->bytes())
fatalerror("Error in RomModule definition: COPY out of target memory region space\n");
/* make sure the length was valid */
@@ -909,7 +839,7 @@ static void copy_rom_data(romload_private *romdata, const rom_entry *romp)
fatalerror("Error in RomModule definition: COPY has an invalid length\n");
/* make sure the source was valid */
- memory_region *region = romdata->machine().root_device().memregion(srcrgntag);
+ memory_region *region = machine().root_device().memregion(srcrgntag);
if (region == nullptr)
fatalerror("Error in RomModule definition: COPY from an invalid region\n");
@@ -927,7 +857,7 @@ static void copy_rom_data(romload_private *romdata, const rom_entry *romp)
for a region
-------------------------------------------------*/
-static void process_rom_entries(romload_private *romdata, const char *regiontag, const rom_entry *parent_region, const rom_entry *romp, device_t *device, bool from_list)
+void rom_load_manager::process_rom_entries(const char *regiontag, const rom_entry *parent_region, const rom_entry *romp, device_t *device, bool from_list)
{
UINT32 lastflags = 0;
@@ -948,11 +878,11 @@ static void process_rom_entries(romload_private *romdata, const char *regiontag,
/* handle fills */
if (ROMENTRY_ISFILL(romp))
- fill_rom_data(romdata, romp++);
+ fill_rom_data(romp++);
/* handle copies */
else if (ROMENTRY_ISCOPY(romp))
- copy_rom_data(romdata, romp++);
+ copy_rom_data(romp++);
/* handle files */
else if (ROMENTRY_ISFILE(romp))
@@ -964,8 +894,8 @@ static void process_rom_entries(romload_private *romdata, const char *regiontag,
/* open the file if it is a non-BIOS or matches the current BIOS */
LOG(("Opening ROM file: %s\n", ROM_GETNAME(romp)));
std::string tried_file_names;
- if (!irrelevantbios && !open_rom_file(romdata, regiontag, romp, tried_file_names, from_list))
- handle_missing_file(romdata, romp, tried_file_names, CHDERR_NONE);
+ if (!irrelevantbios && !open_rom_file(regiontag, romp, tried_file_names, from_list))
+ handle_missing_file(romp, tried_file_names, CHDERR_NONE);
/* loop until we run out of reloads */
do
@@ -986,7 +916,7 @@ static void process_rom_entries(romload_private *romdata, const char *regiontag,
/* attempt to read using the modified entry */
if (!ROMENTRY_ISIGNORE(&modified_romp) && !irrelevantbios)
- /*readresult = */read_rom_data(romdata, parent_region, &modified_romp);
+ /*readresult = */read_rom_data(parent_region, &modified_romp);
}
while (ROMENTRY_ISCONTINUE(romp) || ROMENTRY_ISIGNORE(romp));
@@ -994,24 +924,23 @@ static void process_rom_entries(romload_private *romdata, const char *regiontag,
if (baserom)
{
LOG(("Verifying length (%X) and checksums\n", explength));
- verify_length_and_hash(romdata, ROM_GETNAME(baserom), explength, hash_collection(ROM_GETHASHDATA(baserom)));
+ verify_length_and_hash(ROM_GETNAME(baserom), explength, hash_collection(ROM_GETHASHDATA(baserom)));
LOG(("Verify finished\n"));
}
/* reseek to the start and clear the baserom so we don't reverify */
- if (romdata->file != nullptr)
- romdata->file->seek(0, SEEK_SET);
+ if (m_file != nullptr)
+ m_file->seek(0, SEEK_SET);
baserom = nullptr;
explength = 0;
}
while (ROMENTRY_ISRELOAD(romp));
/* close the file */
- if (romdata->file != nullptr)
+ if (m_file != nullptr)
{
LOG(("Closing ROM file\n"));
- global_free(romdata->file);
- romdata->file = nullptr;
+ m_file = nullptr;
}
}
else
@@ -1174,7 +1103,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
open_disk_diff - open a DISK diff file
-------------------------------------------------*/
-static chd_error open_disk_diff(emu_options &options, const rom_entry *romp, chd_file &source, chd_file &diff_chd)
+chd_error rom_load_manager::open_disk_diff(emu_options &options, const rom_entry *romp, chd_file &source, chd_file &diff_chd)
{
std::string fname = std::string(ROM_GETNAME(romp)).append(".dif");
@@ -1219,7 +1148,7 @@ static chd_error open_disk_diff(emu_options &options, const rom_entry *romp, chd
for a region
-------------------------------------------------*/
-static void process_disk_entries(romload_private *romdata, const char *regiontag, const rom_entry *parent_region, const rom_entry *romp, const char *locationtag)
+void rom_load_manager::process_disk_entries(const char *regiontag, const rom_entry *parent_region, const rom_entry *romp, const char *locationtag)
{
/* loop until we hit the end of this region */
for ( ; !ROMENTRY_ISREGIONEND(romp); romp++)
@@ -1227,7 +1156,7 @@ static void process_disk_entries(romload_private *romdata, const char *regiontag
/* handle files */
if (ROMENTRY_ISFILE(romp))
{
- auto chd = global_alloc(open_chd(regiontag));
+ auto chd = std::make_unique<open_chd>(regiontag);
hash_collection hashes(ROM_GETHASHDATA(romp));
chd_error err;
@@ -1237,11 +1166,11 @@ static void process_disk_entries(romload_private *romdata, const char *regiontag
/* first open the source drive */
LOG(("Opening disk image: %s\n", filename.c_str()));
- err = chd_error(open_disk_image(romdata->machine().options(), &romdata->machine().system(), romp, chd->orig_chd(), locationtag));
+ err = chd_error(open_disk_image(machine().options(), &machine().system(), romp, chd->orig_chd(), locationtag));
if (err != CHDERR_NONE)
{
- handle_missing_file(romdata, romp, std::string(), err);
- global_free(chd);
+ handle_missing_file(romp, std::string(), err);
+ chd = nullptr;
continue;
}
@@ -1252,33 +1181,33 @@ static void process_disk_entries(romload_private *romdata, const char *regiontag
/* verify the hash */
if (hashes != acthashes)
{
- strcatprintf(romdata->errorstring, "%s WRONG CHECKSUMS:\n", filename.c_str());
- dump_wrong_and_correct_checksums(romdata, hashes, acthashes);
- romdata->warnings++;
+ strcatprintf(m_errorstring, "%s WRONG CHECKSUMS:\n", filename.c_str());
+ dump_wrong_and_correct_checksums(hashes, acthashes);
+ m_warnings++;
}
else if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
{
- strcatprintf(romdata->errorstring, "%s CHD NEEDS REDUMP\n", filename.c_str());
- romdata->knownbad++;
+ strcatprintf(m_errorstring, "%s CHD NEEDS REDUMP\n", filename.c_str());
+ m_knownbad++;
}
/* if not read-only, make the diff file */
if (!DISK_ISREADONLY(romp))
{
/* try to open or create the diff */
- err = open_disk_diff(romdata->machine().options(), romp, chd->orig_chd(), chd->diff_chd());
+ err = open_disk_diff(machine().options(), romp, chd->orig_chd(), chd->diff_chd());
if (err != CHDERR_NONE)
{
- strcatprintf(romdata->errorstring, "%s DIFF CHD ERROR: %s\n", filename.c_str(), chd_file::error_string(err));
- romdata->errors++;
- global_free(chd);
+ strcatprintf(m_errorstring, "%s DIFF CHD ERROR: %s\n", filename.c_str(), chd_file::error_string(err));
+ m_errors++;
+ chd = nullptr;
continue;
}
}
/* we're okay, add to the list of disks */
LOG(("Assigning to handle %d\n", DISK_GETINDEX(romp)));
- romdata->machine().romload_data->chd_list.append(*chd);
+ m_chd_list.push_back(std::move(chd));
}
}
}
@@ -1289,7 +1218,7 @@ static void process_disk_entries(romload_private *romdata, const char *regiontag
flags for the given device
-------------------------------------------------*/
-static void normalize_flags_for_device(running_machine &machine, const char *rgntag, UINT8 &width, endianness_t &endian)
+void rom_load_manager::normalize_flags_for_device(running_machine &machine, const char *rgntag, UINT8 &width, endianness_t &endian)
{
device_t *device = machine.device(rgntag);
device_memory_interface *memory;
@@ -1330,19 +1259,18 @@ static void normalize_flags_for_device(running_machine &machine, const char *rgn
more general process_region_list.
-------------------------------------------------*/
-void load_software_part_region(device_t &device, software_list_device &swlist, const char *swname, const rom_entry *start_region)
+void rom_load_manager::load_software_part_region(device_t &device, software_list_device &swlist, const char *swname, const rom_entry *start_region)
{
std::string locationtag(swlist.list_name()), breakstr("%");
- romload_private *romdata = device.machine().romload_data;
const rom_entry *region;
std::string regiontag;
- romdata->errorstring.clear();
- romdata->softwarningstring.clear();
+ m_errorstring.clear();
+ m_softwarningstring.clear();
- romdata->romstotal = 0;
- romdata->romstotalsize = 0;
- romdata->romsloadedsize = 0;
+ m_romstotal = 0;
+ m_romstotalsize = 0;
+ m_romsloadedsize = 0;
software_info *swinfo = swlist.find(swname);
if (swinfo != nullptr)
@@ -1350,13 +1278,13 @@ void load_software_part_region(device_t &device, software_list_device &swlist, c
UINT32 supported = swinfo->supported();
if (supported == SOFTWARE_SUPPORTED_PARTIAL)
{
- strcatprintf(romdata->errorstring, "WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name());
- strcatprintf(romdata->softwarningstring, "Support for software %s (in list %s) is only partial\n", swname, swlist.list_name());
+ strcatprintf(m_errorstring, "WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name());
+ strcatprintf(m_softwarningstring, "Support for software %s (in list %s) is only partial\n", swname, swlist.list_name());
}
if (supported == SOFTWARE_SUPPORTED_NO)
{
- strcatprintf(romdata->errorstring, "WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name());
- strcatprintf(romdata->softwarningstring, "Support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name());
+ strcatprintf(m_errorstring, "WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name());
+ strcatprintf(m_softwarningstring, "Support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name());
}
// attempt reading up the chain through the parents and create a locationtag std::string in the format
@@ -1390,57 +1318,57 @@ void load_software_part_region(device_t &device, software_list_device &swlist, c
/* if this is a device region, override with the device width and endianness */
endianness_t endianness = ROMREGION_ISBIGENDIAN(region) ? ENDIANNESS_BIG : ENDIANNESS_LITTLE;
UINT8 width = ROMREGION_GETWIDTH(region) / 8;
- memory_region *memregion = romdata->machine().root_device().memregion(regiontag.c_str());
+ memory_region *memregion = machine().root_device().memregion(regiontag.c_str());
if (memregion != nullptr)
{
- if (romdata->machine().device(regiontag.c_str()) != nullptr)
- normalize_flags_for_device(romdata->machine(), regiontag.c_str(), width, endianness);
+ if (machine().device(regiontag.c_str()) != nullptr)
+ normalize_flags_for_device(machine(), regiontag.c_str(), width, endianness);
/* clear old region (todo: should be moved to an image unload function) */
- romdata->machine().memory().region_free(memregion->name());
+ machine().memory().region_free(memregion->name());
}
/* remember the base and length */
- romdata->region = romdata->machine().memory().region_alloc(regiontag.c_str(), regionlength, width, endianness);
- LOG(("Allocated %X bytes @ %p\n", romdata->region->bytes(), romdata->region->base()));
+ m_region = machine().memory().region_alloc(regiontag.c_str(), regionlength, width, endianness);
+ LOG(("Allocated %X bytes @ %p\n", m_region->bytes(), m_region->base()));
/* clear the region if it's requested */
if (ROMREGION_ISERASE(region))
- memset(romdata->region->base(), ROMREGION_GETERASEVAL(region), romdata->region->bytes());
+ memset(m_region->base(), ROMREGION_GETERASEVAL(region), m_region->bytes());
/* or if it's sufficiently small (<= 4MB) */
- else if (romdata->region->bytes() <= 0x400000)
- memset(romdata->region->base(), 0, romdata->region->bytes());
+ else if (m_region->bytes() <= 0x400000)
+ memset(m_region->base(), 0, m_region->bytes());
#ifdef MAME_DEBUG
/* if we're debugging, fill region with random data to catch errors */
else
- fill_random(romdata->machine(), romdata->region->base(), romdata->region->bytes());
+ fill_random(m_region->base(), m_region->bytes());
#endif
/* update total number of roms */
for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom))
{
- romdata->romstotal++;
- romdata->romstotalsize += rom_file_size(rom);
+ m_romstotal++;
+ m_romstotalsize += rom_file_size(rom);
}
/* now process the entries in the region */
if (ROMREGION_ISROMDATA(region))
- process_rom_entries(romdata, locationtag.c_str(), region, region + 1, &device, TRUE);
+ process_rom_entries(locationtag.c_str(), region, region + 1, &device, TRUE);
else if (ROMREGION_ISDISKDATA(region))
- process_disk_entries(romdata, regiontag.c_str(), region, region + 1, locationtag.c_str());
+ process_disk_entries(regiontag.c_str(), region, region + 1, locationtag.c_str());
}
/* now go back and post-process all the regions */
for (region = start_region; region != nullptr; region = rom_next_region(region))
{
regiontag = device.subtag(ROMREGION_GETTAG(region));
- region_post_process(romdata, regiontag.c_str(), ROMREGION_ISINVERTED(region));
+ region_post_process(regiontag.c_str(), ROMREGION_ISINVERTED(region));
}
/* display the results and exit */
- display_rom_load_results(romdata, TRUE);
+ display_rom_load_results(TRUE);
}
@@ -1448,12 +1376,12 @@ void load_software_part_region(device_t &device, software_list_device &swlist, c
process_region_list - process a region list
-------------------------------------------------*/
-static void process_region_list(romload_private *romdata)
+void rom_load_manager::process_region_list()
{
std::string regiontag;
/* loop until we hit the end */
- device_iterator deviter(romdata->machine().root_device());
+ device_iterator deviter(machine().root_device());
for (device_t *device = deviter.first(); device != nullptr; device = deviter.next())
for (const rom_entry *region = rom_first_region(*device); region != nullptr; region = rom_next_region(region))
{
@@ -1470,32 +1398,32 @@ static void process_region_list(romload_private *romdata)
/* if this is a device region, override with the device width and endianness */
UINT8 width = ROMREGION_GETWIDTH(region) / 8;
endianness_t endianness = ROMREGION_ISBIGENDIAN(region) ? ENDIANNESS_BIG : ENDIANNESS_LITTLE;
- if (romdata->machine().device(regiontag.c_str()) != nullptr)
- normalize_flags_for_device(romdata->machine(), regiontag.c_str(), width, endianness);
+ if (machine().device(regiontag.c_str()) != nullptr)
+ normalize_flags_for_device(machine(), regiontag.c_str(), width, endianness);
/* remember the base and length */
- romdata->region = romdata->machine().memory().region_alloc(regiontag.c_str(), regionlength, width, endianness);
- LOG(("Allocated %X bytes @ %p\n", romdata->region->bytes(), romdata->region->base()));
+ m_region = machine().memory().region_alloc(regiontag.c_str(), regionlength, width, endianness);
+ LOG(("Allocated %X bytes @ %p\n", m_region->bytes(), m_region->base()));
/* clear the region if it's requested */
if (ROMREGION_ISERASE(region))
- memset(romdata->region->base(), ROMREGION_GETERASEVAL(region), romdata->region->bytes());
+ memset(m_region->base(), ROMREGION_GETERASEVAL(region), m_region->bytes());
/* or if it's sufficiently small (<= 4MB) */
- else if (romdata->region->bytes() <= 0x400000)
- memset(romdata->region->base(), 0, romdata->region->bytes());
+ else if (m_region->bytes() <= 0x400000)
+ memset(m_region->base(), 0, m_region->bytes());
#ifdef MAME_DEBUG
/* if we're debugging, fill region with random data to catch errors */
else
- fill_random(romdata->machine(), romdata->region->base(), romdata->region->bytes());
+ fill_random(m_region->base(), m_region->bytes());
#endif
/* now process the entries in the region */
- process_rom_entries(romdata, device->shortname(), region, region + 1, device, FALSE);
+ process_rom_entries(device->shortname(), region, region + 1, device, FALSE);
}
else if (ROMREGION_ISDISKDATA(region))
- process_disk_entries(romdata, regiontag.c_str(), region, region + 1, nullptr);
+ process_disk_entries(regiontag.c_str(), region, region + 1, nullptr);
}
/* now go back and post-process all the regions */
@@ -1503,7 +1431,7 @@ static void process_region_list(romload_private *romdata)
for (const rom_entry *region = rom_first_region(*device); region != nullptr; region = rom_next_region(region))
{
regiontag = rom_region_name(*device, region);
- region_post_process(romdata, regiontag.c_str(), ROMREGION_ISINVERTED(region));
+ region_post_process(regiontag.c_str(), ROMREGION_ISINVERTED(region));
}
/* and finally register all per-game parameters */
@@ -1511,7 +1439,7 @@ static void process_region_list(romload_private *romdata)
for (const rom_entry *param = rom_first_parameter(*device); param != nullptr; param = rom_next_parameter(param))
{
regiontag = rom_parameter_name(*device, param);
- romdata->machine().parameters().add(regiontag, rom_parameter_value(param));
+ machine().parameters().add(regiontag, rom_parameter_value(param));
}
}
@@ -1521,87 +1449,35 @@ static void process_region_list(romload_private *romdata)
images associated with the given machine
-------------------------------------------------*/
-void rom_init(running_machine &machine)
+rom_load_manager::rom_load_manager(running_machine &machine)
+ : m_machine(machine)
{
- romload_private *romdata;
-
- /* allocate private data */
- machine.romload_data = romdata = auto_alloc_clear(machine, romload_private);
-
- /* make sure we get called back on the way out */
- machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(rom_exit), &machine));
-
- /* reset the romdata struct */
- romdata->m_machine = &machine;
-
/* figure out which BIOS we are using */
- device_iterator deviter(romdata->machine().config().root_device());
+ device_iterator deviter(machine.config().root_device());
for (device_t *device = deviter.first(); device != nullptr; device = deviter.next()) {
if (device->rom_region()) {
- const char *specbios;
- std::string temp;
- if (strcmp(device->tag(),":")==0) {
- specbios = romdata->machine().options().bios();
+ std::string specbios;
+ if (device->owner() == nullptr) {
+ specbios.assign(machine.options().bios());
} else {
- specbios = romdata->machine().options().sub_value(temp,device->owner()->tag()+1,"bios");
- if (strlen(specbios) == 0) {
- specbios = device->default_bios_tag().c_str();
+ specbios = machine.options().sub_value(device->owner()->tag()+1,"bios");
+ if (specbios.empty()) {
+ specbios = device->default_bios_tag();
}
}
- determine_bios_rom(romdata, device, specbios);
+ determine_bios_rom(device, specbios.c_str());
}
}
/* count the total number of ROMs */
- count_roms(romdata);
+ count_roms();
/* reset the disk list */
- romdata->chd_list.reset();
+ m_chd_list.clear();
/* process the ROM entries we were passed */
- process_region_list(romdata);
+ process_region_list();
/* display the results and exit */
- display_rom_load_results(romdata, FALSE);
-}
-
-
-/*-------------------------------------------------
- rom_exit - clean up after ourselves
--------------------------------------------------*/
-
-static void rom_exit(running_machine &machine)
-{
-}
-
-
-/*-------------------------------------------------
- rom_load_warnings - return the number of
- warnings we generated
--------------------------------------------------*/
-
-int rom_load_warnings(running_machine &machine)
-{
- return machine.romload_data->warnings;
-}
-
-
-/*-------------------------------------------------
- software_load_warnings_message - return the
- software load warnings we generated
--------------------------------------------------*/
-
-std::string& software_load_warnings_message(running_machine &machine)
-{
- return machine.romload_data->softwarningstring;
-}
-
-/*-------------------------------------------------
- rom_load_knownbad - return the number of
- BAD_DUMP/NO_DUMP warnings we generated
--------------------------------------------------*/
-
-int rom_load_knownbad(running_machine &machine)
-{
- return machine.romload_data->knownbad;
+ display_rom_load_results(FALSE);
}
diff --git a/src/emu/romload.h b/src/emu/romload.h
index ec0e3375cdd..c7c10e49325 100644
--- a/src/emu/romload.h
+++ b/src/emu/romload.h
@@ -16,7 +16,7 @@
#ifndef __ROMLOAD_H__
#define __ROMLOAD_H__
-
+#include "chd.h"
/***************************************************************************
CONSTANTS
@@ -254,31 +254,103 @@ struct rom_entry
#define DISK_IMAGE_READONLY_OPTIONAL(name,idx,hash) ROMX_LOAD(name, idx, 0, hash, DISK_READONLY | ROM_OPTIONAL)
-
/***************************************************************************
- FUNCTION PROTOTYPES
+TYPE DEFINITIONS
***************************************************************************/
+// ======================> rom_load_manager
-/* ----- ROM processing ----- */
-
-/* load the ROMs and open the disk images associated with the given machine */
-void rom_init(running_machine &machine);
-
-/* return the number of warnings we generated */
-int rom_load_warnings(running_machine &machine);
-std::string& software_load_warnings_message(running_machine &machine);
+class rom_load_manager
+{
+ class open_chd
+ {
+ public:
+ open_chd(const char *region)
+ : m_region(region) { }
+
+ const char *region() const { return m_region.c_str(); }
+ chd_file &chd() { return m_diffchd.opened() ? m_diffchd : m_origchd; }
+ chd_file &orig_chd() { return m_origchd; }
+ chd_file &diff_chd() { return m_diffchd; }
+
+ private:
+ std::string m_region; /* disk region we came from */
+ chd_file m_origchd; /* handle to the original CHD */
+ chd_file m_diffchd; /* handle to the diff CHD */
+ };
+
+public:
+ // construction/destruction
+ rom_load_manager(running_machine &machine);
+
+ // getters
+ running_machine &machine() const { return m_machine; }
+
+ /* return the number of warnings we generated */
+ int warnings() const { return m_warnings; }
+
+ std::string& software_load_warnings_message() { return m_softwarningstring; }
+
+ /* return the number of BAD_DUMP/NO_DUMP warnings we generated */
+ int knownbad() const { return m_knownbad; }
+
+ /* ----- disk handling ----- */
+
+ /* return a pointer to the CHD file associated with the given region */
+ chd_file *get_disk_handle(const char *region);
+
+ /* set a pointer to the CHD file associated with the given region */
+ int set_disk_handle(const char *region, const char *fullpath);
+
+ void load_software_part_region(device_t &device, software_list_device &swlist, const char *swname, const rom_entry *start_region);
+
+private:
+ void determine_bios_rom(device_t *device, const char *specbios);
+ void count_roms();
+ void fill_random(UINT8 *base, UINT32 length);
+ void handle_missing_file(const rom_entry *romp, std::string tried_file_names, chd_error chderr);
+ void dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes);
+ void verify_length_and_hash(const char *name, UINT32 explength, const hash_collection &hashes);
+ void display_loading_rom_message(const char *name, bool from_list);
+ void display_rom_load_results(bool from_list);
+ void region_post_process(const char *rgntag, bool invert);
+ int open_rom_file(const char *regiontag, const rom_entry *romp, std::string &tried_file_names, bool from_list);
+ int rom_fread(UINT8 *buffer, int length, const rom_entry *parent_region);
+ int read_rom_data(const rom_entry *parent_region, const rom_entry *romp);
+ void fill_rom_data(const rom_entry *romp);
+ void copy_rom_data(const rom_entry *romp);
+ void process_rom_entries(const char *regiontag, const rom_entry *parent_region, const rom_entry *romp, device_t *device, bool from_list);
+ chd_error open_disk_diff(emu_options &options, const rom_entry *romp, chd_file &source, chd_file &diff_chd);
+ void process_disk_entries(const char *regiontag, const rom_entry *parent_region, const rom_entry *romp, const char *locationtag);
+ void normalize_flags_for_device(running_machine &machine, const char *rgntag, UINT8 &width, endianness_t &endian);
+ void process_region_list();
+
+
+ // internal state
+ running_machine & m_machine; // reference to our machine
+
+ int m_warnings; /* warning count during processing */
+ int m_knownbad; /* BAD_DUMP/NO_DUMP count during processing */
+ int m_errors; /* error count during processing */
+
+ int m_romsloaded; /* current ROMs loaded count */
+ int m_romstotal; /* total number of ROMs to read */
+ UINT32 m_romsloadedsize; /* total size of ROMs loaded so far */
+ UINT32 m_romstotalsize; /* total size of ROMs to read */
+
+ std::unique_ptr<emu_file> m_file; /* current file */
+ std::vector<std::unique_ptr<open_chd>> m_chd_list; /* disks */
+
+ memory_region * m_region; /* info about current region */
+
+ std::string m_errorstring; /* error string */
+ std::string m_softwarningstring; /* software warning string */
+};
-/* return the number of BAD_DUMP/NO_DUMP warnings we generated */
-int rom_load_knownbad(running_machine &machine);
/* ----- Helpers ----- */
-file_error common_process_file(emu_options &options, const char *location, const char *ext, const rom_entry *romp, emu_file **image_file);
-file_error common_process_file(emu_options &options, const char *location, bool has_crc, UINT32 crc, const rom_entry *romp, emu_file **image_file);
-
-
-/* ----- ROM iteration ----- */
+std::unique_ptr<emu_file> common_process_file(emu_options &options, const char *location, bool has_crc, UINT32 crc, const rom_entry *romp, file_error &filerr);
/* return pointer to the first ROM region within a source */
const rom_entry *rom_first_region(const device_t &device);
@@ -311,17 +383,7 @@ std::string rom_parameter_name(const device_t &device, const rom_entry *romp);
std::string rom_parameter_value(const rom_entry *romp);
-/* ----- disk handling ----- */
-
/* open a disk image, searching up the parent and loading by checksum */
int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_entry *romp, chd_file &image_chd, const char *locationtag);
-/* return a pointer to the CHD file associated with the given region */
-chd_file *get_disk_handle(running_machine &machine, const char *region);
-
-/* set a pointer to the CHD file associated with the given region */
-int set_disk_handle(running_machine &machine, const char *region, const char *fullpath);
-
-void load_software_part_region(device_t &device, software_list_device &swlist, const char *swname, const rom_entry *start_region);
-
#endif /* __ROMLOAD_H__ */
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/softlist.cpp b/src/emu/softlist.cpp
index 2a5ceaccdcc..6631fa82124 100644
--- a/src/emu/softlist.cpp
+++ b/src/emu/softlist.cpp
@@ -703,13 +703,13 @@ softlist_parser::softlist_parser(software_list_device &list, std::string &errors
void *softlist_parser::expat_malloc(size_t size)
{
- return global_alloc_array_clear(UINT8, size);
+ return global_alloc_array_clear<UINT8>(size);
}
void *softlist_parser::expat_realloc(void *ptr, size_t size)
{
if (ptr != nullptr) global_free_array((UINT8 *)ptr);
- return global_alloc_array_clear(UINT8, size);
+ return global_alloc_array_clear<UINT8>(size);
}
void softlist_parser::expat_free(void *ptr)
diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp
index dbfc8813ec7..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;
}
@@ -404,7 +406,6 @@ void sound_stream::update_with_accounting(bool second_tick)
if (output_bufindex > 0)
for (auto & output : m_output)
{
-
memmove(&output.m_buffer[0], &output.m_buffer[samples_to_lose], sizeof(output.m_buffer[0]) * (output_bufindex - samples_to_lose));
}
@@ -459,7 +460,6 @@ void sound_stream::recompute_sample_rate_data()
// When synchronous, pick the sample rate for the inputs, if any
for (auto & input : m_input)
{
-
if (input.m_source != nullptr)
{
if (!m_sample_rate)
@@ -486,7 +486,7 @@ void sound_stream::recompute_sample_rate_data()
for (auto & input : m_input)
{
// if we have a source, see if its sample rate changed
-
+
if (input.m_source != nullptr)
{
// okay, we have a new sample rate; recompute the latency to be the maximum
@@ -840,7 +840,7 @@ sound_manager::sound_manager(running_machine &machine)
m_wavfile = wav_open(wavfile, machine.sample_rate(), 2);
// register callbacks
- config_register(machine, "mixer", config_saveload_delegate(FUNC(sound_manager::config_load), this), config_saveload_delegate(FUNC(sound_manager::config_save), this));
+ machine.configuration().config_register("mixer", config_saveload_delegate(FUNC(sound_manager::config_load), this), config_saveload_delegate(FUNC(sound_manager::config_save), this));
machine.add_notifier(MACHINE_NOTIFY_PAUSE, machine_notify_delegate(FUNC(sound_manager::pause), this));
machine.add_notifier(MACHINE_NOTIFY_RESUME, machine_notify_delegate(FUNC(sound_manager::resume), this));
machine.add_notifier(MACHINE_NOTIFY_RESET, machine_notify_delegate(FUNC(sound_manager::reset), this));
@@ -969,10 +969,10 @@ void sound_manager::resume()
// configuration file
//-------------------------------------------------
-void sound_manager::config_load(int config_type, xml_data_node *parentnode)
+void sound_manager::config_load(config_type cfg_type, xml_data_node *parentnode)
{
// we only care about game files
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
// might not have any data
@@ -999,10 +999,10 @@ void sound_manager::config_load(int config_type, xml_data_node *parentnode)
// file
//-------------------------------------------------
-void sound_manager::config_save(int config_type, xml_data_node *parentnode)
+void sound_manager::config_save(config_type cfg_type, xml_data_node *parentnode)
{
// we only care about game files
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
// iterate over mixer channels
diff --git a/src/emu/sound.h b/src/emu/sound.h
index 50c94486eb3..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;
@@ -222,8 +222,8 @@ private:
void reset();
void pause();
void resume();
- void config_load(int config_type, xml_data_node *parentnode);
- void config_save(int config_type, xml_data_node *parentnode);
+ void config_load(config_type cfg_type, xml_data_node *parentnode);
+ void config_save(config_type cfg_type, xml_data_node *parentnode);
void update(void *ptr = nullptr, INT32 param = 0);
diff --git a/src/emu/sound/filter.cpp b/src/emu/sound/filter.cpp
index 9473a8b720d..b01ec7efc4b 100644
--- a/src/emu/sound/filter.cpp
+++ b/src/emu/sound/filter.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
#include "emu.h"
#include "filter.h"
diff --git a/src/emu/sound/filter.h b/src/emu/sound/filter.h
index 7e7398a2686..ef13c45eb5f 100644
--- a/src/emu/sound/filter.h
+++ b/src/emu/sound/filter.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
#pragma once
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/filemngr.cpp b/src/emu/ui/filemngr.cpp
index ce94f437120..d277d0bd847 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 = auto_alloc_clear(machine, <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(auto_alloc_clear(machine, <ui_menu_file_manager>(machine, container, warnings)));
// force the menus on
machine.ui().show_menu();
diff --git a/src/emu/ui/imgcntrl.cpp b/src/emu/ui/imgcntrl.cpp
index 11ed8c26c5c..3bb77723726 100644
--- a/src/emu/ui/imgcntrl.cpp
+++ b/src/emu/ui/imgcntrl.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Nathan Woods
/***************************************************************************
- ui/imgcntrl.c
+ ui/imgcntrl.cpp
MESS's clunky built-in file manager
@@ -146,7 +146,7 @@ void ui_menu_control_device_image::load_software_part()
hook_load(temp_name, true);
else
{
- machine().popmessage("The selected game is missing one or more required ROM or CHD images. Please select a different game.");
+ machine().popmessage("The software selected is missing one or more required ROM or CHD images. Please select a different one.");
state = SELECT_SOFTLIST;
}
}
@@ -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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <ui_menu_confirm_save_as>(machine(), container, &create_confirmed)));
state = CREATE_CONFIRM;
} else {
state = DO_CREATE;
diff --git a/src/emu/ui/inputmap.cpp b/src/emu/ui/inputmap.cpp
index 3474cacee75..1fc0d046e1f 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(auto_alloc_clear(machine(), <ui_menu_input_general>(machine(), container, int((long long)(menu_event->itemref)-1))));
}
@@ -266,7 +266,7 @@ void ui_menu_input::handle()
input_item_data *item = pollingitem;
/* if UI_CANCEL is pressed, abort */
- if (ui_input_pressed(machine(), IPT_UI_CANCEL))
+ if (machine().ui_input().pressed(IPT_UI_CANCEL))
{
pollingitem = nullptr;
record_next = false;
@@ -434,7 +434,7 @@ void ui_menu_input::populate_and_sort(input_item_data *itemlist)
/* otherwise, generate the sequence name and invert it if different from the default */
else
{
- machine().input().seq_name(subtext, item->seq);
+ subtext = machine().input().seq_name(item->seq);
flags |= (item->seq != *item->defseq) ? MENU_FLAG_INVERT : 0;
}
diff --git a/src/emu/ui/mainmenu.cpp b/src/emu/ui/mainmenu.cpp
index 9b0e72aacad..415ad118811 100644
--- a/src/emu/ui/mainmenu.cpp
+++ b/src/emu/ui/mainmenu.cpp
@@ -125,7 +125,7 @@ void ui_menu_main::populate()
item_append("Video Options", nullptr, 0, (machine().render().target_by_index(1) != nullptr) ? (void *)VIDEO_TARGETS : (void *)VIDEO_OPTIONS);
/* add crosshair options menu */
- if (crosshair_get_usage(machine()))
+ if (machine().crosshair().get_usage())
item_append("Crosshair Options", nullptr, 0, (void *)CROSSHAIR);
/* add cheat menu */
@@ -152,91 +152,91 @@ 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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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)));
+ ui_menu::stack_push(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <ui_menu_cheat>(machine(), container)));
break;
case SELECT_GAME:
- ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_select_game(machine(), container, nullptr)));
+ ui_menu::stack_push(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <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(auto_alloc_clear(machine(), <ui_menu_barcode_reader>(machine(), container, nullptr)));
break;
default:
diff --git a/src/emu/ui/menu.cpp b/src/emu/ui/menu.cpp
index 6456d425ddd..069b05aa913 100644
--- a/src/emu/ui/menu.cpp
+++ b/src/emu/ui/menu.cpp
@@ -31,7 +31,7 @@
ui_menu *ui_menu::menu_stack;
ui_menu *ui_menu::menu_free;
-bitmap_rgb32 *ui_menu::hilight_bitmap;
+std::unique_ptr<bitmap_rgb32> ui_menu::hilight_bitmap;
render_texture *ui_menu::hilight_texture;
render_texture *ui_menu::arrow_texture;
@@ -58,7 +58,7 @@ inline bool ui_menu_item::is_selectable() const
inline bool ui_menu::exclusive_input_pressed(int key, int repeat)
{
- if (menu_event.iptkey == IPT_INVALID && ui_input_pressed_repeat(machine(), key, repeat))
+ if (menu_event.iptkey == IPT_INVALID && machine().ui_input().pressed_repeat(key, repeat))
{
menu_event.iptkey = key;
return true;
@@ -84,7 +84,7 @@ void ui_menu::init(running_machine &machine)
ui_menu::stack_reset(machine);
// create a texture for hilighting items
- hilight_bitmap = auto_bitmap_rgb32_alloc(machine, 256, 1);
+ hilight_bitmap = std::make_unique<bitmap_rgb32>(256, 1);
for (x = 0; x < 256; x++)
{
int alpha = 0xff;
@@ -492,7 +492,7 @@ void ui_menu::draw(bool customonly)
mouse_button = false;
if (!customonly)
{
- mouse_target = ui_input_find_mouse(machine(), &mouse_target_x, &mouse_target_y, &mouse_button);
+ 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;
@@ -749,7 +749,7 @@ void ui_menu::handle_events()
ui_event local_menu_event;
// loop while we have interesting events
- while (!stop && ui_input_pop_event(machine(), &local_menu_event))
+ while (!stop && machine().ui_input().pop_event(&local_menu_event))
{
switch (local_menu_event.event_type)
{
@@ -901,7 +901,7 @@ void ui_menu::handle_keys(UINT32 flags)
}
// handle a toggle cheats request
- if (ui_input_pressed_repeat(machine(), IPT_UI_TOGGLE_CHEAT, 0))
+ if (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
@@ -979,7 +979,7 @@ void ui_menu::stack_push(ui_menu *menu)
menu->parent = menu_stack;
menu_stack = menu;
menu->reset(UI_MENU_RESET_SELECT_FIRST);
- ui_input_reset(menu->machine());
+ menu->machine().ui_input().reset();
}
@@ -995,7 +995,7 @@ void ui_menu::stack_pop(running_machine &machine)
menu_stack = menu->parent;
menu->parent = menu_free;
menu_free = menu;
- ui_input_reset(machine);
+ machine.ui_input().reset();
}
}
@@ -1037,7 +1037,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(auto_alloc_clear(machine, <ui_menu_main>(machine, container)));
// update the menu state
if (menu_stack != nullptr)
@@ -1047,7 +1047,7 @@ UINT32 ui_menu::ui_handler(running_machine &machine, render_container *container
clear_free_list(machine);
// if the menus are to be hidden, return a cancel here
- if (machine.ui().is_menu_active() && ((ui_input_pressed(machine, IPT_UI_CONFIGURE) && !stack_has_special_main_menu()) || menu_stack == nullptr))
+ if (machine.ui().is_menu_active() && ((machine.ui_input().pressed(IPT_UI_CONFIGURE) && !stack_has_special_main_menu()) || menu_stack == nullptr))
return UI_HANDLER_CANCEL;
return 0;
diff --git a/src/emu/ui/menu.h b/src/emu/ui/menu.h
index c16add8d5c8..b52b0f90ff4 100644
--- a/src/emu/ui/menu.h
+++ b/src/emu/ui/menu.h
@@ -170,7 +170,7 @@ public:
private:
static ui_menu *menu_free;
- static bitmap_rgb32 *hilight_bitmap;
+ static std::unique_ptr<bitmap_rgb32> hilight_bitmap;
static render_texture *hilight_texture, *arrow_texture;
bool m_special_main_menu;
diff --git a/src/emu/ui/miscmenu.cpp b/src/emu/ui/miscmenu.cpp
index 9053b6cd7c1..1eaa9fe1366 100644
--- a/src/emu/ui/miscmenu.cpp
+++ b/src/emu/ui/miscmenu.cpp
@@ -124,9 +124,8 @@ void ui_menu_bios_selection::handle()
assert(error.empty());
} else {
std::string error;
- std::string value;
- std::string temp;
- strprintf(value,"%s,bios=%d",machine().options().main_value(temp,dev->owner()->tag()+1),val-1);
+ std::string value = machine().options().main_value(dev->owner()->tag()+1);
+ strcatprintf(value,",bios=%d",val-1);
machine().options().set_value(dev->owner()->tag()+1, value.c_str(), OPTION_PRIORITY_CMDLINE, error);
assert(error.empty());
}
@@ -231,7 +230,7 @@ ui_menu_bookkeeping::~ui_menu_bookkeeping()
void ui_menu_bookkeeping::populate()
{
- int tickets = get_dispensed_tickets(machine());
+ int tickets = machine().bookkeeping().get_dispensed_tickets();
std::string tempstring;
int ctrnum;
@@ -248,7 +247,7 @@ void ui_menu_bookkeeping::populate()
/* loop over coin counters */
for (ctrnum = 0; ctrnum < COIN_COUNTERS; ctrnum++)
{
- int count = coin_counter_get_count(machine(), ctrnum);
+ int count = machine().bookkeeping().coin_counter_get_count(ctrnum);
/* display the coin counter number */
strcatprintf(tempstring,"Coin %c: ", ctrnum + 'A');
@@ -260,7 +259,7 @@ void ui_menu_bookkeeping::populate()
strcatprintf(tempstring, "%d", count);
/* display whether or not we are locked out */
- if (coin_lockout_get_state(machine(), ctrnum))
+ if (machine().bookkeeping().coin_lockout_get_state(ctrnum))
tempstring.append(" (locked)");
tempstring.append("\n");
}
@@ -289,7 +288,7 @@ void ui_menu_crosshair::handle()
int newval = data->cur;
/* retreive the user settings */
- crosshair_get_user_settings(machine(), data->player, &settings);
+ machine().crosshair().get_user_settings(data->player, &settings);
switch (menu_event->iptkey)
{
@@ -361,7 +360,7 @@ void ui_menu_crosshair::handle()
if (changed)
{
/* save the user settings */
- crosshair_set_user_settings(machine(), data->player, &settings);
+ machine().crosshair().set_user_settings(data->player, &settings);
/* rebuild the menu */
reset(UI_MENU_RESET_REMEMBER_POSITION);
@@ -392,7 +391,7 @@ void ui_menu_crosshair::populate()
for (player = 0; player < MAX_PLAYERS; player++)
{
/* get the user settings */
- crosshair_get_user_settings(machine(), player, &settings);
+ machine().crosshair().get_user_settings(player, &settings);
/* add menu items for usable crosshairs */
if (settings.used)
@@ -503,7 +502,7 @@ void ui_menu_crosshair::populate()
if (use_auto)
{
/* any player can be used to get the autotime */
- crosshair_get_user_settings(machine(), 0, &settings);
+ machine().crosshair().get_user_settings(0, &settings);
/* CROSSHAIR_ITEM_AUTO_TIME - allocate a data item and fill it */
data = (crosshair_item_data *)m_pool_alloc(sizeof(*data));
diff --git a/src/emu/ui/miscmenu.h b/src/emu/ui/miscmenu.h
index 649977869f3..ea75897edde 100644
--- a/src/emu/ui/miscmenu.h
+++ b/src/emu/ui/miscmenu.h
@@ -83,8 +83,6 @@ public:
virtual ~ui_menu_bios_selection();
virtual void populate() override;
virtual void handle() override;
-
-private:
};
#endif /* __UI_MISCMENU_H__ */
diff --git a/src/emu/ui/selgame.cpp b/src/emu/ui/selgame.cpp
index a9286bcf3ee..9a080df6655 100644
--- a/src/emu/ui/selgame.cpp
+++ b/src/emu/ui/selgame.cpp
@@ -94,7 +94,7 @@ void ui_menu_select_game::build_driver_list()
void ui_menu_select_game::handle()
{
// ignore pause keys by swallowing them before we process the menu
- ui_input_pressed(machine(), IPT_UI_PAUSE);
+ machine().ui_input().pressed(IPT_UI_PAUSE);
// process the menu
const ui_menu_event *menu_event = process(0);
@@ -141,7 +141,7 @@ void ui_menu_select_game::inkey_select(const ui_menu_event *menu_event)
// special case for configure inputs
if ((FPTR)driver == 1)
- ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_input_groups(machine(), container)));
+ ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_input_groups>(machine(), container)));
// anything else is a driver
else
@@ -180,7 +180,7 @@ void ui_menu_select_game::inkey_cancel(const ui_menu_event *menu_event)
if (m_search[0] != 0)
{
// 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)));
+ ui_menu::stack_push(auto_alloc_clear(machine(), <ui_menu_select_game>(machine(), container, nullptr)));
}
}
@@ -325,7 +325,7 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer);
// next line source path
- strprintf(tempbuf[2],"Driver: %-.100s", core_filename_extract_base(tempbuf[3], driver->source_file).c_str());
+ 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)
@@ -356,7 +356,7 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
line = 0;
// first line is version string
- strprintf(tempbuf[line++], "%s %s", emulator_info::get_applongname(), build_version);
+ strprintf(tempbuf[line++], "%s %s", emulator_info::get_appname(), build_version);
// output message
while (line < ARRAY_LENGTH(tempbuf))
@@ -429,10 +429,10 @@ void ui_menu_select_game::force_game_select(running_machine &machine, render_con
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 = auto_alloc_clear(machine, <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(auto_alloc_clear(machine, <ui_menu_select_game>(machine, container, gamename)));
// force the menus on
machine.ui().show_menu();
diff --git a/src/emu/ui/sliders.cpp b/src/emu/ui/sliders.cpp
index a7b58aeb275..26da6327202 100644
--- a/src/emu/ui/sliders.cpp
+++ b/src/emu/ui/sliders.cpp
@@ -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(auto_alloc_clear(machine, <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 370fe8388a7..cce17353532 100644
--- a/src/emu/ui/slotopt.cpp
+++ b/src/emu/ui/slotopt.cpp
@@ -21,18 +21,18 @@
-------------------------------------------------*/
device_slot_option *ui_menu_slot_devices::slot_get_current_option(device_slot_interface *slot)
{
- const char *current;
+ std::string current;
if (slot->fixed())
{
- current = slot->default_option();
+ if (slot->default_option() == nullptr) return nullptr;
+ current.assign(slot->default_option());
}
else
{
- std::string temp;
- current = machine().options().main_value(temp, slot->device().tag() + 1);
+ current = machine().options().main_value(slot->device().tag() + 1);
}
- return slot->option(current);
+ return slot->option(current.c_str());
}
/*-------------------------------------------------
@@ -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(auto_alloc_clear(machine(), <ui_menu_device_config>(machine(), container, slot, option)));
}
}
}
diff --git a/src/emu/ui/swlist.cpp b/src/emu/ui/swlist.cpp
index 6155a4c5883..64eb5109fae 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(auto_alloc_clear(machine(), <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/ui.cpp b/src/emu/ui/ui.cpp
index 3a016b25b10..3f2d252c107 100644
--- a/src/emu/ui/ui.cpp
+++ b/src/emu/ui/ui.cpp
@@ -244,7 +244,7 @@ ui_manager::ui_manager(running_machine &machine)
// more initialization
set_handler(handler_messagebox, 0);
- m_non_char_keys_down = auto_alloc_array(machine, UINT8, (ARRAY_LENGTH(non_char_keys) + 7) / 8);
+ 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;
// request a callback upon exiting
@@ -358,7 +358,7 @@ void ui_manager::display_startup_screens(bool first_time, bool show_disclaimer)
break;
case 3:
- if (show_mandatory_fileman && image_mandatory_scan(machine(), messagebox_text).length() > 0)
+ if (show_mandatory_fileman && machine().image().mandatory_scan(messagebox_text).length() > 0)
{
std::string warning;
warning.assign("This driver requires images to be loaded in the following device(s): ").append(messagebox_text.substr(0, messagebox_text.length() - 2));
@@ -451,7 +451,7 @@ void ui_manager::update_and_render(render_container *container)
{
INT32 mouse_target_x, mouse_target_y;
bool mouse_button;
- render_target *mouse_target = ui_input_find_mouse(machine(), &mouse_target_x, &mouse_target_y, &mouse_button);
+ render_target *mouse_target = machine().ui_input().find_mouse(&mouse_target_x, &mouse_target_y, &mouse_button);
if (mouse_target != nullptr)
{
@@ -1019,16 +1019,18 @@ 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();
// if no warnings, nothing to return
- if (rom_load_warnings(machine()) == 0 && rom_load_knownbad(machine()) == 0 && !(machine().system().flags & WARNING_FLAGS) && software_load_warnings_message(machine()).length() == 0)
+ if (machine().rom_load().warnings() == 0 && machine().rom_load().knownbad() == 0 && !(machine().system().flags & WARNING_FLAGS) && machine().rom_load().software_load_warnings_message().length() == 0)
return str;
// add a warning if any ROMs were loaded with warnings
- if (rom_load_warnings(machine()) > 0)
+ if (machine().rom_load().warnings() > 0)
{
str.append("One or more ROMs/CHDs for this ");
str.append(emulator_info::get_gamenoun());
@@ -1039,20 +1041,20 @@ std::string &ui_manager::warnings_string(std::string &str)
str.append("\n");
}
- if (software_load_warnings_message(machine()).length()>0) {
- str.append(software_load_warnings_message(machine()));
+ if (machine().rom_load().software_load_warnings_message().length()>0) {
+ str.append(machine().rom_load().software_load_warnings_message());
if (machine().system().flags & WARNING_FLAGS)
str.append("\n");
}
// if we have at least one warning flag, print the general header
- if ((machine().system().flags & WARNING_FLAGS) || rom_load_knownbad(machine()) > 0)
+ if ((machine().system().flags & WARNING_FLAGS) || machine().rom_load().knownbad() > 0)
{
str.append("There are known problems with this ");
str.append(emulator_info::get_gamenoun());
str.append("\n\n");
// add a warning if any ROMs are flagged BAD_DUMP/NO_DUMP
- if (rom_load_knownbad(machine()) > 0) {
+ if (machine().rom_load().knownbad() > 0) {
str.append("One or more ROMs/CHDs for this ");
str.append(emulator_info::get_gamenoun());
str.append(" have not been correctly dumped.\n");
@@ -1083,6 +1085,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))
{
@@ -1153,8 +1169,7 @@ std::string &ui_manager::warnings_string(std::string &str)
std::string &ui_manager::game_info_astring(std::string &str)
{
// print description, manufacturer, and CPU:
- std::string tempstr;
- strprintf(str, "%s\n%s %s\nDriver: %s\n\nCPU:\n", machine().system().description, machine().system().year, machine().system().manufacturer, core_filename_extract_base(tempstr, machine().system().source_file).c_str());
+ strprintf(str, "%s\n%s %s\nDriver: %s\n\nCPU:\n", machine().system().description, machine().system().year, machine().system().manufacturer, core_filename_extract_base(machine().system().source_file).c_str());
// loop over all CPUs
execute_interface_iterator execiter(machine().root_device());
@@ -1289,15 +1304,15 @@ UINT32 ui_manager::handler_messagebox_ok(running_machine &machine, render_contai
machine.ui().draw_text_box(container, messagebox_text.c_str(), JUSTIFY_LEFT, 0.5f, 0.5f, messagebox_backcolor);
// an 'O' or left joystick kicks us to the next state
- if (state == 0 && (machine.input().code_pressed_once(KEYCODE_O) || ui_input_pressed(machine, IPT_UI_LEFT)))
+ if (state == 0 && (machine.input().code_pressed_once(KEYCODE_O) || machine.ui_input().pressed(IPT_UI_LEFT)))
state++;
// a 'K' or right joystick exits the state
- else if (state == 1 && (machine.input().code_pressed_once(KEYCODE_K) || ui_input_pressed(machine, IPT_UI_RIGHT)))
+ else if (state == 1 && (machine.input().code_pressed_once(KEYCODE_K) || machine.ui_input().pressed(IPT_UI_RIGHT)))
state = UI_HANDLER_CANCEL;
// if the user cancels, exit out completely
- else if (ui_input_pressed(machine, IPT_UI_CANCEL))
+ else if (machine.ui_input().pressed(IPT_UI_CANCEL))
{
machine.schedule_exit();
state = UI_HANDLER_CANCEL;
@@ -1319,7 +1334,7 @@ UINT32 ui_manager::handler_messagebox_anykey(running_machine &machine, render_co
machine.ui().draw_text_box(container, messagebox_text.c_str(), JUSTIFY_LEFT, 0.5f, 0.5f, messagebox_backcolor);
// if the user cancels, exit out completely
- if (ui_input_pressed(machine, IPT_UI_CANCEL))
+ if (machine.ui_input().pressed(IPT_UI_CANCEL))
{
machine.schedule_exit();
state = UI_HANDLER_CANCEL;
@@ -1348,7 +1363,7 @@ void ui_manager::process_natural_keyboard()
UINT8 key_down_mask;
// loop while we have interesting events
- while (ui_input_pop_event(machine(), &event))
+ while (machine().ui_input().pop_event(&event))
{
// if this was a UI_EVENT_CHAR event, post it
if (event.event_type == UI_EVENT_CHAR)
@@ -1489,7 +1504,7 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
if (machine.ui().show_fps_counter())
{
std::string tempstring;
- machine.ui().draw_text_full(container, machine.video().speed_text(tempstring).c_str(), 0.0f, 0.0f, 1.0f,
+ 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);
}
@@ -1514,7 +1529,7 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
if (machine.ioport().has_keyboard())
{
// are we toggling the UI with ScrLk?
- if (ui_input_pressed(machine, IPT_UI_TOGGLE_UI))
+ if (machine.ui_input().pressed(IPT_UI_TOGGLE_UI))
{
// toggle the UI
machine.set_ui_active(!machine.ui_active());
@@ -1550,7 +1565,7 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
if (!ui_disabled)
{
// paste command
- if (ui_input_pressed(machine, IPT_UI_PASTE))
+ if (machine.ui_input().pressed(IPT_UI_PASTE))
machine.ui().paste();
}
@@ -1558,28 +1573,28 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
if (ui_disabled) return ui_disabled;
- if (ui_input_pressed(machine, IPT_UI_CANCEL))
+ if (machine.ui_input().pressed(IPT_UI_CANCEL))
{
machine.ui().request_quit();
return 0;
}
// turn on menus if requested
- if (ui_input_pressed(machine, IPT_UI_CONFIGURE))
+ if (machine.ui_input().pressed(IPT_UI_CONFIGURE))
return machine.ui().set_handler(ui_menu::ui_handler, 0);
// if the on-screen display isn't up and the user has toggled it, turn it on
- if ((machine.debug_flags & DEBUG_FLAG_ENABLED) == 0 && ui_input_pressed(machine, IPT_UI_ON_SCREEN_DISPLAY))
+ if ((machine.debug_flags & DEBUG_FLAG_ENABLED) == 0 && machine.ui_input().pressed(IPT_UI_ON_SCREEN_DISPLAY))
return machine.ui().set_handler(ui_menu_sliders::ui_handler, 1);
// handle a reset request
- if (ui_input_pressed(machine, IPT_UI_RESET_MACHINE))
+ if (machine.ui_input().pressed(IPT_UI_RESET_MACHINE))
machine.schedule_hard_reset();
- if (ui_input_pressed(machine, IPT_UI_SOFT_RESET))
+ if (machine.ui_input().pressed(IPT_UI_SOFT_RESET))
machine.schedule_soft_reset();
// handle a request to display graphics/palette
- if (ui_input_pressed(machine, IPT_UI_SHOW_GFX))
+ if (machine.ui_input().pressed(IPT_UI_SHOW_GFX))
{
if (!is_paused)
machine.pause();
@@ -1587,7 +1602,7 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
}
// handle a tape control key
- if (ui_input_pressed(machine, IPT_UI_TAPE_START))
+ if (machine.ui_input().pressed(IPT_UI_TAPE_START))
{
cassette_device_iterator cassiter(machine.root_device());
for (cassette_image_device *cass = cassiter.first(); cass != nullptr; cass = cassiter.next())
@@ -1596,7 +1611,7 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
return 0;
}
}
- if (ui_input_pressed(machine, IPT_UI_TAPE_STOP))
+ if (machine.ui_input().pressed(IPT_UI_TAPE_STOP))
{
cassette_device_iterator cassiter(machine.root_device());
for (cassette_image_device *cass = cassiter.first(); cass != nullptr; cass = cassiter.next())
@@ -1607,25 +1622,25 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
}
// handle a save state request
- if (ui_input_pressed(machine, IPT_UI_SAVE_STATE))
+ if (machine.ui_input().pressed(IPT_UI_SAVE_STATE))
{
machine.pause();
return machine.ui().set_handler(handler_load_save, LOADSAVE_SAVE);
}
// handle a load state request
- if (ui_input_pressed(machine, IPT_UI_LOAD_STATE))
+ if (machine.ui_input().pressed(IPT_UI_LOAD_STATE))
{
machine.pause();
return machine.ui().set_handler(handler_load_save, LOADSAVE_LOAD);
}
// handle a save snapshot request
- if (ui_input_pressed(machine, IPT_UI_SNAPSHOT))
+ if (machine.ui_input().pressed(IPT_UI_SNAPSHOT))
machine.video().save_active_screen_snapshots();
// toggle pause
- if (ui_input_pressed(machine, IPT_UI_PAUSE))
+ 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)))
@@ -1638,31 +1653,31 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
}
// handle a toggle cheats request
- if (ui_input_pressed(machine, IPT_UI_TOGGLE_CHEAT))
+ if (machine.ui_input().pressed(IPT_UI_TOGGLE_CHEAT))
machine.cheat().set_enable(!machine.cheat().enabled());
// toggle movie recording
- if (ui_input_pressed(machine, IPT_UI_RECORD_MOVIE))
+ if (machine.ui_input().pressed(IPT_UI_RECORD_MOVIE))
machine.video().toggle_record_movie();
// toggle profiler display
- if (ui_input_pressed(machine, IPT_UI_SHOW_PROFILER))
+ if (machine.ui_input().pressed(IPT_UI_SHOW_PROFILER))
machine.ui().set_show_profiler(!machine.ui().show_profiler());
// toggle FPS display
- if (ui_input_pressed(machine, IPT_UI_SHOW_FPS))
+ if (machine.ui_input().pressed(IPT_UI_SHOW_FPS))
machine.ui().set_show_fps(!machine.ui().show_fps());
// increment frameskip?
- if (ui_input_pressed(machine, IPT_UI_FRAMESKIP_INC))
+ if (machine.ui_input().pressed(IPT_UI_FRAMESKIP_INC))
machine.ui().increase_frameskip();
// decrement frameskip?
- if (ui_input_pressed(machine, IPT_UI_FRAMESKIP_DEC))
+ if (machine.ui_input().pressed(IPT_UI_FRAMESKIP_DEC))
machine.ui().decrease_frameskip();
// toggle throttle?
- if (ui_input_pressed(machine, IPT_UI_THROTTLE))
+ if (machine.ui_input().pressed(IPT_UI_THROTTLE))
machine.video().toggle_throttle();
// check for fast forward
@@ -1699,7 +1714,7 @@ UINT32 ui_manager::handler_load_save(running_machine &machine, render_container
machine.ui().draw_message_window(container, "Select position to load from");
// check for cancel key
- if (ui_input_pressed(machine, IPT_UI_CANCEL))
+ if (machine.ui_input().pressed(IPT_UI_CANCEL))
{
// display a popup indicating things were cancelled
if (state == LOADSAVE_SAVE)
@@ -1767,17 +1782,13 @@ void ui_manager::request_quit()
UINT32 ui_manager::handler_confirm_quit(running_machine &machine, render_container *container, UINT32 state)
{
// get the text for 'UI Select'
- std::string ui_select_text;
- machine.input().seq_name(ui_select_text, machine.ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD));
+ std::string ui_select_text = machine.input().seq_name(machine.ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD));
// get the text for 'UI Cancel'
- std::string ui_cancel_text;
- machine.input().seq_name(ui_cancel_text, machine.ioport().type_seq(IPT_UI_CANCEL, 0, SEQ_TYPE_STANDARD));
+ std::string ui_cancel_text = machine.input().seq_name(machine.ioport().type_seq(IPT_UI_CANCEL, 0, SEQ_TYPE_STANDARD));
// assemble the quit message
- std::string quit_message;
- strprintf(quit_message,
- "Are you sure you want to quit?\n\n"
+ std::string quit_message = strformat("Are you sure you want to quit?\n\n"
"Press ''%s'' to quit,\n"
"Press ''%s'' to return to emulation.",
ui_select_text.c_str(),
@@ -1787,11 +1798,11 @@ UINT32 ui_manager::handler_confirm_quit(running_machine &machine, render_contain
machine.pause();
// if the user press ENTER, quit the game
- if (ui_input_pressed(machine, IPT_UI_SELECT))
+ if (machine.ui_input().pressed(IPT_UI_SELECT))
machine.schedule_exit();
// if the user press ESC, just continue
- else if (ui_input_pressed(machine, IPT_UI_CANCEL))
+ else if (machine.ui_input().pressed(IPT_UI_CANCEL))
{
machine.resume();
state = UI_HANDLER_CANCEL;
@@ -1861,7 +1872,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;
diff --git a/src/emu/ui/ui.h b/src/emu/ui/ui.h
index 987cf2b8976..ac68a2fb773 100644
--- a/src/emu/ui/ui.h
+++ b/src/emu/ui/ui.h
@@ -179,7 +179,7 @@ private:
bool m_show_profiler;
osd_ticks_t m_popup_text_end;
bool m_use_natural_keyboard;
- UINT8 * m_non_char_keys_down;
+ std::unique_ptr<UINT8[]> m_non_char_keys_down;
render_texture * m_mouse_arrow_texture;
bool m_mouse_show;
diff --git a/src/emu/ui/videoopt.cpp b/src/emu/ui/videoopt.cpp
index c3427004008..e76c27305c8 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(auto_alloc_clear(machine(), <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 c59be16b199..326e67779c9 100644
--- a/src/emu/ui/viewgfx.cpp
+++ b/src/emu/ui/viewgfx.cpp
@@ -301,13 +301,13 @@ again:
}
// handle keys
- if (ui_input_pressed(machine, IPT_UI_SELECT))
+ if (machine.ui_input().pressed(IPT_UI_SELECT))
{
state.mode = (state.mode + 1) % 3;
state.bitmap_dirty = true;
}
- if (ui_input_pressed(machine, IPT_UI_PAUSE))
+ if (machine.ui_input().pressed(IPT_UI_PAUSE))
{
if (machine.paused())
machine.resume();
@@ -315,7 +315,7 @@ again:
machine.pause();
}
- if (ui_input_pressed(machine, IPT_UI_CANCEL) || ui_input_pressed(machine, IPT_UI_SHOW_GFX))
+ if (machine.ui_input().pressed(IPT_UI_CANCEL) || machine.ui_input().pressed(IPT_UI_SHOW_GFX))
goto cancel;
return uistate;
@@ -481,9 +481,9 @@ static void palette_handle_keys(running_machine &machine, ui_gfx_state &state)
int total;
// handle zoom (minus,plus)
- if (ui_input_pressed(machine, IPT_UI_ZOOM_OUT))
+ if (machine.ui_input().pressed(IPT_UI_ZOOM_OUT))
state.palette.columns /= 2;
- if (ui_input_pressed(machine, IPT_UI_ZOOM_IN))
+ if (machine.ui_input().pressed(IPT_UI_ZOOM_IN))
state.palette.columns *= 2;
// clamp within range
@@ -493,7 +493,7 @@ static void palette_handle_keys(running_machine &machine, ui_gfx_state &state)
state.palette.columns = 64;
// handle colormap selection (open bracket,close bracket)
- if (ui_input_pressed(machine, IPT_UI_PREV_GROUP))
+ if (machine.ui_input().pressed(IPT_UI_PREV_GROUP))
{
if (state.palette.which)
state.palette.which = 0;
@@ -505,7 +505,7 @@ static void palette_handle_keys(running_machine &machine, ui_gfx_state &state)
state.palette.which = (palette->indirect_entries() > 0);
}
}
- if (ui_input_pressed(machine, IPT_UI_NEXT_GROUP))
+ if (machine.ui_input().pressed(IPT_UI_NEXT_GROUP))
{
if (!state.palette.which && palette->indirect_entries() > 0)
state.palette.which = 1;
@@ -526,17 +526,17 @@ static void palette_handle_keys(running_machine &machine, ui_gfx_state &state)
screencount = rowcount * rowcount;
// handle keyboard navigation
- if (ui_input_pressed_repeat(machine, IPT_UI_UP, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_UP, 4))
state.palette.offset -= rowcount;
- if (ui_input_pressed_repeat(machine, IPT_UI_DOWN, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_DOWN, 4))
state.palette.offset += rowcount;
- if (ui_input_pressed_repeat(machine, IPT_UI_PAGE_UP, 6))
+ if (machine.ui_input().pressed_repeat(IPT_UI_PAGE_UP, 6))
state.palette.offset -= screencount;
- if (ui_input_pressed_repeat(machine, IPT_UI_PAGE_DOWN, 6))
+ if (machine.ui_input().pressed_repeat(IPT_UI_PAGE_DOWN, 6))
state.palette.offset += screencount;
- if (ui_input_pressed_repeat(machine, IPT_UI_HOME, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_HOME, 4))
state.palette.offset = 0;
- if (ui_input_pressed_repeat(machine, IPT_UI_END, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_END, 4))
state.palette.offset = total;
// clamp within range
@@ -731,7 +731,7 @@ static void gfxset_handler(running_machine &machine, render_container *container
static void gfxset_handle_keys(running_machine &machine, ui_gfx_state &state, int xcells, int ycells)
{
// handle gfxset selection (open bracket,close bracket)
- if (ui_input_pressed(machine, IPT_UI_PREV_GROUP))
+ if (machine.ui_input().pressed(IPT_UI_PREV_GROUP))
{
if (state.gfxset.set > 0)
state.gfxset.set--;
@@ -742,7 +742,7 @@ static void gfxset_handle_keys(running_machine &machine, ui_gfx_state &state, in
}
state.bitmap_dirty = true;
}
- if (ui_input_pressed(machine, IPT_UI_NEXT_GROUP))
+ if (machine.ui_input().pressed(IPT_UI_NEXT_GROUP))
{
if (state.gfxset.set < state.gfxdev[state.gfxset.devindex].setcount - 1)
state.gfxset.set++;
@@ -761,10 +761,10 @@ static void gfxset_handle_keys(running_machine &machine, ui_gfx_state &state, in
gfx_element &gfx = *info.interface->gfx(set);
// handle cells per line (minus,plus)
- if (ui_input_pressed(machine, IPT_UI_ZOOM_OUT))
+ if (machine.ui_input().pressed(IPT_UI_ZOOM_OUT))
{ info.columns[set] = xcells - 1; state.bitmap_dirty = true; }
- if (ui_input_pressed(machine, IPT_UI_ZOOM_IN))
+ if (machine.ui_input().pressed(IPT_UI_ZOOM_IN))
{ info.columns[set] = xcells + 1; state.bitmap_dirty = true; }
// clamp within range
@@ -774,24 +774,24 @@ static void gfxset_handle_keys(running_machine &machine, ui_gfx_state &state, in
{ info.columns[set] = 128; state.bitmap_dirty = true; }
// handle rotation (R)
- if (ui_input_pressed(machine, IPT_UI_ROTATE))
+ if (machine.ui_input().pressed(IPT_UI_ROTATE))
{
info.rotate[set] = orientation_add(ROT90, info.rotate[set]);
state.bitmap_dirty = true;
}
// handle navigation within the cells (up,down,pgup,pgdown)
- if (ui_input_pressed_repeat(machine, IPT_UI_UP, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_UP, 4))
{ info.offset[set] -= xcells; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_DOWN, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_DOWN, 4))
{ info.offset[set] += xcells; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_PAGE_UP, 6))
+ if (machine.ui_input().pressed_repeat(IPT_UI_PAGE_UP, 6))
{ info.offset[set] -= xcells * ycells; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_PAGE_DOWN, 6))
+ if (machine.ui_input().pressed_repeat(IPT_UI_PAGE_DOWN, 6))
{ info.offset[set] += xcells * ycells; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_HOME, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_HOME, 4))
{ info.offset[set] = 0; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_END, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_END, 4))
{ info.offset[set] = gfx.elements(); state.bitmap_dirty = true; }
// clamp within range
@@ -804,9 +804,9 @@ static void gfxset_handle_keys(running_machine &machine, ui_gfx_state &state, in
{ info.offset[set] = 0; state.bitmap_dirty = true; }
// handle color selection (left,right)
- if (ui_input_pressed_repeat(machine, IPT_UI_LEFT, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_LEFT, 4))
{ info.color[set] -= 1; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_RIGHT, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_RIGHT, 4))
{ info.color[set] += 1; state.bitmap_dirty = true; }
// clamp within range
@@ -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
@@ -1073,9 +1073,9 @@ static void tilemap_handle_keys(running_machine &machine, ui_gfx_state &state, i
int step;
// handle tilemap selection (open bracket,close bracket)
- if (ui_input_pressed(machine, IPT_UI_PREV_GROUP) && state.tilemap.which > 0)
+ if (machine.ui_input().pressed(IPT_UI_PREV_GROUP) && state.tilemap.which > 0)
{ state.tilemap.which--; state.bitmap_dirty = true; }
- if (ui_input_pressed(machine, IPT_UI_NEXT_GROUP) && state.tilemap.which < machine.tilemap().count() - 1)
+ if (machine.ui_input().pressed(IPT_UI_NEXT_GROUP) && state.tilemap.which < machine.tilemap().count() - 1)
{ state.tilemap.which++; state.bitmap_dirty = true; }
// cache some info in locals
@@ -1084,7 +1084,7 @@ static void tilemap_handle_keys(running_machine &machine, ui_gfx_state &state, i
mapheight = tilemap->height();
// handle zoom (minus,plus)
- if (ui_input_pressed(machine, IPT_UI_ZOOM_OUT) && state.tilemap.zoom > 0)
+ if (machine.ui_input().pressed(IPT_UI_ZOOM_OUT) && state.tilemap.zoom > 0)
{
state.tilemap.zoom--;
state.bitmap_dirty = true;
@@ -1093,7 +1093,7 @@ static void tilemap_handle_keys(running_machine &machine, ui_gfx_state &state, i
else
machine.popmessage("Zoom Auto");
}
- if (ui_input_pressed(machine, IPT_UI_ZOOM_IN) && state.tilemap.zoom < 8)
+ if (machine.ui_input().pressed(IPT_UI_ZOOM_IN) && state.tilemap.zoom < 8)
{
state.tilemap.zoom++;
state.bitmap_dirty = true;
@@ -1101,7 +1101,7 @@ static void tilemap_handle_keys(running_machine &machine, ui_gfx_state &state, i
}
// handle rotation (R)
- if (ui_input_pressed(machine, IPT_UI_ROTATE))
+ if (machine.ui_input().pressed(IPT_UI_ROTATE))
{
state.tilemap.rotate = orientation_add(ROT90, state.tilemap.rotate);
state.bitmap_dirty = true;
@@ -1111,13 +1111,13 @@ static void tilemap_handle_keys(running_machine &machine, ui_gfx_state &state, i
step = 8;
if (machine.input().code_pressed(KEYCODE_LSHIFT)) step = 1;
if (machine.input().code_pressed(KEYCODE_LCONTROL)) step = 64;
- if (ui_input_pressed_repeat(machine, IPT_UI_UP, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_UP, 4))
{ state.tilemap.yoffs -= step; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_DOWN, 4))
+ if (machine.ui_input().pressed_repeat(IPT_UI_DOWN, 4))
{ state.tilemap.yoffs += step; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_LEFT, 6))
+ if (machine.ui_input().pressed_repeat(IPT_UI_LEFT, 6))
{ state.tilemap.xoffs -= step; state.bitmap_dirty = true; }
- if (ui_input_pressed_repeat(machine, IPT_UI_RIGHT, 6))
+ if (machine.ui_input().pressed_repeat(IPT_UI_RIGHT, 6))
{ state.tilemap.xoffs += step; state.bitmap_dirty = true; }
// clamp within range
diff --git a/src/emu/uiinput.cpp b/src/emu/uiinput.cpp
index 8ec5c8b91cc..6b26bb323b5 100644
--- a/src/emu/uiinput.cpp
+++ b/src/emu/uiinput.cpp
@@ -16,8 +16,6 @@
CONSTANTS
***************************************************************************/
-#define EVENT_QUEUE_SIZE 128
-
enum
{
SEQ_PRESSED_FALSE = 0, /* not pressed */
@@ -26,58 +24,27 @@ enum
};
+//**************************************************************************
+// NETWORK MANAGER
+//**************************************************************************
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
+//-------------------------------------------------
+// network_manager - constructor
+//-------------------------------------------------
-/* private input port state */
-struct ui_input_private
-{
- /* pressed states; retrieved with ui_input_pressed() */
- osd_ticks_t next_repeat[IPT_COUNT];
- UINT8 seqpressed[IPT_COUNT];
-
- /* mouse position/info */
- render_target * current_mouse_target;
- INT32 current_mouse_x;
- INT32 current_mouse_y;
- bool current_mouse_down;
-
- /* popped states; ring buffer of ui_events */
- ui_event events[EVENT_QUEUE_SIZE];
- int events_start;
- int events_end;
-};
-
-
-
-/***************************************************************************
- FUNCTION PROTOYPES
-***************************************************************************/
-
-//static void ui_input_frame_update(running_machine &machine);
-
-
-
-/***************************************************************************
- INITIALIZATION
-***************************************************************************/
-
-/*-------------------------------------------------
- ui_input_init - initializes the UI input
- system
--------------------------------------------------*/
-
-void ui_input_init(running_machine &machine)
+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)
{
/* create the private data */
- machine.ui_input_data = auto_alloc_clear(machine, ui_input_private);
- machine.ui_input_data->current_mouse_x = -1;
- machine.ui_input_data->current_mouse_y = -1;
+ m_current_mouse_x = -1;
+ m_current_mouse_y = -1;
/* add a frame callback to poll inputs */
- machine.add_notifier(MACHINE_NOTIFY_FRAME, machine_notify_delegate(FUNC(ui_input_frame_update), &machine));
+ machine.add_notifier(MACHINE_NOTIFY_FRAME, machine_notify_delegate(FUNC(ui_input_manager::frame_update), this));
}
@@ -87,62 +54,54 @@ void ui_input_init(running_machine &machine)
***************************************************************************/
/*-------------------------------------------------
- ui_input_frame_update - looks through pressed
+ frame_update - looks through pressed
input as per events pushed our way and posts
corresponding IPT_UI_* events
-------------------------------------------------*/
-void ui_input_frame_update(running_machine &machine)
+void ui_input_manager::frame_update()
{
- ui_input_private *uidata = machine.ui_input_data;
-
/* update the state of all the UI keys */
for (ioport_type code = ioport_type(IPT_UI_FIRST + 1); code < IPT_UI_LAST; ++code)
{
- bool pressed = machine.ioport().type_pressed(code);
- if (!pressed || uidata->seqpressed[code] != SEQ_PRESSED_RESET)
- uidata->seqpressed[code] = pressed;
+ bool pressed = machine().ioport().type_pressed(code);
+ if (!pressed || m_seqpressed[code] != SEQ_PRESSED_RESET)
+ m_seqpressed[code] = pressed;
}
}
/*-------------------------------------------------
- ui_input_push_event - pushes a single event
+ push_event - pushes a single event
onto the queue
-------------------------------------------------*/
-bool ui_input_push_event(running_machine &machine, ui_event evt)
+bool ui_input_manager::push_event(ui_event evt)
{
- ui_input_private *uidata = machine.ui_input_data;
-
- /* we may be called before the UI is initialized */
- if (uidata == nullptr)
- return false;
-
/* some pre-processing (this is an icky place to do this stuff!) */
switch (evt.event_type)
{
case UI_EVENT_MOUSE_MOVE:
- uidata->current_mouse_target = evt.target;
- uidata->current_mouse_x = evt.mouse_x;
- uidata->current_mouse_y = evt.mouse_y;
+ m_current_mouse_target = evt.target;
+ m_current_mouse_x = evt.mouse_x;
+ m_current_mouse_y = evt.mouse_y;
break;
case UI_EVENT_MOUSE_LEAVE:
- if (uidata->current_mouse_target == evt.target)
+ if (m_current_mouse_target == evt.target)
{
- uidata->current_mouse_target = nullptr;
- uidata->current_mouse_x = -1;
- uidata->current_mouse_y = -1;
+ m_current_mouse_target = nullptr;
+ m_current_mouse_x = -1;
+ m_current_mouse_y = -1;
}
break;
case UI_EVENT_MOUSE_DOWN:
- uidata->current_mouse_down = true;
+ m_current_mouse_down = true;
break;
case UI_EVENT_MOUSE_UP:
- uidata->current_mouse_down = false;
+ m_current_mouse_down = false;
break;
default:
@@ -151,28 +110,27 @@ bool ui_input_push_event(running_machine &machine, ui_event evt)
}
/* is the queue filled up? */
- if ((uidata->events_end + 1) % ARRAY_LENGTH(uidata->events) == uidata->events_start)
+ if ((m_events_end + 1) % ARRAY_LENGTH(m_events) == m_events_start)
return false;
- uidata->events[uidata->events_end++] = evt;
- uidata->events_end %= ARRAY_LENGTH(uidata->events);
+ m_events[m_events_end++] = evt;
+ m_events_end %= ARRAY_LENGTH(m_events);
return true;
}
/*-------------------------------------------------
- ui_input_pop_event - pops an event off of the queue
+ pop_event - pops an event off of the queue
-------------------------------------------------*/
-bool ui_input_pop_event(running_machine &machine, ui_event *evt)
+bool ui_input_manager::pop_event(ui_event *evt)
{
- ui_input_private *uidata = machine.ui_input_data;
bool result;
- if (uidata->events_start != uidata->events_end)
+ if (m_events_start != m_events_end)
{
- *evt = uidata->events[uidata->events_start++];
- uidata->events_start %= ARRAY_LENGTH(uidata->events);
+ *evt = m_events[m_events_start++];
+ m_events_start %= ARRAY_LENGTH(m_events);
result = true;
}
else
@@ -185,40 +143,38 @@ bool ui_input_pop_event(running_machine &machine, ui_event *evt)
/*-------------------------------------------------
- ui_input_reset - clears all outstanding events
+ reset - clears all outstanding events
and resets the sequence states
-------------------------------------------------*/
-void ui_input_reset(running_machine &machine)
+void ui_input_manager::reset()
{
- ui_input_private *uidata = machine.ui_input_data;
int code;
- uidata->events_start = 0;
- uidata->events_end = 0;
+ m_events_start = 0;
+ m_events_end = 0;
for (code = IPT_UI_FIRST + 1; code < IPT_UI_LAST; code++)
{
- uidata->seqpressed[code] = SEQ_PRESSED_RESET;
- uidata->next_repeat[code] = 0;
+ m_seqpressed[code] = SEQ_PRESSED_RESET;
+ m_next_repeat[code] = 0;
}
}
/*-------------------------------------------------
- ui_input_find_mouse - retrieves the current
+ find_mouse - retrieves the current
location of the mouse
-------------------------------------------------*/
-render_target *ui_input_find_mouse(running_machine &machine, INT32 *x, INT32 *y, bool *button)
+render_target *ui_input_manager::find_mouse(INT32 *x, INT32 *y, bool *button)
{
- ui_input_private *uidata = machine.ui_input_data;
if (x != nullptr)
- *x = uidata->current_mouse_x;
+ *x = m_current_mouse_x;
if (y != nullptr)
- *y = uidata->current_mouse_y;
+ *y = m_current_mouse_y;
if (button != nullptr)
- *button = uidata->current_mouse_down;
- return uidata->current_mouse_target;
+ *button = m_current_mouse_down;
+ return m_current_mouse_target;
}
@@ -228,34 +184,33 @@ render_target *ui_input_find_mouse(running_machine &machine, INT32 *x, INT32 *y,
***************************************************************************/
/*-------------------------------------------------
- ui_input_pressed - return TRUE if a key down
+ pressed - return TRUE if a key down
for the given user interface sequence is
detected
-------------------------------------------------*/
-bool ui_input_pressed(running_machine &machine, int code)
+bool ui_input_manager::pressed(int code)
{
- return ui_input_pressed_repeat(machine, code, 0);
+ return pressed_repeat(code, 0);
}
/*-------------------------------------------------
- ui_input_pressed_repeat - return TRUE if a key
+ pressed_repeat - return TRUE if a key
down for the given user interface sequence is
detected, or if autorepeat at the given speed
is triggered
-------------------------------------------------*/
-bool ui_input_pressed_repeat(running_machine &machine, int code, int speed)
+bool ui_input_manager::pressed_repeat(int code, int speed)
{
- ui_input_private *uidata = machine.ui_input_data;
int pressed;
g_profiler.start(PROFILER_INPUT);
/* get the status of this key (assumed to be only in the defaults) */
assert(code >= IPT_UI_CONFIGURE && code <= IPT_OSD_16);
- pressed = (uidata->seqpressed[code] == SEQ_PRESSED_TRUE);
+ pressed = (m_seqpressed[code] == SEQ_PRESSED_TRUE);
/* if down, handle it specially */
if (pressed)
@@ -263,12 +218,12 @@ g_profiler.start(PROFILER_INPUT);
osd_ticks_t tps = osd_ticks_per_second();
/* if this is the first press, set a 3x delay and leave pressed = 1 */
- if (uidata->next_repeat[code] == 0)
- uidata->next_repeat[code] = osd_ticks() + 3 * speed * tps / 60;
+ if (m_next_repeat[code] == 0)
+ m_next_repeat[code] = osd_ticks() + 3 * speed * tps / 60;
/* if this is an autorepeat case, set a 1x delay and leave pressed = 1 */
- else if (speed > 0 && (osd_ticks() + tps - uidata->next_repeat[code]) >= tps)
- uidata->next_repeat[code] += 1 * speed * tps / 60;
+ else if (speed > 0 && (osd_ticks() + tps - m_next_repeat[code]) >= tps)
+ m_next_repeat[code] += 1 * speed * tps / 60;
/* otherwise, reset pressed = 0 */
else
@@ -277,9 +232,95 @@ g_profiler.start(PROFILER_INPUT);
/* if we're not pressed, reset the memory field */
else
- uidata->next_repeat[code] = 0;
+ m_next_repeat[code] = 0;
g_profiler.stop();
return pressed;
}
+
+/*-------------------------------------------------
+ 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)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_MOVE;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ push_event(event);
+}
+
+/*-------------------------------------------------
+ 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)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_LEAVE;
+ event.target = target;
+ push_event(event);
+}
+
+/*-------------------------------------------------
+ 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)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_DOWN;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ push_event(event);
+}
+
+/*-------------------------------------------------
+ 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)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_UP;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ push_event(event);
+}
+
+/*-------------------------------------------------
+ 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)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_MOUSE_DOUBLE_CLICK;
+ event.target = target;
+ event.mouse_x = x;
+ event.mouse_y = y;
+ push_event(event);
+}
+
+/*-------------------------------------------------
+ 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)
+{
+ ui_event event = { UI_EVENT_NONE };
+ event.event_type = UI_EVENT_CHAR;
+ event.target = target;
+ event.ch = ch;
+ push_event(event);
+}
diff --git a/src/emu/uiinput.h b/src/emu/uiinput.h
index 3b7a63d420d..2e89a0c413a 100644
--- a/src/emu/uiinput.h
+++ b/src/emu/uiinput.h
@@ -16,6 +16,12 @@
/***************************************************************************
+ CONSTANTS
+***************************************************************************/
+
+#define EVENT_QUEUE_SIZE 128
+
+/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
@@ -30,7 +36,6 @@ enum ui_event_type
UI_EVENT_CHAR
};
-
struct ui_event
{
ui_event_type event_type;
@@ -41,145 +46,65 @@ struct ui_event
unicode_char ch;
};
+// ======================> ui_input_manager
+class ui_input_manager
+{
+public:
+ // construction/destruction
+ ui_input_manager(running_machine &machine);
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-
-/* ----- core system management ----- */
-
-/* initialization */
-void ui_input_init(running_machine &machine);
-
-
-
-/* ----- event handling ----- */
-
-void ui_input_frame_update(running_machine &machine);
-
-/* pushes a single event onto the queue */
-bool ui_input_push_event(running_machine &machine, ui_event event);
-
-/* pops an event off of the queue */
-bool ui_input_pop_event(running_machine &machine, ui_event *event);
-
-/* clears all outstanding events */
-void ui_input_reset(running_machine &machine);
-
-/* retrieves the current location of the mouse */
-render_target *ui_input_find_mouse(running_machine &machine, INT32 *x, INT32 *y, bool *button);
-
-
-
-/* ----- user interface sequence reading ----- */
-
-/* return TRUE if a key down for the given user interface sequence is detected */
-bool ui_input_pressed(running_machine &machine, int code);
-
-/* return TRUE if a key down for the given user interface sequence is detected, or if
- autorepeat at the given speed is triggered */
-bool ui_input_pressed_repeat(running_machine &machine, int code, int speed);
-
-
-
-/***************************************************************************
- INLINE FUNCTIONS
-***************************************************************************/
-
-/*-------------------------------------------------
- ui_input_push_mouse_move_event - pushes a mouse
- move event to the specified render_target
--------------------------------------------------*/
+ void frame_update();
-static inline void ui_input_push_mouse_move_event(running_machine &machine, render_target *target, INT32 x, INT32 y)
-{
- ui_event event = { UI_EVENT_NONE };
- event.event_type = UI_EVENT_MOUSE_MOVE;
- event.target = target;
- event.mouse_x = x;
- event.mouse_y = y;
- ui_input_push_event(machine, event);
-}
+ /* pushes a single event onto the queue */
+ bool push_event(ui_event event);
+ /* pops an event off of the queue */
+ bool pop_event(ui_event *event);
-/*-------------------------------------------------
- ui_input_push_mouse_leave_event - pushes a
- mouse leave event to the specified render_target
--------------------------------------------------*/
+ /* clears all outstanding events */
+ void reset();
-static inline void ui_input_push_mouse_leave_event(running_machine &machine, render_target *target)
-{
- ui_event event = { UI_EVENT_NONE };
- event.event_type = UI_EVENT_MOUSE_LEAVE;
- event.target = target;
- ui_input_push_event(machine, event);
-}
+ /* retrieves the current location of the mouse */
+ render_target *find_mouse(INT32 *x, INT32 *y, bool *button);
+ /* return TRUE if a key down for the given user interface sequence is detected */
+ bool pressed(int code);
-/*-------------------------------------------------
- ui_input_push_mouse_down_event - pushes a mouse
- down event to the specified render_target
--------------------------------------------------*/
+ /* return TRUE if a key down for the given user interface sequence is detected, or if
+ autorepeat at the given speed is triggered */
+ bool pressed_repeat(int code, int speed);
-static inline void ui_input_push_mouse_down_event(running_machine &machine, render_target *target, INT32 x, INT32 y)
-{
- ui_event event = { UI_EVENT_NONE };
- event.event_type = UI_EVENT_MOUSE_DOWN;
- event.target = target;
- event.mouse_x = x;
- event.mouse_y = y;
- ui_input_push_event(machine, event);
-}
+ // getters
+ running_machine &machine() const { return m_machine; }
-/*-------------------------------------------------
- ui_input_push_mouse_down_event - pushes a mouse
- down event to the specified render_target
--------------------------------------------------*/
+ void push_mouse_move_event(render_target* target, INT32 x, INT32 y);
+ void push_mouse_leave_event(render_target* target);
+ void push_mouse_down_event(render_target* target, INT32 x, INT32 y);
+ 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);
-static inline void ui_input_push_mouse_up_event(running_machine &machine, render_target *target, INT32 x, INT32 y)
-{
- ui_event event = { UI_EVENT_NONE };
- event.event_type = UI_EVENT_MOUSE_UP;
- event.target = target;
- event.mouse_x = x;
- event.mouse_y = y;
- ui_input_push_event(machine, event);
-}
-
-
-/*-------------------------------------------------
- ui_input_push_mouse_double_click_event - pushes
- a mouse double-click event to the specified
- render_target
--------------------------------------------------*/
-
-static inline void ui_input_push_mouse_double_click_event(running_machine &machine, render_target *target, INT32 x, INT32 y)
-{
- ui_event event = { UI_EVENT_NONE };
- event.event_type = UI_EVENT_MOUSE_DOUBLE_CLICK;
- event.target = target;
- event.mouse_x = x;
- event.mouse_y = y;
- ui_input_push_event(machine, event);
-}
+private:
+ // internal state
+ running_machine & m_machine; // reference to our machine
-/*-------------------------------------------------
- ui_input_push_char_event - pushes a char event
- to the specified render_target
--------------------------------------------------*/
+ /* pressed states; retrieved with ui_input_pressed() */
+ osd_ticks_t m_next_repeat[IPT_COUNT];
+ UINT8 m_seqpressed[IPT_COUNT];
-static inline void ui_input_push_char_event(running_machine &machine, render_target *target, unicode_char ch)
-{
- ui_event event = { UI_EVENT_NONE };
- event.event_type = UI_EVENT_CHAR;
- event.target = target;
- event.ch = ch;
- ui_input_push_event(machine, event);
-}
+ /* mouse position/info */
+ render_target * m_current_mouse_target;
+ INT32 m_current_mouse_x;
+ INT32 m_current_mouse_y;
+ bool m_current_mouse_down;
+ /* popped states; ring buffer of ui_events */
+ ui_event m_events[EVENT_QUEUE_SIZE];
+ int m_events_start;
+ int m_events_end;
+};
#endif /* __UIINPUT_H__ */
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp
index 345b47d010c..4acc8d991ad 100644
--- a/src/emu/validity.cpp
+++ b/src/emu/validity.cpp
@@ -125,6 +125,7 @@ validity_checker::validity_checker(emu_options &options)
: m_drivlist(options),
m_errors(0),
m_warnings(0),
+ m_print_verbose(options.verbose()),
m_current_driver(nullptr),
m_current_config(nullptr),
m_current_device(nullptr),
@@ -183,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();
@@ -194,26 +196,23 @@ bool validity_checker::check_all()
validate_inlines();
// if we had warnings or errors, output
- if (m_errors > 0 || m_warnings > 0)
+ if (m_errors > 0 || m_warnings > 0 || !m_verbose_text.empty())
{
output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Core: %d errors, %d warnings\n", m_errors, m_warnings);
if (m_errors > 0)
- {
- strreplace(m_error_text, "\n", "\n ");
- output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Errors:\n %s", m_error_text.c_str());
- }
+ output_indented_errors(m_error_text, "Errors");
if (m_warnings > 0)
- {
- strreplace(m_warning_text, "\n", "\n ");
- output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Warnings:\n %s", m_warning_text.c_str());
- }
+ output_indented_errors(m_warning_text, "Warnings");
+ if (!m_verbose_text.empty())
+ output_indented_errors(m_verbose_text, "Messages");
output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "\n");
}
// 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();
@@ -277,6 +276,7 @@ void validity_checker::validate_one(const game_driver &driver)
int start_warnings = m_warnings;
m_error_text.clear();
m_warning_text.clear();
+ m_verbose_text.clear();
// wrap in try/except to catch fatalerrors
try
@@ -295,20 +295,15 @@ void validity_checker::validate_one(const game_driver &driver)
}
// if we had warnings or errors, output
- if (m_errors > start_errors || m_warnings > start_warnings)
+ if (m_errors > start_errors || m_warnings > start_warnings || !m_verbose_text.empty())
{
- std::string tempstr;
- output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Driver %s (file %s): %d errors, %d warnings\n", driver.name, core_filename_extract_base(tempstr, driver.source_file).c_str(), m_errors - start_errors, m_warnings - start_warnings);
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Driver %s (file %s): %d errors, %d warnings\n", driver.name, core_filename_extract_base(driver.source_file).c_str(), m_errors - start_errors, m_warnings - start_warnings);
if (m_errors > start_errors)
- {
- strreplace(m_error_text, "\n", "\n ");
- output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Errors:\n %s", m_error_text.c_str());
- }
+ output_indented_errors(m_error_text, "Errors");
if (m_warnings > start_warnings)
- {
- strreplace(m_warning_text, "\n", "\n ");
- output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Warnings:\n %s", m_warning_text.c_str());
- }
+ output_indented_errors(m_warning_text, "Warnings");
+ if (!m_verbose_text.empty())
+ output_indented_errors(m_verbose_text, "Messages");
output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "\n");
}
@@ -530,18 +525,17 @@ void validity_checker::validate_inlines()
void validity_checker::validate_driver()
{
// check for duplicate names
- std::string tempstr;
if (!m_names_map.insert(std::make_pair(m_current_driver->name, m_current_driver)).second)
{
const game_driver *match = m_names_map.find(m_current_driver->name)->second;
- osd_printf_error("Driver name is a duplicate of %s(%s)\n", core_filename_extract_base(tempstr, match->source_file).c_str(), match->name);
+ osd_printf_error("Driver name is a duplicate of %s(%s)\n", core_filename_extract_base(match->source_file).c_str(), match->name);
}
// check for duplicate descriptions
if (!m_descriptions_map.insert(std::make_pair(m_current_driver->description, m_current_driver)).second)
{
const game_driver *match = m_descriptions_map.find(m_current_driver->description)->second;
- osd_printf_error("Driver description is a duplicate of %s(%s)\n", core_filename_extract_base(tempstr, match->source_file).c_str(), match->name);
+ osd_printf_error("Driver description is a duplicate of %s(%s)\n", core_filename_extract_base(match->source_file).c_str(), match->name);
}
// determine if we are a clone
@@ -615,8 +609,8 @@ void validity_checker::validate_roms()
device_iterator deviter(m_current_config->root_device());
for (device_t *device = deviter.first(); device != nullptr; device = deviter.next())
{
- // for non-root devices, track the current device
- m_current_device = (device->owner() == nullptr) ? nullptr : device;
+ // track the current device
+ m_current_device = device;
// scan the ROM entries for this device
const char *last_region_name = "???";
@@ -880,8 +874,8 @@ void validity_checker::validate_inputs()
if (device->input_ports() == nullptr)
continue;
- // for non-root devices, track the current device
- m_current_device = (device == &m_current_config->root_device()) ? nullptr : device;
+ // track the current device
+ m_current_device = device;
// allocate the input ports
ioport_list portlist;
@@ -976,15 +970,11 @@ 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);
- }
+ // track the current device
+ m_current_device = device;
- // iterate over devices
- device_iterator iter(m_current_config->root_device());
- for (const device_t *device = iter.first(); device != nullptr; device = iter.next())
- {
- // for non-root devices, track the current device
- m_current_device = (device == &m_current_config->root_device()) ? nullptr : device;
+ // validate auto-finders
+ device->findit(true);
// validate the device tag
validate_tag(device->basetag());
@@ -1048,9 +1038,9 @@ void validity_checker::build_output_prefix(std::string &str)
// start empty
str.clear();
- // if we have a current device, indicate that
- if (m_current_device != nullptr)
- str.append(m_current_device->name()).append(" device '").append(m_current_device->tag()).append("': ");
+ // if we have a current (non-root) device, indicate that
+ if (m_current_device != nullptr && m_current_device->owner() != nullptr)
+ str.append(m_current_device->name()).append(" device '").append(m_current_device->tag()+1).append("': ");
// if we have a current port, indicate that as well
if (m_current_ioport != nullptr)
@@ -1089,6 +1079,17 @@ void validity_checker::output_callback(osd_output_channel channel, const char *m
strcatvprintf(output, msg, args);
m_warning_text.append(output);
break;
+ case OSD_OUTPUT_CHANNEL_VERBOSE:
+ // if we're not verbose, skip it
+ if (!m_print_verbose) break;
+
+ // output the source(driver) device 'tag'
+ build_output_prefix(output);
+
+ // generate the string and output to the original target
+ strcatvprintf(output, msg, args);
+ m_verbose_text.append(output);
+ break;
default:
chain_output(channel, msg, args);
break;
@@ -1110,3 +1111,16 @@ void validity_checker::output_via_delegate(osd_output_channel channel, const cha
this->chain_output(channel, format, argptr);
va_end(argptr);
}
+
+//-------------------------------------------------
+// output_indented_errors - helper to output error
+// and warning messages with header and indents
+//-------------------------------------------------
+void validity_checker::output_indented_errors(std::string &text, const char *header)
+{
+ // remove trailing newline
+ if (text[text.size()-1] == '\n')
+ text.erase(text.size()-1, 1);
+ strreplace(text, "\n", "\n ");
+ output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "%s:\n %s\n", header, text.c_str());
+}
diff --git a/src/emu/validity.h b/src/emu/validity.h
index fa38bb20f93..66eaffd533b 100644
--- a/src/emu/validity.h
+++ b/src/emu/validity.h
@@ -40,10 +40,13 @@ public:
int errors() const { return m_errors; }
int warnings() const { return m_warnings; }
+ // setter
+ void set_verbose(bool verbose) { m_print_verbose = verbose; }
+
// 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);
@@ -81,6 +84,7 @@ private:
// output helpers
void build_output_prefix(std::string &str);
void output_via_delegate(osd_output_channel channel, const char *format, ...) ATTR_PRINTF(3,4);
+ void output_indented_errors(std::string &text, const char *header);
// internal driver list
driver_enumerator m_drivlist;
@@ -88,8 +92,10 @@ private:
// error tracking
int m_errors;
int m_warnings;
+ bool m_print_verbose;
std::string m_error_text;
std::string m_warning_text;
+ std::string m_verbose_text;
// maps for finding duplicates
game_driver_map m_names_map;
diff --git a/src/emu/video.cpp b/src/emu/video.cpp
index 1d7c9096b3a..41fb5e1726e 100644
--- a/src/emu/video.cpp
+++ b/src/emu/video.cpp
@@ -164,7 +164,7 @@ video_manager::video_manager(running_machine &machine)
{
m_screenless_frame_timer = machine.scheduler().timer_alloc(timer_expired_delegate(FUNC(video_manager::screenless_update_callback), this));
m_screenless_frame_timer->adjust(screen_device::DEFAULT_FRAME_PERIOD, 0, screen_device::DEFAULT_FRAME_PERIOD);
- output_set_notifier(nullptr, video_notifier_callback, this);
+ machine.output().set_notifier(nullptr, video_notifier_callback, this);
}
}
@@ -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();
}
}
@@ -258,9 +259,9 @@ void video_manager::frame_update(bool debug)
// into a string buffer
//-------------------------------------------------
-std::string &video_manager::speed_text(std::string &str)
+std::string video_manager::speed_text()
{
- str.clear();
+ std::string str;
// if we're paused, just display Paused
bool paused = machine().paused();
@@ -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)
{
@@ -676,7 +679,7 @@ bool video_manager::finish_screen_updates()
// draw any crosshairs
for (screen_device *screen = iter.first(); screen != nullptr; screen = iter.next())
- crosshair_render(*screen);
+ machine().crosshair().render(*screen);
return anything_changed;
}
@@ -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 9eb67b70353..4938cf67f34 100644
--- a/src/emu/video.h
+++ b/src/emu/video.h
@@ -81,7 +81,7 @@ public:
void frame_update(bool debug = false);
// current speed helpers
- std::string &speed_text(std::string &str);
+ std::string speed_text();
double speed_percent() const { return m_speed_percent; }
// snapshots
diff --git a/src/emu/video/vector.cpp b/src/emu/video/vector.cpp
index bcc3b3604b9..36c303eda42 100644
--- a/src/emu/video/vector.cpp
+++ b/src/emu/video/vector.cpp
@@ -163,7 +163,7 @@ void vector_device::device_start()
m_vector_index = 0;
/* allocate memory for tables */
- m_vector_list = auto_alloc_array_clear(machine(), point, MAX_POINTS);
+ m_vector_list = make_unique_clear<point[]>(MAX_POINTS);
}
void vector_device::set_flicker(float newval)
@@ -306,7 +306,7 @@ UINT32 vector_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
int lastx = 0;
int lasty = 0;
- curpoint = m_vector_list;
+ curpoint = m_vector_list.get();
screen.container().empty();
screen.container().add_rect(0.0f, 0.0f, 1.0f, 1.0f, rgb_t(0xff,0x00,0x00,0x00), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_VECTORBUF(1));
diff --git a/src/emu/video/vector.h b/src/emu/video/vector.h
index 37a1587d01e..9ec843b76fe 100644
--- a/src/emu/video/vector.h
+++ b/src/emu/video/vector.h
@@ -65,7 +65,7 @@ private:
static float m_beam_width_min;
static float m_beam_width_max;
static float m_beam_intensity_weight;
- point *m_vector_list;
+ std::unique_ptr<point[]> m_vector_list;
static int m_vector_index;
int m_min_intensity;
int m_max_intensity;
diff --git a/src/ldplayer/ldplayer.cpp b/src/ldplayer/ldplayer.cpp
index b1edf88d28c..bbd309dd0b9 100644
--- a/src/ldplayer/ldplayer.cpp
+++ b/src/ldplayer/ldplayer.cpp
@@ -22,8 +22,6 @@
#define APPNAME "MAME"
#define APPNAME_LOWER "mame"
#define CONFIGNAME "mame"
-#define APPLONGNAME "M.A.M.E."
-#define FULLLONGNAME "Multiple Arcade Machine Emulator"
#define CAPGAMENOUN "GAME"
#define CAPSTARTGAMENOUN "Game"
#define GAMENOUN "game"
@@ -46,8 +44,6 @@
const char * emulator_info::get_appname() { return APPNAME;}
const char * emulator_info::get_appname_lower() { return APPNAME_LOWER;}
const char * emulator_info::get_configname() { return CONFIGNAME;}
-const char * emulator_info::get_applongname() { return APPLONGNAME;}
-const char * emulator_info::get_fulllongname() { return FULLLONGNAME;}
const char * emulator_info::get_capgamenoun() { return CAPGAMENOUN;}
const char * emulator_info::get_capstartgamenoun() { return CAPSTARTGAMENOUN;}
const char * emulator_info::get_gamenoun() { return GAMENOUN;}
@@ -87,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();
@@ -154,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);
@@ -193,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;
};
@@ -233,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;
@@ -247,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/formats/bbc_dsk.cpp b/src/lib/formats/bbc_dsk.cpp
index 193ab435e69..8b39ed17b1f 100644
--- a/src/lib/formats/bbc_dsk.cpp
+++ b/src/lib/formats/bbc_dsk.cpp
@@ -352,7 +352,55 @@ const bbc_cpm_format::format bbc_cpm_format::formats[] =
{}
};
+
+bbc_cpn_format::bbc_cpn_format() : wd177x_format(formats)
+{
+}
+
+const char *bbc_cpn_format::name() const
+{
+ return "cpn";
+}
+
+const char *bbc_cpn_format::description() const
+{
+ return "Torch CPN disk image";
+}
+
+const char *bbc_cpn_format::extensions() const
+{
+ return "dsd";
+}
+
+int bbc_cpn_format::identify(io_generic *io, UINT32 form_factor)
+{
+ int type = find_size(io, form_factor);
+
+ if(type != -1)
+ return 50;
+ return 0;
+}
+
+int bbc_cpn_format::get_image_offset(const format &f, int head, int track)
+{
+ if (f.sector_base_id == -1)
+ return (track * f.head_count + head) * compute_track_size(f);
+ else
+ return (f.track_count * head + track) * compute_track_size(f);
+}
+
+const bbc_cpn_format::format bbc_cpn_format::formats[] =
+{
+ { // 400k 80 track double sided single density (interleaved) - gaps unverified
+ floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
+ 4000, 10, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
+ },
+ {}
+};
+
+
const floppy_format_type FLOPPY_BBC_DFS_FORMAT = &floppy_image_format_creator<bbc_dfs_format>;
const floppy_format_type FLOPPY_BBC_ADFS_FORMAT = &floppy_image_format_creator<bbc_adfs_format>;
const floppy_format_type FLOPPY_BBC_DOS_FORMAT = &floppy_image_format_creator<bbc_dos_format>;
const floppy_format_type FLOPPY_BBC_CPM_FORMAT = &floppy_image_format_creator<bbc_cpm_format>;
+const floppy_format_type FLOPPY_BBC_CPN_FORMAT = &floppy_image_format_creator<bbc_cpn_format>;
diff --git a/src/lib/formats/bbc_dsk.h b/src/lib/formats/bbc_dsk.h
index 9378a25ec81..7ce8112f36c 100644
--- a/src/lib/formats/bbc_dsk.h
+++ b/src/lib/formats/bbc_dsk.h
@@ -78,10 +78,26 @@ private:
static const format formats[];
};
+class bbc_cpn_format : public wd177x_format
+{
+public:
+ bbc_cpn_format();
+
+ virtual int identify(io_generic *io, UINT32 form_factor) override;
+ virtual int get_image_offset(const format &f, int head, int track) override;
+ virtual const char *name() const override;
+ virtual const char *description() const override;
+ virtual const char *extensions() const override;
+
+private:
+ static const format formats[];
+};
+
extern const floppy_format_type FLOPPY_BBC_DFS_FORMAT;
extern const floppy_format_type FLOPPY_BBC_ADFS_FORMAT;
extern const floppy_format_type FLOPPY_BBC_DOS_FORMAT;
extern const floppy_format_type FLOPPY_BBC_CPM_FORMAT;
+extern const floppy_format_type FLOPPY_BBC_CPN_FORMAT;
#endif // __BBC_DSK_H__
diff --git a/src/lib/formats/cassimg.cpp b/src/lib/formats/cassimg.cpp
index a591de070b1..4d7aeb0a9a3 100644
--- a/src/lib/formats/cassimg.cpp
+++ b/src/lib/formats/cassimg.cpp
@@ -85,7 +85,7 @@ static cassette_image *cassette_init(const struct CassetteFormat *format, void *
{
cassette_image *cassette;
- cassette = global_alloc_clear(cassette_image);
+ cassette = global_alloc_clear<cassette_image>();
cassette->format = format;
cassette->io.file = file;
cassette->io.procs = procs;
diff --git a/src/lib/formats/cbm_crt.cpp b/src/lib/formats/cbm_crt.cpp
index d169d0c2fd7..6484dbf108c 100644
--- a/src/lib/formats/cbm_crt.cpp
+++ b/src/lib/formats/cbm_crt.cpp
@@ -122,7 +122,7 @@ static const char * CRT_C64_SLOT_NAMES[_CRT_C64_COUNT] =
// cbm_crt_get_card - get slot interface card
//-------------------------------------------------
-void cbm_crt_get_card(std::string &result, core_file *file)
+std::string cbm_crt_get_card(core_file *file)
{
// read the header
cbm_crt_header header;
@@ -132,11 +132,10 @@ void cbm_crt_get_card(std::string &result, core_file *file)
{
UINT16 hardware = pick_integer_be(header.hardware, 0, 2);
- result.assign(CRT_C64_SLOT_NAMES[hardware]);
- return;
+ return std::string(CRT_C64_SLOT_NAMES[hardware]);
}
- result.clear();
+ return std::string();
}
diff --git a/src/lib/formats/cbm_crt.h b/src/lib/formats/cbm_crt.h
index 9be37bc0740..f3cfb6bb164 100644
--- a/src/lib/formats/cbm_crt.h
+++ b/src/lib/formats/cbm_crt.h
@@ -135,7 +135,7 @@ struct cbm_crt_chip
// FUNCTION PROTOTYPES
//**************************************************************************
-void cbm_crt_get_card(std::string &result, core_file *file);
+std::string cbm_crt_get_card(core_file *file);
bool cbm_crt_read_header(core_file* file, size_t *roml_size, size_t *romh_size, int *exrom, int *game);
bool cbm_crt_read_data(core_file* file, UINT8 *roml, UINT8 *romh);
diff --git a/src/lib/formats/ipf_dsk.cpp b/src/lib/formats/ipf_dsk.cpp
index e7b8aad9137..1292ce8b354 100644
--- a/src/lib/formats/ipf_dsk.cpp
+++ b/src/lib/formats/ipf_dsk.cpp
@@ -5,7 +5,7 @@
const floppy_format_type FLOPPY_IPF_FORMAT = &floppy_image_format_creator<ipf_format>;
-ipf_format::ipf_format(): tinfos(nullptr), tcount(0), type(0), release(0), revision(0), encoder_type(0),
+ipf_format::ipf_format(): tinfos(nullptr), tcount(0), type(0), release(0), revision(0), encoder_type(0),
encoder_revision(0), origin(0), min_cylinder(0), max_cylinder(0), min_head(0), max_head(0), credit_day(0), credit_time(0)
{
}
@@ -84,7 +84,7 @@ bool ipf_format::parse(dynamic_buffer &data, floppy_image *image)
{
image->set_variant(floppy_image::DSDD); // Not handling anything else yet
tcount = 84*2+1; // Usual max
- tinfos = global_alloc_array_clear(track_info, tcount);
+ tinfos = global_alloc_array_clear<track_info>(tcount);
bool res = scan_all_tags(data);
if(res)
res = generate_tracks(image);
@@ -121,7 +121,7 @@ ipf_format::track_info *ipf_format::get_index(UINT32 idx)
if(idx > 1000)
return nullptr;
if(idx >= tcount) {
- auto ti1 = global_alloc_array_clear(track_info, idx+1);
+ auto ti1 = global_alloc_array_clear<track_info>(idx+1);
memcpy(ti1, tinfos, tcount*sizeof(tinfos));
global_free_array(tinfos);
tcount = idx+1;
diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile
index 0f29882e8b7..19742fc9b31 100644
--- a/src/lib/netlist/build/makefile
+++ b/src/lib/netlist/build/makefile
@@ -18,7 +18,7 @@ SRC = ..
CDEFS = -DPSTANDALONE=1 -DPTR64=1
#-Werror
-CFLAGS = $(LTO) -g -O3 -std=c++98 -march=native -msse4.2 -Wall -Wpedantic -Wsign-compare -Wextra -Wno-long-long -Wno-unused-parameter -Wno-unused-result -Wno-variadic-macros -I..
+CFLAGS = $(LTO) -g -O3 -std=c++98 -Doverride="" -march=native -msse4.2 -Wall -Wpedantic -Wsign-compare -Wextra -Wno-long-long -Wno-unused-parameter -Wno-unused-result -Wno-variadic-macros -I..
LDFLAGS = $(LTO) -g -O3 -std=c++98
#CFLAGS = $(LTO) -g -O3 -std=c++11 -Wall -Wpedantic -Wsign-compare -Wextra -Isrc
#LDFLAGS = $(LTO) -g -O3 -std=c++11
@@ -52,6 +52,7 @@ POBJS := \
$(POBJ)/pparser.o \
$(POBJ)/pstate.o \
$(POBJ)/pstream.o \
+ $(POBJ)/pfmtlog.o \
NLOBJS := \
$(NLOBJ)/nl_base.o \
diff --git a/src/lib/netlist/plib/pfmtlog.cpp b/src/lib/netlist/plib/pfmtlog.cpp
index 2b08bb2fa98..d66b8f62520 100644
--- a/src/lib/netlist/plib/pfmtlog.cpp
+++ b/src/lib/netlist/plib/pfmtlog.cpp
@@ -5,13 +5,11 @@
*
*/
-#if 0
#include <cstring>
//FIXME:: pstring should be locale free
#include <cctype>
#include <cstdlib>
#include <cstdio>
-#endif
#include <algorithm>
diff --git a/src/lib/netlist/prg/nltool.cpp b/src/lib/netlist/prg/nltool.cpp
index bbe5e8b3039..3c7065897e7 100644
--- a/src/lib/netlist/prg/nltool.cpp
+++ b/src/lib/netlist/prg/nltool.cpp
@@ -395,10 +395,6 @@ static const char *pmf_verbose[] =
int main(int argc, char *argv[])
{
-#if (!PSTANDALONE)
- track_memory(true);
- {
-#endif
tool_options_t opts;
int ret;
@@ -462,9 +458,5 @@ int main(int argc, char *argv[])
}
pstring::resetmem();
-#if (!PSTANDALONE)
- }
- dump_unfreed_mem();
-#endif
return 0;
}
diff --git a/src/lib/netlist/prg/nlwav.cpp b/src/lib/netlist/prg/nlwav.cpp
index 681b0e6d79e..bba12ca1152 100644
--- a/src/lib/netlist/prg/nlwav.cpp
+++ b/src/lib/netlist/prg/nlwav.cpp
@@ -237,10 +237,6 @@ void usage(nlwav_options_t &opts)
int main(int argc, char *argv[])
{
-#if (!PSTANDALONE)
- track_memory(true);
- {
-#endif
nlwav_options_t opts;
int ret;
@@ -258,10 +254,6 @@ int main(int argc, char *argv[])
}
convert(opts);
-#if (!PSTANDALONE)
- }
- dump_unfreed_mem();
-#endif
return 0;
}
diff --git a/src/lib/util/cdrom.cpp b/src/lib/util/cdrom.cpp
index a9a60ef97bd..2235119f776 100644
--- a/src/lib/util/cdrom.cpp
+++ b/src/lib/util/cdrom.cpp
@@ -371,8 +371,8 @@ cdrom_file *cdrom_open(chd_file *chd)
chdofs += file->cdtoc.tracks[i].frames;
chdofs += file->cdtoc.tracks[i].extraframes;
logofs += file->cdtoc.tracks[i].frames;
-
-/* printf("Track %02d is format %d subtype %d datasize %d subsize %d frames %d extraframes %d pregap %d pgmode %d presize %d postgap %d logofs %d physofs %d chdofs %d\n", i+1,
+/*
+ printf("Track %02d is format %d subtype %d datasize %d subsize %d frames %d extraframes %d pregap %d pgmode %d presize %d postgap %d logofs %d physofs %d chdofs %d\n", i+1,
file->cdtoc.tracks[i].trktype,
file->cdtoc.tracks[i].subtype,
file->cdtoc.tracks[i].datasize,
@@ -447,17 +447,20 @@ void cdrom_close(cdrom_file *file)
* @return The partial sector.
*/
-chd_error read_partial_sector(cdrom_file *file, void *dest, UINT32 lbasector, UINT32 chdsector, UINT32 tracknum, UINT32 startoffs, UINT32 length)
+chd_error read_partial_sector(cdrom_file *file, void *dest, UINT32 lbasector, UINT32 chdsector, UINT32 tracknum, UINT32 startoffs, UINT32 length, bool phys=false)
{
chd_error result = CHDERR_NONE;
bool needswap = false;
// if this is pregap info that isn't actually in the file, just return blank data
- if ((file->cdtoc.tracks[tracknum].pgdatasize == 0) && (lbasector < (file->cdtoc.tracks[tracknum].logframeofs + file->cdtoc.tracks[tracknum].pregap)))
+ if (!phys)
{
-// printf("PG missing sector: LBA %d, trklog %d\n", lbasector, file->cdtoc.tracks[tracknum].logframeofs);
- memset(dest, 0, length);
- return result;
+ if ((file->cdtoc.tracks[tracknum].pgdatasize == 0) && (lbasector < (file->cdtoc.tracks[tracknum].logframeofs + file->cdtoc.tracks[tracknum].pregap)))
+ {
+ //printf("PG missing sector: LBA %d, trklog %d\n", lbasector, file->cdtoc.tracks[tracknum].logframeofs);
+ memset(dest, 0, length);
+ return result;
+ }
}
// if a CHD, just read
@@ -542,14 +545,14 @@ UINT32 cdrom_read_data(cdrom_file *file, UINT32 lbasector, void *buffer, UINT32
if ((datatype == tracktype) || (datatype == CD_TRACK_RAW_DONTCARE))
{
- return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 0, file->cdtoc.tracks[tracknum].datasize) == CHDERR_NONE);
+ return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 0, file->cdtoc.tracks[tracknum].datasize, phys) == CHDERR_NONE);
}
else
{
/* return 2048 bytes of mode 1 data from a 2352 byte mode 1 raw sector */
if ((datatype == CD_TRACK_MODE1) && (tracktype == CD_TRACK_MODE1_RAW))
{
- return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 16, 2048) == CHDERR_NONE);
+ return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 16, 2048, phys) == CHDERR_NONE);
}
/* return 2352 byte mode 1 raw sector from 2048 bytes of mode 1 data */
@@ -565,19 +568,19 @@ UINT32 cdrom_read_data(cdrom_file *file, UINT32 lbasector, void *buffer, UINT32
bufptr[14] = msf&0xff;
bufptr[15] = 1; // mode 1
LOG(("CDROM: promotion of mode1/form1 sector to mode1 raw is not complete!\n"));
- return (read_partial_sector(file, bufptr+16, lbasector, chdsector, tracknum, 0, 2048) == CHDERR_NONE);
+ return (read_partial_sector(file, bufptr+16, lbasector, chdsector, tracknum, 0, 2048, phys) == CHDERR_NONE);
}
/* return 2048 bytes of mode 1 data from a mode2 form1 or raw sector */
if ((datatype == CD_TRACK_MODE1) && ((tracktype == CD_TRACK_MODE2_FORM1)||(tracktype == CD_TRACK_MODE2_RAW)))
{
- return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 24, 2048) == CHDERR_NONE);
+ return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 24, 2048, phys) == CHDERR_NONE);
}
/* return mode 2 2336 byte data from a 2352 byte mode 1 or 2 raw sector (skip the header) */
if ((datatype == CD_TRACK_MODE2) && ((tracktype == CD_TRACK_MODE1_RAW) || (tracktype == CD_TRACK_MODE2_RAW)))
{
- return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 16, 2336) == CHDERR_NONE);
+ return (read_partial_sector(file, buffer, lbasector, chdsector, tracknum, 16, 2336, phys) == CHDERR_NONE);
}
LOG(("CDROM: Conversion from type %d to type %d not supported!\n", tracktype, datatype));
diff --git a/src/lib/util/corealloc.cpp b/src/lib/util/corealloc.cpp
deleted file mode 100644
index 38f21846f96..00000000000
--- a/src/lib/util/corealloc.cpp
+++ /dev/null
@@ -1,432 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-/***************************************************************************
-
- corealloc.c
-
- Memory allocation helpers for the helper library.
-
-***************************************************************************/
-
-#include "corealloc.h"
-#include "osdcore.h"
-
-
-//**************************************************************************
-// DEBUGGING
-//**************************************************************************
-
-#define LOG_ALLOCS (0)
-#define DEBUG_MISMATCHED_ALLOCS (0)
-
-// define this to initialize allocated memory to a fixed non-0 value
-#ifdef MAME_DEBUG
-#define INITIALIZE_ALLOCATED_MEMORY
-#endif
-
-// define this to zap memory to a fixed non-0 value before freeing
-//#define OVERWRITE_FREED_MEMORY
-
-// compatibility with non-clang compilers
-#ifndef __has_feature
- #define __has_feature(x) 0
-#endif
-
-
-//**************************************************************************
-// CONSTANTS
-//**************************************************************************
-
-// number of memory_entries to allocate in a block
-const int memory_block_alloc_chunk = 256;
-
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-// this struct is allocated in pools to track memory allocations
-// it must be a POD type!!
-class memory_entry
-{
-public:
- // internal state
- memory_entry * m_next; // link to the next entry
- memory_entry * m_prev; // link to the previous entry
- size_t m_size; // size of the allocation (not including this header)
- void * m_base; // base of the allocation
- const char * m_file; // file the allocation was made from
- int m_line; // line number within that file
- UINT64 m_id; // unique id
- bool m_array; // array?
-
- // hashing prime number
- static const int k_hash_prime = 6151;
-
- // global state
- static UINT64 s_curid; // current ID
- static osd_lock * s_lock; // lock for managing the list
- static bool s_lock_alloc; // set to true temporarily during lock allocation
- static bool s_tracking; // set to true when tracking is live
- static memory_entry *s_hash[k_hash_prime];// hash table based on pointer
- static memory_entry *s_freehead; // pointer to the head of the free list
-
- // static helpers
- static memory_entry *allocate(size_t size, void *base, const char *file, int line, bool array);
- static memory_entry *find(void *ptr);
- static void release(memory_entry *entry, const char *file, int line);
- static void report_unfreed(UINT64 start);
-
-private:
- static void acquire_lock();
- static void release_lock();
-};
-
-
-
-//**************************************************************************
-// GLOBALS
-//**************************************************************************
-
-// dummy zeromem object
-const zeromem_t zeromem = { };
-
-// globals for memory_entry
-UINT64 memory_entry::s_curid = 1;
-osd_lock *memory_entry::s_lock = nullptr;
-bool memory_entry::s_lock_alloc = false;
-bool memory_entry::s_tracking = false;
-memory_entry *memory_entry::s_hash[memory_entry::k_hash_prime] = { nullptr };
-memory_entry *memory_entry::s_freehead = nullptr;
-
-//**************************************************************************
-// OPERATOR REPLACEMENTS
-//**************************************************************************
-
-#ifndef NO_MEM_TRACKING
-
-// standard new/delete operators (try to avoid using)
-void *operator new(std::size_t size) throw (std::bad_alloc) { return malloc_file_line(size, nullptr, 0, false, true, false); }
-void *operator new[](std::size_t size) throw (std::bad_alloc) { return malloc_file_line(size, nullptr, 0, true, true, false); }
-void operator delete(void *ptr) throw() { if (ptr != nullptr) free_file_line(ptr, nullptr, 0, false); }
-void operator delete[](void *ptr) throw() { if (ptr != nullptr) free_file_line(ptr, nullptr, 0, true); }
-
-void* operator new(std::size_t size,const std::nothrow_t&) throw() { return malloc_file_line(size, nullptr, 0, false, false, false); }
-void* operator new[](std::size_t size, const std::nothrow_t&) throw() { return malloc_file_line(size, nullptr, 0, true, false, false); }
-void operator delete(void* ptr, const std::nothrow_t&) throw() { if (ptr != nullptr) free_file_line(ptr, nullptr, 0, false); }
-void operator delete[](void* ptr, const std::nothrow_t&) throw() { if (ptr != nullptr) free_file_line(ptr, nullptr, 0, true); }
-
-#endif
-
-//**************************************************************************
-// OPERATOR OVERLOADS - DEFINITIONS
-//**************************************************************************
-
-// file/line new/delete operators
-void *operator new(std::size_t size, const char *file, int line) throw (std::bad_alloc) { return malloc_file_line(size, file, line, false, true, false); }
-void *operator new[](std::size_t size, const char *file, int line) throw (std::bad_alloc) { return malloc_file_line(size, file, line, true, true, false); }
-void operator delete(void *ptr, const char *file, int line) { if (ptr != nullptr) free_file_line(ptr, file, line, false); }
-void operator delete[](void *ptr, const char *file, int line) { if (ptr != nullptr) free_file_line(ptr, file, line, true); }
-
-// file/line new/delete operators with zeroing
-void *operator new(std::size_t size, const char *file, int line, const zeromem_t &) throw (std::bad_alloc) { return malloc_file_line(size, file, line, false, true, true); }
-void *operator new[](std::size_t size, const char *file, int line, const zeromem_t &) throw (std::bad_alloc) { return malloc_file_line(size, file, line, true, true, true); }
-void operator delete(void *ptr, const char *file, int line, const zeromem_t &) { if (ptr != nullptr) free_file_line(ptr, file, line, false); }
-void operator delete[](void *ptr, const char *file, int line, const zeromem_t &) { if (ptr != nullptr) free_file_line(ptr, file, line, true); }
-
-
-
-//**************************************************************************
-// GLOBAL HELPERS
-//**************************************************************************
-
-//-------------------------------------------------
-// malloc_file_line - allocate memory with file
-// and line number information
-//-------------------------------------------------
-
-void *malloc_file_line(size_t size, const char *file, int line, bool array, bool throw_on_fail, bool clear)
-{
- // allocate the memory and fail if we can't
- void *result = array ? osd_malloc_array(size) : osd_malloc(size);
- if (result == nullptr)
- {
- fprintf(stderr, "Failed to allocate %d bytes (%s:%d)\n", UINT32(size), file, line);
- osd_break_into_debugger("Failed to allocate RAM");
- if (throw_on_fail)
- throw std::bad_alloc();
- return nullptr;
- }
-
- // zap the memory if requested
- if (clear)
- memset(result, 0, size);
- else
- {
-#if !__has_feature(memory_sanitizer) && defined(INITIALIZE_ALLOCATED_MEMORY) && !defined(MAME_DEBUG_FAST)
- memset(result, 0xdd, size);
-#endif
- }
-
- // add a new entry
- memory_entry::allocate(size, result, file, line, array);
-
- return result;
-}
-
-
-//-------------------------------------------------
-// free_file_line - free memory with file
-// and line number information
-//-------------------------------------------------
-
-void free_file_line(void *memory, const char *file, int line, bool array)
-{
- // find the memory entry
- memory_entry *entry = memory_entry::find(memory);
-
- // warn about untracked frees
- if (entry == nullptr)
- {
- fprintf(stderr, "Error: attempt to free untracked memory %p in %s(%d)!\n", memory, file, line);
- osd_break_into_debugger("Error: attempt to free untracked memory");
- return;
- }
-
- // warn about mismatched arrays
- if (!array && entry->m_array)
- {
- fprintf(stderr, "Warning: attempt to free array %p with global_free in %s(%d)!\n", memory, file, line);
- if (DEBUG_MISMATCHED_ALLOCS) {
- osd_break_into_debugger("Error: attempt to free array with global_free");
- }
- }
- if (array && !entry->m_array)
- {
-#ifndef __INTEL_COMPILER // todo: fix this properly, it appears some optimization the compiler applies breaks our logic here
- fprintf(stderr, "Warning: attempt to free single object %p with global_free_array in %s(%d)!\n", memory, file, line);
- if (DEBUG_MISMATCHED_ALLOCS) {
- osd_break_into_debugger("Error: attempt to free single object with global_free_array");
- }
-#endif
- }
-
-#ifdef OVERWRITE_FREED_MEMORY
- // clear memory to a bogus value
- memset(memory, 0xfc, entry->m_size);
-#endif
-
- // free the entry and the memory
- memory_entry::release(entry, file, line);
- osd_free(memory);
-}
-
-
-//-------------------------------------------------
-// track_memory - enables or disables the memory
-// tracking
-//-------------------------------------------------
-
-void track_memory(bool track)
-{
- memory_entry::s_tracking = track;
-}
-
-
-//-------------------------------------------------
-// next_memory_id - return the ID of the next
-// allocated block
-//-------------------------------------------------
-
-UINT64 next_memory_id()
-{
- return memory_entry::s_curid;
-}
-
-
-//-------------------------------------------------
-// dump_unfreed_mem - called from the exit path
-// of any code that wants to check for unfreed
-// memory
-//-------------------------------------------------
-
-void dump_unfreed_mem(UINT64 start)
-{
- memory_entry::report_unfreed(start);
-}
-
-
-
-//**************************************************************************
-// MEMORY ENTRY
-//**************************************************************************
-
-//-------------------------------------------------
-// acquire_lock - acquire the memory entry lock,
-// creating a new one if needed
-//-------------------------------------------------
-
-void memory_entry::acquire_lock()
-{
- // allocate a lock on first usage
- // note that osd_lock_alloc() may re-enter this path, so protect against recursion!
- if (s_lock == nullptr)
- {
- if (s_lock_alloc)
- return;
- s_lock_alloc = true;
- s_lock = osd_lock_alloc();
- s_lock_alloc = false;
- }
- osd_lock_acquire(s_lock);
-}
-
-
-//-------------------------------------------------
-// release_lock - release the memory entry lock
-//-------------------------------------------------
-
-void memory_entry::release_lock()
-{
- osd_lock_release(s_lock);
-}
-
-
-//-------------------------------------------------
-// allocate - allocate a new memory entry
-//-------------------------------------------------
-
-memory_entry *memory_entry::allocate(size_t size, void *base, const char *file, int line, bool array)
-{
- acquire_lock();
-
- // if we're out of free entries, allocate a new chunk
- if (s_freehead == nullptr)
- {
- // create a new chunk, and fail if we can't
- memory_entry *entry = reinterpret_cast<memory_entry *>(osd_malloc_array(memory_block_alloc_chunk * sizeof(memory_entry)));
- if (entry == nullptr)
- {
- release_lock();
- return nullptr;
- }
-
- // add all the entries to the list
- for (int entrynum = 0; entrynum < memory_block_alloc_chunk; entrynum++)
- {
- entry->m_next = s_freehead;
- s_freehead = entry++;
- }
- }
-
- // grab a free entry
- memory_entry *entry = s_freehead;
- s_freehead = entry->m_next;
-
- // populate it
- entry->m_size = size;
- entry->m_base = base;
- entry->m_file = s_tracking ? file : nullptr;
- entry->m_line = s_tracking ? line : 0;
- entry->m_id = s_curid++;
- entry->m_array = array;
- if (LOG_ALLOCS)
- fprintf(stderr, "#%06d, alloc %d bytes (%s:%d)\n", (UINT32)entry->m_id, static_cast<UINT32>(entry->m_size), entry->m_file, (int)entry->m_line);
-
- // add it to the alloc list
- int hashval = reinterpret_cast<FPTR>(base) % k_hash_prime;
- entry->m_next = s_hash[hashval];
- if (entry->m_next != nullptr)
- entry->m_next->m_prev = entry;
- entry->m_prev = nullptr;
- s_hash[hashval] = entry;
-
- release_lock();
- return entry;
-}
-
-
-//-------------------------------------------------
-// find - find a memory entry
-//-------------------------------------------------
-
-memory_entry *memory_entry::find(void *ptr)
-{
- // NULL maps to nothing
- if (ptr == nullptr)
- return nullptr;
-
- // scan the list under the lock
- acquire_lock();
-
- int hashval = reinterpret_cast<FPTR>(ptr) % k_hash_prime;
- memory_entry *entry;
- for (entry = s_hash[hashval]; entry != nullptr; entry = entry->m_next)
- if (entry->m_base == ptr)
- break;
-
- release_lock();
- return entry;
-}
-
-
-//-------------------------------------------------
-// release - release a memory entry
-//-------------------------------------------------
-
-void memory_entry::release(memory_entry *entry, const char *file, int line)
-{
- acquire_lock();
-
- if (LOG_ALLOCS)
- fprintf(stderr, "#%06d, release %d bytes (%s:%d)\n", (UINT32)entry->m_id, static_cast<UINT32>(entry->m_size), file, line);
-
- // remove ourselves from the alloc list
- int hashval = reinterpret_cast<FPTR>(entry->m_base) % k_hash_prime;
- if (entry->m_prev != nullptr)
- entry->m_prev->m_next = entry->m_next;
- else
- s_hash[hashval] = entry->m_next;
- if (entry->m_next != nullptr)
- entry->m_next->m_prev = entry->m_prev;
-
- // add ourself to the free list
- entry->m_next = s_freehead;
- s_freehead = entry;
-
- release_lock();
-}
-
-/**
- * @fn void memory_entry::report_unfreed(UINT64 start)
- *
- * @brief -------------------------------------------------
- * report_unfreed - print a list of unfreed memory to the target file
- * -------------------------------------------------.
- *
- * @param start The start.
- */
-
-void memory_entry::report_unfreed(UINT64 start)
-{
- acquire_lock();
-
- // check for leaked memory
- UINT32 total = 0;
-
- for (auto entry : s_hash)
- for (; entry != nullptr; entry = entry->m_next)
- if (entry->m_file != nullptr && entry->m_id >= start)
- {
- if (total == 0)
- fprintf(stderr, "--- memory leak warning ---\n");
- total += entry->m_size;
- fprintf(stderr, "#%06d, nofree %d bytes (%s:%d)\n", (UINT32)entry->m_id, static_cast<UINT32>(entry->m_size), entry->m_file, (int)entry->m_line);
- }
-
- release_lock();
-
- if (total > 0)
- fprintf(stderr, "a total of %u bytes were not freed\n", total);
-}
diff --git a/src/lib/util/corealloc.h b/src/lib/util/corealloc.h
index 5cd481824ed..4f0b961eb59 100644
--- a/src/lib/util/corealloc.h
+++ b/src/lib/util/corealloc.h
@@ -15,6 +15,9 @@
#include <stdlib.h>
#include <new>
+#include <type_traits>
+#include <utility>
+#include <memory>
#include "osdcore.h"
@@ -23,82 +26,80 @@
//**************************************************************************
// global allocation helpers -- use these instead of new and delete
-#define global_alloc(_type) new(__FILE__, __LINE__) _type
-#define global_alloc_clear(_type) new(__FILE__, __LINE__, zeromem) _type
-#define global_alloc_array(_type, _num) new(__FILE__, __LINE__) _type[_num]
-#define global_alloc_array_clear(_type, _num) new(__FILE__, __LINE__, zeromem) _type[_num]
+#define global_alloc(_type) new _type
+#define global_alloc_array(_type, _num) new _type[_num]
#define global_free(_ptr) do { delete _ptr; } while (0)
#define global_free_array(_ptr) do { delete[] _ptr; } while (0)
-//**************************************************************************
-// FUNCTION PROTOTYPES
-//**************************************************************************
-
-// allocate memory with file and line number information
-void *malloc_file_line(size_t size, const char *file, int line, bool array, bool throw_on_fail, bool clear);
-
-// free memory with file and line number information
-void free_file_line(void *memory, const char *file, int line, bool array);
-inline void free_file_line(const void *memory, const char *file, int line, bool array) { free_file_line(const_cast<void *>(memory), file, line, array); }
-
-// called from the exit path of any code that wants to check for unfreed memory
-void track_memory(bool track);
-UINT64 next_memory_id();
-void dump_unfreed_mem(UINT64 start = 0);
-
-
-
-//**************************************************************************
-// OPERATOR OVERLOADS - DECLARATIONS
-//**************************************************************************
-
-// zeromem_t is a dummy class used to tell new to zero memory after allocation
-class zeromem_t { };
-
-// file/line new/delete operators
-void *operator new(std::size_t size, const char *file, int line) throw (std::bad_alloc);
-void *operator new[](std::size_t size, const char *file, int line) throw (std::bad_alloc);
-void operator delete(void *ptr, const char *file, int line);
-void operator delete[](void *ptr, const char *file, int line);
-
-// file/line new/delete operators with zeroing
-void *operator new(std::size_t size, const char *file, int line, const zeromem_t &) throw (std::bad_alloc);
-void *operator new[](std::size_t size, const char *file, int line, const zeromem_t &) throw (std::bad_alloc);
-void operator delete(void *ptr, const char *file, int line, const zeromem_t &);
-void operator delete[](void *ptr, const char *file, int line, const zeromem_t &);
-
-
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-// dummy objects to pass to the specialized new variants
-extern const zeromem_t zeromem;
-
-
-
-//**************************************************************************
-// ADDDITIONAL MACROS
-//**************************************************************************
-
-#ifndef NO_MEM_TRACKING
-// re-route classic malloc-style allocations
-#undef malloc
-#undef realloc
-#undef free
-
-#define malloc(x) malloc_file_line(x, __FILE__, __LINE__, true, false, false)
-#define realloc(x,y) __error_realloc_is_dangerous__
-#define free(x) free_file_line(x, __FILE__, __LINE__, true)
-
-#if !defined(_MSC_VER) || _MSC_VER < 1900 // < VS2015
-#undef calloc
-#define calloc(x,y) __error_use_auto_alloc_clear_or_global_alloc_clear_instead__
-#endif
-
-#endif
+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)...);
+}
+
+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);
+ return new(ptr) _Tp[__num]();
+}
+
+
+
+template<typename _Tp>
+struct _MakeUniqClear
+{
+ typedef std::unique_ptr<_Tp> __single_object;
+};
+
+template<typename _Tp>
+struct _MakeUniqClear<_Tp[]>
+{
+ typedef std::unique_ptr<_Tp[]> __array;
+};
+
+template<typename _Tp, size_t _Bound>
+struct _MakeUniqClear<_Tp[_Bound]>
+{
+ struct __invalid_type { };
+};
+
+/// make_unique_clear for single objects
+template<typename _Tp, typename... _Args>
+inline typename _MakeUniqClear<_Tp>::__single_object make_unique_clear(_Args&&... __args)
+{
+ unsigned char* ptr = new unsigned char[sizeof(_Tp)]; // allocate memory
+ memset(ptr, 0, sizeof(_Tp));
+ return std::unique_ptr<_Tp>(new(ptr) _Tp(std::forward<_Args>(__args)...));
+}
+
+/// make_unique_clear for arrays of unknown bound
+template<typename _Tp>
+inline typename _MakeUniqClear<_Tp>::__array make_unique_clear(size_t __num)
+{
+ auto size = sizeof(std::remove_extent_t<_Tp>) * __num;
+ unsigned char* ptr = new unsigned char[size]; // allocate memory
+ memset(ptr, 0, size);
+ return std::unique_ptr<_Tp>(new(ptr) std::remove_extent_t<_Tp>[__num]());
+}
+
+template<typename _Tp, unsigned char _F>
+inline typename _MakeUniqClear<_Tp>::__array make_unique_clear(size_t __num)
+{
+ auto size = sizeof(std::remove_extent_t<_Tp>) * __num;
+ unsigned char* ptr = new unsigned char[size]; // allocate memory
+ memset(ptr, _F, size);
+ return std::unique_ptr<_Tp>(new(ptr) std::remove_extent_t<_Tp>[__num]());
+}
+
+/// Disable make_unique_clear for arrays of known bound
+template<typename _Tp, typename... _Args>
+inline typename _MakeUniqClear<_Tp>::__invalid_type make_unique_clear(_Args&&...) = delete;
#endif /* __COREALLOC_H__ */
diff --git a/src/lib/util/corefile.cpp b/src/lib/util/corefile.cpp
index a2242c133c6..344a2922bfe 100644
--- a/src/lib/util/corefile.cpp
+++ b/src/lib/util/corefile.cpp
@@ -909,7 +909,7 @@ file_error core_truncate(core_file *f, UINT64 offset)
assumptions about path separators
-------------------------------------------------*/
-std::string &core_filename_extract_base(std::string &result, const char *name, bool strip_extension)
+std::string core_filename_extract_base(const char *name, bool strip_extension)
{
/* find the start of the name */
const char *start = name + strlen(name);
@@ -917,7 +917,7 @@ std::string &core_filename_extract_base(std::string &result, const char *name, b
start--;
/* copy the rest into an astring */
- result.assign(start);
+ std::string result(start);
/* chop the extension if present */
if (strip_extension)
diff --git a/src/lib/util/corefile.h b/src/lib/util/corefile.h
index eeb5a8efa22..5266832c374 100644
--- a/src/lib/util/corefile.h
+++ b/src/lib/util/corefile.h
@@ -125,7 +125,7 @@ file_error core_truncate(core_file *f, UINT64 offset);
/* ----- filename utilities ----- */
/* extract the base part of a filename (remove extensions and paths) */
-std::string &core_filename_extract_base(std::string &result, const char *name, bool strip_extension = false);
+std::string core_filename_extract_base(const char *name, bool strip_extension = false);
/* true if the given filename ends with a particular extension */
int core_filename_ends_with(const char *filename, const char *extension);
diff --git a/src/lib/util/corestr.cpp b/src/lib/util/corestr.cpp
index 336d788cabb..ce5976869d4 100644
--- a/src/lib/util/corestr.cpp
+++ b/src/lib/util/corestr.cpp
@@ -217,14 +217,13 @@ int strprintf(std::string &str, const char *format, ...)
return retVal;
}
-std::string strformat(std::string &str, const char *format, ...)
+std::string strformat(const char *format, ...)
{
std::string retVal;
va_list ap;
va_start(ap, format);
- strvprintf(str, format, ap);
+ strvprintf(retVal, format, ap);
va_end(ap);
- retVal.assign(str);
return retVal;
}
diff --git a/src/lib/util/corestr.h b/src/lib/util/corestr.h
index 519e1edc849..94f13c4061b 100644
--- a/src/lib/util/corestr.h
+++ b/src/lib/util/corestr.h
@@ -68,7 +68,7 @@ int strvprintf(std::string &str, const char *format, va_list args);
int strcatvprintf(std::string &str, const char *format, va_list args);
int strprintf(std::string &str, const char *format, ...) ATTR_PRINTF(2, 3);
int strcatprintf(std::string &str, const char *format, ...) ATTR_PRINTF(2, 3);
-std::string strformat(std::string &str, const char *format, ...) ATTR_PRINTF(2, 3);
+std::string strformat(const char *format, ...) ATTR_PRINTF(1, 2);
void strdelchr(std::string& str, char chr);
void strreplacechr(std::string& str, char ch, char newch);
diff --git a/src/lib/util/coretmpl.h b/src/lib/util/coretmpl.h
index afbd3dcf9a1..9201041b2d9 100644
--- a/src/lib/util/coretmpl.h
+++ b/src/lib/util/coretmpl.h
@@ -18,6 +18,11 @@
#include <vector>
+#if defined(_MSC_VER) && (_MSC_VER < 1900)
+#include <yvals.h>
+#define noexcept _NOEXCEPT
+#endif
+
// TEMPORARY helper to catch is_pod assertions in the debugger
#if 0
#undef assert
@@ -33,25 +38,25 @@ typedef std::vector<UINT8> dynamic_buffer;
// a simple_list is a singly-linked list whose 'next' pointer is owned
// by the object
template<class _ElementType>
-class simple_list
+class simple_list final
{
+public:
// we don't support deep copying
- simple_list(const simple_list &);
- simple_list &operator=(const simple_list &);
+ simple_list(const simple_list &) = delete;
+ simple_list &operator=(const simple_list &) = delete;
-public:
// construction/destruction
- simple_list()
+ simple_list() noexcept
: m_head(nullptr),
m_tail(nullptr),
m_count(0) { }
- virtual ~simple_list() { reset(); }
+ ~simple_list() noexcept { reset(); }
// simple getters
- _ElementType *first() const { return m_head; }
- _ElementType *last() const { return m_tail; }
- int count() const { return m_count; }
+ _ElementType *first() const noexcept { return m_head; }
+ _ElementType *last() const noexcept { return m_tail; }
+ int count() const noexcept { return m_count; }
// remove (free) all objects in the list, leaving an empty list
void reset()
@@ -72,7 +77,7 @@ public:
}
// add the given list to the head of the list
- void prepend_list(simple_list<_ElementType> &list)
+ void prepend_list(simple_list<_ElementType> &list) noexcept
{
int count = list.count();
if (count == 0)
@@ -87,7 +92,7 @@ public:
}
// add the given object to the tail of the list
- _ElementType &append(_ElementType &object)
+ _ElementType &append(_ElementType &object) noexcept
{
object.m_next = nullptr;
if (m_tail != nullptr)
@@ -99,7 +104,7 @@ public:
}
// add the given list to the tail of the list
- void append_list(simple_list<_ElementType> &list)
+ void append_list(simple_list<_ElementType> &list) noexcept
{
int count = list.count();
if (count == 0)
@@ -115,7 +120,7 @@ public:
}
// insert the given object after a particular object (NULL means prepend)
- _ElementType &insert_after(_ElementType &object, _ElementType *insert_after)
+ _ElementType &insert_after(_ElementType &object, _ElementType *insert_after) noexcept
{
if (insert_after == nullptr)
return prepend(object);
@@ -128,7 +133,7 @@ public:
}
// insert the given object before a particular object (NULL means append)
- _ElementType &insert_before(_ElementType &object, _ElementType *insert_before)
+ _ElementType &insert_before(_ElementType &object, _ElementType *insert_before) noexcept
{
if (insert_before == nullptr)
return append(object);
@@ -146,7 +151,7 @@ public:
}
// replace an item in the list at the same location, and remove it
- _ElementType &replace_and_remove(_ElementType &object, _ElementType &toreplace)
+ _ElementType &replace_and_remove(_ElementType &object, _ElementType &toreplace) noexcept
{
_ElementType *prev = nullptr;
for (_ElementType *cur = m_head; cur != nullptr; prev = cur, cur = cur->m_next)
@@ -166,7 +171,7 @@ public:
}
// detach the head item from the list, but don't free its memory
- _ElementType *detach_head()
+ _ElementType *detach_head() noexcept
{
_ElementType *result = m_head;
if (result != nullptr)
@@ -180,7 +185,7 @@ public:
}
// detach the given item from the list, but don't free its memory
- _ElementType &detach(_ElementType &object)
+ _ElementType &detach(_ElementType &object) noexcept
{
_ElementType *prev = nullptr;
for (_ElementType *cur = m_head; cur != nullptr; prev = cur, cur = cur->m_next)
@@ -199,7 +204,7 @@ public:
}
// deatch the entire list, returning the head, but don't free memory
- _ElementType *detach_all()
+ _ElementType *detach_all() noexcept
{
_ElementType *result = m_head;
m_head = m_tail = nullptr;
@@ -208,13 +213,13 @@ public:
}
// remove the given object and free its memory
- void remove(_ElementType &object)
+ void remove(_ElementType &object) noexcept
{
global_free(&detach(object));
}
// find an object by index in the list
- _ElementType *find(int index) const
+ _ElementType *find(int index) const noexcept
{
for (_ElementType *cur = m_head; cur != nullptr; cur = cur->m_next)
if (index-- == 0)
@@ -223,7 +228,7 @@ public:
}
// return the index of the given object in the list
- int indexof(const _ElementType &object) const
+ int indexof(const _ElementType &object) const noexcept
{
int index = 0;
for (_ElementType *cur = m_head; cur != nullptr; cur = cur->m_next)
diff --git a/src/lib/util/hashing.cpp b/src/lib/util/hashing.cpp
index 785127e01e8..8e85e4a42d2 100644
--- a/src/lib/util/hashing.cpp
+++ b/src/lib/util/hashing.cpp
@@ -79,12 +79,12 @@ bool sha1_t::from_string(const char *string, int length)
// as_string - convert to a string
//-------------------------------------------------
-const char *sha1_t::as_string(std::string &buffer) const
+std::string sha1_t::as_string() const
{
- buffer.clear();
+ std::string buffer;
for (auto & elem : m_raw)
strcatprintf(buffer, "%02x", elem);
- return buffer.c_str();
+ return buffer;
}
@@ -122,12 +122,12 @@ bool md5_t::from_string(const char *string, int length)
// as_string - convert to a string
//-------------------------------------------------
-const char *md5_t::as_string(std::string &buffer) const
+std::string md5_t::as_string() const
{
- buffer.clear();
+ std::string buffer;
for (auto & elem : m_raw)
strcatprintf(buffer, "%02x", elem);
- return buffer.c_str();
+ return buffer;
}
@@ -166,10 +166,9 @@ bool crc32_t::from_string(const char *string, int length)
// as_string - convert to a string
//-------------------------------------------------
-const char *crc32_t::as_string(std::string &buffer) const
+std::string crc32_t::as_string() const
{
- strprintf(buffer, "%08x", m_raw);
- return buffer.c_str();
+ return strformat("%08x", m_raw);
}
@@ -215,21 +214,18 @@ bool crc16_t::from_string(const char *string, int length)
}
/**
- * @fn const char *crc16_t::as_string(std::string &buffer) const
+ * @fn std::string crc16_t::as_string() const
*
* @brief -------------------------------------------------
* as_string - convert to a string
* -------------------------------------------------.
*
- * @param [in,out] buffer The buffer.
- *
- * @return null if it fails, else a char*.
+ * @return a std::string.
*/
-const char *crc16_t::as_string(std::string &buffer) const
+std::string crc16_t::as_string() const
{
- strprintf(buffer, "%04x", m_raw);
- return buffer.c_str();
+ return strformat("%04x", m_raw);
}
/**
diff --git a/src/lib/util/hashing.h b/src/lib/util/hashing.h
index b0de6a5c3c8..51a7da7c694 100644
--- a/src/lib/util/hashing.h
+++ b/src/lib/util/hashing.h
@@ -34,7 +34,7 @@ struct sha1_t
bool operator!=(const sha1_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) != 0; }
operator UINT8 *() { return m_raw; }
bool from_string(const char *string, int length = -1);
- const char *as_string(std::string &buffer) const;
+ std::string as_string() const;
UINT8 m_raw[20];
static const sha1_t null;
};
@@ -85,7 +85,7 @@ struct md5_t
bool operator!=(const md5_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) != 0; }
operator UINT8 *() { return m_raw; }
bool from_string(const char *string, int length = -1);
- const char *as_string(std::string &buffer) const;
+ std::string as_string() const;
UINT8 m_raw[16];
static const md5_t null;
};
@@ -136,7 +136,7 @@ struct crc32_t
crc32_t &operator=(const UINT32 crc) { m_raw = crc; return *this; }
operator UINT32() const { return m_raw; }
bool from_string(const char *string, int length = -1);
- const char *as_string(std::string &buffer) const;
+ std::string as_string() const;
UINT32 m_raw;
static const crc32_t null;
};
@@ -182,7 +182,7 @@ struct crc16_t
crc16_t &operator=(const UINT16 crc) { m_raw = crc; return *this; }
operator UINT16() const { return m_raw; }
bool from_string(const char *string, int length = -1);
- const char *as_string(std::string &buffer) const;
+ std::string as_string() const;
UINT16 m_raw;
static const crc16_t null;
};
diff --git a/src/lib/util/options.cpp b/src/lib/util/options.cpp
index 0e02b7dc735..d7ab454d063 100644
--- a/src/lib/util/options.cpp
+++ b/src/lib/util/options.cpp
@@ -478,10 +478,10 @@ void core_options::revert(int priority)
// the optional diff
//-------------------------------------------------
-const char *core_options::output_ini(std::string &buffer, const core_options *diff)
+std::string core_options::output_ini(const core_options *diff) const
{
// INI files are complete, so always start with a blank buffer
- buffer.clear();
+ std::string buffer;
int num_valid_headers = 0;
int unadorned_index = 0;
@@ -534,7 +534,7 @@ const char *core_options::output_ini(std::string &buffer, const core_options *di
}
}
}
- return buffer.c_str();
+ return buffer;
}
@@ -542,10 +542,10 @@ const char *core_options::output_ini(std::string &buffer, const core_options *di
// output_help - output option help to a string
//-------------------------------------------------
-const char *core_options::output_help(std::string &buffer)
+std::string core_options::output_help() const
{
// start empty
- buffer.clear();
+ std::string buffer;
// loop over all items
for (entry *curentry = m_entrylist.first(); curentry != nullptr; curentry = curentry->next())
@@ -558,7 +558,7 @@ const char *core_options::output_help(std::string &buffer)
else if (curentry->description() != nullptr)
strcatprintf(buffer,"-%-20s%s\n", curentry->name(), curentry->description());
}
- return buffer.c_str();
+ return buffer;
}
@@ -634,15 +634,13 @@ bool core_options::set_value(const char *name, const char *value, int priority,
bool core_options::set_value(const char *name, int value, int priority, std::string &error_string)
{
- std::string tempstr;
- strprintf(tempstr,"%d", value);
+ std::string tempstr = strformat("%d", value);
return set_value(name, tempstr.c_str(), priority, error_string);
}
bool core_options::set_value(const char *name, float value, int priority, std::string &error_string)
{
- std::string tempstr;
- strprintf(tempstr, "%f", (double) value);
+ std::string tempstr = strformat("%f", (double)value);
return set_value(name, tempstr.c_str(), priority, error_string);
}
diff --git a/src/lib/util/options.h b/src/lib/util/options.h
index f193d4a4976..1df89bed6c7 100644
--- a/src/lib/util/options.h
+++ b/src/lib/util/options.h
@@ -145,8 +145,8 @@ public:
void revert(int priority = OPTION_PRIORITY_MAXIMUM);
// output
- const char *output_ini(std::string &buffer, const core_options *diff = nullptr);
- const char *output_help(std::string &buffer);
+ std::string output_ini(const core_options *diff = nullptr) const;
+ std::string output_help() const;
// reading
const char *value(const char *option) const;
diff --git a/src/lib/util/tagmap.h b/src/lib/util/tagmap.h
index 4d15cbba193..cdbaf63d7fe 100644
--- a/src/lib/util/tagmap.h
+++ b/src/lib/util/tagmap.h
@@ -77,7 +77,7 @@ public:
}
// operations by tag
- void remove(const char *tag) { auto search = m_map.find(tag); if (search != m_map.end()) m_list.remove(*search->second); }
+ void remove(const char *tag) { auto search = m_map.find(tag); if (search != m_map.end()) { m_list.remove(*search->second); m_map.erase(search); } }
_ElementType *find(const char *tag) const { auto search = m_map.find(tag); return (search == m_map.end()) ? nullptr : search->second; }
private:
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index 5b3276468b3..90ab4bd4d2d 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
@@ -314,6 +316,7 @@ amidars // GX337 (c) 1982 Konami
triplep // (c) 1982 KKI / made by Sanritsu?
triplepa // (c) 1982 KKI / made by Sanritsu?
knockout // (c) 1982 KKK
+knockoutb // bootleg
mariner // (c) 1981 Amenip
800fath // (c) 1981 Amenip + U.S. Billiards license
mars // (c) 1981 Artic
@@ -359,6 +362,7 @@ calipso // (c) 1982 Tago
anteater // (c) 1982 Tago
anteaterg // (c) 1983 TV-Tuning (F.E.G. license)
anteateruk // (c) 1983 Free Enterprise Games
+anteatergg // bootleg
rescue // (c) 1982 Stern
rescueb // (c) Videl Games (Rescue bootleg)
aponow // bootleg
@@ -1435,7 +1439,7 @@ pss64 // 199? Nintendo / Hudson Soft
// SNES-based hacks
kinstb // bootleg
-mk3snes // bootleg
+mk3snes // bootleg
ffight2b // bootleg
sblast2b // bootleg
iron // bootleg
@@ -1484,7 +1488,7 @@ searthie // bootleg
invadrmr // (c) 1978 Model Racing
claybust // (c) 1978 Model Racing
gunchamp // (c) 1980 Model Racing
-gunchamps // (c) 1980 Model Racing (sshot.c)
+gunchamps // (c) 1980 Model Racing (sshot.cpp)
spaceatt // (c) 1978 Video Games GmbH
spaceattbp // (c) 1978 Video Games GmbH
spaceatt2k // (c) 1978 Video Games GmbH
@@ -1534,6 +1538,7 @@ schasera // RT Taito
schaserb // RT Taito
schaserc // RT Taito
schasercv // RT Taito
+schaserm // Model Racing
lupin3 // LP (c) 1980 Taito
lupin3a // LP (c) 1980 Taito
intruder // (c) 1980 GamePlan (Taito)
@@ -2116,6 +2121,7 @@ knightb // bootleg
kicknrun // A87 (c) 1986 Taito Corporation
kicknrunu // A87 (c) 1986 Taito Corporation
mexico86 // bootleg (Micro Research)
+mexico86a // bootleg
darius // A96 (c) 1986 Taito Corporation Japan (World)
dariusu // A96 (c) 1986 Taito America Corporation (US)
dariusj // A96 (c) 1986 Taito Corporation (Japan)
@@ -2497,7 +2503,7 @@ gseeker // 1992.?? D40 (c) 1992 Taito Corporation Japan (World)
gseekerj // 1992.12 D40 (c) 1992 Taito Corporation (Japan)
gseekeru // 1992.?? D40 (c) 1992 Taito America Corporation (US)
hthero93 // 1993.03 D49 (c) 1992 Taito Corporation (Japan)
- // 1993.04 D49 (US)
+hthero93u // 1993.04 D49 (c) 1992 Taito America Corporation (US)
cupfinal // 1993.?? D49 (c) 1993 Taito Corporation Japan (World)
trstar // 1993.?? D53 (c) 1993 Taito Corporation Japan (World)
trstarj // 1993.07 D53 (c) 1993 Taito Corporation (Japan)
@@ -2604,11 +2610,13 @@ optiger // 1998.09 E63 (c) 1998 Taito
taitotz
batlgear // E68 (c) 1999 Taito
pwrshovl // E74 (c) 1999 Taito
+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 //
invqix // F34 (c) 2003 Taito Corporation
@@ -2709,6 +2717,7 @@ toto //
honeydol // (c) 1995 Barko Corp
twinadv // (c) 1995 Barko Corp
twinadvk // (c) 1995 Barko Corp
+multi96 // (c) 1996 Barko Corp
snowbro3 // (c) 2002 Syrmex
ballboy // bootleg
// SemiCom games on "SnowBros"-like hardware
@@ -3137,6 +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
striderj // 3/1989 (c) 1989 (Japan)
striderjr // 3/1989 (c) 1989 (Japan)
dynwar // 4/1989 (c) 1989 (USA)
@@ -3251,6 +3261,7 @@ sf2v004 // hack
sf2acc // hack
sf2acca // hack
sf2ceblp // hack
+sf2cebltw // hack
sf2accp2 // hack
sf2amf // bootleg
sf2amf2 // bootleg
@@ -3363,7 +3374,7 @@ ddtodh // 12/04/1994 (c) 1993 (Hispanic)
ddtodhr1 // 25/01/1994 (c) 1993 (Hispanic)
ddtodhr2 // 13/01/1994 (c) 1993 (Hispanic)
ssf2t // 23/02/1994 (c) 1994 (World)
-ssf2th // 23/02/1994 (c) 1994 (Hispanic)
+ssf2th // 23/02/1994 (c) 1994 (Hispanic)
ssf2tu // 23/03/1994 (c) 1994 (USA)
ssf2tur1 // 23/02/1994 (c) 1994 (USA)
ssf2ta // 23/02/1994 (c) 1994 (Asia)
@@ -3385,6 +3396,7 @@ vampja // 05/07/1994 (c) 1994 (Japan)
vampjr1 // 30/06/1994 (c) 1994 (Japan)
ringdest // 02/09/1994 (c) 1994 (Euro)
ringdesta // 31/08/1994 (c) 1994 (Asia)
+ringdesth // 02/09/1994 (c) 1994 (Hispanic)
smbomb // 31/08/1994 (c) 1994 (Japan)
smbombr1 // 08/08/1994 (c) 1994 (Japan)
armwar // 24/10/1994 (c) 1994 (Euro)
@@ -3670,7 +3682,9 @@ jojobaner1 // 13/09/1999 (c) 1999 (Euro)
cps3boot // bootleg
cps3boota // bootleg
cps3booto // bootleg
-cps3bootoa // bootleg
+cps3bootao // bootleg
+cps3booto2 // bootleg
+cps3bootao2 // bootleg
cps3bs32 //
cps3bs32a //
@@ -3720,6 +3734,9 @@ shiryu2 // Strider Hiryu 2 (JAPAN 991213)
// Capcom medal games
alien // (c) 2005
+// Capcom Nintendo HW?
+tvcapcom
+
// Tecmo ZN1
tps
glpracr2 // Gallop Racer 2 (USA)
@@ -3729,7 +3746,7 @@ doapp // Dead Or Alive ++ (JAPAN)
cbaj // Cool Boaders Arcade Jam
shngmtkb // Shanghai Matekibuyuu
tondemo // Tondemo Crisis (JAPAN)
-glpracr3 // Gallop Racer 3 (Export)
+glpracr3 // Gallop Racer 3 (Export)
glpracr3j // Gallop Racer 3 (JAPAN)
flamegun // Flame Gunner (USA)
flamegunj // Flame Gunner (JAPAN)
@@ -4126,6 +4143,7 @@ tsurugij // 2001
wcombat // 2002
wcombatk // 2002
wcombatj // 2002
+wcombatu // 2002
xtrial // 2002
mfightc // 2002
mfightcc // 2002
@@ -4176,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
@@ -4363,7 +4382,7 @@ sspaceatc // 139-146 (c)
sspacaho // ? epr00001.bin - epr00008.bin
headon // 163-167/192-193 (c) Gremlin
headon1 // 163-167/192-193 (c) Gremlin
-headonb // bootleg, headonb.c
+headonb // bootleg, headonb.cpp
headons // Sidam bootleg
headonsa // Sidam bootleg
headonmz // bootleg
@@ -4821,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)
- // 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)
@@ -5357,7 +5376,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
@@ -5492,9 +5512,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
@@ -5524,14 +5544,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
@@ -5584,9 +5603,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
@@ -5629,11 +5648,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)
@@ -5656,8 +5675,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)
@@ -5684,7 +5703,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
@@ -5758,24 +5777,17 @@ initdv3e // 2004.05.18 Initial D Arcade Stage Ver. 3 (Export)
vf4tuneda // 2004.09 Virtua Fighter 4 Final Tuned (Rev A)
vf4tunedd // 2004.10 Virtua Fighter 4 Final Tuned (Rev D)
vf4tuned // 2004.12 Virtua Fighter 4 Final Tuned (Rev F)
- // 2004.12 World Club Champion Football Serie A 2002-2003 Ver.2.12
- // 2004.12 World Club Champion Football Serie A 2002-2003 Ver.2.34
- // 2005.04 Menkyo no Tetsujin
- // 2005.06 World Club Champion Football European Clubs 2004-2005
- // 2005.06 World Club Champion Football European Clubs 2004-2005 Ver.1.1
+wccf212e // 2004.12 World Club Champion Football Serie A 2002-2003 Ver.2.12
+wccf234j // 2004.12 World Club Champion Football Serie A 2002-2003 Ver.2.34
+ // 2005.04 Menkyo no Tetsujin / Sega Driving Simulator
+wccf310j // 2005.06 World Club Champion Football European Clubs 2004-2005
+wccf331e // 2005.06 World Club Champion Football European Clubs 2004-2005 Ver.1.1
// 2005.06 World Club Champion Football European Clubs 2004-2005 Ver.1.2
- // 2005.11 World Club Champion Football European Clubs 2004-2005 Ver.3.22
- // 2005.12 Mobile Suit Gundam 0079 Card Builder
- // 2006.03 Mobile Suit Gundam 0079 Card Builder Ver.1.007
- // 2006.07 Mobile Suit Gundam 0079 Card Builder Ver.2.00
- // 2006.08 World Club Champion Football European Clubs 2005-2006
- // 2006.09 Mobile Suit Gundam 0079 Card Builder Ver.2.01
+wccf322e // 2005.11 World Club Champion Football European Clubs 2004-2005 Ver.3.22
+wccf420e // 2006.08 World Club Champion Football European Clubs 2005-2006
// 2006.10 World Club Champion Football European Clubs 2005-2006 bugfix
- // 2006.11 Mobile Suit Gundam 0079 Card Builder Ver.2.02
inidv3ca // 2006.?? Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev A)
inidv3cy // 2006.?? Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev B)
- // 2007.03 Mobile Suit Gundam 0083 Card Builder
- // 2007.10 Mobile Suit Gundam 0083 Card Builder Ryouyuu Gekitotsu
// Atomiswave (Dreamcast-based) games
@@ -5807,7 +5819,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
@@ -5905,6 +5918,7 @@ wangmid2 // 2005.04 Wangan Midnight Maximum Tune 2 (Japan)
// 2005.10 Sangokushi Taisen Ver.1.100
wangmd2b // 2005.10 Wangan Midnight Maximum Tune 2 (Export) (Rev A)
// 2005.11 Sangokushi Taisen Ver.1.110
+ // 2005.12 Mobile Suit Gundam 0079 Card Builder
// 2005.12 Quest of D Gofu no Keisyousya Ver.2.00
// 2005.12 Quest of D Gofu no Keisyousya Ver.2.01
// 2005.12 Sega Network Taisen Mahjong MJ 3
@@ -5918,15 +5932,21 @@ mj3 // 2005.12 Sega Network Taisen Mahjong MJ 3 (Rev F)
scg06nt // 2005.12 Sega Golf Club 2006: Next Tours (Rev A)
// 2006.02 Sangokushi Taisen Ver.1.12
// 2006.03 Quest of D Gofu no Keisyousya Ver.2.02b
+ // 2006.03 Mobile Suit Gundam 0079 Card Builder Ver.1.007
// 2006.04 Sega Network Taisen Mahjong MJ 3 Evolution
// 2006.05 Sangokushi Taisen 2
// 2006.05 Sangokushi Taisen 2 Firmware Update
+ // 2006.07 Mobile Suit Gundam 0079 Card Builder Ver.2.00
+ // 2006.09 Mobile Suit Gundam 0079 Card Builder Ver.2.01
// 2006.09 Sangokushi Taisen 2 Ver.2.007
// 2006.09 Sangokushi Taisen 2 Ver.2.01
// 2006.09 Sega Network Taisen Mahjong MJ 3 Evolution (Rev A)
// 2006.10 Quest of D Oukoku no Syugosya Ver.3.00
// 2006.11 Quest of D Oukoku no Syugosya Ver.3.01
-mj3evo // 2007.06 Sega Network Taisen Mahjong MJ 3 Evolution (Rev B)
+ // 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)
+ // 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
// 2008.02 Quest of D The Battle Kingdom Ver.4.00c
@@ -6164,6 +6184,7 @@ hbarrelw // (c) 1987 Data East Corporation (World)
baddudes // EI (c) 1988 Data East USA (US)
drgninja // EG (c) 1988 Data East Corporation (Japan)
drgninjab // bootleg
+drgninjab2 // bootleg
birdtry // (c) 1988 Data East Corporation (Japan)
robocop // EP? (c) 1988 Data East Corporation (World)
robocopw // EP? (c) 1988 Data East Corporation (World)
@@ -6179,6 +6200,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)
@@ -6359,8 +6381,9 @@ avengrgs // MCG (c) 1995 Data East Corporation (World)
avengrgsj // MCG (c) 1995 Data East Corporation (Japan)
skullfng // MCH (c) 1996 Data East Corporation (World)
skullfngj // MCH (c) 1996 Data East Corporation (Japan)
-stadhr96 // MCM (c) 1996 Data East
-stadhr96j // MCM (c) 1996 Data East
+stadhr96 // MCM (c) 1996 Data East Corporation (World)
+stadhr96u // MCM (c) 1996 Data East Corporation (USA)
+stadhr96j // MCM (c) 1996 Data East Corporation (Japan)
// SemiCom games on Tumble Pop based hardware
metlsavr // (c) 1994 First Amusements
@@ -6767,7 +6790,7 @@ xmen2pj // GX065 (c) 1992 (Japan)
xmen6p // GX065 (c) 1992 (World)
xmen6pu // GX065 (c) 1992 (US)
xexex // GX067 (c) 1991 (World)
-orius // GX067 (c) 1991 (USA)
+orius // GX067 (c) 1991 (USA)
xexexa // GX067 (c) 1991 (Asia)
xexexj // GX067 (c) 1991 (Japan)
asterix // GX068 (c) 1992 (World)
@@ -7526,7 +7549,7 @@ badlandsb // bootleg
badlandsb2 // bootleg set 2
klax // 136075 (c) 1989
klax2 // 136075 (c) 1989
-klax2bl // bootleg
+klax2bl // bootleg
klax3 // 136075 (c) 1989
klaxj // 136075 (c) 1989 (Japan)
klaxd // 136075 (c) 1989 (Germany)
@@ -7664,6 +7687,7 @@ ikaria // A5004 'IW' (c) 1986
ikarinc // A5004 'IW' (c) 1986
ikarijp // A5004 'IW' (c) 1986 (Japan)
ikarijpb // bootleg
+ikariram // bootleg
victroad // A6002 (c) 1986
dogosoke // A6002 (c) 1986
dogosokb // bootleg
@@ -8099,6 +8123,7 @@ kuniokunb // bootleg
xsleena // TA-0019 (c) 1986 + Taito license
xsleenaj // TA-0019 (c) 1986
xsleenab // bootleg
+xsleenaba // bootleg
solrwarr // TA-0019 (c) 1986 + Taito / Memetron license
battlane // -0215, -0216 (Data East part number) (c) 1986 + Taito license
battlane2 // -0215, -0216 (Data East part number) (c) 1986 + Taito license
@@ -8133,6 +8158,7 @@ vball2pjb // bootleg (of Japan set)
ddragon2 // TA-0026 (c) 1988 (World)
ddragon2u // TA-0026 (c) 1988 (US)
ddragon2j // TA-0026 (c) 1988 (Japan)
+ddragon2b // bootleg
toffy // (c) 1993 Midas
stoffy // (c) 1994 Midas
stoffyu // (c) 1994 Midas + Unico
@@ -8217,6 +8243,7 @@ jackrabts // (c) 1984
mouser // UPL-83001 (c) 1983
mouserc // UPL-83001 (c) 1983
nova2001 // UPL-83005 (c) 1983
+nova2001h // hack?
nova2001u // UPL-83005 (c) [1983] + Universal license
ninjakun // UPL-84003 (c) 1984 Taito Corporation
raiders5 // UPL-85004 (c) 1985
@@ -8227,6 +8254,7 @@ xxmissio // UPL-86001 [1986]
ninjakd2 // UPL-????? (c) 1987
ninjakd2a // UPL-????? (c) 1987
ninjakd2b // UPL-????? (c) 1987
+ninjakd2c // UPL-????? (c) 1987
rdaction // UPL-87003?(c) 1987 + World Games license
jt104 // hack?
mnight // UPL-????? (c) 1987 distributed by Kawakus
@@ -8278,17 +8306,17 @@ nouryokup // (c) 1995 Tecmo
arcadian // (c) 1994 NMK
raphero // (c) 1994 Media Trading Corp
-// nmk16.c bootlegs using the Seibu Sound System
+// nmk16.cpp bootlegs using the Seibu Sound System
mustangb // bootleg
mustangb2 // TAB Austria bootleg
tdragonb // bootleg
-// Comad games on unofficial hardware based on nmk16.c
+// Comad games on unofficial hardware based on nmk16.cpp
ssmissin // (c) 1992 Comad
airattck // (c) 1996 Comad
airattcka // (c) 1996 Comad
-// Bee-Oh games on unofficial hardware based on nmk16.c
+// Bee-Oh games on unofficial hardware based on nmk16.cpp
manybloc // (c) 1991 Bee-Oh
// Jaleco Mahjong Games, Similar Hardware to the NMK ones above?
@@ -8809,6 +8837,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)
@@ -8865,6 +8894,7 @@ f1gpstar // (c) 1991 Jaleco
armchmp2 // (c) 1992 Jaleco
armchmp2o // (c) 1992 Jaleco
wildplt // (c) 1992 Jaleco
+captflag // (c) 1993 Jaleco
f1gpstr2 // (c) 1993 Jaleco
scudhamm // (c) 1994 Jaleco
tetrisp2 // (c) 1997 Jaleco
@@ -9134,8 +9164,8 @@ wrallya // (c) 1993 - Ref 930705
wrallyb // (c) 1993 - Ref 930217
glass // (c) 1993 - Ref 931021
glass10 // (c) 1993 - Ref 931021
-glassbrk // (c) 1993 - Ref 931021 shows "Break Edition" on a real PCB
-glass94 // (c) 1994 - Ref 931021 shows 1994 version, Anime girls, unprotected
+glass10a // (c) 1993 - Ref 931021 shows "Break Edition" on a real PCB
+glasskr // (c) 1994 - Ref 931021 shows 1994 version, Anime girls, unprotected
targeth // (c) 1994 - Ref 940531
targetha // (c) 1994 - Ref 940531
thoop2 // (c) 1994 - Ref ???
@@ -9148,7 +9178,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 ???
@@ -9173,7 +9204,6 @@ smashdrv // (c) 2000
/*
Remaining Gaelco Games:
=======================
- 1999: Rolling Extreme
2000: Football Power
*/
@@ -9234,6 +9264,7 @@ fjbuster // (c) 1992 Kaneko
brapboys // (c) 1992 Kaneko
brapboysj // (c) 1992 Kaneko
brapboysu // (c) 1992 Kaneko
+wingforc // (c) 1993 Atlus (Japan, prototype)
bloodwar // (c) 1994 Kaneko
oedfight // (c) 1994 Kaneko
bonkadv // (c) 1994 Kaneko
@@ -9289,7 +9320,7 @@ mjyuugia // (c) 1990 Visco
ponchin // (c) 1991 Visco
ponchina // (c) 1991 Visco
-// Seta 1st Generation HW (seta.c)
+// Seta 1st Generation HW (seta.cpp)
tndrcade // UA-0 (c) 1987 Taito
tndrcadej // UA-0 (c) 1987 Taito
twineagl // UA-2 (c) 1988 + Taito license
@@ -9358,7 +9389,7 @@ crazyfgt // (c) 1998 Subsino
inttoote // (c) 1998 Coinmaster
inttootea // (c) 1998 Coinmaster
-// Seta 2nd Generation HW (seta2.c)
+// Seta 2nd Generation HW (seta2.cpp)
gundamex // (c) 1994 Banpresto
grdians // (c) 1995 Banpresto
mj4simai // (c) 1996 Maboroshi Ware
@@ -9534,6 +9565,7 @@ sparkman // (c) 1989 SunA
sparkmana // (c) 1989 SunA
starfigh // (c) 1990 SunA
hardhea2 // (c) 1991 SunA
+hardhea2b // bootleg
brickzn // (c) 1992 SunA
brickznv5 // (c) 1992 SunA
brickznv4 // (c) 1992 SunA
@@ -9549,6 +9581,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
@@ -9607,6 +9640,7 @@ zipzap // (c) 1995 Barko Corp
missw96 // (c) 1996 Comad
missw96a // (c) 1996 Comad
missw96b // (c) 1996 Comad
+missw96c // (c) 1996 Comad
missmw96 // (c) 1996 Comad
smissw //
fantsia2 // (c) 1997 Comad
@@ -9620,7 +9654,7 @@ galhustl // (c) 1997 ACE International
// Playmark games
sslam // (c) 1993 - hack of Namco's Super World Court
sslama // ^
-sslamb // ^
+sslamb // ^
powerbal // (c) 1994
powerbals // (c) 1994
magicstk // (c) 1995
@@ -9670,6 +9704,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
@@ -10070,6 +10105,7 @@ drgnwrldv21j // (c) 1995
drgnwrldv20j // (c) 1995
drgnwrldv10c // (c) 1995
drgnwrldv11h // (c) 1995
+drgnwrldv40k
nkishusp // (c) 1998
// IGS017 / IGS031 Games
@@ -10658,6 +10694,7 @@ driblingbr // bootleg
ace // [1976 Allied Leisure]
clayshoo // [1979 Allied Leisure]
pirates // (c) 1994 NIX
+piratesb // bootleg?
genix // (c) 199? NIX
fitfight // bootleg of Art of Fighting
histryma // bootleg of Fighter's History
@@ -10863,6 +10900,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.
@@ -11108,6 +11146,10 @@ photoply
supercrd // (c) 1992 Fun World
fruitstr // (c) 1992 Fun World
+// with 2nd set of hardware on PCB for stealth purposes
+royalcrd_nes
+royalcrd_msx
+
// Sandii'
snookr10 // (c) 1998 Sandii'
apple10 // (c) 1998 Sandii'
@@ -11170,6 +11212,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
@@ -11416,7 +11459,11 @@ comg905d // (c) 198? Cal Omega Inc.
// IGT Player's Edge Plus
peset001 // (c) 1987 IGT - International Game Technology
peset004 // (c) 1987 IGT - International Game Technology
+peset012 // (c) 1987 IGT - International Game Technology
+peset022 // (c) 1987 IGT - International Game Technology
peset038 // (c) 1987 IGT - International Game Technology
+peset100 // (c) 1987 IGT - International Game Technology
+peset117 // (c) 1987 IGT - International Game Technology
peivc006 // (c) 1987 IGT - International Game Technology
pepk0719 // (c) 1987 IGT - International Game Technology
pepk0719a // (c) 1987 IGT - International Game Technology
@@ -11729,7 +11776,14 @@ pex0055po // (c) 1995 IGT - International Game Technology
pex0055pp // (c) 1995 IGT - International Game Technology
pex0055pq // (c) 1995 IGT - International Game Technology
pex0055pr // (c) 1995 IGT - International Game Technology
+pex0055ps // (c) 1995 IGT - International Game Technology
+pex0055pt // (c) 1995 IGT - International Game Technology
pex0057p // (c) 1995 IGT - International Game Technology
+pex0057pa // (c) 1995 IGT - International Game Technology
+pex0057pb // (c) 1995 IGT - International Game Technology
+pex0057pc // (c) 1995 IGT - International Game Technology
+pex0057pd // (c) 1995 IGT - International Game Technology
+pex0057pe // (c) 1995 IGT - International Game Technology
pex0060p // (c) 1995 IGT - International Game Technology
pex0124p // (c) 1995 IGT - International Game Technology
pex0150p // (c) 1995 IGT - International Game Technology
@@ -11835,6 +11889,7 @@ pex2283p // (c) 1995 IGT - International Game Technology
pex2284p // (c) 1995 IGT - International Game Technology
pex2287p // (c) 1995 IGT - International Game Technology
pex2297p // (c) 1995 IGT - International Game Technology
+pex2297pa // (c) 1995 IGT - International Game Technology
pex2302p // (c) 1995 IGT - International Game Technology
pex2303p // (c) 1995 IGT - International Game Technology
pex2306p // (c) 1995 IGT - International Game Technology
@@ -11843,6 +11898,7 @@ pex2308p // (c) 1995 IGT - International Game Technology
pex2310p // (c) 1995 IGT - International Game Technology
pex2312p // (c) 1995 IGT - International Game Technology
pex2314p // (c) 1995 IGT - International Game Technology
+pex2315p // (c) 1995 IGT - International Game Technology
pex2374p // (c) 1995 IGT - International Game Technology
pex2376p // (c) 1995 IGT - International Game Technology
pex2377p // (c) 1995 IGT - International Game Technology
@@ -11867,6 +11923,7 @@ pekoc804 // (c) 1997 IGT - International Game Technology
pekoc806 // (c) 1997 IGT - International Game Technology
pekoc818 // (c) 1997 IGT - International Game Technology
pekoc819 // (c) 1997 IGT - International Game Technology
+pekoc822 // (c) 1997 IGT - International Game Technology
pekoc825 // (c) 1997 IGT - International Game Technology
pex0006k // (c) 1997 IGT - International Game Technology
pex0013k // (c) 1997 IGT - International Game Technology
@@ -11876,6 +11933,7 @@ pex0998s // (c) 1997 IGT - International Game Technology
pex1087s // (c) 1997 IGT - International Game Technology
pexm001p // (c) 1997 IGT - International Game Technology
pexm002p // (c) 1997 IGT - International Game Technology
+pexm002pa // (c) 1997 IGT - International Game Technology
pexm003p // (c) 1997 IGT - International Game Technology
pexm004p // (c) 1997 IGT - International Game Technology
pexm005p // (c) 1997 IGT - International Game Technology
@@ -11889,10 +11947,21 @@ pexmp013 // (c) 1997 IGT - International Game Technology
pexmp017 // (c) 1997 IGT - International Game Technology
pexmp017a // (c) 1997 IGT - International Game Technology
pexmp017b // (c) 1997 IGT - International Game Technology
+pexmp022 // (c) 1997 IGT - International Game Technology
pexmp026 // (c) 1997 IGT - International Game Technology
pexmp030 // (c) 1997 IGT - International Game Technology
pexmp030a // (c) 1997 IGT - International Game Technology
+// IGT Game King
+gkigt4
+gkigt4ms
+gkigt43
+gkigt43n
+gkigtez
+gkigt5p
+igtsc
+gkkey
+
elgrande // (c) 1982 Tuni Electro Service / E.T. Marketing
jjpoker // (c) 1983 Enter-Tech
jjpokerb // (c) 1983 Enter-Tech
@@ -11965,24 +12034,72 @@ paclandp // (c) 1989 Namco
ggconnie // (c) ???? Capcom
paranoia // (c) 1990 Naxat Soft
tourvis // (c) ???? Tourvision
+tvdrgnst // (c) 1988 Namcot (Tourvision bootleg)
tvlegaxe // (c) 1988 Victor Musical Industries, Inc. (Tourvision bootleg)
tvflaptw // (c) 1989 Namco (Tourvision bootleg)
+tvdensho // (c) 1989 Big Club / Wolf Team (Tourvision bootleg)
+tvshnobi // (c) 1989 Sega / Asmik Corporation (Tourvision bootleg)
+tvsdarms // (c) 1989 Capcom / Nec Avenue (Tourvision bootleg)
+tvsson2 // (c) 1989 Capcom / Nec Avenue (Tourvision bootleg)
+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)
+tvaburn // (c) 1990 Sega / Nec Avenue (Tourvision bootleg)
+tvarmedf // (c) 1990 Nichibutsu / Big Don (Tourvision bootleg)
+tvbeball // (c) 1990 Hudson (Tourvision bootleg)
+tvbomber // (c) 1990 Hudson (Tourvision bootleg)
+tvdsenpu // (c) 1990 Toaplan / Nec Avenue (Tourvision bootleg)
+tvdevilc // (c) 1990 Naxat / Red (Tourvision bootleg)
+tvdodgeb // (c) 1990 Technos Japan Corp / Naxat Soft (Tourvision bootleg)
+tvfblast // (c) 1990 Namco / Namcot (Tourvision bootleg)
+tvbrabho // (c) 1990 Namco / Namcot (Tourvision bootleg)
tvfsoc90 // (c) 1990 Human (Tourvision bootleg)
tvgomola // (c) 1990 Human (Tourvision bootleg)
+tvkaikai // (c) 1990 Taito (Tourvision bootleg)
tvsssold // (c) 1990 Hudson / Kaneko (Tourvision bootleg)
tvthbld // (c) 1990 Sega / NEC Avenue (Tourvision bootleg)
tvrs2 // (c) 1990 Taito (Tourvision bootleg)
+tvninjas // (c) 1990 IREM Corp (Tourvision bootleg)
+tvopwolf // (c) 1990 Taito / Nec Avenue (Tourvision bootleg)
+tvovride // (c) 1990 Sting / Data East Corporation (Tourvision bootleg)
+tvpchasr // (c) 1990 Naxat Soft (Tourvision bootleg)
+tvsvball // (c) 1990 Video System (Tourvision bootleg)
+tvtsboys // (c) 1990 Victor Musical Industries, Inc. (Tourvision bootleg)
+tveigues // (c) 1990 Victor Musical Industries, Inc. (Tourvision bootleg)
+tvwring // (c) 1990 Naxat Soft (Tourvision bootleg)
+tvxvious // (c) 1990 Namco Ltd. / Namcot (Tourvision bootleg)
+tv1943 // (c) 1991 Capcom / Nexat Soft (Tourvision bootleg)
+tvbalstx // (c) 1991 Psygnosis / Coconuts Japan (Tourvision bootleg)
tvcolumn // (c) 1991 Telenet Japan (Tourvision bootleg)
+tvcoryon // (c) 1991 Naxat Soft (Tourvision bootleg)
+tvdmoon // (c) 1991 T.S.S. (Tourvision bootleg)
+tvftenis // (c) 1991 Human (Tourvision bootleg)
+tvhtdaka // (c) 1991 Taito(Tourvision bootleg)
+tvtonma // (c) 1991 IREM Corp (Tourvision bootleg)
tvjchan // (c) 1991 Hudson (Tourvision bootleg)
-tvpcgen2 // (c) 1991 Hudson (Tourvision bootleg)
+tvpcgen2 // (c) 1991 Hudson Soft / Red (Tourvision bootleg)
+tvpaclnd // (c) 1991 Namco / Namcot (Tourvision bootleg)
+tvpdrift // (c) 1991 Sega / Asmik Corporation (Tourvision bootleg)
+tvpros91 // (c) 1991 Namco / Namcot (Tourvision bootleg)
tvpow11 // (c) 1991 Hudson (Tourvision bootleg)
tvpwlg4 // (c) 1991 Hudson (Tourvision bootleg)
+tvpzlboy // (c) 1991 Atlus / Telenet Japan (Tourvision bootleg)
+tvraiden // (c) 1991 Seibu Kaihatsu inc / Hudson Soft (Tourvision bootleg)
+tvrtype2 // (c) 1991 IREM (Tourvision bootleg)
+tvslmndr // (c) 1991 Konami (Tourvision bootleg)
tvsci // (c) 1991 Taito (Tourvision bootleg)
-tvsvball // (c) 1990 Video System (Tourvision bootleg)
+tvskweek // (c) 1991 Victor Musical Industries, Inc. (Tourvision bootleg)
+tvtaisen // (c) 1992 Taito (Tourvision bootleg)
+tvlqkids // (c) 1992 Taito (Tourvision bootleg)
+tvninjar // (c) 1992 Tecmo / Hudson Soft (Tourvision bootleg)
+tvpcybrg // (c) 1992 Hudson Soft / Red (Tourvision bootleg)
+tvtsujin // (c) 1992 Toaplan Co Ltd / Taito Corporation (Tourvision bootleg)
+tvtcrst2 // (c) 1992 Nichibutsu / Nihon Bussan Co., Ltd (Tourvision bootleg)
vcombat // (c) 1993 VR8 Inc.
shadfgtr // (c) 1993 DUTECH Inc.
skimaxx // (c) 1996 Kyle Hodgetts/ICE
@@ -12014,7 +12131,7 @@ ichiban // (c) 199? Excel
3x3puzzla // (c) 199? Ace
gambl186 // unknown
gambl186a // unknown
-gambl186b // unknown
+gambl186b // unknown
// InterFlip / Recreativos Franco
videopkr // (c) 1984 InterFlip
@@ -12074,6 +12191,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
@@ -13341,6 +13459,7 @@ tmspoker
kas89 // 1989, SFC S.R.L.
caspoker // 1987, PM / Beck Elektronik.
wildpkr // 199?, TAB Austria.
+tabpkr // 199?, TAB Austira
subhuntr // 1979 Model Racing
manohman // 199?, Merkur.
@@ -13417,6 +13536,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
@@ -30651,7 +30771,7 @@ spss4240
/* [BEGIN] pinball drivers */
-// allied.c
+// allied.cpp
allied
suprpick
royclark
@@ -30665,7 +30785,7 @@ erosone
circa33
starshot
-// alvg.c
+// alvg.cpp
agsoccer
@@ -30697,7 +30817,7 @@ fourx4
*/
roadrunr
-// bingo.c
+// bingo.cpp
cntinntl
goldgame
goldgkitb
@@ -30851,7 +30971,7 @@ babypac
babypac2
granny
-// by68701.c
+// by68701.cpp
flashgdnp1
flashgdnp2
eballdlxp1
@@ -30859,7 +30979,7 @@ eballdlxp2
eballdlxp3
eballdlxp4
-// capcom.c
+// capcom.cpp
abv106
abv106r
bbb109
@@ -30876,12 +30996,12 @@ pmv112r
ghv101
-// de_1.c
+// de_1.cpp
lwar_a83
lwar_e90
-// de_2.c
+// de_2.cpp
mnfb_c27
poto_a32
play_a24
@@ -30893,7 +31013,7 @@ tmac_a18
torp_e21
-// de_3.c
+// de_3.cpp
rab_320
rab_130
rab_103
@@ -30948,7 +31068,7 @@ wwfr_106
wwfr_103
-// de_3b.c
+// de_3b.cpp
batmanf
batmanf3
bmf_uk
@@ -30977,16 +31097,16 @@ detest
ctcheese
-// flicker.c
+// flicker.cpp
flicker
-// g627.c
+// g627.cpp
rotation
rota_115
rota_101
-// gp_1.c
+// gp_1.cpp
gp_110
blvelvet
camlight
@@ -30998,7 +31118,7 @@ rio
startrip
-// gp_2.c
+// gp_2.cpp
agent777
andromep
andromepa
@@ -31017,7 +31137,7 @@ suprnova
vegasgp
-// gts1.c
+// gts1.cpp
gts1
gts1s
astannie
@@ -31041,7 +31161,7 @@ hexagone
sys1test
-// gts3.c
+// gts3.cpp
barbwire
bellring
brooks
@@ -31095,7 +31215,7 @@ snspares
snspares1
-// gts80.c
+// gts80.cpp
blckhole
blckhole2
blckhols
@@ -31119,7 +31239,7 @@ vlcno_1a
s80tst
-// gts80a.c
+// gts80a.cpp
alienstr
amazonh
caveman
@@ -31144,7 +31264,7 @@ thegames
touchdn
-// gts80b.c
+// gts80b.cpp
arena
badgirls
bighouse
@@ -31172,7 +31292,7 @@ txsector
victoryp
-// hankin.c
+// hankin.cpp
fjholden
howzat
orbit1
@@ -31180,11 +31300,11 @@ shark
empsback
-// icecold.c
+// icecold.cpp
icecold
zekepeak
-// inder.c
+// inder.cpp
ind250cc
atleta
brvteam
@@ -31196,11 +31316,11 @@ pinmoonl
lapbylap
metalman
-// jeutel.c
+// jeutel.cpp
leking
olympic
-// jp.c
+// jp.cpp
america
aqualand
faeton
@@ -31213,12 +31333,12 @@ halleya
olympus
-// jvh.c
+// jvh.cpp
escape
movmastr
-// ltd.c
+// ltd.cpp
alcapone
atla_ltd
bhol_ltd
@@ -31227,15 +31347,15 @@ cowboy
pecmen
zephy
-// micropin.c
+// micropin.cpp
pentacup
pentacup2
-// mephisto.c
+// mephisto.cpp
mephistp
mephistp1
-// mrgame.c
+// mrgame.cpp
dakar
motrshow
motrshowa
@@ -31243,11 +31363,11 @@ macattck
wcup90
-// nsm.c
+// nsm.cpp
firebird
-// peyper.c
+// peyper.cpp
odisea
wolfman
odin
@@ -31259,7 +31379,7 @@ gamatros
nemesisp
sonstwr2
-// play_1.c
+// play_1.cpp
bigtown
chance
lastlap
@@ -31267,7 +31387,7 @@ spcgambl
party
-// play_2.c
+// play_2.cpp
antar
antar2
evlfight
@@ -31278,12 +31398,12 @@ madrace
zira
-// play_3.c
+// play_3.cpp
megaaton
megaatona
-// play_5.c
+// play_5.cpp
spain82
nautilus
theraid
@@ -31296,11 +31416,11 @@ trailer
fldragon
sklflite
-// rowamet.c
+// rowamet.cpp
heavymtl
-// s11.c
+// s11.cpp
gmine_l2
grand_l4
hs_l4
@@ -31315,7 +31435,7 @@ tts_l2
tts_l1
-// s11a.c
+// s11a.cpp
f14_l1
f14_p3
f14_p4
@@ -31328,7 +31448,7 @@ pb_l3
pb_p4
-// s11b.c
+// s11b.cpp
bcats_l5
bcats_l2
bnzai_l3
@@ -31378,7 +31498,7 @@ whirl_l2
whirl_lg3
-// s11c.c
+// s11c.cpp
bbnny_l2
bbnny_lu
diner_l4
@@ -31406,7 +31526,7 @@ gs_l4
strax_p7
-// s3.c
+// s3.cpp
httip_l1
lucky_l1
wldcp_l1
@@ -31414,7 +31534,7 @@ cntct_l1
disco_l1
-// s4.c
+// s4.cpp
flash_l1
flash_l2
flash_t1
@@ -31431,7 +31551,7 @@ bstrk_l1
tstrk_l1
-// s6.c
+// s6.cpp
blkou_l1
blkou_t1
blkou_f1
@@ -31450,14 +31570,14 @@ trizn_l1
trizn_t1
-// s6a.c
+// s6a.cpp
algar_l1
alpok_l6
alpok_l2
alpok_f6
-// s7.c
+// s7.cpp
vrkon_l1
barra_l1
bk_l4
@@ -31484,13 +31604,13 @@ thund_p3
ratrc_l1
-// s8.c
+// s8.cpp
pfevr_l2
pfevr_p3
scrzy_l1
-// s9.c
+// s9.cpp
comet_l4
comet_l5
sorcr_l1
@@ -31500,7 +31620,7 @@ alcat_l7
szone_l5
szone_l2
-// sam.c
+// sam.cpp
24_130
24_140
@@ -31701,15 +31821,15 @@ wpt_1400gf
wpt_1400i
wpt_1400l
-// sleic.c
+// sleic.cpp
sleicpin
-// spectra.c
+// spectra.cpp
spectra
-// spinb.c
+// spinb.cpp
bushido
bushidoa
jolypark
@@ -31717,7 +31837,7 @@ mach2
vrnwrld
-// st_mp100.c
+// st_mp100.cpp
princess
dracula
hothand
@@ -31732,7 +31852,7 @@ trident
wildfyre
-// st_mp200.c
+// st_mp200.cpp
ali
biggame
catacomp
@@ -31758,7 +31878,7 @@ blkshpsq
st_game
-// taito.c
+// taito.cpp
taitest
cavnegro
cavnegro1
@@ -31798,17 +31918,17 @@ zarza1
mrblkz80
-// techno.c
+// techno.cpp
xforce
-// vd.c
+// vd.cpp
//ator - missing most of rom
break86
papillon
-// whitestar.c
+// whitestar.cpp
apollo13
apollo13_10
aust301
@@ -31991,7 +32111,7 @@ monopred
wackadoo
-// white_mod.c
+// white_mod.cpp
elvisp
elvisp4
elvisp303
@@ -32146,11 +32266,11 @@ sopranoi_300
sopranoi_107
-// wico.c
+// wico.cpp
aftor
-// wpc_95.c
+// wpc_95.cpp
tf95_12
afm_113
afm_113b
@@ -32215,7 +32335,7 @@ cp_15
ttt_10
-// wpc_an.c
+// wpc_an.cpp
tfa_13
dd_p7
dd_p06
@@ -32235,7 +32355,7 @@ bop_l3
bop_l2
-// wpc_dcs.c
+// wpc_dcs.cpp
dm_lx4
dm_pa2
dm_px5
@@ -32270,7 +32390,7 @@ sttng_l3
afv_l4
-// wpc_dot.c
+// wpc_dot.cpp
tfdmd_l3
gi_l9
gi_l3
@@ -32291,7 +32411,7 @@ t2_l3
t2_l2
-// wpc_flip1.c
+// wpc_flip1.cpp
taf_l5
taf_p2
taf_l1
@@ -32303,7 +32423,7 @@ taf_l6
taf_h4
-// wpc_flip2.c
+// wpc_flip2.cpp
br_l4
br_p17
br_l1
@@ -32355,7 +32475,7 @@ strik_l4
lc_11
-// wpc_s.c
+// wpc_s.cpp
corv_21
corv_px4
corv_lx1
@@ -32415,7 +32535,7 @@ wcs_p3
tfs_12
-// zac_1.c
+// zac_1.cpp
ewf
firemntn
futurwld
@@ -32429,7 +32549,7 @@ stargoda
wsports
-// zac_2.c
+// zac_2.cpp
bbeltzac
clown
dvlrider
@@ -32470,7 +32590,7 @@ tmachzacf
zankor
-// zac_proto.c
+// zac_proto.cpp
skijump
spacecty
strike
@@ -32512,6 +32632,8 @@ arac6000
number1 // 1996 San Remo Games
gluck2 // 1992 Yung Yu / CYE
+sanremmg // San Remo / Elsy
+
// Valco fireball
fireball
@@ -32555,3 +32677,6 @@ ribrac // Lazer-tron Ribbit Racing
age_cand // AGE Candy Crane
clowndwn // Elwood Clown Roll Down
+
+fi6845
+fi8275
diff --git a/src/mame/audio/8080bw.cpp b/src/mame/audio/8080bw.cpp
index e9586acff61..41fd7160765 100644
--- a/src/mame/audio/8080bw.cpp
+++ b/src/mame/audio/8080bw.cpp
@@ -719,7 +719,7 @@ WRITE8_MEMBER(_8080bw_state::polaris_sh_port_2_w)
WRITE8_MEMBER(_8080bw_state::polaris_sh_port_3_w)
{
- coin_lockout_global_w(machine(), data & 0x04); /* SX8 */
+ machine().bookkeeping().coin_lockout_global_w(data & 0x04); /* SX8 */
m_flip_screen = BIT(data, 5) & BIT(ioport("IN2")->read(), 2); /* SX11 */
@@ -925,7 +925,7 @@ WRITE8_MEMBER(_8080bw_state::schaser_sh_port_2_w)
m_discrete->write(space, SCHASER_SND_EN, BIT(data, 1));
machine().sound().system_enable(BIT(data, 1));
- coin_lockout_global_w(machine(), BIT(data, 2));
+ machine().bookkeeping().coin_lockout_global_w(BIT(data, 2));
m_schaser_background_disable = BIT(data, 3);
m_schaser_background_select = BIT(data, 4);
@@ -1082,7 +1082,7 @@ WRITE8_MEMBER(_8080bw_state::lupin3_sh_port_1_w)
//machine().sound().system_enable(data & 0x20);
- //coin_lockout_global_w(machine(), data & 0x80);
+ //machine().bookkeeping().coin_lockout_global_w(data & 0x80);
m_port_1_last_extra = data;
}
diff --git a/src/mame/audio/asteroid.cpp b/src/mame/audio/asteroid.cpp
index 6593f3fd775..43900205d88 100644
--- a/src/mame/audio/asteroid.cpp
+++ b/src/mame/audio/asteroid.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Brad Oliver, Bernd Wiebelt, Allard van der Bas
+// copyright-holders:K.Wilkins
/*****************************************************************************
*
* Asteroids Analog Sound system interface
diff --git a/src/mame/audio/atarifb.cpp b/src/mame/audio/atarifb.cpp
index dded6d9a2da..e58c9cbbd24 100644
--- a/src/mame/audio/atarifb.cpp
+++ b/src/mame/audio/atarifb.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Derrick Renaud
+// license:BSD-3-Clause
+// copyright-holders:Derrick Renaud
/*************************************************************************
audio\atarifb.c
diff --git a/src/mame/audio/atarijsa.cpp b/src/mame/audio/atarijsa.cpp
index 99fe02bbdb3..6b9781c9e49 100644
--- a/src/mame/audio/atarijsa.cpp
+++ b/src/mame/audio/atarijsa.cpp
@@ -483,8 +483,8 @@ WRITE8_MEMBER( atari_jsa_oki_base_device::wrio_w )
m_cpu_bank->set_entry((data >> 6) & 3);
// coin counters
- coin_counter_w(space.machine(), 1, (data >> 5) & 1);
- coin_counter_w(space.machine(), 0, (data >> 4) & 1);
+ space.machine().bookkeeping().coin_counter_w(1, (data >> 5) & 1);
+ space.machine().bookkeeping().coin_counter_w(0, (data >> 4) & 1);
// update the OKI frequency
if (m_oki1 != nullptr)
@@ -687,8 +687,8 @@ WRITE8_MEMBER( atari_jsa_i_device::wrio_w )
m_cpu_bank->set_entry((data >> 6) & 3);
// coin counters
- coin_counter_w(machine(), 1, (data >> 5) & 1);
- coin_counter_w(machine(), 0, (data >> 4) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 5) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 4) & 1);
// handle TMS5220 I/O
if (m_tms5220 != nullptr)
diff --git a/src/mame/audio/bzone.cpp b/src/mame/audio/bzone.cpp
index 26bd5321a67..daf378e8577 100644
--- a/src/mame/audio/bzone.cpp
+++ b/src/mame/audio/bzone.cpp
@@ -389,7 +389,7 @@ WRITE8_MEMBER(bzone_state::bzone_sounds_w)
{
m_discrete->write(space, BZ_INPUT, data);
- output_set_value("startled", (data >> 6) & 1);
+ output().set_value("startled", (data >> 6) & 1);
machine().sound().system_enable(data & 0x20);
}
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 cce1cc98d36..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 = auto_alloc_array(machine(), INT16, 2 * machine().root_device().memregion("samples")->bytes());
- save_pointer(NAME(m_sample_buf), 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,25 +105,27 @@ 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++;
}
- m_samples->start_raw(0,m_sample_buf,2 * len,freq);
+ m_samples->start_raw(0,m_sample_buf.get(),2 * len,freq);
}
diff --git a/src/mame/audio/cclimber.h b/src/mame/audio/cclimber.h
index ef72fac26e4..65f1255e3d1 100644
--- a/src/mame/audio/cclimber.h
+++ b/src/mame/audio/cclimber.h
@@ -52,11 +52,12 @@ protected:
void play_sample(int start,int freq,int volume);
private:
- INT16 *m_sample_buf; /* buffer to decode samples at run time */
+ std::unique_ptr<INT16[]> m_sample_buf; /* buffer to decode samples at run time */
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/cinemat.cpp b/src/mame/audio/cinemat.cpp
index 9f144915f47..3a59752f1e9 100644
--- a/src/mame/audio/cinemat.cpp
+++ b/src/mame/audio/cinemat.cpp
@@ -266,7 +266,7 @@ void cinemat_state::speedfrk_sound_w(UINT8 sound_val, UINT8 bits_changed)
m_samples->stop(0);
/* start LED is controlled by bit 0x02 */
- set_led_status(machine(), 0, ~sound_val & 0x02);
+ output().set_led_value(0, ~sound_val & 0x02);
}
SOUND_RESET_MEMBER( cinemat_state, speedfrk )
@@ -476,7 +476,7 @@ void cinemat_state::tailg_sound_w(UINT8 sound_val, UINT8 bits_changed)
m_samples->start(5, 5);
/* LED */
- set_led_status(machine(), 0, m_current_shift & 0x40);
+ output().set_led_value(0, m_current_shift & 0x40);
/* remember the previous value */
m_last_shift = m_current_shift;
diff --git a/src/mame/audio/copsnrob.cpp b/src/mame/audio/copsnrob.cpp
index eaee183f1bc..bcc85241807 100644
--- a/src/mame/audio/copsnrob.cpp
+++ b/src/mame/audio/copsnrob.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Zsolt Vasvari
+// copyright-holders:Derrick Renaud
/************************************************************************
* copsnrob Sound System Analog emulation
* Nov 2010, Derrick Renaud
@@ -729,7 +729,7 @@ WRITE8_MEMBER(copsnrob_state::copsnrob_misc_w)
case 0x06:
/* One Start */
- set_led_status(machine(), 0, !special_data);
+ output().set_led_value(0, !special_data);
break;
case 0x07:
diff --git a/src/mame/audio/crbaloon.cpp b/src/mame/audio/crbaloon.cpp
index d5397c39d89..9141f2465ad 100644
--- a/src/mame/audio/crbaloon.cpp
+++ b/src/mame/audio/crbaloon.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria
+// copyright-holders:Nicola Salmoria,Derrick Renaud
/***************************************************************************
Taito Crazy Balloon hardware
diff --git a/src/mame/audio/cyberbal.cpp b/src/mame/audio/cyberbal.cpp
index 8745be912e1..60383a64503 100644
--- a/src/mame/audio/cyberbal.cpp
+++ b/src/mame/audio/cyberbal.cpp
@@ -52,8 +52,8 @@ READ8_MEMBER(cyberbal_state::sound_6502_stat_r)
WRITE8_MEMBER(cyberbal_state::sound_bank_select_w)
{
membank("soundbank")->set_base(&m_bank_base[0x1000 * ((data >> 6) & 3)]);
- coin_counter_w(machine(), 1, (data >> 5) & 1);
- coin_counter_w(machine(), 0, (data >> 4) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 5) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 4) & 1);
m_daccpu->set_input_line(INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
if (!(data & 0x01)) machine().device("ymsnd")->reset();
}
diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp
index 356314adeee..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,12 +1034,12 @@ 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
if (m_rev != 15)
- set_led_status(machine(), 2, data & 0x800);
+ output().set_led_value(2, data & 0x800);
#endif
}
@@ -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 032ce6b5c8a..dd7eca582b6 100644
--- a/src/mame/audio/dcs.h
+++ b/src/mame/audio/dcs.h
@@ -48,9 +48,6 @@ public:
DECLARE_WRITE32_MEMBER( dsio_idma_data_w );
DECLARE_READ32_MEMBER( dsio_idma_data_r );
- DECLARE_READ32_MEMBER(de_r);
- DECLARE_WRITE32_MEMBER(de_w);
-
// non public
void dcs_boot();
TIMER_CALLBACK_MEMBER( dcs_reset );
@@ -59,8 +56,6 @@ public:
DECLARE_WRITE16_MEMBER( dcs_dataram_w );
DECLARE_WRITE16_MEMBER( dcs_data_bank_select_w );
DECLARE_WRITE16_MEMBER( dcs_data_bank_select2_w );
- DECLARE_READ16_MEMBER( dcs_dataram_bank_select_r );
- DECLARE_WRITE16_MEMBER( dcs_dataram_bank_select_w );
inline void sdrc_update_bank_pointers();
void sdrc_remap_memory();
void sdrc_reset();
@@ -170,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/dkong.cpp b/src/mame/audio/dkong.cpp
index 305198e255e..8ca9f121dda 100644
--- a/src/mame/audio/dkong.cpp
+++ b/src/mame/audio/dkong.cpp
@@ -1284,10 +1284,8 @@ static ADDRESS_MAP_START( dkong_sound_map, AS_PROGRAM, 8, dkong_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( dkong_sound_io_map, AS_IO, 8, dkong_state )
- AM_RANGE(0x00, 0xFF) AM_READ(dkong_tune_r)
- AM_WRITE(dkong_voice_w)
- AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(dkong_tune_r)
- AM_WRITE(dkong_voice_w)
+ AM_RANGE(0x00, 0xFF) AM_READWRITE(dkong_tune_r, dkong_voice_w)
+ AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(dkong_tune_r, dkong_voice_w)
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(dkong_p1_w) /* only write to dac */
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_LATCH8_READWRITE("virtual_p2")
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_LATCH8_READBIT("ls259.6h", 5)
@@ -1305,8 +1303,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( radarscp1_sound_io_map, AS_IO, 8, dkong_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_DEVREAD("ls175.3d", latch8_device, read)
AM_RANGE(0x00, 0xff) AM_WRITE(dkong_p1_w) /* DAC here */
- AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_LATCH8_READ("virtual_p1")
- AM_WRITE(M58817_command_w)
+ AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_LATCH8_READ("virtual_p1") AM_WRITE(M58817_command_w)
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_LATCH8_WRITE("virtual_p2")
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_LATCH8_READBIT("ls259.6h", 5)
AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_LATCH8_READBIT("ls259.6h", 4)
@@ -1334,7 +1331,6 @@ ADDRESS_MAP_END
MACHINE_CONFIG_FRAGMENT( dkong2b_audio )
/* sound latches */
-
MCFG_LATCH8_ADD("ls175.3d") /* sound cmd latch */
MCFG_LATCH8_MASKOUT(0xf0)
MCFG_LATCH8_INVERT(0x0F)
@@ -1365,17 +1361,17 @@ MACHINE_CONFIG_FRAGMENT( dkong2b_audio )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DISCRETE_ADD("discrete", 0, dkong2b)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-
MACHINE_CONFIG_END
MACHINE_CONFIG_DERIVED( radarscp_audio, dkong2b_audio )
+
MCFG_DISCRETE_REPLACE("discrete", 0, radarscp)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.7)
-
MACHINE_CONFIG_END
MACHINE_CONFIG_DERIVED( radarscp1_audio, radarscp_audio )
+
MCFG_CPU_MODIFY("soundcpu")
MCFG_CPU_IO_MAP(radarscp1_sound_io_map)
@@ -1383,24 +1379,23 @@ MACHINE_CONFIG_DERIVED( radarscp1_audio, radarscp_audio )
MCFG_LATCH8_ADD( "virtual_p1" ) /* virtual latch for port A */
MCFG_LATCH8_INVERT( 0x80 ) /* signal is inverted */
MCFG_LATCH8_READ_7(DEVREAD8("ls259.6h", latch8_device, read), 3)
- MCFG_LATCH8_READ_6(READ8(dkong_state,M58817_status_r), 0)
+ MCFG_LATCH8_READ_6(READ8(dkong_state, M58817_status_r), 0)
/* tms memory controller */
MCFG_DEVICE_ADD("m58819", M58819, 0)
MCFG_SOUND_ADD("tms", M58817, XTAL_640kHz)
- MCFG_TMS5110_M0_CB(DEVWRITELINE("m58819", tms6100_device, tms6100_m0_w))
- MCFG_TMS5110_M1_CB(DEVWRITELINE("m58819", tms6100_device, tms6100_m1_w))
- MCFG_TMS5110_ADDR_CB(DEVWRITE8("m58819", tms6100_device, tms6100_addr_w))
- MCFG_TMS5110_DATA_CB(DEVREADLINE("m58819", tms6100_device, tms6100_data_r))
- MCFG_TMS5110_ROMCLK_CB(DEVWRITELINE("m58819", tms6100_device, tms6100_romclock_w))
+ MCFG_TMS5110_M0_CB(DEVWRITELINE("m58819", tms6100_device, m0_w))
+ MCFG_TMS5110_M1_CB(DEVWRITELINE("m58819", tms6100_device, m1_w))
+ MCFG_TMS5110_ADDR_CB(DEVWRITE8("m58819", tms6100_device, add_w))
+ MCFG_TMS5110_DATA_CB(DEVREADLINE("m58819", tms6100_device, data_line_r))
+ MCFG_TMS5110_ROMCLK_CB(DEVWRITELINE("m58819", tms6100_device, clk_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( dkongjr_audio )
/* sound latches */
-
MCFG_LATCH8_ADD("ls174.3d")
MCFG_LATCH8_MASKOUT(0xE0)
@@ -1430,18 +1425,17 @@ MACHINE_CONFIG_FRAGMENT( dkongjr_audio )
MCFG_DISCRETE_ADD("discrete", 0, dkongjr)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( dkong3_audio )
MCFG_CPU_ADD("n2a03a", N2A03,N2A03_DEFAULTCLOCK)
MCFG_CPU_PROGRAM_MAP(dkong3_sound1_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dkong_state, nmi_line_pulse)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", dkong_state, nmi_line_pulse)
MCFG_CPU_ADD("n2a03b", N2A03,N2A03_DEFAULTCLOCK)
MCFG_CPU_PROGRAM_MAP(dkong3_sound2_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dkong_state, nmi_line_pulse)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", dkong_state, nmi_line_pulse)
/* sound latches */
MCFG_LATCH8_ADD( "latch1")
diff --git a/src/mame/audio/dragrace.cpp b/src/mame/audio/dragrace.cpp
index 02936306373..c4de9473287 100644
--- a/src/mame/audio/dragrace.cpp
+++ b/src/mame/audio/dragrace.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Derrick Renaud
+// license:BSD-3-Clause
+// copyright-holders:Derrick Renaud
/*************************************************************************
audio\dragrace.c
diff --git a/src/mame/audio/dsbz80.h b/src/mame/audio/dsbz80.h
index 3e8210d8e27..fb642566245 100644
--- a/src/mame/audio/dsbz80.h
+++ b/src/mame/audio/dsbz80.h
@@ -54,7 +54,6 @@ private:
UINT32 mp_start, mp_end, mp_vol, mp_pan, mp_state, lp_start, lp_end, start, end;
int mp_pos, audio_pos, audio_avail;
int status;
- int getbit();
};
diff --git a/src/mame/audio/exidy.h b/src/mame/audio/exidy.h
index f0c3ff36d81..6f2eef49b56 100644
--- a/src/mame/audio/exidy.h
+++ b/src/mame/audio/exidy.h
@@ -132,9 +132,6 @@ protected:
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
-
-private:
- // internal state
};
extern const device_type EXIDY_VENTURE;
diff --git a/src/mame/audio/exidy440.cpp b/src/mame/audio/exidy440.cpp
index 626bdc5ae9c..78c122a9caf 100644
--- a/src/mame/audio/exidy440.cpp
+++ b/src/mame/audio/exidy440.cpp
@@ -128,8 +128,8 @@ void exidy440_sound_device::device_start()
reset_sound_cache();
/* allocate the mixer buffer */
- m_mixer_buffer_left = auto_alloc_array_clear(machine(), INT32, 2 * clock());
- m_mixer_buffer_right = m_mixer_buffer_left + clock();
+ m_mixer_buffer_left = make_unique_clear<INT32[]>(clock());
+ m_mixer_buffer_right = make_unique_clear<INT32[]>(clock());
if (SOUND_LOG)
m_debuglog = fopen("sound.log", "w");
@@ -197,8 +197,8 @@ void exidy440_sound_device::add_and_scale_samples(int ch, INT32 *dest, int sampl
void exidy440_sound_device::mix_to_16(int length, stream_sample_t *dest_left, stream_sample_t *dest_right)
{
- INT32 *mixer_left = m_mixer_buffer_left;
- INT32 *mixer_right = m_mixer_buffer_right;
+ INT32 *mixer_left = m_mixer_buffer_left.get();
+ INT32 *mixer_right = m_mixer_buffer_right.get();
int i, clippers = 0;
for (i = 0; i < length; i++)
@@ -804,8 +804,8 @@ void exidy440_sound_device::sound_stream_update(sound_stream &stream, stream_sam
int ch;
/* reset the mixer buffers */
- memset(m_mixer_buffer_left, 0, samples * sizeof(INT32));
- memset(m_mixer_buffer_right, 0, samples * sizeof(INT32));
+ memset(m_mixer_buffer_left.get(), 0, samples * sizeof(INT32));
+ memset(m_mixer_buffer_right.get(), 0, samples * sizeof(INT32));
/* loop over channels */
for (ch = 0; ch < 4; ch++)
@@ -824,12 +824,12 @@ void exidy440_sound_device::sound_stream_update(sound_stream &stream, stream_sam
/* get a pointer to the sample data and copy to the left */
volume = m_sound_volume[2 * ch + 0];
if (volume)
- add_and_scale_samples(ch, m_mixer_buffer_left, length, volume);
+ add_and_scale_samples(ch, m_mixer_buffer_left.get(), length, volume);
/* get a pointer to the sample data and copy to the left */
volume = m_sound_volume[2 * ch + 1];
if (volume)
- add_and_scale_samples(ch, m_mixer_buffer_right, length, volume);
+ add_and_scale_samples(ch, m_mixer_buffer_right.get(), length, volume);
/* update our counters */
channel->offset += length;
diff --git a/src/mame/audio/exidy440.h b/src/mame/audio/exidy440.h
index 2a5265c8793..0dafc17adf6 100644
--- a/src/mame/audio/exidy440.h
+++ b/src/mame/audio/exidy440.h
@@ -67,8 +67,8 @@ private:
UINT8 m_sound_banks[4];
//UINT8 m_m6844_data[0x20];
UINT8 m_sound_volume[0x10];
- INT32 *m_mixer_buffer_left;
- INT32 *m_mixer_buffer_right;
+ std::unique_ptr<INT32[]> m_mixer_buffer_left;
+ std::unique_ptr<INT32[]> m_mixer_buffer_right;
sound_cache_entry *m_sound_cache;
sound_cache_entry *m_sound_cache_end;
sound_cache_entry *m_sound_cache_max;
diff --git a/src/mame/audio/firetrk.cpp b/src/mame/audio/firetrk.cpp
index 29120fa53ef..74269247cf4 100644
--- a/src/mame/audio/firetrk.cpp
+++ b/src/mame/audio/firetrk.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Phil Stroffolino
+// copyright-holders:K.Wilkins,Derrick Renaud
/*************************************************************************
audio\firetrk.c
diff --git a/src/mame/audio/flower.cpp b/src/mame/audio/flower.cpp
index fcde400310d..fc8ef87b559 100644
--- a/src/mame/audio/flower.cpp
+++ b/src/mame/audio/flower.cpp
@@ -49,7 +49,7 @@ void flower_sound_device::device_start()
m_effect_timer = timer_alloc(TIMER_CLOCK_EFFECT);
m_stream = machine().sound().stream_alloc(*this, 0, 1, MIXER_SAMPLERATE);
- m_mixer_buffer = auto_alloc_array(machine(), short, MIXER_SAMPLERATE);
+ m_mixer_buffer = std::make_unique<short[]>(MIXER_SAMPLERATE);
make_mixer_table(8, MIXER_DEFGAIN);
/* extract globals from the interface */
@@ -114,10 +114,10 @@ void flower_sound_device::make_mixer_table(int voices, int gain)
int count = voices * 128;
/* allocate memory */
- m_mixer_table = auto_alloc_array(machine(), INT16, 256 * voices);
+ m_mixer_table = std::make_unique<INT16[]>(256 * voices);
/* find the middle of the table */
- m_mixer_lookup = m_mixer_table + (128 * voices);
+ m_mixer_lookup = m_mixer_table.get() + (128 * voices);
/* fill in the table - 16 bit case */
for (int i = 0; i < count; i++)
@@ -274,7 +274,7 @@ void flower_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
int i;
/* zap the contents of the mixer buffer */
- memset(m_mixer_buffer, 0, samples * sizeof(short));
+ memset(m_mixer_buffer.get(), 0, samples * sizeof(short));
/* loop over each voice and add its contribution */
for (voice = m_channel_list; voice < m_last_channel; voice++)
@@ -303,7 +303,7 @@ void flower_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
// bit 3: not used much, maybe pitch slide the other way?
v |= voice->voltab;
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
for (i = 0; i < samples; i++)
{
@@ -331,7 +331,7 @@ void flower_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
}
/* mix it down */
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
for (i = 0; i < samples; i++)
*buffer++ = m_mixer_lookup[*mix++];
}
diff --git a/src/mame/audio/galaga.cpp b/src/mame/audio/galaga.cpp
index db39f8ae7af..de76a62ba13 100644
--- a/src/mame/audio/galaga.cpp
+++ b/src/mame/audio/galaga.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/***************************************************************************
galaga.c
diff --git a/src/mame/audio/geebee.cpp b/src/mame/audio/geebee.cpp
index 58103b0b7f2..d16f3c68cb5 100644
--- a/src/mame/audio/geebee.cpp
+++ b/src/mame/audio/geebee.cpp
@@ -36,7 +36,7 @@ geebee_sound_device::geebee_sound_device(const machine_config &mconfig, const ch
void geebee_sound_device::device_start()
{
- m_decay = auto_alloc_array(machine(), UINT16, 32768);
+ m_decay = std::make_unique<UINT16[]>(32768);
for (int i = 0; i < 0x8000; i++)
m_decay[0x7fff - i] = (INT16) (0x7fff/exp(1.0*i/4096));
diff --git a/src/mame/audio/gomoku.cpp b/src/mame/audio/gomoku.cpp
index 9362bc25fe1..9743ea2884e 100644
--- a/src/mame/audio/gomoku.cpp
+++ b/src/mame/audio/gomoku.cpp
@@ -59,8 +59,8 @@ void gomoku_sound_device::device_start()
m_stream = stream_alloc(0, 1, samplerate);
/* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
- m_mixer_buffer = auto_alloc_array(machine(), short, 2 * samplerate);
- m_mixer_buffer_2 = m_mixer_buffer + samplerate;
+ m_mixer_buffer = std::make_unique<short[]>(2 * samplerate);
+ m_mixer_buffer_2 = m_mixer_buffer.get() + samplerate;
/* build the mixer table */
make_mixer_table(8, defgain);
@@ -105,7 +105,7 @@ void gomoku_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
}
/* zap the contents of the mixer buffer */
- memset(m_mixer_buffer, 0, samples * sizeof(short));
+ memset(m_mixer_buffer.get(), 0, samples * sizeof(short));
/* loop over each voice and add its contribution */
for (ch = 0, voice = m_channel_list; voice < m_last_channel; ch++, voice++)
@@ -124,7 +124,7 @@ void gomoku_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
else
w_base = 0x100 * (m_soundregs2[0x1d] & 0x0f);
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
/* add our contribution */
for (i = 0; i < samples; i++)
@@ -167,7 +167,7 @@ void gomoku_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
}
/* mix it down */
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
for (i = 0; i < samples; i++)
*buffer++ = m_mixer_lookup[*mix++];
}
@@ -180,10 +180,10 @@ void gomoku_sound_device::make_mixer_table(int voices, int gain)
int i;
/* allocate memory */
- m_mixer_table = auto_alloc_array(machine(), INT16, 256 * voices);
+ m_mixer_table = std::make_unique<INT16[]>(256 * voices);
/* find the middle of the table */
- m_mixer_lookup = m_mixer_table + (128 * voices);
+ m_mixer_lookup = m_mixer_table.get() + (128 * voices);
/* fill in the table - 16 bit case */
for (i = 0; i < count; i++)
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/hng64.cpp b/src/mame/audio/hng64.cpp
index 220afc56240..982aa46ca70 100644
--- a/src/mame/audio/hng64.cpp
+++ b/src/mame/audio/hng64.cpp
@@ -92,7 +92,7 @@ WRITE32_MEMBER(hng64_state::hng64_soundram_w)
fp=fopen(filename, "w+b");
if (fp)
{
- fwrite((UINT8*)m_soundram, 0x80000*4, 1, fp);
+ fwrite((UINT8*)m_soundram.get(), 0x80000*4, 1, fp);
fclose(fp);
}
}
@@ -145,7 +145,7 @@ WRITE32_MEMBER( hng64_state::hng64_soundcpu_enable_w )
void hng64_state::reset_sound()
{
- UINT8 *RAM = (UINT8*)m_soundram;
+ UINT8 *RAM = (UINT8*)m_soundram.get();
membank("bank0")->set_base(&RAM[0x1f0000]);
membank("bank1")->set_base(&RAM[0x1f0000]);
membank("bank2")->set_base(&RAM[0x1f0000]);
@@ -222,7 +222,7 @@ WRITE16_MEMBER(hng64_state::hng64_sound_bank_w)
// the 2 early games don't do this.. maybe all banks actuallly default to that region tho?
// the sound code on those games seems buggier anyway.
- UINT8 *RAM = (UINT8*)m_soundram;
+ UINT8 *RAM = (UINT8*)m_soundram.get();
int bank = data & 0x1f;
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/laserbat.cpp b/src/mame/audio/laserbat.cpp
index 0237fd25a62..5e8ee062b45 100644
--- a/src/mame/audio/laserbat.cpp
+++ b/src/mame/audio/laserbat.cpp
@@ -1,105 +1,388 @@
// license:BSD-3-Clause
-// copyright-holders:Pierpaolo Prazzoli
-#include "emu.h"
-#include "sound/tms3615.h"
+// copyright-holders:Vas Crabb
+/*
+ Laser Battle / Lazarian (c) 1981 Zaccaria
+ Cat and Mouse (c) 1982 Zaccaria
+
+ audio emulation by Vas Crabb
+*/
+
#include "includes/laserbat.h"
-WRITE8_MEMBER(laserbat_state::laserbat_csound1_w)
+
+READ8_MEMBER(laserbat_state_base::rhsc_r)
+{
+ return m_rhsc;
+}
+
+WRITE8_MEMBER(laserbat_state_base::whsc_w)
+{
+ m_whsc = data;
+}
+
+WRITE8_MEMBER(laserbat_state_base::csound1_w)
{
m_csound1 = data;
}
-WRITE8_MEMBER(laserbat_state::laserbat_csound2_w)
+WRITE8_MEMBER(laserbat_state_base::csound2_w)
{
- int ksound = 0;
+ m_csound2 = data;
+}
- if (data & 0x01)
- {
- int noise_filter_res = 0, vco_res = 0;
- switch(m_csound1 & 0x07)
+/*
+ The Laser Battle/Lazarian sound board has a SN76477 CSG, two TMS3615
+ tone synthesisers, and a TDA1010 power amplifier. It receives
+ commands from the game board over a 16-bit unidirectional data bus.
+ The CPU cannot write all sixteen lines atomically, it write to lines
+ 1-8 as one group and 9-16 as another group.
+
+ The game board makes the the audio output from the first S2636 PVI
+ (5E) available on a pin at the sound board interface connector, but
+ it isn't routed anywhere, so you won't hear it.
+
+ The TMS3615 at 05 is clocked at 250kHz (4MHz crystal oscillator
+ divided by 16), and its divide-by-two output is used to clock the
+ TMS3615 at 04. This gives a base 16' note of C3. The combined 8'
+ or 16' outputs are selectable by jumper, allowing board to be
+ switched between two octaves. There's no indication of which octave
+ would have been selected in the Lazarian manual.
+
+ There's a filter network between the TMS3615 outputs and the power
+ amplifier with several parameters controllable from the game board.
+
+ The audio output of the SN76477 isn't actually used. Rather the
+ signal from before the output amplifier is taken and used to gate
+ distortion elements in the analog filter network.
+
+ +-----+----------------------------------------------------------+
+ | Bit | Function |
+ +-----+----------------------------------------------------------+
+ | 1 | Multiplexed data bit 1 |
+ | 2 | Multiplexed data bit 2 |
+ | 3 | Multiplexed data bit 3 |
+ | 4 | Multiplexed data bit 4 |
+ | 5 | Multiplexed data bit 5 |
+ | 6 | Multiplexed data bit 6 |
+ | 7 | Multiplexed data bit 7 |
+ | 8 | Multiplexed data bit 8 |
+ | 9 | SN76477/distortion control (positive edge trigger) |
+ | 10 | High octave key 13 |
+ | 11 | Key/SLF resistor select A |
+ | 12 | Key/SLF resistor select B |
+ | 13 | Key/SLF resistor control |
+ | 14 | Gates 22k/10nF low-pass filter and one SN-driven effect |
+ | 15 | SN76477 VCO select (inverted) |
+ | 16 | TMS3615 reset |
+ +-----+----------------------------------------------------------+
+
+ +-------+----------+-----------------------------------+
+ | 11-13 | SLF res. | Key select |
+ +-------+----------+-----------------------------------+
+ | 0 | 27k | |
+ | 1 | 22k | |
+ | 2 | 22k | |
+ | 3 | 12k | |
+ | 4 | inf. | |
+ | 5 | inf. | Low octave 1-8 |
+ | 6 | inf. | Low octave 9-13, high octave 2-4 |
+ | 7 | inf. | High octave 5-12 |
+ +-------+----------+-----------------------------------+
+
+ When bit 13 is high, no SLF control resistor is connected to the
+ CSG. When bit 13 is low, bits 11 and 12 select between 27k, 22k and
+ 12k.
+
+ When bit 13 is high, the clock input of a latch driving eight of
+ TMS3615 key inputs will be driven low, depending on bits 11 and 12.
+ These latches are positive edge triggered, and you have to beware of
+ glitches, so the safe way to set key inputs is:
+ * Ensure bit 13 is low
+ * Write desired key data pattern to CSOUND1
+ * Write CSOUND2 setting bits 11 and 12 to select keys to set
+ * Write CSOUND2 setting bit 13 high
+ * Write CSOUND2 setting bit 13 low
+ * Write CSOUND2 setting bits 11 and 12 to select SLF resistor
+
+ Note that the SLF resistor will necessarily thrash around during the
+ process of setting key data. It's a side-effect of the way control
+ lines are overloaded.
+
+ The SN76477 control bits are defined as follows:
+
+ +-----+---------------------------------------------------------+
+ | Bit | Function |
+ +-----+---------------------------------------------------------+
+ | 1 | Noise filter/VCO resistor select A |
+ | 2 | Noise filter/VCO resistor select B |
+ | 3 | Noise filter/VCO resistor select C |
+ | 4 | AB SOUND (connected to System Inhibit input) |
+ | 5 | VCO/NOISE (connected to Mixer Select B input) |
+ | 6 | DEGR (controls a distortion element in filter network) |
+ | 7 | FILT (gates 10nF capacitor across distortion elements) |
+ | 8 | A (controls a distortion element in filter network) |
+ +-----+---------------------------------------------------------+
+
+*/
+
+WRITE8_MEMBER(laserbat_state::csound2_w)
+{
+ // there are a bunch of edge-triggered things, so grab changes
+ unsigned const diff = data ^ m_csound2;
+
+ // SN76477 and distortion control
+ if (data & diff & 0x01)
+ {
+ switch (m_csound1 & 0x07)
{
case 0x00:
- noise_filter_res = RES_K(270);
- vco_res = RES_K(47);
+ m_csg->noise_filter_res_w(RES_K(270)); // R30
+ m_csg->vco_res_w(RES_K(47)); // R47
break;
case 0x01:
- noise_filter_res = RES_K(220);
- vco_res = RES_K(27);
+ m_csg->noise_filter_res_w(RES_K(220)); // R23
+ m_csg->vco_res_w(RES_K(27)); // R40
break;
case 0x02:
- noise_filter_res = RES_K(150);
- vco_res = RES_K(22);
+ m_csg->noise_filter_res_w(RES_K(150)); // R24
+ m_csg->vco_res_w(RES_K(22)); // R41
break;
case 0x03:
- noise_filter_res = RES_K(120);
- vco_res = RES_K(15);
+ m_csg->noise_filter_res_w(RES_K(120)); // R25
+ m_csg->vco_res_w(RES_K(15)); // R42
break;
case 0x04:
- noise_filter_res = RES_K(82);
- vco_res = RES_K(12);
+ m_csg->noise_filter_res_w(RES_K(82)); // R29
+ m_csg->vco_res_w(RES_K(12)); // R46
break;
case 0x05:
- noise_filter_res = RES_K(68);
- vco_res = RES_K(8.2);
+ m_csg->noise_filter_res_w(RES_K(68)); // R28
+ m_csg->vco_res_w(RES_K(8.2)); // R45
break;
case 0x06:
- noise_filter_res = RES_K(47);
- vco_res = RES_K(6.8);
+ m_csg->noise_filter_res_w(RES_K(47)); // R27
+ m_csg->vco_res_w(RES_K(6.8)); // R44
break;
case 0x07:
- noise_filter_res = RES_K(33);
- vco_res = RES_K(4.7);
+ m_csg->noise_filter_res_w(RES_K(33)); // R26
+ m_csg->vco_res_w(RES_K(4.7)); // R43
break;
}
-
- m_sn->noise_filter_res_w(noise_filter_res);
- m_sn->vco_res_w(vco_res);
-
- m_sn->enable_w((m_csound1 & 0x08) ? 1 : 0); // AB SOUND
- m_sn->mixer_b_w((m_csound1 & 0x10) ? 1 : 0); // _VCO/NOISE
-
- m_degr = (m_csound1 & 0x20) ? 1 : 0;
- m_filt = (m_csound1 & 0x40) ? 1 : 0;
- m_a = (m_csound1 & 0x80) ? 1 : 0;
- m_us = 0; // sn76477 pin 12
+ m_csg->enable_w((m_csound1 & 0x08) ? 1 : 0);
+ m_csg->mixer_b_w((m_csound1 & 0x10) ? 1 : 0);
+ // TODO: DEGR/FILT/A
}
- m_sn->vco_w((data & 0x40) ? 0 : 1);
+ // edge-triggered latches plus a dedicated bit for note control
+ m_keys = (m_keys & 0x00ffffff) | ((data & 0x02) ? 0x01000000 : 0x00000000);
+ if ((m_csound2 & 0x10) && (diff & 0x1c))
+ {
+ switch (m_csound2 & 0x0c)
+ {
+ case 0x00:
+ break;
+ case 0x04:
+ m_keys = (m_keys & 0x01ffff00) | (unsigned(m_csound1) << 0);
+ break;
+ case 0x08:
+ m_keys = (m_keys & 0x01ff00ff) | (unsigned(m_csound1) << 8);
+ break;
+ case 0x0c:
+ m_keys = (m_keys & 0x0100ffff) | (unsigned(m_csound1) << 16);
+ break;
+ }
+ }
+ m_synth_low->enable_w((m_keys >> 0) & 0x01fff);
+ m_synth_high->enable_w((m_keys >> 12) & 0x01ffe);
- switch((data & 0x1c) >> 2)
+ // bits 11-13 set the SLF control register directly
+ switch (data & 0x1c)
{
- case 0x00:
- m_sn->slf_res_w(RES_K(27));
- break;
- case 0x01:
- m_sn->slf_res_w(RES_K(22));
+ case 0x00: // R54
+ m_csg->slf_res_w(RES_K(27));
break;
- case 0x02:
- m_sn->slf_res_w(RES_K(22));
+ case 0x04: // R53
+ case 0x08: // R52
+ m_csg->slf_res_w(RES_K(22));
break;
- case 0x03:
- m_sn->slf_res_w(RES_K(12));
+ case 0x0c: // R51
+ m_csg->slf_res_w(RES_K(12));
break;
- case 0x04: // not connected
- break;
- case 0x05: // SL1
- m_ksound1 = m_csound1;
- break;
- case 0x06: // SL2
- m_ksound2 = m_csound1;
- break;
- case 0x07: // SL3
- m_ksound3 = m_csound1;
+ default: // NC
+ m_csg->slf_res_w(RES_INF);
break;
}
- ksound = ((data & 0x02) << 23) + (m_ksound3 << 16) + (m_ksound2 << 8) + m_ksound1;
+ // TODO: BIT14 filter control
+
+ // inverted VCO select
+ m_csg->vco_w((data & 0x40) ? 0 : 1);
+
+ // TODO: BIT15 TMS reset
- m_tms1->enable_w(ksound & 0x1fff);
- m_tms2->enable_w((ksound >> 13) << 1);
+ // keep for detecting changes next time
+ m_csound2 = data;
+}
+
+
+/*
+ The Cat and Mouse sound board has a 6802 processor with three ROMs,
+ a 6821 PIA, two AY-3-8910 PSGs, and some other logic and analog
+ circuitry. Unfortunately we lack a schematic, so all knowledge of
+ this board is based on tracing the sound program.
+
+ The 6821 PIA is mapped at addresses $005C..$005F. The known PIA
+ signal assignments are as follows:
+
+ +------+-----------------------+
+ | PA0 | PSG1/PSG2 DA0 |
+ | PA1 | PSG1/PSG2 DA1 |
+ | PA2 | PSG1/PSG2 DA2 |
+ | PA3 | PSG1/PSG2 DA3 |
+ | PA4 | PSG1/PSG2 DA4 |
+ | PA5 | PSG1/PSG2 DA5 |
+ | PA6 | PSG1/PSG2 DA6 |
+ | PA7 | PSG1/PSG2 DA7 |
+ | PB0 | PSG1 BC1 |
+ | PB1 | PSG1 BDIR |
+ | PB2 | PSG2 BC1 |
+ | PB3 | PSG2 BDIR |
+ | CA1 | Host interface bit 6 |
+ | CB1 | periodic IRQ source |
+ | IRQA | 6802 NMI |
+ | IRQB | 6802 IRQ |
+ +------+-----------------------+
+
+ The program makes use of I/O port A on the first PSG as outputs. At
+ a guess, it could have the same function as it does on other
+ Zaccaria sound boards.
+
+ The first PSG receives commands from the game board in the low five
+ bits of port B. Commands are processed on receiving an NMI. The
+ sound program always masks out the high three bits of the value so
+ they could be connected to anything on the board.
+
+ The I/O ports on the second PSG don't appear to be used at all.
+
+ The game board sends commands to the sound board over a 16-bit
+ unidirectional data bus. The CPU cannot write all sixteen lines
+ atomically, it write to lines 1-8 as one group and 9-16 as another
+ group. However only seven lines are actually connected to the sound
+ board:
+
+ +-----+----------+-------------+
+ | Bit | Name | Connection |
+ +-----+----------+-------------+
+ | 1 | SOUND 0 | PSG1 IOB0 |
+ | 2 | SOUND 1 | PSG1 IOB1 |
+ | 3 | SOUND 2 | PSG1 IOB2 |
+ | 4 | SOUND 3 | PSG1 IOB3 |
+ | 5 | SOUND 4 | PSG1 IOB4 |
+ | 6 | SOUND 5 | PIA CA1 |
+ | 7 | | |
+ | 8 | | |
+ | 9 | | |
+ | 10 | | |
+ | 11 | | |
+ | 12 | | |
+ | 13 | | |
+ | 14 | | |
+ | 15 | | |
+ | 16 | RESET | Unknown |
+ +-----+----------+-------------+
+
+ There could well be other connections on the sound board - these are
+ just what can be deduced by tracing the sound program.
+
+ The game board makes the the audio output from the first S2636 PVI
+ (5E) available on a pin at the sound board interface connector, but
+ it isn't routed anywhere.
+*/
+
+WRITE8_MEMBER(catnmous_state::csound1_w)
+{
+ m_pia->ca1_w((data & 0x20) ? 1 : 0);
+ m_csound1 = data;
+}
+
+WRITE8_MEMBER(catnmous_state::csound2_w)
+{
+ // the top bit is called RESET on the wiring diagram - assume it resets the sound CPU
+ m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
+ m_csound2 = data;
+}
+
+READ8_MEMBER(catnmous_state::pia_porta_r)
+{
+ UINT8 const control = m_pia->b_output();
+ UINT8 data = 0xff;
+
+ if (0x01 == (control & 0x03))
+ data &= m_psg1->data_r(space, 0);
+
+ if (0x04 == (control & 0x0c))
+ data &= m_psg2->data_r(space, 0);
- m_bit14 = (data & 0x20) ? 1 : 0;
+ return data;
+}
+
+WRITE8_MEMBER(catnmous_state::pia_porta_w)
+{
+ UINT8 const control = m_pia->b_output();
+
+ if (control & 0x02)
+ m_psg1->data_address_w(space, (control >> 0) & 0x01, data);
+
+ if (control & 0x08)
+ m_psg2->data_address_w(space, (control >> 2) & 0x01, data);
+}
- // (data & 0x80) = reset
+WRITE8_MEMBER(catnmous_state::pia_portb_w)
+{
+ if (data & 0x02)
+ m_psg1->data_address_w(space, (data >> 0) & 0x01, m_pia->a_output());
+
+ if (data & 0x08)
+ m_psg2->data_address_w(space, (data >> 2) & 0x01, m_pia->a_output());
+}
+
+WRITE_LINE_MEMBER(catnmous_state::pia_irqa)
+{
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
+}
+
+WRITE_LINE_MEMBER(catnmous_state::pia_irqb)
+{
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ0, state ? ASSERT_LINE : CLEAR_LINE);
+}
+
+WRITE8_MEMBER(catnmous_state::psg1_porta_w)
+{
+ // similar to zaccaria.c since we have no clue how this board really works
+ // this code could be completely wrong/inappropriate for this game for all we know
+ static double const table[8] = {
+ RES_K(8.2),
+ RES_R(820),
+ RES_K(3.3),
+ RES_R(150),
+ RES_K(5.6),
+ RES_R(390),
+ RES_K(1.5),
+ RES_R(47) };
+ RES_VOLTAGE_DIVIDER(RES_K(4.7), table[data & 0x07]);
+ m_psg2->set_volume(1, 150 * RES_VOLTAGE_DIVIDER(RES_K(4.7), table[data & 0x07]));
+}
+
+READ8_MEMBER(catnmous_state::psg1_portb_r)
+{
+ // the sound program masks out the three most significant bits
+ // assume they're not connected and read high from the internal pull-ups
+ return m_csound1 | 0xe0;
+}
+
+INTERRUPT_GEN_MEMBER(catnmous_state::cb1_toggle)
+{
+ m_cb1 = !m_cb1;
+ m_pia->cb1_w(m_cb1 ? 1 : 0);
}
diff --git a/src/mame/audio/leland.cpp b/src/mame/audio/leland.cpp
index 237f17b7b64..6cf7e4740ad 100644
--- a/src/mame/audio/leland.cpp
+++ b/src/mame/audio/leland.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
+// copyright-holders:Aaron Giles,Paul Leaman
/***************************************************************************
Cinemat/Leland driver
diff --git a/src/mame/audio/lynx.cpp b/src/mame/audio/lynx.cpp
index ba31b88ba06..2d58677f373 100644
--- a/src/mame/audio/lynx.cpp
+++ b/src/mame/audio/lynx.cpp
@@ -159,8 +159,8 @@ void lynx_sound_device::register_save()
void lynx_sound_device::init()
{
- m_shift_mask = auto_alloc_array_clear(machine(), int, 512);
- m_shift_xor = auto_alloc_array_clear(machine(), int, 4096);
+ m_shift_mask = make_unique_clear<int[]>(512);
+ m_shift_xor = make_unique_clear<int[]>(4096);
for (int i = 0; i < 512; i++)
{
diff --git a/src/mame/audio/lynx.h b/src/mame/audio/lynx.h
index a3738f271b6..8bd8bdd3067 100644
--- a/src/mame/audio/lynx.h
+++ b/src/mame/audio/lynx.h
@@ -57,8 +57,8 @@ protected:
lynx_sound_timer_delegate m_timer_delegate; // this calls lynx_timer_count_down from the driver state
float m_usec_per_sample;
- int *m_shift_mask;
- int *m_shift_xor;
+ std::unique_ptr<int[]> m_shift_mask;
+ std::unique_ptr<int[]> m_shift_xor;
UINT8 m_attenuation_enable;
UINT8 m_master_enable;
LYNX_AUDIO m_audio[4];
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/m79amb.cpp b/src/mame/audio/m79amb.cpp
index 3d9df21221f..62285971eff 100644
--- a/src/mame/audio/m79amb.cpp
+++ b/src/mame/audio/m79amb.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/************************************************************************
* m79amb Sound System Analog emulation
@@ -336,7 +336,7 @@ WRITE8_MEMBER(m79amb_state::m79amb_8003_w)
{
/* Self Test goes low on reset and lights LED */
/* LED goes off on pass */
- output_set_value("SELF_TEST", data & 0x01);
+ output().set_value("SELF_TEST", data & 0x01);
m_discrete->write(space, M79AMB_MC_REV_EN, data & 0x02);
m_discrete->write(space, M79AMB_MC_CONTROL_EN, data & 0x04);
m_discrete->write(space, M79AMB_TANK_TRUCK_JEEP_EN, data & 0x08);
diff --git a/src/mame/audio/mac.cpp b/src/mame/audio/mac.cpp
index 57ad49aa96f..821c15a9afb 100644
--- a/src/mame/audio/mac.cpp
+++ b/src/mame/audio/mac.cpp
@@ -62,13 +62,13 @@ void mac_sound_device::device_start()
{
mac_state *mac = machine().driver_data<mac_state>();
- m_snd_cache = auto_alloc_array_clear(machine(), UINT8, SND_CACHE_SIZE);
+ m_snd_cache = make_unique_clear<UINT8[]>(SND_CACHE_SIZE);
m_mac_stream = machine().sound().stream_alloc(*this, 0, 1, MAC_SAMPLE_RATE);
m_ram = machine().device<ram_device>(RAM_TAG);
m_mac_model = mac->m_model;
- save_pointer(NAME(m_snd_cache), SND_CACHE_SIZE);
+ save_pointer(NAME(m_snd_cache.get()), SND_CACHE_SIZE);
save_item(NAME(m_sample_enable));
save_item(NAME(m_snd_cache_len));
save_item(NAME(m_snd_cache_head));
diff --git a/src/mame/audio/madalien.cpp b/src/mame/audio/madalien.cpp
index 6ef4fd2b7cd..59990445d3e 100644
--- a/src/mame/audio/madalien.cpp
+++ b/src/mame/audio/madalien.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/************************************************************************
* madalien Sound System Analog emulation
diff --git a/src/mame/audio/micro3d.cpp b/src/mame/audio/micro3d.cpp
index 4e7cea003e9..aeed7f03bdf 100644
--- a/src/mame/audio/micro3d.cpp
+++ b/src/mame/audio/micro3d.cpp
@@ -68,9 +68,9 @@ static void filter_init(running_machine &machine, lp_filter *iir, double fs)
iir->ProtoCoef[1].b1 = 1.847759;
iir->ProtoCoef[1].b2 = 1.0;
- iir->coef = (float *)auto_alloc_array_clear(machine, float, 4 * 2 + 1);
+ iir->coef = make_unique_clear<float[]>(4 * 2 + 1);
iir->fs = fs;
- iir->history = (float *)auto_alloc_array_clear(machine, float, 2 * 2);
+ iir->history = make_unique_clear<float[]>(2 * 2);
}
static void prewarp(double *a0, double *a1, double *a2,double fc, double fs)
@@ -107,7 +107,7 @@ static void recompute_filter(lp_filter *iir, double k, double q, double fc)
int nInd;
double a0, a1, a2, b0, b1, b2;
- float *coef = iir->coef + 1;
+ float *coef = iir->coef.get() + 1;
for (nInd = 0; nInd < 2; nInd++)
{
@@ -270,9 +270,9 @@ void micro3d_sound_device::sound_stream_update(sound_stream &stream, stream_samp
input += white;
input *= 200.0f;
- coef_ptr = iir->coef;
+ coef_ptr = iir->coef.get();
- hist1_ptr = iir->history;
+ hist1_ptr = iir->history.get();
hist2_ptr = hist1_ptr + 1;
/* 1st number of coefficients array is overall input scale factor, * or filter gain */
diff --git a/src/mame/audio/mw8080bw.cpp b/src/mame/audio/mw8080bw.cpp
index 3c2b7f7a43a..30e8bfe1120 100644
--- a/src/mame/audio/mw8080bw.cpp
+++ b/src/mame/audio/mw8080bw.cpp
@@ -173,7 +173,7 @@ WRITE8_MEMBER(mw8080bw_state::seawolf_audio_w)
/* if (data & 0x10) enable MINE HIT sound */
if (rising_bits & 0x10) m_samples->start(4, 4);
- coin_counter_w(machine(), 0, (data >> 5) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 5) & 0x01);
/* D6 and D7 are not connected */
@@ -218,7 +218,7 @@ WRITE8_MEMBER(mw8080bw_state::gunfight_audio_w)
{
/* D0 and D1 are just tied to 1k resistors */
- coin_counter_w(machine(), 0, (data >> 2) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01);
/* the 74175 latches and inverts the top 4 bits */
switch ((~data >> 4) & 0x0f)
@@ -339,7 +339,7 @@ WRITE8_MEMBER(mw8080bw_state::tornbase_audio_w)
/* if (data & 0x40) enable WHISTLE sound */
}
- coin_counter_w(machine(), 0, (data >> 7) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 7) & 0x01);
}
@@ -380,7 +380,7 @@ WRITE8_MEMBER(mw8080bw_state::zzzap_audio_2_w)
before it appears again, not sure what
it is supposed to sound like) */
- coin_counter_w(machine(), 0, (data >> 5) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 5) & 0x01);
/* D4, D6 and D7 are not connected */
}
@@ -812,7 +812,7 @@ WRITE8_MEMBER(mw8080bw_state::boothill_audio_w)
{
/* D0 and D1 are not connected */
- coin_counter_w(machine(), 0, (data >> 2) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01);
m_discrete->write(space, BOOTHILL_GAME_ON_EN, (data >> 3) & 0x01);
@@ -1043,7 +1043,7 @@ WRITE8_MEMBER(mw8080bw_state::checkmat_audio_w)
m_discrete->write(space, CHECKMAT_BOOM_EN, (data >> 1) & 0x01);
- coin_counter_w(machine(), 0, (data >> 2) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01);
machine().sound().system_enable((data >> 3) & 0x01);
@@ -1252,7 +1252,7 @@ WRITE8_MEMBER(mw8080bw_state::desertgu_audio_1_w)
{
/* D0 and D1 are not connected */
- coin_counter_w(machine(), 0, (data >> 2) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01);
m_discrete->write(space, DESERTGU_GAME_ON_EN, (data >> 3) & 0x01);
@@ -1272,7 +1272,7 @@ WRITE8_MEMBER(mw8080bw_state::desertgu_audio_2_w)
m_discrete->write(space, DESERTGU_TRIGGER_CLICK_EN, (data >> 1) & 0x01);
- output_set_value("Player1_Gun_Recoil", (data >> 2) & 0x01);
+ output().set_value("Player1_Gun_Recoil", (data >> 2) & 0x01);
m_desertgun_controller_select = (data >> 3) & 0x01;
@@ -1525,7 +1525,7 @@ WRITE8_MEMBER(mw8080bw_state::dplay_audio_w)
m_discrete->write(space, DPLAY_GAME_ON_EN, (data >> 4) & 0x01);
- coin_counter_w(machine(), 0, (data >> 5) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 5) & 0x01);
/* D6 and D7 are not connected */
}
@@ -1573,7 +1573,7 @@ WRITE8_MEMBER(mw8080bw_state::gmissile_audio_1_w)
/* D0 and D1 are not connected */
- coin_counter_w(machine(), 0, (data >> 2) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01);
machine().sound().system_enable((data >> 3) & 0x01);
@@ -1581,14 +1581,14 @@ WRITE8_MEMBER(mw8080bw_state::gmissile_audio_1_w)
if (rising_bits & 0x10) m_samples2->start(0, 0);
/* if (data & 0x20) enable LEFT EXPLOSION sound (goes to left speaker) */
- output_set_value("L_EXP_LIGHT", (data >> 5) & 0x01);
+ output().set_value("L_EXP_LIGHT", (data >> 5) & 0x01);
if (rising_bits & 0x20) m_samples1->start(0, 1);
/* if (data & 0x40) enable LEFT MISSILE sound (goes to left speaker) */
if (rising_bits & 0x40) m_samples1->start(0, 0);
/* if (data & 0x80) enable RIGHT EXPLOSION sound (goes to right speaker) */
- output_set_value("R_EXP_LIGHT", (data >> 7) & 0x01);
+ output().set_value("R_EXP_LIGHT", (data >> 7) & 0x01);
if (rising_bits & 0x80) m_samples2->start(0, 1);
m_port_1_last = data;
@@ -1662,7 +1662,7 @@ WRITE8_MEMBER(mw8080bw_state::m4_audio_1_w)
/* D0 and D1 are not connected */
- coin_counter_w(machine(), 0, (data >> 2) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01);
machine().sound().system_enable((data >> 3) & 0x01);
@@ -1912,7 +1912,7 @@ MACHINE_CONFIG_END
WRITE8_MEMBER(mw8080bw_state::clowns_audio_1_w)
{
- coin_counter_w(machine(), 0, (data >> 0) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 0) & 0x01);
m_clowns_controller_select = (data >> 1) & 0x01;
@@ -2277,7 +2277,7 @@ MACHINE_CONFIG_END
WRITE8_MEMBER(mw8080bw_state::spacwalk_audio_1_w)
{
- coin_counter_w(machine(), 0, (data >> 0) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 0) & 0x01);
m_clowns_controller_select = (data >> 1) & 0x01;
@@ -2527,7 +2527,7 @@ WRITE8_MEMBER(mw8080bw_state::shuffle_audio_2_w)
{
m_discrete->write(space, SHUFFLE_FOUL_EN, (data >> 0) & 0x01);
- coin_counter_w(machine(), 0, (data >> 1) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 1) & 0x01);
/* D2-D7 are not connected */
}
@@ -2689,7 +2689,7 @@ WRITE8_MEMBER(mw8080bw_state::dogpatch_audio_w)
{
/* D0, D1 and D7 are not used */
- coin_counter_w(machine(), 0, (data >> 2) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01);
machine().sound().system_enable((data >> 3) & 0x01);
m_discrete->write(space, DOGPATCH_GAME_ON_EN, (data >> 3) & 0x01);
@@ -3242,7 +3242,7 @@ WRITE8_MEMBER(mw8080bw_state::spcenctr_audio_3_w)
m_spcenctr_strobe_state = (data >> 2) & 0x01;
- output_set_value("LAMP", (data >> 3) & 0x01);
+ output().set_value("LAMP", (data >> 3) & 0x01);
m_discrete->write(space, SPCENCTR_BONUS_EN, (data >> 4) & 0x01);
@@ -3290,7 +3290,7 @@ WRITE8_MEMBER(mw8080bw_state::phantom2_audio_1_w)
machine().sound().system_mute(!(data & 0x20));
machine().sound().system_enable((data >> 2) & 0x01);
- coin_counter_w(machine(), 0, (data >> 3) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 3) & 0x01);
/* if (data & 0x10) enable RADAR sound */
@@ -3309,7 +3309,7 @@ WRITE8_MEMBER(mw8080bw_state::phantom2_audio_2_w)
/* if (data & 0x08) enable EXPLOSION sound */
if (rising_bits & 0x08) m_samples->start(1, 1);
- output_set_value("EXPLAMP", (data >> 4) & 0x01);
+ output().set_value("EXPLAMP", (data >> 4) & 0x01);
/* set JET SOUND FREQ((data >> 5) & 0x07) 0, if no jet sound */
@@ -3410,7 +3410,7 @@ WRITE8_MEMBER(mw8080bw_state::bowler_audio_1_w)
{
/* D0 - selects controller on the cocktail PCB */
- coin_counter_w(machine(), 0, (data >> 1) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 1) & 0x01);
machine().sound().system_enable((data >> 2) & 0x01);
diff --git a/src/mame/audio/nitedrvr.cpp b/src/mame/audio/nitedrvr.cpp
index ad42b648748..e3a0c5000a7 100644
--- a/src/mame/audio/nitedrvr.cpp
+++ b/src/mame/audio/nitedrvr.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/*************************************************************************
diff --git a/src/mame/audio/norautp.cpp b/src/mame/audio/norautp.cpp
index a285e2e2e64..73eaf1fa12b 100644
--- a/src/mame/audio/norautp.cpp
+++ b/src/mame/audio/norautp.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Roberto Fresca
/************************************************************************
* Noraut/Kimble/Kramer Poker Sound System Analog emulation
diff --git a/src/mame/audio/orbit.cpp b/src/mame/audio/orbit.cpp
index 228382696d6..2deacd5afb3 100644
--- a/src/mame/audio/orbit.cpp
+++ b/src/mame/audio/orbit.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/*************************************************************************
diff --git a/src/mame/audio/phoenix.cpp b/src/mame/audio/phoenix.cpp
index 02c9cca051a..3bcd72661ea 100644
--- a/src/mame/audio/phoenix.cpp
+++ b/src/mame/audio/phoenix.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Juergen Buchmueller, Derrick Renaud
/****************************************************************************
*
@@ -83,7 +83,7 @@ void phoenix_sound_device::device_start()
m_discrete = machine().device<discrete_device>("discrete");
m_tms = machine().device<tms36xx_device>("tms");
- m_poly18 = auto_alloc_array(machine(), UINT32, 1ul << (18-5));
+ m_poly18 = std::make_unique<UINT32[]>(1ul << (18-5));
shiftreg = 0;
for( i = 0; i < (1ul << (18-5)); i++ )
@@ -112,7 +112,7 @@ void phoenix_sound_device::device_start()
save_item(NAME(m_noise_state.polyoffs));
save_item(NAME(m_noise_state.lowpass_counter));
save_item(NAME(m_noise_state.lowpass_polybit));
- save_pointer(NAME(m_poly18), (1ul << (18-5)));
+ save_pointer(NAME(m_poly18.get()), (1ul << (18-5)));
}
int phoenix_sound_device::update_c24(int samplerate)
diff --git a/src/mame/audio/pleiads.cpp b/src/mame/audio/pleiads.cpp
index f5c00fc3fdf..b838998c971 100644
--- a/src/mame/audio/pleiads.cpp
+++ b/src/mame/audio/pleiads.cpp
@@ -653,7 +653,7 @@ void pleiads_sound_device::common_start()
m_tms = machine().device<tms36xx_device>("tms");
m_pc4.level = PC4_MIN;
- m_poly18 = auto_alloc_array_clear(machine(), UINT32, 1ul << (18-5));
+ m_poly18 = make_unique_clear<UINT32[]>(1ul << (18-5));
shiftreg = 0;
for( i = 0; i < (1ul << (18-5)); i++ )
@@ -715,7 +715,7 @@ void pleiads_sound_device::common_start()
save_item(NAME(m_noise.counter));
save_item(NAME(m_noise.polyoffs));
save_item(NAME(m_noise.freq));
- save_pointer(NAME(m_poly18), (1ul << (18-5)));
+ save_pointer(NAME(m_poly18.get()), (1ul << (18-5)));
}
//-------------------------------------------------
diff --git a/src/mame/audio/pleiads.h b/src/mame/audio/pleiads.h
index 3978cb6c6d1..e47b1b8e659 100644
--- a/src/mame/audio/pleiads.h
+++ b/src/mame/audio/pleiads.h
@@ -79,7 +79,7 @@ protected:
int m_sound_latch_b;
int m_sound_latch_c; /* part of the videoreg_w latch */
- UINT32 *m_poly18;
+ std::unique_ptr<UINT32[]> m_poly18;
int m_polybit;
pl_t_state m_tone1;
diff --git a/src/mame/audio/polepos.cpp b/src/mame/audio/polepos.cpp
index ac48f57574e..e3e23b2fdef 100644
--- a/src/mame/audio/polepos.cpp
+++ b/src/mame/audio/polepos.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/***************************************************************************
polepos.c
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/poolshrk.cpp b/src/mame/audio/poolshrk.cpp
index 188d072dda3..2f030135d3a 100644
--- a/src/mame/audio/poolshrk.cpp
+++ b/src/mame/audio/poolshrk.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/*************************************************************************
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 8d9f6ecb7ca..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
@@ -116,8 +116,8 @@ WRITE8_MEMBER(qix_state::sync_sndpia1_porta_w)
WRITE8_MEMBER(qix_state::slither_coinctl_w)
{
- coin_lockout_w(machine(), 0, (~data >> 6) & 1);
- coin_counter_w(machine(), 0, (data >> 5) & 1);
+ machine().bookkeeping().coin_lockout_w(0, (~data >> 6) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 5) & 1);
}
diff --git a/src/mame/audio/redbaron.cpp b/src/mame/audio/redbaron.cpp
index ff50862cf7a..b8f71f1d5f2 100644
--- a/src/mame/audio/redbaron.cpp
+++ b/src/mame/audio/redbaron.cpp
@@ -65,7 +65,7 @@ void redbaron_sound_device::device_start()
{
int i;
- m_vol_lookup = auto_alloc_array(machine(), INT16, 32768);
+ m_vol_lookup = std::make_unique<INT16[]>(32768);
for( i = 0; i < 0x8000; i++ )
m_vol_lookup[0x7fff-i] = (INT16) (0x7fff/exp(1.0*i/4096));
diff --git a/src/mame/audio/redbaron.h b/src/mame/audio/redbaron.h
index dc65f9502fa..b7d11ae2ab7 100644
--- a/src/mame/audio/redbaron.h
+++ b/src/mame/audio/redbaron.h
@@ -22,7 +22,7 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
private:
- INT16 *m_vol_lookup;
+ std::unique_ptr<INT16[]> m_vol_lookup;
INT16 m_vol_crash[16];
diff --git a/src/mame/audio/seibu.cpp b/src/mame/audio/seibu.cpp
index b78e142a99a..9883e9b9a25 100644
--- a/src/mame/audio/seibu.cpp
+++ b/src/mame/audio/seibu.cpp
@@ -115,13 +115,13 @@ void seibu_sound_device::device_start()
case 1:
get_custom_decrypt();
- memcpy(m_decrypted_opcodes, rom, length);
- apply_decrypt(rom, m_decrypted_opcodes, 0x2000);
+ memcpy(m_decrypted_opcodes.get(), rom, length);
+ apply_decrypt(rom, m_decrypted_opcodes.get(), 0x2000);
break;
case 2:
get_custom_decrypt();
- apply_decrypt(rom, m_decrypted_opcodes, length);
+ apply_decrypt(rom, m_decrypted_opcodes.get(), length);
break;
}
@@ -182,18 +182,18 @@ static UINT8 decrypt_opcode(int a,int src)
UINT8 *seibu_sound_device::get_custom_decrypt()
{
if (m_decrypted_opcodes)
- return m_decrypted_opcodes;
+ return m_decrypted_opcodes.get();
int size = memregion(":audiocpu")->bytes();
- m_decrypted_opcodes = auto_alloc_array_clear(machine(), UINT8, size);
- membank(":seibu_bank0d")->set_base(m_decrypted_opcodes);
+ m_decrypted_opcodes = make_unique_clear<UINT8[]>(size);
+ membank(":seibu_bank0d")->set_base(m_decrypted_opcodes.get());
if (size > 0x10000) {
- membank(":seibu_bank1d")->configure_entries(0, (size - 0x10000) / 0x8000, m_decrypted_opcodes + 0x10000, 0x8000);
+ membank(":seibu_bank1d")->configure_entries(0, (size - 0x10000) / 0x8000, m_decrypted_opcodes.get() + 0x10000, 0x8000);
membank(":seibu_bank1d")->set_entry(0);
} else
- membank(":seibu_bank1d")->set_base(m_decrypted_opcodes + 0x8000);
+ membank(":seibu_bank1d")->set_base(m_decrypted_opcodes.get() + 0x8000);
- return m_decrypted_opcodes;
+ return m_decrypted_opcodes.get();
}
void seibu_sound_device::apply_decrypt(UINT8 *rom, UINT8 *opcodes, int length)
@@ -276,8 +276,8 @@ WRITE8_MEMBER( seibu_sound_device::bank_w )
WRITE8_MEMBER( seibu_sound_device::coin_w )
{
- coin_counter_w(space.machine(), 0, data & 1);
- coin_counter_w(space.machine(), 1, data & 2);
+ space.machine().bookkeeping().coin_counter_w(0, data & 1);
+ space.machine().bookkeeping().coin_counter_w(1, data & 2);
}
READ8_MEMBER( seibu_sound_device::soundlatch_r )
diff --git a/src/mame/audio/seibu.h b/src/mame/audio/seibu.h
index 3a83f811e58..732ab5af314 100644
--- a/src/mame/audio/seibu.h
+++ b/src/mame/audio/seibu.h
@@ -72,7 +72,7 @@ protected:
private:
int m_encryption_mode;
- UINT8 *m_decrypted_opcodes;
+ std::unique_ptr<UINT8[]> m_decrypted_opcodes;
// internal state
device_t *m_sound_cpu;
diff --git a/src/mame/audio/skydiver.cpp b/src/mame/audio/skydiver.cpp
index 706a5f63b74..33377f6fe21 100644
--- a/src/mame/audio/skydiver.cpp
+++ b/src/mame/audio/skydiver.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/*************************************************************************
diff --git a/src/mame/audio/skyraid.cpp b/src/mame/audio/skyraid.cpp
index b86e9bc64be..4a9ef30dc9c 100644
--- a/src/mame/audio/skyraid.cpp
+++ b/src/mame/audio/skyraid.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/************************************************************************
* skyraid Sound System Analog emulation
@@ -297,7 +297,7 @@ WRITE8_MEMBER(skyraid_state::skyraid_sound_w)
m_discrete->write(space, SKYRAID_PLANE_SWEEP_EN, data & 0x01);
m_discrete->write(space, SKYRAID_MISSILE_EN, data & 0x02);
m_discrete->write(space, SKYRAID_EXPLOSION_EN, data & 0x04);
- set_led_status(machine(), 0, !(data & 0x08));
+ output().set_led_value(0, !(data & 0x08));
m_discrete->write(space, SKYRAID_PLANE_ON_EN, data & 0x10);
m_discrete->write(space, SKYRAID_ATTRACT_EN, data & 0x20);
}
diff --git a/src/mame/audio/snes_snd.cpp b/src/mame/audio/snes_snd.cpp
index c37020bc504..a9295fd560c 100644
--- a/src/mame/audio/snes_snd.cpp
+++ b/src/mame/audio/snes_snd.cpp
@@ -179,7 +179,7 @@ void snes_sound_device::device_start()
{
m_channel = machine().sound().stream_alloc(*this, 0, 2, 32000);
- m_ram = auto_alloc_array_clear(machine(), UINT8, SNES_SPCRAM_SIZE);
+ m_ram = make_unique_clear<UINT8[]>(SNES_SPCRAM_SIZE);
/* put IPL image at the top of RAM */
memcpy(m_ipl_region, machine().root_device().memregion("sound_ipl")->base(), 64);
@@ -196,7 +196,7 @@ void snes_sound_device::device_start()
m_timer[2]->enable(false);
state_register();
- save_pointer(NAME(m_ram), SNES_SPCRAM_SIZE);
+ save_pointer(NAME(m_ram.get()), SNES_SPCRAM_SIZE);
}
//-------------------------------------------------
diff --git a/src/mame/audio/snes_snd.h b/src/mame/audio/snes_snd.h
index 6862f7bc231..6d4e97b14a1 100644
--- a/src/mame/audio/snes_snd.h
+++ b/src/mame/audio/snes_snd.h
@@ -97,7 +97,7 @@ private:
void state_register();
// internal state
- UINT8 *m_ram;
+ std::unique_ptr<UINT8[]> m_ram;
sound_stream *m_channel;
UINT8 m_dsp_regs[256]; /* DSP registers */
UINT8 m_ipl_region[64]; /* SPC top 64 bytes */
diff --git a/src/mame/audio/spiders.cpp b/src/mame/audio/spiders.cpp
index b632e103c5b..adfeda28361 100644
--- a/src/mame/audio/spiders.cpp
+++ b/src/mame/audio/spiders.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Derrick Renaud
+// license:BSD-3-Clause
+// 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/sprint4.cpp b/src/mame/audio/sprint4.cpp
index 1d594376a6f..5a8aef449e1 100644
--- a/src/mame/audio/sprint4.cpp
+++ b/src/mame/audio/sprint4.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/*************************************************************************
diff --git a/src/mame/audio/sprint4.h b/src/mame/audio/sprint4.h
index 6cd0ad700fc..855e919c725 100644
--- a/src/mame/audio/sprint4.h
+++ b/src/mame/audio/sprint4.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/***************************************************************************
diff --git a/src/mame/audio/sprint8.cpp b/src/mame/audio/sprint8.cpp
index 5539f54666f..182230cbd27 100644
--- a/src/mame/audio/sprint8.cpp
+++ b/src/mame/audio/sprint8.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/************************************************************************
* sprint8 Sound System Analog emulation
diff --git a/src/mame/audio/starshp1.cpp b/src/mame/audio/starshp1.cpp
index c419c364270..e36d5f8744d 100644
--- a/src/mame/audio/starshp1.cpp
+++ b/src/mame/audio/starshp1.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/************************************************************************
* starshp1 Sound System Analog emulation
diff --git a/src/mame/audio/subs.cpp b/src/mame/audio/subs.cpp
index c05ad6608a9..fe794e9f49a 100644
--- a/src/mame/audio/subs.cpp
+++ b/src/mame/audio/subs.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/*************************************************************************
diff --git a/src/mame/audio/suna8.cpp b/src/mame/audio/suna8.cpp
index 5fe1ad7cbfe..43f70119b9a 100644
--- a/src/mame/audio/suna8.cpp
+++ b/src/mame/audio/suna8.cpp
@@ -18,7 +18,7 @@ SAMPLES_START_CB_MEMBER(suna8_state::sh_start)
int i, len = memregion("samples")->bytes() * 2; // 2 samples per byte
UINT8 *ROM = memregion("samples")->base();
- m_samplebuf = auto_alloc_array(machine(), INT16, len);
+ m_samplebuf = std::make_unique<INT16[]>(len);
// Convert 4 bit to 16 bit samples
for(i = 0; i < len; i++)
diff --git a/src/mame/audio/taito_zm.cpp b/src/mame/audio/taito_zm.cpp
index 069a6536759..a23967134c3 100644
--- a/src/mame/audio/taito_zm.cpp
+++ b/src/mame/audio/taito_zm.cpp
@@ -52,12 +52,12 @@ taito_zoom_device::taito_zoom_device(const machine_config &mconfig, const char *
void taito_zoom_device::device_start()
{
- m_snd_shared_ram = auto_alloc_array_clear(machine(), UINT8, 0x100);
+ m_snd_shared_ram = make_unique_clear<UINT8[]>(0x100);
// register for savestates
save_item(NAME(m_reg_address));
save_item(NAME(m_tms_ctrl));
- save_pointer(NAME(m_snd_shared_ram), 0x100);
+ save_pointer(NAME(m_snd_shared_ram.get()), 0x100);
}
//-------------------------------------------------
diff --git a/src/mame/audio/taito_zm.h b/src/mame/audio/taito_zm.h
index d769618b0e5..610cdc807a8 100644
--- a/src/mame/audio/taito_zm.h
+++ b/src/mame/audio/taito_zm.h
@@ -42,7 +42,7 @@ private:
// internal state
UINT16 m_reg_address;
UINT8 m_tms_ctrl;
- UINT8* m_snd_shared_ram;
+ std::unique_ptr<UINT8[]> m_snd_shared_ram;
};
extern const device_type TAITO_ZOOM;
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/audio/trackfld.h b/src/mame/audio/trackfld.h
index 03f78799c9e..e1cf446f6a8 100644
--- a/src/mame/audio/trackfld.h
+++ b/src/mame/audio/trackfld.h
@@ -16,8 +16,6 @@ public:
DECLARE_WRITE8_MEMBER(trackfld_sound_w );
DECLARE_READ8_MEMBER(hyperspt_sh_timer_r );
DECLARE_WRITE8_MEMBER(hyperspt_sound_w );
- DECLARE_WRITE8_MEMBER(konami_SN76496_latch_w );
- DECLARE_WRITE8_MEMBER(konami_SN76496_w );
protected:
// device-level overrides
diff --git a/src/mame/audio/triplhnt.cpp b/src/mame/audio/triplhnt.cpp
index f7dd84cf5e8..1055a3f821b 100644
--- a/src/mame/audio/triplhnt.cpp
+++ b/src/mame/audio/triplhnt.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/*************************************************************************
diff --git a/src/mame/audio/turbo.cpp b/src/mame/audio/turbo.cpp
index cb24f3234a9..4cbb79b78a8 100644
--- a/src/mame/audio/turbo.cpp
+++ b/src/mame/audio/turbo.cpp
@@ -129,7 +129,7 @@ WRITE8_MEMBER(turbo_state::turbo_sound_b_w)
/* ACC0-ACC5 */
m_turbo_accel = data & 0x3f;
- output_set_value("tachometer", m_turbo_accel);
+ output().set_value("tachometer", m_turbo_accel);
/* /AMBU: channel 4 */
if ((diff & 0x40) && !(data & 0x40) && !m_samples->playing(4)) m_samples->start(4, 8, true);
@@ -152,7 +152,7 @@ WRITE8_MEMBER(turbo_state::turbo_sound_c_w)
m_turbo_bsel = (data >> 2) & 3;
/* SPEED0-3 */
- output_set_value("speed", (data >> 4) & 0x0f);
+ output().set_value("speed", (data >> 4) & 0x0f);
/* update any samples */
turbo_update_samples();
diff --git a/src/mame/audio/tx1.cpp b/src/mame/audio/tx1.cpp
index b4dac235258..93de637e22d 100644
--- a/src/mame/audio/tx1.cpp
+++ b/src/mame/audio/tx1.cpp
@@ -464,8 +464,8 @@ WRITE8_MEMBER( buggyboy_sound_device::ym2_b_w )
if (!strcmp(space.machine().system().name, "buggyboyjr"))
{
- coin_counter_w(space.machine(), 0, data & 0x01);
- coin_counter_w(space.machine(), 1, data & 0x02);
+ space.machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ space.machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
/*
diff --git a/src/mame/audio/upd1771.cpp b/src/mame/audio/upd1771.cpp
index 96b3b2bb062..e826aafee0f 100644
--- a/src/mame/audio/upd1771.cpp
+++ b/src/mame/audio/upd1771.cpp
@@ -187,7 +187,7 @@
waveforms; the first four look as if they're playing back a piece of code as
wave data.
*/
-const char WAVEFORMS[8][32]={
+const signed char WAVEFORMS[8][32]={
{ 0, 0,-123,-123, -61, -23, 125, 107, 94, 83,-128,-128,-128, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,-128,-128,-128, 0, 0, 0, 0, 0, 0},
{ 37, 16, 32, -21, 32, 52, 4, 4, 33, 18, 60, 56, 0, 8, 5, 16, 65, 19, 69, 16, -2, 19, 37, 16, 97, 19, 0, 87, 127, -3, 1, 2},
{ 0, 8, 1, 52, 4, 0, 0, 77, 81,-109, 47, 97, -83,-109, 38, 97, 0, 52, 4, 0, 1, 4, 1, 22, 2, -46, 33, 97, 0, 8, -85, -99},
diff --git a/src/mame/audio/vboy.h b/src/mame/audio/vboy.h
index b714999cfc7..f3d85d60c6f 100644
--- a/src/mame/audio/vboy.h
+++ b/src/mame/audio/vboy.h
@@ -88,9 +88,6 @@ protected:
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
- // inline data
- s_sreg sound_registers(void);
-
s_snd_channel snd_channel[5];
UINT16 waveFreq2LenTbl[2048];
diff --git a/src/mame/audio/vicdual.cpp b/src/mame/audio/vicdual.cpp
index a1219121101..d79843ec974 100644
--- a/src/mame/audio/vicdual.cpp
+++ b/src/mame/audio/vicdual.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Couriersud
/*************************************************************************
diff --git a/src/mame/audio/videopin.cpp b/src/mame/audio/videopin.cpp
index a2babc8635a..10d3c2c1aae 100644
--- a/src/mame/audio/videopin.cpp
+++ b/src/mame/audio/videopin.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Derrick Renaud
/*************************************************************************
diff --git a/src/mame/audio/warpwarp.cpp b/src/mame/audio/warpwarp.cpp
index 728ac384e33..d0c17d54d77 100644
--- a/src/mame/audio/warpwarp.cpp
+++ b/src/mame/audio/warpwarp.cpp
@@ -48,7 +48,7 @@ warpwarp_sound_device::warpwarp_sound_device(const machine_config &mconfig, cons
void warpwarp_sound_device::device_start()
{
- m_decay = auto_alloc_array(machine(), INT16, 32768);
+ m_decay = std::make_unique<INT16[]>(32768);
for (int i = 0; i < 0x8000; i++)
m_decay[0x7fff - i] = (INT16) (0x7fff/exp(1.0*i/4096));
diff --git a/src/mame/audio/warpwarp.h b/src/mame/audio/warpwarp.h
index 4f419e8a90e..c14c61f63b5 100644
--- a/src/mame/audio/warpwarp.h
+++ b/src/mame/audio/warpwarp.h
@@ -24,7 +24,7 @@ protected:
private:
// internal state
- UINT16 *m_decay;
+ std::unique_ptr<UINT16[]> m_decay;
sound_stream *m_channel;
int m_sound_latch;
int m_sound_signal;
@@ -67,7 +67,7 @@ protected:
private:
// internal state
- INT16 *m_decay;
+ std::unique_ptr<INT16[]> m_decay;
sound_stream *m_channel;
int m_sound_latch;
int m_music1_latch;
diff --git a/src/mame/audio/wiping.cpp b/src/mame/audio/wiping.cpp
index 9fb41a4ce0c..38925e08c37 100644
--- a/src/mame/audio/wiping.cpp
+++ b/src/mame/audio/wiping.cpp
@@ -47,8 +47,8 @@ void wiping_sound_device::device_start()
m_stream = machine().sound().stream_alloc(*this, 0, 1, samplerate);
/* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
- m_mixer_buffer = auto_alloc_array_clear(machine(), short, 2 * samplerate);
- m_mixer_buffer_2 = m_mixer_buffer + samplerate;
+ m_mixer_buffer = make_unique_clear<short[]>(samplerate);
+ m_mixer_buffer_2 = make_unique_clear<short[]>(samplerate);
/* build the mixer table */
make_mixer_table(8, defgain);
@@ -91,10 +91,10 @@ void wiping_sound_device::make_mixer_table(int voices, int gain)
int i;
/* allocate memory */
- m_mixer_table = auto_alloc_array_clear(machine(), INT16, 256 * voices);
+ m_mixer_table = make_unique_clear<INT16[]>(256 * voices);
/* find the middle of the table */
- m_mixer_lookup = m_mixer_table + (128 * voices);
+ m_mixer_lookup = m_mixer_table.get() + (128 * voices);
/* fill in the table - 16 bit case */
for (i = 0; i < count; i++)
@@ -174,7 +174,7 @@ void wiping_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
}
/* zap the contents of the mixer buffer */
- memset(m_mixer_buffer, 0, samples * sizeof(short));
+ memset(m_mixer_buffer.get(), 0, samples * sizeof(short));
/* loop over each voice and add its contribution */
for (voice = m_channel_list; voice < m_last_channel; voice++)
@@ -188,7 +188,7 @@ void wiping_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
const UINT8 *w = voice->wave;
int c = voice->counter;
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
/* add our contribution */
for (i = 0; i < samples; i++)
@@ -235,7 +235,7 @@ void wiping_sound_device::sound_stream_update(sound_stream &stream, stream_sampl
}
/* mix it down */
- mix = m_mixer_buffer;
+ mix = m_mixer_buffer.get();
for (i = 0; i < samples; i++)
*buffer++ = m_mixer_lookup[*mix++];
}
diff --git a/src/mame/audio/wiping.h b/src/mame/audio/wiping.h
index d020f326e1b..f891ae8f5d8 100644
--- a/src/mame/audio/wiping.h
+++ b/src/mame/audio/wiping.h
@@ -45,10 +45,10 @@ private:
sound_stream *m_stream;
/* mixer tables and internal buffers */
- INT16 *m_mixer_table;
+ std::unique_ptr<INT16[]> m_mixer_table;
INT16 *m_mixer_lookup;
- short *m_mixer_buffer;
- short *m_mixer_buffer_2;
+ std::unique_ptr<short[]> m_mixer_buffer;
+ std::unique_ptr<short[]> m_mixer_buffer_2;
UINT8 m_soundregs[0x4000];
diff --git a/src/mame/drivers/1942.cpp b/src/mame/drivers/1942.cpp
index b5856656097..19da9594604 100644
--- a/src/mame/drivers/1942.cpp
+++ b/src/mame/drivers/1942.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Couriersud
/***************************************************************************
diff --git a/src/mame/drivers/1943.cpp b/src/mame/drivers/1943.cpp
index ee10aa4d925..c91260a9b63 100644
--- a/src/mame/drivers/1943.cpp
+++ b/src/mame/drivers/1943.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
diff --git a/src/mame/drivers/20pacgal.cpp b/src/mame/drivers/20pacgal.cpp
index 00df8eaecda..ddfa3b412af 100644
--- a/src/mame/drivers/20pacgal.cpp
+++ b/src/mame/drivers/20pacgal.cpp
@@ -129,7 +129,7 @@ WRITE8_MEMBER(_20pacgal_state::timer_pulse_w)
WRITE8_MEMBER(_20pacgal_state::_20pacgal_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
@@ -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/24cdjuke.cpp b/src/mame/drivers/24cdjuke.cpp
index 605f480542c..7a9e17d325e 100644
--- a/src/mame/drivers/24cdjuke.cpp
+++ b/src/mame/drivers/24cdjuke.cpp
@@ -118,7 +118,7 @@ WRITE8_MEMBER(midcoin24cdjuke_state::digit_w)
char_data = BITSWAP16(char_data, 13,11,9,15,14,10,12,8,7,6,5,4,3,2,1,0);
- output_set_digit_value(offset, char_data ^ 0xffff);
+ output().set_digit_value(offset, char_data ^ 0xffff);
}
diff --git a/src/mame/drivers/2mindril.cpp b/src/mame/drivers/2mindril.cpp
index 24492ebd5f3..d1f27dd46ab 100644
--- a/src/mame/drivers/2mindril.cpp
+++ b/src/mame/drivers/2mindril.cpp
@@ -116,10 +116,10 @@ WRITE16_MEMBER(_2mindril_state::drill_io_w)
switch(offset)
{
case 0x8/2:
- coin_counter_w(machine(), 0, m_iodata[offset] & 0x0400);
- coin_counter_w(machine(), 1, m_iodata[offset] & 0x0800);
- coin_lockout_w(machine(), 0, ~m_iodata[offset] & 0x0100);
- coin_lockout_w(machine(), 1, ~m_iodata[offset] & 0x0200);
+ machine().bookkeeping().coin_counter_w(0, m_iodata[offset] & 0x0400);
+ machine().bookkeeping().coin_counter_w(1, m_iodata[offset] & 0x0800);
+ machine().bookkeeping().coin_lockout_w(0, ~m_iodata[offset] & 0x0100);
+ machine().bookkeeping().coin_lockout_w(1, ~m_iodata[offset] & 0x0200);
break;
}
diff --git a/src/mame/drivers/30test.cpp b/src/mame/drivers/30test.cpp
index 61ce6d7b005..c41167a52de 100644
--- a/src/mame/drivers/30test.cpp
+++ b/src/mame/drivers/30test.cpp
@@ -80,21 +80,21 @@ static const UINT8 led_map[16] =
WRITE8_MEMBER(namco_30test_state::namco_30test_led_w)
{
- output_set_digit_value(0 + offset * 2, led_map[(data & 0xf0) >> 4]);
- output_set_digit_value(1 + offset * 2, led_map[(data & 0x0f) >> 0]);
+ output().set_digit_value(0 + offset * 2, led_map[(data & 0xf0) >> 4]);
+ output().set_digit_value(1 + offset * 2, led_map[(data & 0x0f) >> 0]);
}
WRITE8_MEMBER(namco_30test_state::namco_30test_led_rank_w)
{
- output_set_digit_value(64 + offset * 2, led_map[(data & 0xf0) >> 4]);
- output_set_digit_value(65 + offset * 2, led_map[(data & 0x0f) >> 0]);
+ output().set_digit_value(64 + offset * 2, led_map[(data & 0xf0) >> 4]);
+ output().set_digit_value(65 + offset * 2, led_map[(data & 0x0f) >> 0]);
}
WRITE8_MEMBER(namco_30test_state::namco_30test_lamps_w)
{
// d0-d5: ranking, d6: game over, d7: assume marquee lamp
for (int i = 0; i < 8; i++)
- output_set_lamp_value(i, data >> i & 1);
+ output().set_lamp_value(i, data >> i & 1);
}
READ8_MEMBER(namco_30test_state::namco_30test_mux_r)
diff --git a/src/mame/drivers/39in1.cpp b/src/mame/drivers/39in1.cpp
index fcbd59370f4..0c5bdcafc11 100644
--- a/src/mame/drivers/39in1.cpp
+++ b/src/mame/drivers/39in1.cpp
@@ -73,8 +73,6 @@ public:
DECLARE_WRITE32_MEMBER(pxa255_gpio_w);
DECLARE_READ32_MEMBER(pxa255_lcd_r);
DECLARE_WRITE32_MEMBER(pxa255_lcd_w);
- DECLARE_READ32_MEMBER(return_zero);
- DECLARE_READ32_MEMBER(unknown_r);
DECLARE_READ32_MEMBER(cpld_r);
DECLARE_WRITE32_MEMBER(cpld_w);
DECLARE_READ32_MEMBER(prot_cheater_r);
diff --git a/src/mame/drivers/4004clk.cpp b/src/mame/drivers/4004clk.cpp
index b62ec3794e9..224102e80ef 100644
--- a/src/mame/drivers/4004clk.cpp
+++ b/src/mame/drivers/4004clk.cpp
@@ -61,12 +61,12 @@ UINT8 nixieclock_state::nixie_to_num(UINT16 val)
inline void nixieclock_state::output_set_nixie_value(int index, int value)
{
- output_set_indexed_value("nixie", index, value);
+ output().set_indexed_value("nixie", index, value);
}
inline void nixieclock_state::output_set_neon_value(int index, int value)
{
- output_set_indexed_value("neon", index, value);
+ output().set_indexed_value("neon", index, value);
}
WRITE8_MEMBER(nixieclock_state::nixie_w)
diff --git a/src/mame/drivers/40love.cpp b/src/mame/drivers/40love.cpp
index a002c30a502..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
/****************************************************************************
@@ -11,15 +11,12 @@
/*
TO DO:
- sprites graphics decoding could be changed to only use
- color codes 8-15 (now it decodes all 64 colors). Perhaps the same
- applies to character graphics (colors 0-7 only),
+ color codes 8-15 (now it decodes all 64 colors).
- sprite memory needs to be buffered ?
- controls may be wrong (BUTTON 3 - not used ?)
- - palette has 1024 colors, but only first 256 are used at the moment
-
- pixel layer needs priority ?
*/
@@ -272,7 +269,7 @@ WRITE8_MEMBER(fortyl_state::nmi_enable_w)
#if 0
WRITE8_MEMBER(fortyl_state::fortyl_coin_counter_w)
{
- coin_counter_w(machine(), offset,data);
+ machine().bookkeeping().coin_counter_w(offset,data);
}
#endif
@@ -649,6 +646,7 @@ static ADDRESS_MAP_START( 40love_map, AS_PROGRAM, 8, fortyl_state )
AM_RANGE(0x9880, 0x98bf) AM_READWRITE(fortyl_bg_colorram_r, fortyl_bg_colorram_w) AM_SHARE("colorram") /* background attributes (2 bytes per line) */
AM_RANGE(0x98c0, 0x98ff) AM_RAM AM_SHARE("spriteram2")/* sprites part 2 */
AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
+ //AM_RANGE(0xbf00, 0xbfff) writes here when zooms-in/out, left-over or pixel line clearance?
AM_RANGE(0xc000, 0xffff) AM_READWRITE(fortyl_pixram_r, fortyl_pixram_w) /* banked pixel layer */
ADDRESS_MAP_END
@@ -962,6 +960,8 @@ MACHINE_START_MEMBER(fortyl_state,40love)
/* video */
save_item(NAME(m_pix1));
save_item(NAME(m_pix2));
+ save_item(NAME(m_color_bank));
+ save_item(NAME(m_screen_disable));
/* sound */
save_item(NAME(m_sound_nmi_enable));
save_item(NAME(m_pending_nmi));
@@ -995,6 +995,7 @@ MACHINE_RESET_MEMBER(fortyl_state,common)
m_pix1 = 0;
m_pix2[0] = 0;
m_pix2[1] = 0;
+ m_color_bank = false;
/* sound */
m_sound_nmi_enable = 0;
diff --git a/src/mame/drivers/sgi_ip6.cpp b/src/mame/drivers/4dpi.cpp
index de1b4f6134c..7feead80bea 100644
--- a/src/mame/drivers/sgi_ip6.cpp
+++ b/src/mame/drivers/4dpi.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Ryan Holtz
/****************************************************************************
- drivers/sgi_ip6.c
+ drivers/4dpi.cpp
SGI 4D/PI IP6 family skeleton driver
by Ryan Holtz
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/5clown.cpp b/src/mame/drivers/5clown.cpp
index a5be170dbe4..c0d07547e2d 100644
--- a/src/mame/drivers/5clown.cpp
+++ b/src/mame/drivers/5clown.cpp
@@ -650,10 +650,10 @@ WRITE8_MEMBER(_5clown_state::counters_w)
-x-- ---- Unknown (increments at start).
x--- ---- Unknown (increments at start).
*/
- coin_counter_w(machine(), 0, data & 0x10); /* Key In */
- coin_counter_w(machine(), 1, data & 0x20); /* Payout */
- coin_counter_w(machine(), 2, data & 0x40); /* unknown */
- coin_counter_w(machine(), 3, data & 0x80); /* unknown */
+ machine().bookkeeping().coin_counter_w(0, data & 0x10); /* Key In */
+ machine().bookkeeping().coin_counter_w(1, data & 0x20); /* Payout */
+ machine().bookkeeping().coin_counter_w(2, data & 0x40); /* unknown */
+ machine().bookkeeping().coin_counter_w(3, data & 0x80); /* unknown */
}
diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp
index c69d365a8a9..4dfeab5b92c 100644
--- a/src/mame/drivers/8080bw.cpp
+++ b/src/mame/drivers/8080bw.cpp
@@ -1364,6 +1364,18 @@ static INPUT_PORTS_START( schaser )
PORT_ADJUSTER( 70, "VR3 - Dot Volume" )
INPUT_PORTS_END
+
+static INPUT_PORTS_START( schaserm )
+ PORT_INCLUDE( schaser )
+
+ PORT_MODIFY("IN2")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x01, "2" )
+ PORT_DIPSETTING( 0x02, "3" )
+ PORT_DIPSETTING( 0x03, "4" )
+INPUT_PORTS_END
+
MACHINE_START_MEMBER(_8080bw_state,schaser)
{
MACHINE_START_CALL_MEMBER(schaser_sh);
@@ -2297,7 +2309,7 @@ MACHINE_CONFIG_END
WRITE8_MEMBER(_8080bw_state::steelwkr_sh_port_3_w)
{
- coin_lockout_global_w(machine(), !(~data & 0x03)); /* possibly */
+ machine().bookkeeping().coin_lockout_global_w(!(~data & 0x03)); /* possibly */
}
static ADDRESS_MAP_START( steelwkr_io_map, AS_IO, 8, _8080bw_state )
@@ -3262,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 )
@@ -3292,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)
@@ -3305,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);
}
@@ -4373,6 +4371,18 @@ ROM_START( schaserb )
ROM_LOAD( "rt06.ic2", 0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) )
ROM_END
+ROM_START( schaserm )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "MR26.71", 0x0000, 0x0800, CRC(4e547879) SHA1(464fab35373d6bd6218474e7f5109425376f1db2) )
+ ROM_LOAD( "RT08.70", 0x0800, 0x0800, CRC(825fc8ac) SHA1(176ff0f4d0cd55be30efb184bd5bef62b92d0333) )
+ ROM_LOAD( "RT09.69", 0x1000, 0x0800, CRC(de9d3f85) SHA1(13a71fdd889023cfc65ed2c0a65236884b79b1f0) )
+ ROM_LOAD( "MR27.62", 0x1800, 0x0800, CRC(069ec108) SHA1(b12cd288d7e42002d01290f0572f9074adf2cdca) )
+ ROM_LOAD( "RT11.61", 0x4000, 0x0800, CRC(17a7ef7a) SHA1(1a7b3f9393dceddcd1e220cadbff7e619594f884) )
+
+ ROM_REGION( 0x0400, "proms", 0 ) /* background color map */
+ ROM_LOAD( "rt06.ic2", 0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) )
+ROM_END
+
ROM_START( sflush )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "fr05.sc2", 0xd800, 0x800, CRC(c4f08f9f) SHA1(997f216f5244942fc1a19f5c1988adbfadc301fc) )
@@ -4780,32 +4790,43 @@ GAME( 1979, invadpt2br, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270
GAME( 1980, invaddlx, invadpt2, invaders, invadpt2, driver_device, 0, ROT270, "Taito (Midway license)", "Space Invaders Deluxe", MACHINE_SUPPORTS_SAVE )
GAME( 1979, moonbase, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito / Nichibutsu", "Moon Base (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has a 'Taito Corp' string hidden away in the rom - how do you get it to display?
GAME( 1979, moonbasea, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito / Nichibutsu", "Moon Base (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has the same string replaced with Nichibutsu, no other differences
+
GAME( 1980, spclaser, 0, invadpt2, spclaser, driver_device, 0, ROT270, "Taito", "Space Laser", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
GAME( 1980, intruder, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "Taito (Game Plan license)", "Intruder", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1980, laser, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "bootleg (Leisure Time Electronics Inc.)", "Astro Laser (bootleg of Space Laser)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
GAME( 1979, spcewarl, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "Leijac Corporation", "Space War (Leijac Corporation)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Taito's version is actually a spin-off of this?
+
GAME( 1979, lrescue, 0, lrescue, lrescue, driver_device, 0, ROT270, "Taito", "Lunar Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1979, grescue, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "Taito (Universal license?)", "Galaxy Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1980, mlander, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Leisure Time Electronics)", "Moon Lander (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, lrescuem, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1979, lrescuem2, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1979, desterth, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg", "Destination Earth (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+
GAME( 1979, schaser, 0, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, schasera, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, schaserb, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, schaserc, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
GAME( 1979, schasercv, schaser, schasercv, schasercv, driver_device, 0, ROT270, "Taito", "Space Chaser (CV version - set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
+GAME( 1979, schaserm, schaser, schaser, schaserm, driver_device, 0, ROT270, "bootleg (Model Racing)", "Space Chaser (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE ) // on original Taito PCB, hacked to be harder?
+
GAME( 1979, sflush, 0, sflush, sflush, driver_device, 0, ROT270, "Taito", "Straight Flush", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL)
+
GAME( 1980, lupin3, 0, lupin3, lupin3, driver_device, 0, ROT270, "Taito", "Lupin III (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1980, lupin3a, lupin3, lupin3a, lupin3a, driver_device, 0, ROT270, "Taito", "Lupin III (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+
GAME( 1980, polaris, 0, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (Latest version)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, polarisa, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (First revision)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, polariso, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (Original version)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, polarisbr, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito do Brasil", "Polaris (Brazil)", MACHINE_SUPPORTS_SAVE )
+
GAME( 1980, ballbomb, 0, ballbomb, ballbomb, driver_device, 0, ROT270, "Taito", "Balloon Bomber", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* missing clouds */
+
GAME( 1980, indianbt, 0, indianbt, indianbt, driver_device, 0, ROT270, "Taito", "Indian Battle", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1983, indianbtbr, indianbt, indianbtbr,indianbtbr,driver_device, 0, ROT270, "Taito do Brasil", "Indian Battle (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+
GAME( 1980, steelwkr, 0, steelwkr, steelwkr, driver_device, 0, ROT0 , "Taito", "Steel Worker", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+
GAMEL(1980?,galactic, 0, invaders, galactic, driver_device, 0, ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic )
GAMEL(1980?,spacmiss, galactic, invaders, galactic, driver_device, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic )
@@ -4815,25 +4836,37 @@ GAME( 1979, galxwars2, galxwars, invadpt2, galxwars, driver_device, 0, ROT270
GAME( 1979, galxwarst, galxwars, invadpt2, galxwars, driver_device, 0, ROT270, "Universal (Taito license?)", "Galaxy Wars (Taito?)" , MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Copyright not displayed
GAME( 1979, starw, galxwars, invaders, galxwars, driver_device, 0, ROT270, "bootleg", "Star Wars (bootleg of Galaxy Wars, set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, starw1, galxwars, starw1, galxwars, driver_device, 0, ROT270, "bootleg (Yamashita)", "Star Wars (bootleg of Galaxy Wars, set 2)", MACHINE_SUPPORTS_SAVE )
+
GAME( 1979, cosmo, 0, cosmo, cosmo, driver_device, 0, ROT90, "TDS & MINTS", "Cosmo", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+
GAME( 1980?,invrvnge, 0, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // copyright is either late-1980, or early-1981
GAME( 1980?,invrvngea, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
GAME( 1980?,invrvngeb, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
GAME( 1980?,invrvngedu, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd. (Dutchford license)", "Invader's Revenge (Dutchford, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
GAME( 1980?,invrvngegw, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd. (Game World license)", "Invader's Revenge (Game World, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
+
GAME( 1980, vortex, 0, vortex, vortex, _8080bw_state, vortex, ROT270, "Zilec Electronics", "Vortex", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Encrypted 8080/IO */
+
GAME( 1979, rollingc, 0, rollingc, rollingc, driver_device, 0, ROT270, "Nichibutsu", "Rolling Crash / Moon Base", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
+
GAME( 1979, ozmawars, 0, invaders, ozmawars, driver_device, 0, ROT270, "SNK", "Ozma Wars (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, ozmawars2, ozmawars, invaders, ozmawars, driver_device, 0, ROT270, "SNK", "Ozma Wars (set 2)", MACHINE_SUPPORTS_SAVE ) /* Uses Taito's three board color version of Space Invaders PCB */
GAME( 1979, spaceph, ozmawars, invaders, spaceph, driver_device, 0, ROT270, "bootleg? (Zilec Games)", "Space Phantoms (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE )
GAME( 1979, solfight, ozmawars, invaders, ozmawars, driver_device, 0, ROT270, "bootleg", "Solar Fight (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE )
+
GAME( 1979, yosakdon, 0, yosakdon, yosakdon, driver_device, 0, ROT270, "Wing", "Yosaku To Donbei (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1979, yosakdona, yosakdon, yosakdon, yosakdon, driver_device, 0, ROT270, "Wing", "Yosaku To Donbei (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+
GAMEL(1979, shuttlei, 0, shuttlei, shuttlei, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Shuttle Invader", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei )
+
GAMEL(1979, skylove, 0, shuttlei, skylove, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Sky Love", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei )
+
GAME (1978, claybust, 0, claybust, claybust, driver_device, 0, ROT0, "Model Racing", "Claybuster", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // no titlescreen, Claybuster according to flyers
+
GAMEL(1980, gunchamp, 0, claybust, gunchamp, driver_device, 0, ROT0, "Model Racing", "Gun Champ", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_gunchamp ) // no titlescreen, Gun Champ according to original cab
+
GAME( 1980?,astropal, 0, astropal, astropal, driver_device, 0, ROT0, "Sidam?", "Astropal", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+
GAMEL(1979?,attackfc, 0, attackfc, attackfc, _8080bw_state, attackfc, ROT0, "Electronic Games Systems", "Attack Force", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_attackfc )
GAME( 2002, invmulti, 0, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/88games.cpp b/src/mame/drivers/88games.cpp
index 81695376892..3aa93366913 100644
--- a/src/mame/drivers/88games.cpp
+++ b/src/mame/drivers/88games.cpp
@@ -50,8 +50,8 @@ WRITE8_MEMBER(_88games_state::bankedram_w)
WRITE8_MEMBER(_88games_state::k88games_5f84_w)
{
/* bits 0/1 coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 enables ROM reading from the 051316 */
/* also 5fce == 2 read roms, == 3 read ram */
diff --git a/src/mame/drivers/a2600.cpp b/src/mame/drivers/a2600.cpp
index 6c61d71b60f..fc0f9bc5cdf 100644
--- a/src/mame/drivers/a2600.cpp
+++ b/src/mame/drivers/a2600.cpp
@@ -84,7 +84,6 @@ protected:
required_device<vcs_cart_slot_device> m_cart;
required_device<tia_video_device> m_tia;
- unsigned long detect_2600controllers();
required_device<m6507_device> m_maincpu;
required_device<screen_device> m_screen;
required_ioport m_swb;
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/a7800.cpp b/src/mame/drivers/a7800.cpp
index 62f211b078e..eda5f74ac07 100644
--- a/src/mame/drivers/a7800.cpp
+++ b/src/mame/drivers/a7800.cpp
@@ -135,11 +135,8 @@ public:
int m_bios_enabled;
DECLARE_READ8_MEMBER(bios_or_cart_r);
- DECLARE_WRITE8_MEMBER(ram0_w);
DECLARE_READ8_MEMBER(tia_r);
DECLARE_WRITE8_MEMBER(tia_w);
- DECLARE_READ8_MEMBER(maria_r);
- DECLARE_WRITE8_MEMBER(maria_w);
DECLARE_DRIVER_INIT(a7800_pal);
DECLARE_DRIVER_INIT(a7800_ntsc);
virtual void machine_start() override;
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/acefruit.cpp b/src/mame/drivers/acefruit.cpp
index 336e9ff8d43..b869458ace4 100644
--- a/src/mame/drivers/acefruit.cpp
+++ b/src/mame/drivers/acefruit.cpp
@@ -274,7 +274,7 @@ WRITE8_MEMBER(acefruit_state::acefruit_lamp_w)
for( i = 0; i < 8; i++ )
{
- output_set_lamp_value( ( offset * 8 ) + i, ( data >> i ) & 1 );
+ output().set_lamp_value( ( offset * 8 ) + i, ( data >> i ) & 1 );
}
}
@@ -284,7 +284,7 @@ WRITE8_MEMBER(acefruit_state::acefruit_solenoid_w)
for( i = 0; i < 8; i++ )
{
- output_set_indexed_value( "solenoid", i, ( data >> i ) & 1 );
+ output().set_indexed_value( "solenoid", i, ( data >> i ) & 1 );
}
}
diff --git a/src/mame/drivers/aces1.cpp b/src/mame/drivers/aces1.cpp
index 765e151b034..4bc18a85aa9 100644
--- a/src/mame/drivers/aces1.cpp
+++ b/src/mame/drivers/aces1.cpp
@@ -105,7 +105,7 @@ public:
{
if (m_led_strobe != m_input_strobe)
{
- output_set_digit_value(m_input_strobe,data);
+ output().set_digit_value(m_input_strobe,data);
m_led_strobe = m_input_strobe;
}
}
@@ -122,7 +122,7 @@ public:
for (i = 0; i < 8; i++)
{
- output_set_lamp_value((8*m_input_strobe)+i, ((data & (1 << i)) !=0));
+ output().set_lamp_value((8*m_input_strobe)+i, ((data & (1 << i)) !=0));
}
m_lamp_strobe = m_input_strobe;
}
diff --git a/src/mame/drivers/acommand.cpp b/src/mame/drivers/acommand.cpp
index d08c0877b02..5da92a119ce 100644
--- a/src/mame/drivers/acommand.cpp
+++ b/src/mame/drivers/acommand.cpp
@@ -83,7 +83,7 @@ public:
required_shared_ptr<UINT16> m_ac_devram;
tilemap_t *m_tx_tilemap;
tilemap_t *m_bg_tilemap;
- UINT16 *m_ac_vregs;
+ std::unique_ptr<UINT16[]> m_ac_vregs;
UINT16 m_led0;
UINT16 m_led1;
UINT16 m_ufo_sw1;
@@ -199,7 +199,7 @@ void acommand_state::video_start()
m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(acommand_state::ac_get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,512,32);
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(acommand_state::ac_get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(acommand_state::bg_scan),this),16,16,256,16);
- m_ac_vregs = auto_alloc_array(machine(), UINT16, 0x80/2);
+ m_ac_vregs = std::make_unique<UINT16[]>(0x80/2);
m_tx_tilemap->set_transparent_pen(15);
}
diff --git a/src/mame/drivers/acrnsys1.cpp b/src/mame/drivers/acrnsys1.cpp
index 23d35f2807a..41efa342a61 100644
--- a/src/mame/drivers/acrnsys1.cpp
+++ b/src/mame/drivers/acrnsys1.cpp
@@ -151,7 +151,7 @@ WRITE8_MEMBER( acrnsys1_state::acrnsys1_led_segment_w )
{
UINT8 key_line = m_ttl74145->read();
- output_set_digit_value(key_line, data);
+ output().set_digit_value(key_line, data);
}
diff --git a/src/mame/drivers/age_candy.cpp b/src/mame/drivers/age_candy.cpp
index 355f9e85092..986b9d3771c 100644
--- a/src/mame/drivers/age_candy.cpp
+++ b/src/mame/drivers/age_candy.cpp
@@ -20,13 +20,13 @@ class age_candy_state : public driver_device
public:
age_candy_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- // ,m_maincpu(*this, "maincpu")
+ // ,m_maincpu(*this, "maincpu")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
-// required_device<mcs51_cpu_device> m_maincpu;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( age_candy )
@@ -46,9 +46,9 @@ void age_candy_state::machine_reset()
static MACHINE_CONFIG_START( age_candy, age_candy_state )
/* basic machine hardware */
-// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown (vectors at end? 6xxx ?)
-// MCFG_CPU_PROGRAM_MAP(age_candy_map)
-// MCFG_CPU_IO_MAP(age_candy_io)
+// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown (vectors at end? 6xxx ?)
+// MCFG_CPU_PROGRAM_MAP(age_candy_map)
+// MCFG_CPU_IO_MAP(age_candy_io)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -62,4 +62,3 @@ ROM_START( age_cand )
ROM_END
GAME( 19??, age_cand, 0, age_candy, age_candy, driver_device, 0, ROT0, "Advanced Game Engineering", "Candy Crane (AGE)", MACHINE_IS_SKELETON_MECHANICAL )
-
diff --git a/src/mame/drivers/airbustr.cpp b/src/mame/drivers/airbustr.cpp
index 51d80cbcf71..3a000c60c30 100644
--- a/src/mame/drivers/airbustr.cpp
+++ b/src/mame/drivers/airbustr.cpp
@@ -321,10 +321,10 @@ WRITE8_MEMBER(airbustr_state::soundcommand2_w)
WRITE8_MEMBER(airbustr_state::airbustr_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
- coin_lockout_w(machine(), 0, ~data & 4);
- coin_lockout_w(machine(), 1, ~data & 8);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 4);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 8);
}
/* Memory Maps */
diff --git a/src/mame/drivers/albazc.cpp b/src/mame/drivers/albazc.cpp
index 48febfde020..febf07ebf82 100644
--- a/src/mame/drivers/albazc.cpp
+++ b/src/mame/drivers/albazc.cpp
@@ -118,11 +118,11 @@ WRITE8_MEMBER(albazc_state::hanaroku_out_0_w)
7 meter5 (start)
*/
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 2, data & 0x04);
- coin_counter_w(machine(), 3, data & 0x08);
- coin_counter_w(machine(), 4, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(2, data & 0x04);
+ machine().bookkeeping().coin_counter_w(3, data & 0x08);
+ machine().bookkeeping().coin_counter_w(4, data & 0x80);
}
WRITE8_MEMBER(albazc_state::hanaroku_out_1_w)
diff --git a/src/mame/drivers/albazg.cpp b/src/mame/drivers/albazg.cpp
index 0d9dc4ced1a..9666975f2f3 100644
--- a/src/mame/drivers/albazg.cpp
+++ b/src/mame/drivers/albazg.cpp
@@ -192,9 +192,9 @@ WRITE8_MEMBER(albazg_state::mux_w)
WRITE8_MEMBER(albazg_state::yumefuda_output_w)
{
- coin_counter_w(machine(), 0, ~data & 4);
- coin_counter_w(machine(), 1, ~data & 2);
- coin_lockout_global_w(machine(), data & 1);
+ machine().bookkeeping().coin_counter_w(0, ~data & 4);
+ machine().bookkeeping().coin_counter_w(1, ~data & 2);
+ machine().bookkeeping().coin_lockout_global_w(data & 1);
//data & 0x10 hopper-c (active LOW)
//data & 0x08 divider (active HIGH)
flip_screen_set(~data & 0x20);
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/alesis.cpp b/src/mame/drivers/alesis.cpp
index 605305b6b64..ceda2d749d8 100644
--- a/src/mame/drivers/alesis.cpp
+++ b/src/mame/drivers/alesis.cpp
@@ -44,15 +44,15 @@ READ8_MEMBER( alesis_state::kb_r )
WRITE8_MEMBER( alesis_state::led_w )
{
- output_set_value("patt_led", data & 0x01 ? 1 : 0);
- output_set_value("song_led", data & 0x01 ? 0 : 1);
- output_set_value("play_led", data & 0x02 ? 0 : 1);
- output_set_value("record_led",data & 0x04 ? 0 : 1);
- output_set_value("voice_led", data & 0x08 ? 0 : 1);
- output_set_value("tune_led", data & 0x10 ? 0 : 1);
- output_set_value("mix_led", data & 0x20 ? 0 : 1);
- output_set_value("tempo_led", data & 0x40 ? 0 : 1);
- output_set_value("midi_led", data & 0x80 ? 0 : 1);
+ output().set_value("patt_led", data & 0x01 ? 1 : 0);
+ output().set_value("song_led", data & 0x01 ? 0 : 1);
+ output().set_value("play_led", data & 0x02 ? 0 : 1);
+ output().set_value("record_led",data & 0x04 ? 0 : 1);
+ output().set_value("voice_led", data & 0x08 ? 0 : 1);
+ output().set_value("tune_led", data & 0x10 ? 0 : 1);
+ output().set_value("mix_led", data & 0x20 ? 0 : 1);
+ output().set_value("tempo_led", data & 0x40 ? 0 : 1);
+ output().set_value("midi_led", data & 0x80 ? 0 : 1);
}
READ8_MEMBER( alesis_state::p3_r )
@@ -76,13 +76,13 @@ WRITE8_MEMBER( alesis_state::sr16_lcd_w )
WRITE8_MEMBER( alesis_state::mmt8_led_w )
{
- output_set_value("play_led", data & 0x01 ? 0 : 1);
- output_set_value("record_led" , data & 0x02 ? 0 : 1);
- output_set_value("part_led", data & 0x04 ? 0 : 1);
- output_set_value("edit_led", data & 0x08 ? 0 : 1);
- output_set_value("song_led", data & 0x10 ? 0 : 1);
- output_set_value("echo_led", data & 0x20 ? 0 : 1);
- output_set_value("loop_led", data & 0x40 ? 0 : 1);
+ output().set_value("play_led", data & 0x01 ? 0 : 1);
+ output().set_value("record_led" , data & 0x02 ? 0 : 1);
+ output().set_value("part_led", data & 0x04 ? 0 : 1);
+ output().set_value("edit_led", data & 0x08 ? 0 : 1);
+ output().set_value("song_led", data & 0x10 ? 0 : 1);
+ output().set_value("echo_led", data & 0x20 ? 0 : 1);
+ output().set_value("loop_led", data & 0x40 ? 0 : 1);
m_leds = data;
}
@@ -95,7 +95,7 @@ READ8_MEMBER( alesis_state::mmt8_led_r )
WRITE8_MEMBER( alesis_state::track_led_w )
{
for (int i=0; i<8; i++)
- output_set_indexed_value("track_led", i + 1, BIT(data, i));
+ output().set_indexed_value("track_led", i + 1, BIT(data, i));
}
READ8_MEMBER( alesis_state::mmt8_p3_r )
diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp
index e3003b2c940..17ca6b176e0 100644
--- a/src/mame/drivers/alg.cpp
+++ b/src/mame/drivers/alg.cpp
@@ -56,7 +56,6 @@ public:
DECLARE_DRIVER_INIT(pal);
DECLARE_VIDEO_START(alg);
- TIMER_CALLBACK_MEMBER(response_timer);
protected:
// amiga_state overrides
@@ -214,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 */
@@ -756,7 +755,7 @@ DRIVER_INIT_MEMBER(alg_state,aplatoon)
/* NOT DONE TODO FIGURE OUT THE RIGHT ORDER!!!! */
UINT8 *rom = memregion("user2")->base();
- UINT8 *decrypted = auto_alloc_array(machine(), UINT8, 0x40000);
+ std::unique_ptr<UINT8[]> decrypted = std::make_unique<UINT8[]>(0x40000);
int i;
static const int shuffle[] =
@@ -766,8 +765,8 @@ DRIVER_INIT_MEMBER(alg_state,aplatoon)
};
for (i = 0; i < 64; i++)
- memcpy(decrypted + i * 0x1000, rom + shuffle[i] * 0x1000, 0x1000);
- memcpy(rom, decrypted, 0x40000);
+ memcpy(decrypted.get() + i * 0x1000, rom + shuffle[i] * 0x1000, 0x1000);
+ memcpy(rom, decrypted.get(), 0x40000);
logerror("decrypt done\n ");
}
diff --git a/src/mame/drivers/aliens.cpp b/src/mame/drivers/aliens.cpp
index 3a059979220..907b16a65fa 100644
--- a/src/mame/drivers/aliens.cpp
+++ b/src/mame/drivers/aliens.cpp
@@ -20,8 +20,8 @@ Preliminary driver by:
WRITE8_MEMBER(aliens_state::aliens_coin_counter_w)
{
/* bits 0-1 = coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 5 = select work RAM or palette */
m_bank0000->set_bank((data & 0x20) >> 5);
diff --git a/src/mame/drivers/allied.cpp b/src/mame/drivers/allied.cpp
index c34ecd51e3d..9b96c72ab22 100644
--- a/src/mame/drivers/allied.cpp
+++ b/src/mame/drivers/allied.cpp
@@ -408,34 +408,34 @@ WRITE8_MEMBER( allied_state::ic4_b_w )
{
if (!BIT(data, i+4))
{
- output_set_digit_value(i*10, patterns[0]);
+ output().set_digit_value(i*10, patterns[0]);
segment = (m_player_score[i] >> 0) & 15;
- output_set_digit_value(i*10+1, patterns[segment]);
+ output().set_digit_value(i*10+1, patterns[segment]);
segment = (m_player_score[i] >> 4) & 15;
- output_set_digit_value(i*10+2, patterns[segment]);
+ output().set_digit_value(i*10+2, patterns[segment]);
segment = (m_player_score[i] >> 8) & 15;
- output_set_digit_value(i*10+3, patterns[segment]);
+ output().set_digit_value(i*10+3, patterns[segment]);
segment = (m_player_score[i] >> 12) & 15;
- output_set_digit_value(i*10+4, patterns[segment]);
+ output().set_digit_value(i*10+4, patterns[segment]);
segment = (m_player_score[i] >> 16) & 15;
- output_set_digit_value(i*10+5, patterns[segment]);
+ output().set_digit_value(i*10+5, patterns[segment]);
}
else
{
- output_set_digit_value(i*10, 0);
- output_set_digit_value(i*10+1, 0);
- output_set_digit_value(i*10+2, 0);
- output_set_digit_value(i*10+3, 0);
- output_set_digit_value(i*10+4, 0);
- output_set_digit_value(i*10+5, 0);
+ output().set_digit_value(i*10, 0);
+ output().set_digit_value(i*10+1, 0);
+ output().set_digit_value(i*10+2, 0);
+ output().set_digit_value(i*10+3, 0);
+ output().set_digit_value(i*10+4, 0);
+ output().set_digit_value(i*10+5, 0);
}
}
// doesn't seem to be a strobe for the credits display
segment = (m_player_score[4] >> 0) & 15;
- output_set_digit_value(40, patterns[segment]);
+ output().set_digit_value(40, patterns[segment]);
segment = (m_player_score[4] >> 4) & 15;
- output_set_digit_value(41, patterns[segment]);
+ output().set_digit_value(41, patterns[segment]);
// PB0-3 - player 1-4 LED - to do
}
@@ -569,12 +569,12 @@ WRITE8_MEMBER( allied_state::ic8_a_w )
// PB0-4 = ball 1-5 LED; PB5 = shoot again lamp
WRITE8_MEMBER( allied_state::ic8_b_w )
{
- output_set_value("led1", !BIT(data, 0));
- output_set_value("led2", !BIT(data, 1));
- output_set_value("led3", !BIT(data, 2));
- output_set_value("led4", !BIT(data, 3));
- output_set_value("led5", !BIT(data, 4));
- output_set_value("led6", !BIT(data, 5));
+ output().set_value("led1", !BIT(data, 0));
+ output().set_value("led2", !BIT(data, 1));
+ output().set_value("led3", !BIT(data, 2));
+ output().set_value("led4", !BIT(data, 3));
+ output().set_value("led5", !BIT(data, 4));
+ output().set_value("led6", !BIT(data, 5));
}
// this line not emulated in PinMAME, maybe it isn't needed
@@ -604,7 +604,7 @@ void allied_state::machine_reset()
m_ic6a2 = 0;
m_ic6b4 = 0;
m_ic6b7 = 0;
- output_set_value("led0", 1); //1=off
+ output().set_value("led0", 1); //1=off
}
static MACHINE_CONFIG_START( allied, allied_state )
diff --git a/src/mame/drivers/alpha68k.cpp b/src/mame/drivers/alpha68k.cpp
index 42ae3dc31ba..953cc63cd8d 100644
--- a/src/mame/drivers/alpha68k.cpp
+++ b/src/mame/drivers/alpha68k.cpp
@@ -202,7 +202,7 @@ DIP locations verified from manuals for:
WRITE16_MEMBER(alpha68k_state::tnextspc_coin_counters_w)
{
- coin_counter_w(machine(), offset, data & 0x01);
+ machine().bookkeeping().coin_counter_w(offset, data & 0x01);
}
WRITE16_MEMBER(alpha68k_state::tnextspc_unknown_w)
diff --git a/src/mame/drivers/alphasma.cpp b/src/mame/drivers/alphasma.cpp
index 2ef3f77f253..f7f0d58d3a5 100644
--- a/src/mame/drivers/alphasma.cpp
+++ b/src/mame/drivers/alphasma.cpp
@@ -62,7 +62,7 @@ protected:
UINT8 m_matrix[2];
UINT8 m_port_a;
UINT8 m_port_d;
- bitmap_ind16 * m_tmp_bitmap;
+ std::unique_ptr<bitmap_ind16> m_tmp_bitmap;
};
class asma2k_state : public alphasmart_state
@@ -404,7 +404,7 @@ void alphasmart_state::machine_start()
m_rambank->configure_entries(0, 4, ram, 0x8000);
m_nvram->set_base(ram, 0x8000*4);
- m_tmp_bitmap = auto_bitmap_ind16_alloc(machine(), 6*40, 9*4);
+ m_tmp_bitmap = std::make_unique<bitmap_ind16>(6 * 40, 9 * 4);
}
void alphasmart_state::machine_reset()
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/amaticmg.cpp b/src/mame/drivers/amaticmg.cpp
index 88e5c820560..3640330b2f3 100644
--- a/src/mame/drivers/amaticmg.cpp
+++ b/src/mame/drivers/amaticmg.cpp
@@ -594,10 +594,10 @@ WRITE8_MEMBER(amaticmg_state::out_a_w)
-x-- ---- HOLD4
*/
- output_set_lamp_value(0, (data >> 3) & 1); /* START */
- output_set_lamp_value(1, (data >> 4) & 1); /* BET */
- output_set_lamp_value(2, (data >> 5) & 1); /* HOLD3 */
- output_set_lamp_value(3, (data >> 6) & 1); /* HOLD4 */
+ output().set_lamp_value(0, (data >> 3) & 1); /* START */
+ output().set_lamp_value(1, (data >> 4) & 1); /* BET */
+ output().set_lamp_value(2, (data >> 5) & 1); /* HOLD3 */
+ output().set_lamp_value(3, (data >> 6) & 1); /* HOLD4 */
logerror("port A: %2X\n", data);
}
@@ -615,12 +615,12 @@ WRITE8_MEMBER(amaticmg_state::out_c_w)
x--- ---- Hopper motor
--x- x--- (unknown)
*/
- output_set_lamp_value(4, (data >> 1) & 1); /* HOLD1 */
- output_set_lamp_value(5, (data >> 4) & 1); /* HOLD2 */
- output_set_lamp_value(6, (data >> 6) & 1); /* CANCEL */
+ output().set_lamp_value(4, (data >> 1) & 1); /* HOLD1 */
+ output().set_lamp_value(5, (data >> 4) & 1); /* HOLD2 */
+ output().set_lamp_value(6, (data >> 6) & 1); /* CANCEL */
-// coin_counter_w(machine(), 0, data & 0x04); /* Coin In */
-// coin_counter_w(machine(), 1, data & 0x01); /* Coin Out */
+// machine().bookkeeping().coin_counter_w(0, data & 0x04); /* Coin In */
+// machine().bookkeeping().coin_counter_w(1, data & 0x01); /* Coin Out */
logerror("port C: %2X\n", data);
}
diff --git a/src/mame/drivers/ambush.cpp b/src/mame/drivers/ambush.cpp
index b4d9479edaa..835e601f91b 100644
--- a/src/mame/drivers/ambush.cpp
+++ b/src/mame/drivers/ambush.cpp
@@ -49,8 +49,8 @@
WRITE8_MEMBER(ambush_state::ambush_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
WRITE8_MEMBER(ambush_state::flip_screen_w)
diff --git a/src/mame/drivers/amerihok.cpp b/src/mame/drivers/amerihok.cpp
index 4a558aaaefd..aa8a19ae9e2 100644
--- a/src/mame/drivers/amerihok.cpp
+++ b/src/mame/drivers/amerihok.cpp
@@ -24,13 +24,13 @@ class amerihok_state : public driver_device
public:
amerihok_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- // ,m_maincpu(*this, "maincpu")
+ // ,m_maincpu(*this, "maincpu")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
-// required_device<mcs51_cpu_device> m_maincpu;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( amerihok )
@@ -50,9 +50,9 @@ void amerihok_state::machine_reset()
static MACHINE_CONFIG_START( amerihok, amerihok_state )
/* basic machine hardware */
-// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
-// MCFG_CPU_PROGRAM_MAP(amerihok_map)
-// MCFG_CPU_IO_MAP(amerihok_io)
+// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
+// MCFG_CPU_PROGRAM_MAP(amerihok_map)
+// MCFG_CPU_IO_MAP(amerihok_io)
// MCFG_CPU_VBLANK_INT_DRIVER("screen", amerihok_state, irq0_line_hold)
/* sound hardware */
@@ -75,4 +75,3 @@ ROM_START( amerihok )
ROM_END
GAME( 19??, amerihok, 0, amerihok, amerihok, driver_device, 0, ROT0, "<unknown>", "Ameri-Hockey", MACHINE_IS_SKELETON_MECHANICAL )
-
diff --git a/src/mame/drivers/amico2k.cpp b/src/mame/drivers/amico2k.cpp
index 3d692b34082..0bb1952d8a3 100644
--- a/src/mame/drivers/amico2k.cpp
+++ b/src/mame/drivers/amico2k.cpp
@@ -106,7 +106,7 @@ TIMER_CALLBACK_MEMBER(amico2k_state::led_refresh)
{
if (m_ls145_p > 3)
{
- output_set_digit_value(m_ls145_p - 4, m_segment);
+ output().set_digit_value(m_ls145_p - 4, m_segment);
}
}
diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp
index 047ef2929c8..edca3b6b9b9 100644
--- a/src/mame/drivers/amiga.cpp
+++ b/src/mame/drivers/amiga.cpp
@@ -909,7 +909,7 @@ WRITE8_MEMBER( cd32_state::akiko_cia_0_port_a_write )
m_cdda->set_output_gain(0, BIT(data, 0) ? 0.0 : 1.0);
// bit 1, power led
- set_led_status(machine(), 0, BIT(data, 1) ? 0 : 1);
+ output().set_led_value(0, BIT(data, 1) ? 0 : 1);
handle_cd32_joystick_cia(machine(), data, m_cia_0->read(space, 2));
}
@@ -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/ampoker2.cpp b/src/mame/drivers/ampoker2.cpp
index 3092d7f0101..16dd4560c80 100644
--- a/src/mame/drivers/ampoker2.cpp
+++ b/src/mame/drivers/ampoker2.cpp
@@ -479,10 +479,10 @@ WRITE8_MEMBER(ampoker2_state::ampoker2_port31_w)
BIT 4 = TWL_YELL ;Tower Light YELLOW
--------------------------------------------------*/
{
- output_set_lamp_value(1, ((data >> 1) & 1)); /* Lamp 1 - BET/RED */
- output_set_lamp_value(6, ((data >> 2) & 1)); /* Lamp 6 - HOLD 4 */
- output_set_lamp_value(4, ((data >> 3) & 1)); /* Lamp 4 - HOLD 2 */
- output_set_lamp_value(8, ((data >> 4) & 1)); /* Lamp 8 - TWR.YELLOW */
+ output().set_lamp_value(1, ((data >> 1) & 1)); /* Lamp 1 - BET/RED */
+ output().set_lamp_value(6, ((data >> 2) & 1)); /* Lamp 6 - HOLD 4 */
+ output().set_lamp_value(4, ((data >> 3) & 1)); /* Lamp 4 - HOLD 2 */
+ output().set_lamp_value(8, ((data >> 4) & 1)); /* Lamp 8 - TWR.YELLOW */
}
@@ -497,7 +497,7 @@ WRITE8_MEMBER(ampoker2_state::ampoker2_port32_w)
BIT 4 =
--------------------------------------------------*/
{
- output_set_lamp_value(5, ((data >> 3) & 1)); /* Lamp 5 - HOLD 3 */
+ output().set_lamp_value(5, ((data >> 3) & 1)); /* Lamp 5 - HOLD 3 */
}
@@ -526,7 +526,7 @@ WRITE8_MEMBER(ampoker2_state::ampoker2_port34_w)
BIT 4 = LAMP_2 ;Lamp 3 (BLACK)
--------------------------------------------------*/
{
- output_set_lamp_value(2, ((data >> 4) & 1)); /* Lamp 2 - BLACK */
+ output().set_lamp_value(2, ((data >> 4) & 1)); /* Lamp 2 - BLACK */
}
@@ -555,10 +555,10 @@ WRITE8_MEMBER(ampoker2_state::ampoker2_port36_w)
BIT 4 = LAMP_3 ;Lamp 3 (HOLD1)
--------------------------------------------------*/
{
- output_set_lamp_value(9, (data & 1)); /* Lamp 9 - TWR.GREEN */
- output_set_lamp_value(7, ((data >> 2) & 1)); /* Lamp 7 - HOLD 5 */
- output_set_lamp_value(0, ((data >> 3) & 1)); /* Lamp 0 - DEAL */
- output_set_lamp_value(3, ((data >> 4) & 1)); /* Lamp 3 - HOLD 1 */
+ output().set_lamp_value(9, (data & 1)); /* Lamp 9 - TWR.GREEN */
+ output().set_lamp_value(7, ((data >> 2) & 1)); /* Lamp 7 - HOLD 5 */
+ output().set_lamp_value(0, ((data >> 3) & 1)); /* Lamp 0 - DEAL */
+ output().set_lamp_value(3, ((data >> 4) & 1)); /* Lamp 3 - HOLD 1 */
}
diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp
index ea3092ee7ed..9ed26923a71 100644
--- a/src/mame/drivers/amusco.cpp
+++ b/src/mame/drivers/amusco.cpp
@@ -103,7 +103,6 @@ public:
MC6845_ON_UPDATE_ADDR_CHANGED(crtc_addr);
UINT32 screen_update_amusco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(amusco_interrupt);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<pic8259_device> m_pic;
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/apexc.cpp b/src/mame/drivers/apexc.cpp
index f20a6d29685..dd992f1a209 100644
--- a/src/mame/drivers/apexc.cpp
+++ b/src/mame/drivers/apexc.cpp
@@ -26,7 +26,7 @@ public:
be edited - the existence of this register is a personnal
guess */
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
UINT32 m_old_edit_keys;
int m_old_control_keys;
@@ -568,7 +568,7 @@ void apexc_state::video_start()
int width = m_screen->width();
int height = m_screen->height();
- m_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_bitmap = std::make_unique<bitmap_ind16>(width, height);
m_bitmap->fill(0, /*machine().visible_area*/teletyper_window);
}
diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp
index 2a797604051..38b1368ca32 100644
--- a/src/mame/drivers/apollo.cpp
+++ b/src/mame/drivers/apollo.cpp
@@ -905,13 +905,13 @@ void apollo_state::machine_reset()
// set configuration
omti8621_device::set_verbose(apollo_config(APOLLO_CONF_DISK_TRACE));
threecom3c505_device::set_verbose(apollo_config(APOLLO_CONF_NET_TRACE));
+#endif
if (apollo_config(APOLLO_CONF_NODE_ID))
{
// set node ID from UID of logical volume 1 of logical unit 0
m_node_id->set_node_id_from_disk();
}
-#endif
m_maincpu->set_instruction_hook(read32_delegate(FUNC(apollo_state::apollo_instruction_hook),this));
}
@@ -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/apple2e.cpp b/src/mame/drivers/apple2e.cpp
index 465abdc9b80..99bc10dc341 100644
--- a/src/mame/drivers/apple2e.cpp
+++ b/src/mame/drivers/apple2e.cpp
@@ -314,6 +314,8 @@ public:
DECLARE_READ8_MEMBER(c400_int_bank_r);
DECLARE_WRITE8_MEMBER(c400_w);
DECLARE_READ8_MEMBER(c800_r);
+ DECLARE_READ8_MEMBER(c800_int_r);
+ DECLARE_READ8_MEMBER(c800_b2_int_r);
DECLARE_WRITE8_MEMBER(c800_w);
DECLARE_READ8_MEMBER(inh_r);
DECLARE_WRITE8_MEMBER(inh_w);
@@ -1963,6 +1965,40 @@ READ8_MEMBER(apple2e_state::c800_r)
return read_floatingbus();
}
+READ8_MEMBER(apple2e_state::c800_int_r)
+{
+ if ((m_isiicplus) && (offset >= 0x600))
+ {
+ return m_iicplus_ce00[offset-0x600];
+ }
+
+ if (offset == 0x7ff)
+ {
+ m_cnxx_slot = CNXX_UNCLAIMED;
+ update_slotrom_banks();
+ return 0xff;
+ }
+
+ return m_rom_ptr[0x800 + offset];
+}
+
+READ8_MEMBER(apple2e_state::c800_b2_int_r)
+{
+ if ((m_isiicplus) && (offset >= 0x600))
+ {
+ return m_iicplus_ce00[offset-0x600];
+ }
+
+ if (offset == 0x7ff)
+ {
+ m_cnxx_slot = CNXX_UNCLAIMED;
+ update_slotrom_banks();
+ return 0xff;
+ }
+
+ return m_rom_ptr[0x4800 + offset];
+}
+
WRITE8_MEMBER(apple2e_state::c800_w)
{
if ((m_isiicplus) && (offset >= 0x600))
@@ -2385,8 +2421,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( c800bank_map, AS_PROGRAM, 8, apple2e_state )
AM_RANGE(0x0000, 0x07ff) AM_READWRITE(c800_r, c800_w)
- AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("maincpu", 0x800)
- AM_RANGE(0x1000, 0x17ff) AM_ROM AM_REGION("maincpu", 0x4800)
+ AM_RANGE(0x0800, 0x0fff) AM_READWRITE(c800_int_r, c800_w)
+ AM_RANGE(0x1000, 0x17ff) AM_READWRITE(c800_b2_int_r, c800_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( inhbank_map, AS_PROGRAM, 8, apple2e_state )
diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp
index db72b467e7f..f2cd3a9650a 100644
--- a/src/mame/drivers/applix.cpp
+++ b/src/mame/drivers/applix.cpp
@@ -117,8 +117,6 @@ public:
DECLARE_READ16_MEMBER(fdc_stat_r);
DECLARE_WRITE16_MEMBER(fdc_data_w);
DECLARE_WRITE16_MEMBER(fdc_cmd_w);
- DECLARE_WRITE_LINE_MEMBER(kbd_clock_w);
- DECLARE_WRITE_LINE_MEMBER(kbd_data_w);
DECLARE_FLOPPY_FORMATS(floppy_formats);
DECLARE_READ8_MEMBER( internal_data_read );
DECLARE_WRITE8_MEMBER( internal_data_write );
@@ -157,7 +155,6 @@ private:
UINT8 m_p3;
UINT16 m_last_write_addr;
UINT8 m_cass_data[4];
- int m_centronics_busy;
required_device<cpu_device> m_maincpu;
required_device<mc6845_device> m_crtc;
required_device<via6522_device> m_via;
diff --git a/src/mame/drivers/aquarium.cpp b/src/mame/drivers/aquarium.cpp
index 6c665a195ce..c8f0d7fb4b1 100644
--- a/src/mame/drivers/aquarium.cpp
+++ b/src/mame/drivers/aquarium.cpp
@@ -26,7 +26,7 @@ Notes:
- A bug in the program code causes the OKI to be reset on the very
first coin inserted.
-// Sound banking + video references
+// Sound banking + video references
// https://www.youtube.com/watch?v=nyAQPrkt_a4
// https://www.youtube.com/watch?v=0gn2Kj2M46Q
@@ -74,7 +74,7 @@ WRITE8_MEMBER(aquarium_state::aquarium_z80_bank_w)
// aquarium bank 0006 00ff - correct (select) 110
// aquarium bank 0005 00ff - level 1 (correct)
// (all music seems correct w/regards the reference video)
-
+
membank("bank1")->set_entry(data & 0x7);
}
@@ -349,7 +349,7 @@ ROM_START( aquarium )
ROM_LOAD16_WORD_SWAP( "aquar3.bin", 0x000000, 0x080000, CRC(f197991e) SHA1(0a217d735e2643605dbfd6ee20f98f46b37d4838) )
ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 (sound) code */
- ROM_LOAD( "aquar5", 0x000000, 0x40000, CRC(fa555be1) SHA1(07236f2b2ba67e92984b9ddf4a8154221d535245) )
+ ROM_LOAD( "aquar5", 0x000000, 0x40000, CRC(fa555be1) SHA1(07236f2b2ba67e92984b9ddf4a8154221d535245) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* BG Tiles */
ROM_LOAD( "aquar1", 0x000000, 0x080000, CRC(575df6ac) SHA1(071394273e512666fe124facdd8591a767ad0819) ) // 4bpp
@@ -378,7 +378,7 @@ ROM_START( aquariumj )
ROM_LOAD16_WORD_SWAP( "aquar3", 0x000000, 0x080000, CRC(344509a1) SHA1(9deb610732dee5066b3225cd7b1929b767579235) )
ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 (sound) code */
- ROM_LOAD( "aquar5", 0x000000, 0x40000, CRC(fa555be1) SHA1(07236f2b2ba67e92984b9ddf4a8154221d535245) )
+ ROM_LOAD( "aquar5", 0x000000, 0x40000, CRC(fa555be1) SHA1(07236f2b2ba67e92984b9ddf4a8154221d535245) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* BG Tiles */
ROM_LOAD( "aquar1", 0x000000, 0x080000, CRC(575df6ac) SHA1(071394273e512666fe124facdd8591a767ad0819) ) // 4bpp
diff --git a/src/mame/drivers/arabian.cpp b/src/mame/drivers/arabian.cpp
index ef74167bab0..a2155053875 100644
--- a/src/mame/drivers/arabian.cpp
+++ b/src/mame/drivers/arabian.cpp
@@ -86,8 +86,8 @@ WRITE8_MEMBER(arabian_state::ay8910_portb_w)
m_mcu->set_input_line(INPUT_LINE_RESET, data & 0x10 ? CLEAR_LINE : ASSERT_LINE);
/* clock the coin counters */
- coin_counter_w(machine(), 1, ~data & 0x02);
- coin_counter_w(machine(), 0, ~data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, ~data & 0x01);
}
diff --git a/src/mame/drivers/aristmk4.cpp b/src/mame/drivers/aristmk4.cpp
index 8bfe1535524..6d6a2b4b7e2 100644
--- a/src/mame/drivers/aristmk4.cpp
+++ b/src/mame/drivers/aristmk4.cpp
@@ -369,7 +369,7 @@ public:
int m_rtc_data_strobe;
UINT8 *m_shapeRomPtr;
UINT8 m_shapeRom[0xc000];
- UINT8 *m_nvram;
+ std::unique_ptr<UINT8[]> m_nvram;
UINT8 m_psg_data;
int m_ay8910_1;
int m_ay8910_2;
@@ -540,8 +540,8 @@ READ8_MEMBER(aristmk4_state::u3_p2)
int u3_p2_ret= ioport("5002")->read();
int u3_p3_ret= ioport("5003")->read();
- output_set_lamp_value(19, (u3_p2_ret >> 4) & 1); //auditkey light
- output_set_lamp_value(20, (u3_p3_ret >> 2) & 1); //jackpotkey light
+ output().set_lamp_value(19, (u3_p2_ret >> 4) & 1); //auditkey light
+ output().set_lamp_value(20, (u3_p3_ret >> 2) & 1); //jackpotkey light
if (m_u3_p0_w&0x20) // DOPTE on
{
@@ -695,10 +695,10 @@ WRITE8_MEMBER(aristmk4_state::mkiv_pia_outb)
switch(i+1)
{
case 4:
- output_set_value("creditspendmeter", emet[i]);
+ output().set_value("creditspendmeter", emet[i]);
break;
case 5:
- output_set_value("creditoutmeter", emet[i]);
+ output().set_value("creditoutmeter", emet[i]);
break;
default:
printf("Unhandled Mechanical meter %d pulse: %02d\n",i+1, emet[i]);
@@ -713,10 +713,10 @@ WRITE8_MEMBER(aristmk4_state::mkiv_pia_outb)
switch(i+1)
{
case 4:
- output_set_value("creditspendmeter", 0);
+ output().set_value("creditspendmeter", 0);
break;
case 5:
- output_set_value("creditoutmeter", 0);
+ output().set_value("creditoutmeter", 0);
break;
default:
break;
@@ -748,7 +748,7 @@ TIMER_CALLBACK_MEMBER(aristmk4_state::coin_input_reset)
TIMER_CALLBACK_MEMBER(aristmk4_state::hopper_reset)
{
m_hopper_motor = 0x01;
- output_set_value("hopper_motor", m_hopper_motor);
+ output().set_value("hopper_motor", m_hopper_motor);
}
// Port A read (SW1)
@@ -808,7 +808,7 @@ READ8_MEMBER(aristmk4_state::via_b_r)
ret=ret^0x40;
machine().scheduler().timer_set(attotime::from_msec(175), timer_expired_delegate(FUNC(aristmk4_state::hopper_reset),this));
m_hopper_motor=0x02;
- output_set_value("hopper_motor", m_hopper_motor);
+ output().set_value("hopper_motor", m_hopper_motor);
break;
case 0x01:
break; //default
@@ -918,42 +918,42 @@ WRITE_LINE_MEMBER(aristmk4_state::via_cb2_w)
else if (m_hopper_motor<0x02)
m_hopper_motor=state;
- output_set_value("hopper_motor", m_hopper_motor); // stop motor
+ output().set_value("hopper_motor", m_hopper_motor); // stop motor
}
// Lamp output
WRITE8_MEMBER(aristmk4_state::pblp_out)
{
- output_set_lamp_value(1, (data) & 1);
- output_set_lamp_value(5, (data >> 1) & 1);
- output_set_lamp_value(9, (data >> 2) & 1);
- output_set_lamp_value(11,(data >> 3) & 1);
- output_set_lamp_value(3, (data >> 4) & 1);
- output_set_lamp_value(4, (data >> 5) & 1);
- output_set_lamp_value(2, (data >> 6) & 1);
- output_set_lamp_value(10,(data >> 7) & 1);
+ output().set_lamp_value(1, (data) & 1);
+ output().set_lamp_value(5, (data >> 1) & 1);
+ output().set_lamp_value(9, (data >> 2) & 1);
+ output().set_lamp_value(11,(data >> 3) & 1);
+ output().set_lamp_value(3, (data >> 4) & 1);
+ output().set_lamp_value(4, (data >> 5) & 1);
+ output().set_lamp_value(2, (data >> 6) & 1);
+ output().set_lamp_value(10,(data >> 7) & 1);
//logerror("Lights port A %02X\n",data);
}
WRITE8_MEMBER(aristmk4_state::pbltlp_out)
{
- output_set_lamp_value(8, (data) & 1);
- output_set_lamp_value(12, (data >> 1) & 1);
- output_set_lamp_value(6, (data >> 2) & 1);
- output_set_lamp_value(7, (data >> 3) & 1);
- output_set_lamp_value(14, (data >> 4) & 1); // light tower
- output_set_lamp_value(15, (data >> 5) & 1); // light tower
- output_set_lamp_value(16, (data >> 6) & 1); // light tower
- output_set_lamp_value(17, (data >> 7) & 1); // light tower
+ output().set_lamp_value(8, (data) & 1);
+ output().set_lamp_value(12, (data >> 1) & 1);
+ output().set_lamp_value(6, (data >> 2) & 1);
+ output().set_lamp_value(7, (data >> 3) & 1);
+ output().set_lamp_value(14, (data >> 4) & 1); // light tower
+ output().set_lamp_value(15, (data >> 5) & 1); // light tower
+ output().set_lamp_value(16, (data >> 6) & 1); // light tower
+ output().set_lamp_value(17, (data >> 7) & 1); // light tower
//logerror("Lights port B: %02X\n",data);
}
WRITE8_MEMBER(aristmk4_state::mlamps)
{
/* TAKE WIN AND GAMBLE LAMPS */
- output_set_lamp_value(18, (data >> 5) & 1);
- output_set_lamp_value(13, (data >> 6) & 1);
+ output().set_lamp_value(18, (data >> 5) & 1);
+ output().set_lamp_value(13, (data >> 6) & 1);
}
WRITE8_MEMBER(aristmk4_state::zn434_w)
@@ -1661,12 +1661,12 @@ DRIVER_INIT_MEMBER(aristmk4_state,aristmk4)
{
m_shapeRomPtr = (UINT8 *)memregion("tile_gfx")->base();
memcpy(m_shapeRom,m_shapeRomPtr,sizeof(m_shapeRom)); // back up
- m_nvram = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_nvram = std::make_unique<UINT8[]>(0x1000);
}
void aristmk4_state::machine_start()
{
- save_pointer(NAME(m_nvram), 0x1000); // m_nvram
+ save_pointer(NAME(m_nvram.get()), 0x1000); // m_nvram
}
void aristmk4_state::machine_reset()
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/aristmk6.cpp b/src/mame/drivers/aristmk6.cpp
index 8351944fc8b..89b03477cb7 100644
--- a/src/mame/drivers/aristmk6.cpp
+++ b/src/mame/drivers/aristmk6.cpp
@@ -152,7 +152,7 @@ READ8_MEMBER(aristmk6_state::test_r)
default:
logerror("Unmapped read %08x\n", 0x13800000 + offset);
}
-
+
return 0;
}
diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp
index d0a245aa029..03dedcd5c4d 100644
--- a/src/mame/drivers/arkanoid.cpp
+++ b/src/mame/drivers/arkanoid.cpp
@@ -12,18 +12,19 @@
Here are the versions we have:
arkanoid The earlier revisions. They each differ in the country byte. These
- arkanoiduo versions work fine with the current MCU rom which needs to be
- arkanoidjb verified against a genuine decapped A75-06.IC16 M68705 MCU.
+ arkanoiduo versions work fine both the bootleg a75-06 MCU rom and the
+ arkanoidjb genuine decapped Taito A75-06.IC16 M68705 MCU.
arkanoidu USA version. A later revision, code has been inserted NOT patched.
The 68705 code for this one was not available; I made it up from
the current A75-06.IC16 changing the level data pointer table.
arkanoidj Japanese version. Final revision, MCU code not dumped.
arkanoidja Japanese version. A later revision with level selector.
- The 68705 code for this one was not available; I made it up from
- the current A75-06.IC16 changing the level data pointer table.
+ The 68705 code for this one was not available; I made it up from
+ the current A75-06.IC16 changing the level data pointer table.
arkanoidjbl Bootleg of the early Japanese version. The only difference is
- that the warning text has been replaced by "WAIT"
- This version works fine with the current A75-06.IC16 MCU ROM
+ that the warning text has been replaced by "WAIT"
+ This version came with its own 68705p3 MCU ROM which is based on
+ the original Taito one.
arkatayt Another bootleg of the early Japanese one, more heavily modified
arkblock Another bootleg of the early Japanese one, more heavily modified
arkbloc2 Another bootleg
@@ -61,8 +62,8 @@ white paint.
The following MCU images were tested on an original Arkanoid PCB using sets
'arkanoid', 'arkanoidu' and 'arkanoiduo' and work as expected.
-(1) MCU image with CRC 0x389a8cfb
-(2) MCU image with CRC 0x515d77b6
+(1) MCU image with CRC 0x389a8cfb <- this is a deprotected copy of the original Taito A75__06 MCU code
+(2) MCU image with CRC 0x515d77b6 <- this is a blackbox-reverse engineered bootleg MCU written by pirates
An MCU found on a Tournament Arkanoid PCB was an unprotected type MC68705P3
and when read the CRC matched (1). So we can assume the MCUs for Arkanoid and
@@ -196,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....
@@ -872,15 +873,74 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, arkanoid_state )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
+ ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x0000) AM_READWRITE(arkanoid_68705_port_a_r, arkanoid_68705_port_a_w)
AM_RANGE(0x0001, 0x0001) AM_READ_PORT("MUX")
AM_RANGE(0x0002, 0x0002) AM_READWRITE(arkanoid_68705_port_c_r, arkanoid_68705_port_c_w)
AM_RANGE(0x0004, 0x0004) AM_WRITE(arkanoid_68705_ddr_a_w)
AM_RANGE(0x0006, 0x0006) AM_WRITE(arkanoid_68705_ddr_c_w)
+ AM_RANGE(0x0008, 0x0008) AM_READWRITE(arkanoid_68705_tdr_r, arkanoid_68705_tdr_w)
+ AM_RANGE(0x0009, 0x0009) AM_READWRITE(arkanoid_68705_tcr_r, arkanoid_68705_tcr_w)
AM_RANGE(0x0010, 0x007f) AM_RAM
AM_RANGE(0x0080, 0x07ff) AM_ROM
ADDRESS_MAP_END
+/* MCU Hookup based on 'Arkanoid_TAITO_(Japan 1986) PCB.rar' from Taro and others at http://zx-pk.ru forums
+ic5 = 74ls669
+ic6 = 74ls669
+ic9 = 74ls257
+ic21 = 74ls393 (? counter)
+ic26 = 74ls74 (two semaphore latches; latch 1 is == m_z80HasWritten and is cleared by ?; latch 2 is == m_68705HasWritten and is set by PC3 being output low, and cleared by ?)
+ic27 = 74ls374 (mcu->z80 latch)
+ic28 = 74ls374 (z80->mcu latch)
+ic31 = 74ls74
+ic32 = 74ls273
+ic43 = 74ls157
+ic45 = 74ls74
+ic46 = 74ls08
+ic87 = 74ls74
+~VCC = 'pulled to vcc through a resistor'
+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)
+ +5v -- = VCC -- | 3 M 26 | <> PA6 = -> ic27.17 (7D)
+ ic43.1 (select) & ic45.11 (clock2) & ...elsewhere -> = EXTAL -> | 4 C 25 | <> PA5 = -> ic27.14 (6D)
+ GND -- = XTAL -> | 5 6 24 | <> PA4 = -> ic27.13 (5D)
+ +5v -- = VPP -- | 6 8 23 | <> PA3 = -> ic27.3 (1D)
+ic46.4 (A2) & ic31.4 (/preset1) & ic21.1 (1A) & ic87.9 (2Q) -> = TIMER/BOOT -> | 7 7 22 | <> PA2 = -> ic27.4 (2D)
+ ic26.5 (1Q) -> = (NUM) PC0 <> | 8 0 21 | <> PA1 = -> ic27.7 (3D)
+ ic26.8 (/2Q) & ic9.13 (I1D) -> = PC1 <> | 9 5 20 | <> PA0 = <> ic27.8 (4D) & ic28.9 (4Q)
+ ~VCC & ic26.3 (clock1) & ic28.1 (/OE) <- = PC2 <> | 10 P 19 | <> PB7 = <- ic6.11 (QD)
+ ~VCC & ic26.10 (/preset2) & ic27.11 (EnableG) <- = PC3 <> | 11 5 18 | <> PB6 = <- ic6.12 (QC)
+ ic5.14 (QA) -> = PB0 <> | 12 17 | <> PB5 = <- ic6.13 (QB)
+ ic5.13 (QB) -> = PB1 <> | 13 16 | <> PB4 = <- ic6.14 (QA)
+ ic5.12 (QC) -> = PB2 <> | 14 15 | <> PB3 = <- ic5.11 (QD)
+ +-------------------+
+
+The ic26 semaphores and the /int line:
+ic26 is a 74ls74 with two latches with positive edge triggering:
+latch 1 aka m_z80HasWritten:
+/Reset : <- system reset generator (watchdog?)
+Data : tied to GND on an inner plane
+Clock : <- 68705 PC2, triggered on rising edge, this clears the bit and the /INT
+/Preset : from z80, somehow.
+Q : -> 68705 PC0
+/Q : -> 68705 /INT and z80, somehow
+
+latch 2 aka m_68705HasWritten:
+/Reset : <- system reset generator (watchdog?)
+Data : tied to GND on an inner plane
+Clock : from z80, somehow; also is /oe of ic27
+/Preset : <- 68705 PC3
+Q : N/C
+/Q : -> 68705 PC1 and z80, somehow
+
+Note: despite having a signal on it (possibly vblank or one of the V counter bits), the TIMER/BOOT pin is seemingly never used by the MCU in input mode, so the signal is ignored.
+
+Note2: PA0 is connected to bit 0 of both the z80->68705 latch and the 68705->z80 latch. The board trace from http://zx-pk.ru is known to be incomplete, so its likely all of the PAx bits go both ways.
+*/
+
/***************************************************************************/
@@ -1185,41 +1245,55 @@ GFXDECODE_END
void arkanoid_state::machine_start()
{
- save_item(NAME(m_bootleg_cmd));
+ save_item(NAME(m_gfxbank));
+ save_item(NAME(m_palettebank));
save_item(NAME(m_paddle_select));
- save_item(NAME(m_z80write));
+
+ save_item(NAME(m_bootleg_id));
+ save_item(NAME(m_bootleg_cmd));
+
+ save_item(NAME(m_z80HasWritten));
save_item(NAME(m_fromz80));
- save_item(NAME(m_m68705write));
+ save_item(NAME(m_68705HasWritten));
save_item(NAME(m_toz80));
save_item(NAME(m_port_a_in));
save_item(NAME(m_port_a_out));
save_item(NAME(m_ddr_a));
-
+ save_item(NAME(m_port_c_internal));
save_item(NAME(m_port_c_out));
save_item(NAME(m_ddr_c));
-
- save_item(NAME(m_gfxbank));
- save_item(NAME(m_palettebank));
+ save_item(NAME(m_tdr));
+ save_item(NAME(m_tcr));
}
void arkanoid_state::machine_reset()
{
- m_port_a_in = 0;
- m_port_a_out = 0;
- m_z80write = 0;
- m_m68705write = 0;
+ m_gfxbank = 0;
+ m_palettebank = 0;
- m_bootleg_cmd = 0;
m_paddle_select = 0;
+
+ m_bootleg_cmd = 0;
+
+ // latched data bytes
m_fromz80 = 0;
m_toz80 = 0;
+ // 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.
+
+ m_port_a_in = 0;
+ m_port_a_out = 0;
m_ddr_a = 0;
- m_ddr_c = 0;
+ m_port_c_internal = 0;
m_port_c_out = 0;
- m_gfxbank = 0;
- m_palettebank = 0;
+ m_ddr_c = 0;
+ m_tdr = 0xFF;
+ m_tcr = 0x7F;
}
/*
@@ -1261,10 +1335,11 @@ static MACHINE_CONFIG_START( arkanoid, arkanoid_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("aysnd", YM2149, XTAL_12MHz/4/2) /* YM2149 clock is 3mhz, pin 26 is low so 3mhz/2 */
+ 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_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
@@ -1325,7 +1400,7 @@ static MACHINE_CONFIG_START( brixian, arkanoid_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", arkanoid_state, irq0_line_hold)
/* there is a 68705 but it's only role appears to be to copy data to RAM at startup */
- /* the RAM is also battery backed, making the 68705 almost reundant as long as the battery doesn't die(!) */
+ /* the RAM is also battery backed, making the 68705 almost redundant as long as the battery doesn't die(!) */
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1353,26 +1428,26 @@ MACHINE_CONFIG_END
/***************************************************************************/
/* ROMs */
-/* rom numbering, with guesses:
- A75 01 = Z80 code 1/2 v1.0 Japan
+/* rom numbering, with guesses for version numbers and missing roms:
+ A75 01 = Z80 code 1/2 v1.0 Japan (NOT DUMPED)
A75 01-1 = Z80 code 1/2 v1.1 Japan and USA/Romstar
A75 02 = Z80 code 2/2 v1.0 Japan
A75 03 = GFX 1/3
A75 04 = GFX 2/3
A75 05 = GFX 3/3
- A75 06 = MC68705P5 MCU code, v1.0 Japan and v1.0 USA/Romstar
+ A75 06 = MC68705P5 MCU code, v1.x Japan and v1.x USA/Romstar (verified to have crc&sha1 of 0be83647 and 625fd1e6061123df612f115ef14a06cd6009f5d1; the rom with crc&sha1 of 4e44b50a and c61e7d158dc8e2b003c8158053ec139b904599af is also probably legit as well, only differing due to a different fill in an unused area from the verified one )
A75 07 = PROM red
A75 08 = PROM green
A75 09 = PROM blue
A75 10 = Z80 code 2/2 v1.1 USA/Romstar
- A75 11 = Z80 code 2/2 v1.2 Japan (paired with 01-1 v1.1 Japan)
+ A75 11 = Z80 code 2/2 v1.2 Japan(World?) (paired with 01-1 v1.1 Japan)
(A75 12 through 17 are unknown, could be another two sets of z80 code plus mc68705p5)
A75 18 = Z80 code v2.0 2/2 USA/Romstar
A75 19 = Z80 code v2.0 1/2 USA/Romstar
A75 20 = MC68705P5 MCU code, v2.0 USA/Romstar
- A75 21 = Z80 code v2.0 1/2 Japan
- A75 22 = Z80 code v2.0 2/2 Japan
- A75 23 = MC68705P5 MCU code, v2.0 Japan
+ A75 21 = Z80 code v2.0 1/2 Japan w/level select
+ A75 22 = Z80 code v2.0 2/2 Japan w/level select
+ A75 23 = MC68705P5 MCU code, v2.0 Japan w/level select
A75 24 = Z80 code v2.1 1/2 Japan
A75 25 = Z80 code v2.1 2/2 Japan
A75 26 = MC68705P5 MCU code, v2.1 Japan
@@ -1385,16 +1460,17 @@ MACHINE_CONFIG_END
A75 33 = PROM red Tournament
A75 34 = PROM green Tournament
A75 35 = PROM blue Tournament
- (one of the 21/22/23 or 24/25/26 sets is likely 'world'? or are these really two japan sets?)
+ A75 36 = Z80 code 1/2 (Tournament v2.0?) (NOT DUMPED)
+ A75 37 = Z80 code 2/2 (Tournament v2.0?) (NOT DUMPED)
*/
-ROM_START( arkanoid )
+ROM_START( arkanoid ) // v1.2 Japan(world?)
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "a75-01-1.ic17", 0x0000, 0x8000, CRC(5bcda3b0) SHA1(52cadd38b5f8e8856f007a9c602d6b508f30be65) )
ROM_LOAD( "a75-11.ic16", 0x8000, 0x8000, CRC(eafd7191) SHA1(d2f8843b716718b1de209e97a874e8ce600f3f87) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a75-06.ic14", 0x0000, 0x0800, CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) // ok for this set
+ ROM_LOAD( "a75__06.ic14", 0x0000, 0x0800, CRC(0be83647) SHA1(625fd1e6061123df612f115ef14a06cd6009f5d1) ) // verified authentic v1.x MCU from Taito/Romstar Board
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -1407,20 +1483,20 @@ ROM_START( arkanoid )
ROM_LOAD( "a75-09.ic22", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) ) /* blue component */
// these were decapped, sort them!
- // None of these work with any genuine Arkanoid sets!
- ROM_REGION( 0x0800, "alt_mcus", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "arkanoid1_68705p3.ic14", 0x0000, 0x0800, CRC(1b68e2d8) SHA1(f642a7cb624ee14fb0e410de5ae1fc799d2fa1c2) ) // this is close to the supported MCU, is it a bootleg?
- ROM_LOAD( "arkanoid_mcu.ic14", 0x0000, 0x0800, CRC(4e44b50a) SHA1(c61e7d158dc8e2b003c8158053ec139b904599af) ) // this has a more genuine Programmed By Yasu 1986 string in it with 0x00 fill near the end
- ROM_LOAD( "arkanoid_68705p5.ic14", 0x0000, 0x0800, CRC(0be83647) SHA1(625fd1e6061123df612f115ef14a06cd6009f5d1) ) // same as above, but with 0xff fill
+ // All of these MCUs work in place of A75 06, see comments for each.
+ ROM_REGION( 0x1800, "alt_mcus", 0 ) /* 2k for the microcontroller */
+ ROM_LOAD( "arkanoid_mcu.ic14", 0x0800, 0x0800, CRC(4e44b50a) SHA1(c61e7d158dc8e2b003c8158053ec139b904599af) ) // This matches the legitimate Taito rom, with a "Programmed By Yasu 1986" string in it, but has a 0x00 fill after the end of the code instead of 0xFF. This matches the legit rom otherwise and may itself be legit, perhaps an artifact of a 68705 programmer at Taito using a sparse s-record/ihex file and not clearing the ram in the chip programmer to 0xFF (or 0x00?) before programming the MCU.
+ ROM_LOAD( "a75-06__bootleg_68705.ic14", 0x1000, 0x0800, CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) // This was NOT decapped, it came from an unprotected bootleg, and used to be used by the main set. It is definitely a bootleg mcu with no timer or int selftest, and compltely different code altogether, probably implemented by pirates by blackbox-reverse engineering the real MCU.
+ ROM_LOAD( "arkanoid1_68705p3.ic14", 0x0000, 0x0800, CRC(1b68e2d8) SHA1(f642a7cb624ee14fb0e410de5ae1fc799d2fa1c2) ) // This is the same as the 515d77b6 rom above except the bootrom (0x785-0x7f7) is intact. No other difference.
ROM_END
-ROM_START( arkanoidu )
+ROM_START( arkanoidu ) // V2.0 US/Romstar
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "a75-19.ic17", 0x0000, 0x8000, CRC(d3ad37d7) SHA1(a172a1ef5bb83ee2d8ed2842ef8968af19ad411e) )
ROM_LOAD( "a75-18.ic16", 0x8000, 0x8000, CRC(cdc08301) SHA1(05f54353cc8333af14fa985a2764960e20e8161a) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a75-20.ic14", 0x0000, 0x0800, BAD_DUMP CRC(de518e47) SHA1(b8eddd1c566505fb69e3d1207c7a9720dfb9f503) ) /* Hand crafted, need the decapped data here */
+ ROM_LOAD( "a75-20.ic14", 0x0000, 0x0800, BAD_DUMP CRC(de518e47) SHA1(b8eddd1c566505fb69e3d1207c7a9720dfb9f503) ) /* Hand crafted based on the bootleg a75-06 chip, need the real data here */
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -1434,13 +1510,13 @@ ROM_START( arkanoidu )
ROM_END
/* Observed on a real TAITO J1100075A pcb (with K1100181A sticker), pcb is white painted, and has a "ROMSTAR(C) // All Rights Reserved // Serial No. // No 14128" sticker */
-ROM_START( arkanoiduo )
+ROM_START( arkanoiduo ) // V1.1 USA/Romstar
ROM_REGION( 0x10000, "maincpu", 0 ) /* Silkscreen: "IC17 27256" and "IC16 27256" */
ROM_LOAD( "a75__01-1.ic17", 0x0000, 0x8000, CRC(5bcda3b0) SHA1(52cadd38b5f8e8856f007a9c602d6b508f30be65) )
ROM_LOAD( "a75__10.ic16", 0x8000, 0x8000, CRC(a1769e15) SHA1(fbb45731246a098b29eb08de5d63074b496aaaba) )
- ROM_REGION( 0x0800, "mcu", 0 ) /* Silkscreen: "IC14 P5", 2k for the MC68705P5S protected microcontroller */
- ROM_LOAD( "a75__06.ic14", 0x0000, 0x0800, BAD_DUMP CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) /* Possible bootleg code??, need to re-verify the real decapped/extracted data here */
+ ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
+ ROM_LOAD( "a75__06.ic14", 0x0000, 0x0800, CRC(0be83647) SHA1(625fd1e6061123df612f115ef14a06cd6009f5d1) ) // verified authentic v1.x MCU from Taito/Romstar Board
ROM_REGION( 0x18000, "gfx1", 0 ) /* Silkscreen: "IC62 27128/256", "IC63 27128/256", "IC64 27128/256" */
ROM_LOAD( "a75__03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -1451,15 +1527,18 @@ ROM_START( arkanoiduo )
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
-ROM_START( arkanoidj )
+ROM_START( arkanoidj ) // V2.1 Japan
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "a75_24.ic17", 0x0000, 0x8000, CRC(3f2b27e9) SHA1(656035f5292d6921448e74d3e1abab57b46e7d9e) )
ROM_LOAD( "a75_25.ic16", 0x8000, 0x8000, CRC(c13b2038) SHA1(0b8197b48e57ffe9ccad0ebbc24891d1da7c9880) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a75-26.ic14", 0x0000, 0x0800, BAD_DUMP CRC(962960d4) SHA1(64b065a54b1658364db569ac06b717eb7bdd186e) )
+ ROM_LOAD( "a75-26.ic14", 0x0000, 0x0800, BAD_DUMP CRC(962960d4) SHA1(64b065a54b1658364db569ac06b717eb7bdd186e) ) /* Hand crafted based on the bootleg a75-06 chip, need the real data here */
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -1472,14 +1551,14 @@ ROM_START( arkanoidj )
ROM_LOAD( "a75-09.ic22", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) ) /* blue component */
ROM_END
-ROM_START( arkanoidja )
+ROM_START( arkanoidja ) // V2.0 Japan w/level select
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "a75-21.ic17", 0x0000, 0x8000, CRC(bf0455fc) SHA1(250522b84b9f491c3f4efc391bf6aa6124361369) )
ROM_LOAD( "a75-22.ic16", 0x8000, 0x8000, CRC(3a2688d3) SHA1(9633a661352def3d85f95ca830f6d761b0b5450e) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
// the handcrafted value at 0x351 (0x9ddb) seems incorrect compared to other sets? (but it appears the value is never used, and the data it would usually point to does not exist in the program rom?)
- ROM_LOAD( "a75-23.ic14", 0x0000, 0x0800, BAD_DUMP CRC(0a4abef6) SHA1(fdce0b7a2eab7fd4f1f4fc3b93120b1ebc16078e) ) /* Hand crafted, need the decapped data here */
+ ROM_LOAD( "a75-23.ic14", 0x0000, 0x0800, BAD_DUMP CRC(0a4abef6) SHA1(fdce0b7a2eab7fd4f1f4fc3b93120b1ebc16078e) ) /* Hand crafted based on the bootleg a75-06 chip, need the real data here */
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -1492,13 +1571,13 @@ ROM_START( arkanoidja )
ROM_LOAD( "a75-09.ic22", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) ) /* blue component */
ROM_END
-ROM_START( arkanoidjb )
+ROM_START( arkanoidjb ) // V1.1 Japan
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "a75-01-1.ic17", 0x0000, 0x8000, CRC(5bcda3b0) SHA1(52cadd38b5f8e8856f007a9c602d6b508f30be65) )
ROM_LOAD( "a75-02.ic16", 0x8000, 0x8000, CRC(bbc33ceb) SHA1(e9b6fef98d0d20e77c7a1c25eff8e9a8c668a258) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a75-06.ic14", 0x0000, 0x0800, BAD_DUMP CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) /* Possible bootleg code??, need the decapped data here */
+ ROM_LOAD( "a75__06.ic14", 0x0000, 0x0800, CRC(0be83647) SHA1(625fd1e6061123df612f115ef14a06cd6009f5d1) ) // verified authentic v1.x MCU from Taito/Romstar Board
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -1512,13 +1591,13 @@ ROM_START( arkanoidjb )
ROM_END
-ROM_START( arkatour )
+ROM_START( arkatour ) // Tournament version
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "a75-27.ic17", 0x0000, 0x8000, CRC(e3b8faf5) SHA1(4c09478fa41881fa89ee6afb676aeb780f17ac2e) )
ROM_LOAD( "a75-28.ic16", 0x8000, 0x8000, CRC(326aca4d) SHA1(5a194b7a0361236d471b24905dc6434372f81252) )
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a75-32.ic14", 0x0000, 0x0800, BAD_DUMP CRC(d3249559) SHA1(b1542764450016614e9e03cedd6a2f1e59961789) ) /* Hand crafted, need the decapped data here */
+ ROM_LOAD( "a75-32.ic14", 0x0000, 0x0800, BAD_DUMP CRC(d3249559) SHA1(b1542764450016614e9e03cedd6a2f1e59961789) ) /* Hand crafted based on the bootleg a75-06 chip, need the real data here */
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a75-29.ic64", 0x00000, 0x8000, CRC(5ddea3cf) SHA1(58f16515898b7cc2697bf7663a60d9ca0db6da95) )
@@ -1531,14 +1610,15 @@ ROM_START( arkatour )
ROM_LOAD( "a75-35.ic22", 0x0400, 0x0200, CRC(38acfd3b) SHA1(2841e9db047aa039eff8567a518b6250b355507b) ) /* blue component */
ROM_END
-ROM_START( arkanoidjbl ) /* This set requires a MCU. The MCU code included doesn't seem to work??? See USER1 region below */
+// Everything from here on is bootlegs
+
+ROM_START( arkanoidjbl )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "e1.6d", 0x0000, 0x8000, CRC(dd4f2b72) SHA1(399a8636030a702dafc1da926f115df6f045bef1) ) /* Hacked up Notice warning text */
ROM_LOAD( "e2.6f", 0x8000, 0x8000, CRC(bbc33ceb) SHA1(e9b6fef98d0d20e77c7a1c25eff8e9a8c668a258) ) /* == A75-02.IC16 */
- /* Use the current A75-06.IC14 MCU code so the game is playable */
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a75-06.ic14", 0x0000, 0x0800, BAD_DUMP CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) /* Possible bootleg code??, need the decapped data here */
+ ROM_LOAD( "68705p3.6i", 0x0000, 0x0800, CRC(389a8cfb) SHA1(9530c051b61b5bdec7018c6fdc1ea91288a406bd) ) // This set had an unprotected mcu with a bootlegged copy of the real Taito a75__06.ic14 code, unlike the other bootlegs. It has the bootstrap code missing and the security bit cleared, the area after the rom filled with 0x00, and the verify mode disable jump removed. Otherwise it matches a75__06.ic14
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a75-03.rom", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -1550,9 +1630,6 @@ ROM_START( arkanoidjbl ) /* This set requires a MCU. The MCU code included doesn
ROM_LOAD( "a75-08.bpr", 0x0200, 0x0200, CRC(abb002fb) SHA1(c14f56b8ef103600862e7930709d293b0aa97a73) ) /* green component */
ROM_LOAD( "a75-09.bpr", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) ) /* blue component */
- /* Until we know what this MCU is supposed to do, we put it here */
- ROM_REGION( 0x0800, "user1", 0 )
- ROM_LOAD( "68705p3.6i", 0x0000, 0x0800, CRC(389a8cfb) SHA1(9530c051b61b5bdec7018c6fdc1ea91288a406bd) ) // this has the 1986 by Yasu copyright like some of the new decaps loaded in the parent set!
ROM_END
ROM_START( arkanoidjbl2 )
@@ -1561,7 +1638,7 @@ ROM_START( arkanoidjbl2 )
ROM_LOAD( "2.ic82", 0x8000, 0x8000, CRC(bbc33ceb) SHA1(e9b6fef98d0d20e77c7a1c25eff8e9a8c668a258) ) /* == A75-02.IC16 */
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a75-06.ic14", 0x0000, 0x0800, BAD_DUMP CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) /* Possible bootleg code??, need the decapped data here */
+ ROM_LOAD( "a75-06__bootleg_68705.ic14", 0x0000, 0x0800, BAD_DUMP CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) /* Uses the bootleg MCU? Not sure what mcu is supposed to go with this set... */
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a75-03.ic64", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -1581,7 +1658,7 @@ ROM_START( ark1ball ) /* This set requires a MCU. No MCU rom was supplied so we
/* Use the current A75-06.IC14 MCU code so the game is playable */
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
- ROM_LOAD( "a75-06.ic14", 0x0000, 0x0800, BAD_DUMP CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) /* Possible bootleg code??, need the decapped data here */
+ ROM_LOAD( "a75-06__bootleg_68705.ic14", 0x0000, 0x0800, BAD_DUMP CRC(515d77b6) SHA1(a302937683d11f663abd56a2fd7c174374e4d7fb) ) /* Uses the bootleg MCU? Not sure what mcu is supposed to go with this set... */
ROM_REGION( 0x18000, "gfx1", 0 )
ROM_LOAD( "a-3.3a", 0x00000, 0x8000, CRC(038b74ba) SHA1(ac053cc4908b4075f918748b89570e07a0ba5116) )
@@ -2048,12 +2125,12 @@ DRIVER_INIT_MEMBER(arkanoid_state,brixian)
/* Game Drivers */
// original sets of Arkanoid
-GAME( 1986, arkanoid, 0, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito Corporation Japan", "Arkanoid (World, oldest rev)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, arkanoidu, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, arkanoiduo, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, oldest rev)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, arkanoidj, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, arkanoidja, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, older rev)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, arkanoidjb, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, oldest rev)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoid, 0, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito Corporation Japan", "Arkanoid (World, older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidu, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, newer)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoiduo, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidj, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, newer)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidja, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, newer w/level select)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidjb, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, older)", MACHINE_SUPPORTS_SAVE )
// bootlegs of Arkanoid
GAME( 1986, arkanoidjbl, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, arkanoidjbl2,arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "bootleg (Beta)", "Arkanoid (bootleg with MCU, set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp
index 352de671596..e2a9dd65b3a 100644
--- a/src/mame/drivers/armedf.cpp
+++ b/src/mame/drivers/armedf.cpp
@@ -319,13 +319,13 @@ Notes:
WRITE16_MEMBER(armedf_state::terraf_io_w)
{
if(data & 0x4000 && ((m_vreg & 0x4000) == 0)) //0 -> 1 transition
- m_nb1414m4->exec((m_text_videoram[0] << 8) | (m_text_videoram[1] & 0xff),m_text_videoram,m_fg_scrollx,m_fg_scrolly,m_tx_tilemap);
+ m_nb1414m4->exec((m_text_videoram[0] << 8) | (m_text_videoram[1] & 0xff),m_text_videoram.get(),m_fg_scrollx,m_fg_scrolly,m_tx_tilemap);
COMBINE_DATA(&m_vreg);
- coin_counter_w(machine(), 0, (data & 1) >> 0);
- coin_counter_w(machine(), 1, (data & 2) >> 1);
+ machine().bookkeeping().coin_counter_w(0, (data & 1) >> 0);
+ machine().bookkeeping().coin_counter_w(1, (data & 2) >> 1);
flip_screen_set(m_vreg & 0x1000);
}
@@ -337,8 +337,8 @@ WRITE16_MEMBER(armedf_state::terrafjb_io_w)
COMBINE_DATA(&m_vreg);
- coin_counter_w(machine(), 0, (data & 1) >> 0);
- coin_counter_w(machine(), 1, (data & 2) >> 1);
+ machine().bookkeeping().coin_counter_w(0, (data & 1) >> 0);
+ machine().bookkeeping().coin_counter_w(1, (data & 2) >> 1);
flip_screen_set(m_vreg & 0x1000);
}
@@ -352,8 +352,8 @@ WRITE16_MEMBER(armedf_state::bootleg_io_w)
COMBINE_DATA(&m_vreg);
- coin_counter_w(machine(), 0, (data & 1) >> 0);
- coin_counter_w(machine(), 1, (data & 2) >> 1);
+ machine().bookkeeping().coin_counter_w(0, (data & 1) >> 0);
+ machine().bookkeeping().coin_counter_w(1, (data & 2) >> 1);
flip_screen_set(m_vreg & 0x1000);
}
@@ -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/asteroid.cpp b/src/mame/drivers/asteroid.cpp
index b8b8720c2bb..fc1d88c7169 100644
--- a/src/mame/drivers/asteroid.cpp
+++ b/src/mame/drivers/asteroid.cpp
@@ -207,7 +207,7 @@ There is not a rev 03 known or dumped. An Asteroids rev 03 is not mentioned in a
WRITE8_MEMBER(asteroid_state::astdelux_coin_counter_w)
{
- coin_counter_w(machine(), offset,data);
+ machine().bookkeeping().coin_counter_w(offset,data);
}
@@ -226,7 +226,7 @@ WRITE8_MEMBER(asteroid_state::llander_led_w)
};
for (int i = 0; i < 5; i++)
- output_set_value(lampname[i], (data >> (4 - i)) & 1);
+ output().set_value(lampname[i], (data >> (4 - i)) & 1);
}
diff --git a/src/mame/drivers/astinvad.cpp b/src/mame/drivers/astinvad.cpp
index ba265fb9fec..f98cccb3500 100644
--- a/src/mame/drivers/astinvad.cpp
+++ b/src/mame/drivers/astinvad.cpp
@@ -68,7 +68,7 @@ public:
required_device<palette_device> m_palette;
required_shared_ptr<UINT8> m_videoram;
- UINT8 * m_colorram;
+ std::unique_ptr<UINT8[]> m_colorram;
emu_timer *m_int_timer;
UINT8 m_sound_state[2];
UINT8 m_screen_flip;
@@ -117,10 +117,10 @@ protected:
VIDEO_START_MEMBER(astinvad_state,spaceint)
{
- m_colorram = auto_alloc_array(machine(), UINT8, m_videoram.bytes());
+ m_colorram = std::make_unique<UINT8[]>(m_videoram.bytes());
save_item(NAME(m_color_latch));
- save_pointer(NAME(m_colorram), m_videoram.bytes());
+ save_pointer(NAME(m_colorram.get()), m_videoram.bytes());
}
diff --git a/src/mame/drivers/astrafr.cpp b/src/mame/drivers/astrafr.cpp
index bbf281e33ba..578ac656b8a 100644
--- a/src/mame/drivers/astrafr.cpp
+++ b/src/mame/drivers/astrafr.cpp
@@ -33,11 +33,11 @@ public:
UINT32* m_cpuregion;
int m_cpuregion_size;
- UINT32* m_mainram;
+ std::unique_ptr<UINT32[]> m_mainram;
UINT32* m_slavecpuregion;
int m_slavecpuregion_size;
- UINT32* m_slaveram;
+ std::unique_ptr<UINT32[]> m_slaveram;
@@ -270,11 +270,11 @@ MACHINE_START_MEMBER(astrafr_state,astra_common)
{
m_cpuregion = (UINT32*)memregion( "maincpu" )->base();
m_cpuregion_size = memregion( "maincpu" )->bytes()/4;
- m_mainram = (UINT32*)auto_alloc_array_clear(machine(), UINT32, 0x10000);
+ m_mainram = make_unique_clear<UINT32[]>(0x10000);
m_slavecpuregion = (UINT32*)memregion( "slavecpu" )->base();
m_slavecpuregion_size = memregion( "slavecpu" )->bytes()/4;
- m_slaveram = (UINT32*)auto_alloc_array_clear(machine(), UINT32, 0x10000);
+ m_slaveram = make_unique_clear<UINT32[]>(0x10000);
}
diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp
index caa7bbfe118..a82199c5d06 100644
--- a/src/mame/drivers/astrcorp.cpp
+++ b/src/mame/drivers/astrcorp.cpp
@@ -223,18 +223,18 @@ WRITE16_MEMBER(astrocorp_state::showhand_outputs_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, (data & 0x0004)); // coin counter
- set_led_status(machine(), 0, (data & 0x0008)); // you win
- if ((data & 0x0010)) increment_dispensed_tickets(machine(), 1); // coin out
- set_led_status(machine(), 1, (data & 0x0020)); // coin/hopper jam
+ machine().bookkeeping().coin_counter_w(0, (data & 0x0004)); // coin counter
+ output().set_led_value(0, (data & 0x0008)); // you win
+ if ((data & 0x0010)) machine().bookkeeping().increment_dispensed_tickets(1); // coin out
+ output().set_led_value(1, (data & 0x0020)); // coin/hopper jam
}
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 2, (data & 0x0100)); // bet
- set_led_status(machine(), 3, (data & 0x0800)); // start
- set_led_status(machine(), 4, (data & 0x1000)); // ? select/choose
- set_led_status(machine(), 5, (data & 0x2000)); // ? select/choose
- set_led_status(machine(), 6, (data & 0x4000)); // look
+ output().set_led_value(2, (data & 0x0100)); // bet
+ output().set_led_value(3, (data & 0x0800)); // start
+ output().set_led_value(4, (data & 0x1000)); // ? select/choose
+ output().set_led_value(5, (data & 0x2000)); // ? select/choose
+ output().set_led_value(6, (data & 0x4000)); // look
}
// popmessage("%04X",data);
}
@@ -259,23 +259,23 @@ WRITE16_MEMBER(astrocorp_state::skilldrp_outputs_w)
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, (data & 0x0001)); // key in |
- coin_counter_w(machine(), 0, (data & 0x0002)); // coin in |- manual shows 1 in- and 1 out- counter
- coin_counter_w(machine(), 1, (data & 0x0004)); // key out |
+ machine().bookkeeping().coin_counter_w(0, (data & 0x0001)); // key in |
+ machine().bookkeeping().coin_counter_w(0, (data & 0x0002)); // coin in |- manual shows 1 in- and 1 out- counter
+ machine().bookkeeping().coin_counter_w(1, (data & 0x0004)); // key out |
machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (data & 0x0008)<<4); // hopper motor?
// (data & 0x0010) // hopper?
- set_led_status(machine(), 0, (data & 0x0020)); // error lamp (coin/hopper jam: "call attendant")
+ output().set_led_value(0, (data & 0x0020)); // error lamp (coin/hopper jam: "call attendant")
machine().device<ticket_dispenser_device>("ticket")->write(space, 0, data & 0x0080); // ticket motor?
}
if (ACCESSING_BITS_8_15)
{
// lamps:
- set_led_status(machine(), 1, (data & 0x0100)); // select
- set_led_status(machine(), 2, (data & 0x0400)); // take
- set_led_status(machine(), 3, (data & 0x0800)); // bet
- set_led_status(machine(), 4, (data & 0x1000)); // start
- set_led_status(machine(), 5, (data & 0x4000)); // win / test
- set_led_status(machine(), 6, (data & 0x8000)); // ticket?
+ output().set_led_value(1, (data & 0x0100)); // select
+ output().set_led_value(2, (data & 0x0400)); // take
+ output().set_led_value(3, (data & 0x0800)); // bet
+ output().set_led_value(4, (data & 0x1000)); // start
+ output().set_led_value(5, (data & 0x4000)); // win / test
+ output().set_led_value(6, (data & 0x8000)); // ticket?
}
// popmessage("%04X",data);
diff --git a/src/mame/drivers/astrocde.cpp b/src/mame/drivers/astrocde.cpp
index 9d72c9a9a5f..e9c745f1ecc 100644
--- a/src/mame/drivers/astrocde.cpp
+++ b/src/mame/drivers/astrocde.cpp
@@ -170,13 +170,13 @@ WRITE8_MEMBER(astrocde_state::seawolf2_lamps_w)
/* ------x- torpedo 3 available */
/* -------x torpedo 4 available */
- output_set_lamp_value((offset ^ 1) * 7 + 0, ( data >> 5) & 1); /* 0/7 = hit lamp */
- output_set_lamp_value((offset ^ 1) * 7 + 1, (~data >> 4) & 1); /* 1/8 = reload lamp */
- output_set_lamp_value((offset ^ 1) * 7 + 2, ( data >> 4) & 1); /* 2/9 = ready lamp */
- output_set_lamp_value((offset ^ 1) * 7 + 3, ( data >> 3) & 1); /* 3/10 = torpedo 1 lamp */
- output_set_lamp_value((offset ^ 1) * 7 + 4, ( data >> 2) & 1); /* 4/11 = torpedo 2 lamp */
- output_set_lamp_value((offset ^ 1) * 7 + 5, ( data >> 1) & 1); /* 5/12 = torpedo 3 lamp */
- output_set_lamp_value((offset ^ 1) * 7 + 6, ( data >> 0) & 1); /* 6/13 = torpedo 4 lamp */
+ output().set_lamp_value((offset ^ 1) * 7 + 0, ( data >> 5) & 1); /* 0/7 = hit lamp */
+ output().set_lamp_value((offset ^ 1) * 7 + 1, (~data >> 4) & 1); /* 1/8 = reload lamp */
+ output().set_lamp_value((offset ^ 1) * 7 + 2, ( data >> 4) & 1); /* 2/9 = ready lamp */
+ output().set_lamp_value((offset ^ 1) * 7 + 3, ( data >> 3) & 1); /* 3/10 = torpedo 1 lamp */
+ output().set_lamp_value((offset ^ 1) * 7 + 4, ( data >> 2) & 1); /* 4/11 = torpedo 2 lamp */
+ output().set_lamp_value((offset ^ 1) * 7 + 5, ( data >> 1) & 1); /* 5/12 = torpedo 3 lamp */
+ output().set_lamp_value((offset ^ 1) * 7 + 6, ( data >> 0) & 1); /* 6/13 = torpedo 4 lamp */
}
@@ -220,7 +220,7 @@ WRITE8_MEMBER(astrocde_state::seawolf2_sound_2_w)// Port 41
if (rising_bits & 0x10) m_samples->start(8, 3); /* Right Sonar */
if (rising_bits & 0x20) m_samples->start(3, 3); /* Left Sonar */
- coin_counter_w(machine(), 0, data & 0x40); /* Coin Counter */
+ machine().bookkeeping().coin_counter_w(0, data & 0x40); /* Coin Counter */
}
@@ -247,7 +247,7 @@ WRITE8_MEMBER(astrocde_state::ebases_trackball_select_w)
WRITE8_MEMBER(astrocde_state::ebases_coin_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
@@ -260,8 +260,8 @@ WRITE8_MEMBER(astrocde_state::ebases_coin_w)
READ8_MEMBER(astrocde_state::spacezap_io_r)
{
- coin_counter_w(machine(), 0, (offset >> 8) & 1);
- coin_counter_w(machine(), 1, (offset >> 9) & 1);
+ machine().bookkeeping().coin_counter_w(0, (offset >> 8) & 1);
+ machine().bookkeeping().coin_counter_w(1, (offset >> 9) & 1);
return m_p3handle ? m_p3handle->read() : 0xff;
}
@@ -279,13 +279,13 @@ READ8_MEMBER(astrocde_state::wow_io_r)
switch ((offset >> 9) & 7)
{
- case 0: coin_counter_w(machine(), 0, data); break;
- case 1: coin_counter_w(machine(), 1, data); break;
+ case 0: machine().bookkeeping().coin_counter_w(0, data); break;
+ case 1: machine().bookkeeping().coin_counter_w(1, data); break;
case 2: m_sparkle[0] = data; break;
case 3: m_sparkle[1] = data; break;
case 4: m_sparkle[2] = data; break;
case 5: m_sparkle[3] = data; break;
- case 7: coin_counter_w(machine(), 2, data); break;
+ case 7: machine().bookkeeping().coin_counter_w(2, data); break;
}
return 0xff;
}
@@ -304,8 +304,8 @@ READ8_MEMBER(astrocde_state::gorf_io_1_r)
switch ((offset >> 9) & 7)
{
- case 0: coin_counter_w(machine(), 0, data); break;
- case 1: coin_counter_w(machine(), 1, data); break;
+ case 0: machine().bookkeeping().coin_counter_w(0, data); break;
+ case 1: machine().bookkeeping().coin_counter_w(1, data); break;
case 2: m_sparkle[0] = data; break;
case 3: m_sparkle[1] = data; break;
case 4: m_sparkle[2] = data; break;
@@ -330,12 +330,12 @@ READ8_MEMBER(astrocde_state::gorf_io_2_r)
switch ((offset >> 9) & 7)
{
- case 0: output_set_lamp_value(0, data); break;
- case 1: output_set_lamp_value(1, data); break;
- case 2: output_set_lamp_value(2, data); break;
- case 3: output_set_lamp_value(3, data); break;
- case 4: output_set_lamp_value(4, data); break;
- case 5: output_set_lamp_value(5, data); break;
+ case 0: output().set_lamp_value(0, data); break;
+ case 1: output().set_lamp_value(1, data); break;
+ case 2: output().set_lamp_value(2, data); break;
+ case 3: output().set_lamp_value(3, data); break;
+ case 4: output().set_lamp_value(4, data); break;
+ case 5: output().set_lamp_value(5, data); break;
case 6: /* n/c */ break;
case 7: osd_printf_debug("io_2:%d\n", data); break;
}
@@ -356,11 +356,11 @@ READ8_MEMBER(astrocde_state::robby_io_r)
switch ((offset >> 9) & 7)
{
- case 0: coin_counter_w(machine(), 0, data); break;
- case 1: coin_counter_w(machine(), 1, data); break;
- case 2: coin_counter_w(machine(), 2, data); break;
- case 6: set_led_status(machine(), 0, data); break;
- case 7: set_led_status(machine(), 1, data); break;
+ case 0: machine().bookkeeping().coin_counter_w(0, data); break;
+ case 1: machine().bookkeeping().coin_counter_w(1, data); break;
+ case 2: machine().bookkeeping().coin_counter_w(2, data); break;
+ case 6: output().set_led_value(0, data); break;
+ case 7: output().set_led_value(1, data); break;
}
return 0xff;
}
@@ -375,22 +375,22 @@ READ8_MEMBER(astrocde_state::robby_io_r)
READ8_MEMBER(astrocde_state::profpac_io_1_r)
{
- coin_counter_w(machine(), 0, (offset >> 8) & 1);
- coin_counter_w(machine(), 1, (offset >> 9) & 1);
- set_led_status(machine(), 0, (offset >> 10) & 1);
- set_led_status(machine(), 1, (offset >> 11) & 1);
+ machine().bookkeeping().coin_counter_w(0, (offset >> 8) & 1);
+ machine().bookkeeping().coin_counter_w(1, (offset >> 9) & 1);
+ output().set_led_value(0, (offset >> 10) & 1);
+ output().set_led_value(1, (offset >> 11) & 1);
return 0xff;
}
READ8_MEMBER(astrocde_state::profpac_io_2_r)
{
- output_set_lamp_value(0, (offset >> 8) & 1); /* left lamp A */
- output_set_lamp_value(1, (offset >> 9) & 1); /* left lamp B */
- output_set_lamp_value(2, (offset >> 10) & 1); /* left lamp C */
- output_set_lamp_value(3, (offset >> 12) & 1); /* right lamp A */
- output_set_lamp_value(4, (offset >> 13) & 1); /* right lamp B */
- output_set_lamp_value(5, (offset >> 14) & 1); /* right lamp C */
+ output().set_lamp_value(0, (offset >> 8) & 1); /* left lamp A */
+ output().set_lamp_value(1, (offset >> 9) & 1); /* left lamp B */
+ output().set_lamp_value(2, (offset >> 10) & 1); /* left lamp C */
+ output().set_lamp_value(3, (offset >> 12) & 1); /* right lamp A */
+ output().set_lamp_value(4, (offset >> 13) & 1); /* right lamp B */
+ output().set_lamp_value(5, (offset >> 14) & 1); /* right lamp C */
return 0xff;
}
@@ -429,10 +429,10 @@ WRITE8_MEMBER(astrocde_state::profpac_banksw_w)
READ8_MEMBER(astrocde_state::demndrgn_io_r)
{
- coin_counter_w(machine(), 0, (offset >> 8) & 1);
- coin_counter_w(machine(), 1, (offset >> 9) & 1);
- set_led_status(machine(), 0, (offset >> 10) & 1);
- set_led_status(machine(), 1, (offset >> 11) & 1);
+ machine().bookkeeping().coin_counter_w(0, (offset >> 8) & 1);
+ machine().bookkeeping().coin_counter_w(1, (offset >> 9) & 1);
+ output().set_led_value(0, (offset >> 10) & 1);
+ output().set_led_value(1, (offset >> 11) & 1);
m_input_select = (offset >> 12) & 1;
return 0xff;
}
@@ -472,26 +472,26 @@ WRITE8_MEMBER(astrocde_state::tenpindx_lamp_w)
/* lamps */
if (offset == 0)
{
- output_set_lamp_value(0, (data >> 2) & 1);
- output_set_lamp_value(1, (data >> 3) & 1);
- output_set_lamp_value(2, (data >> 4) & 1);
- output_set_lamp_value(3, (data >> 5) & 1);
- output_set_lamp_value(4, (data >> 6) & 1);
- output_set_lamp_value(5, (data >> 7) & 1);
+ output().set_lamp_value(0, (data >> 2) & 1);
+ output().set_lamp_value(1, (data >> 3) & 1);
+ output().set_lamp_value(2, (data >> 4) & 1);
+ output().set_lamp_value(3, (data >> 5) & 1);
+ output().set_lamp_value(4, (data >> 6) & 1);
+ output().set_lamp_value(5, (data >> 7) & 1);
}
else
{
- output_set_lamp_value(6, (data >> 0) & 1);
- output_set_lamp_value(7, (data >> 1) & 1);
- output_set_lamp_value(8, (data >> 2) & 1);
- output_set_lamp_value(9, (data >> 3) & 1);
+ output().set_lamp_value(6, (data >> 0) & 1);
+ output().set_lamp_value(7, (data >> 1) & 1);
+ output().set_lamp_value(8, (data >> 2) & 1);
+ output().set_lamp_value(9, (data >> 3) & 1);
}
}
WRITE8_MEMBER(astrocde_state::tenpindx_counter_w)
{
- coin_counter_w(machine(), 0, (data >> 0) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 0) & 1);
if (data & 0xfc) osd_printf_debug("tenpindx_counter_w = %02X\n", data);
}
@@ -501,15 +501,15 @@ WRITE8_MEMBER(astrocde_state::tenpindx_lights_w)
/* "flashlights" */
int which = data >> 4;
- output_set_lamp_value(10, (which == 1));
- output_set_lamp_value(11, (which == 2));
- output_set_lamp_value(12, (which == 3));
- output_set_lamp_value(13, (which == 4));
- output_set_lamp_value(14, (which == 5));
- output_set_lamp_value(15, (which == 6));
- output_set_lamp_value(16, (which == 7));
- output_set_lamp_value(17, (which == 8));
- output_set_lamp_value(18, (which == 9));
+ output().set_lamp_value(10, (which == 1));
+ output().set_lamp_value(11, (which == 2));
+ output().set_lamp_value(12, (which == 3));
+ output().set_lamp_value(13, (which == 4));
+ output().set_lamp_value(14, (which == 5));
+ output().set_lamp_value(15, (which == 6));
+ output().set_lamp_value(16, (which == 7));
+ output().set_lamp_value(17, (which == 8));
+ output().set_lamp_value(18, (which == 9));
}
diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp
index 76e0dbed3f4..66d4584066f 100644
--- a/src/mame/drivers/astrof.cpp
+++ b/src/mame/drivers/astrof.cpp
@@ -106,7 +106,7 @@ INPUT_CHANGED_MEMBER(astrof_state::coin_inserted)
{
/* coin insertion causes an NMI */
m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
- coin_counter_w(machine(), 0, newval);
+ machine().bookkeeping().coin_counter_w(0, newval);
}
@@ -170,8 +170,8 @@ CUSTOM_INPUT_MEMBER(astrof_state::tomahawk_controls_r)
void astrof_state::video_start()
{
/* allocate the color RAM -- half the size of the video RAM as A0 is not connected */
- m_colorram = auto_alloc_array(machine(), UINT8, m_videoram.bytes() / 2);
- save_pointer(NAME(m_colorram), m_videoram.bytes() / 2);
+ m_colorram = std::make_unique<UINT8[]>(m_videoram.bytes() / 2);
+ save_pointer(NAME(m_colorram.get()), m_videoram.bytes() / 2);
}
diff --git a/src/mame/drivers/atari400.cpp b/src/mame/drivers/atari400.cpp
index 6be7bc28c37..17573b3bac9 100644
--- a/src/mame/drivers/atari400.cpp
+++ b/src/mame/drivers/atari400.cpp
@@ -291,8 +291,6 @@ public:
DECLARE_WRITE8_MEMBER(a130xe_low_w);
DECLARE_READ8_MEMBER(xegs_low_r);
DECLARE_WRITE8_MEMBER(xegs_low_w);
- DECLARE_READ8_MEMBER(xegs_high_r);
- DECLARE_WRITE8_MEMBER(xegs_high_w);
TIMER_DEVICE_CALLBACK_MEMBER(a400_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(a800xl_interrupt);
diff --git a/src/mame/drivers/atari_s1.cpp b/src/mame/drivers/atari_s1.cpp
index 69439f81b12..48bc91e6816 100644
--- a/src/mame/drivers/atari_s1.cpp
+++ b/src/mame/drivers/atari_s1.cpp
@@ -372,13 +372,13 @@ TIMER_DEVICE_CALLBACK_MEMBER( atari_s1_state::nmi )
// Player number
char wordnum[8];
sprintf(wordnum,"text%d",m_out_offs>>2);
- output_set_value(wordnum, !BIT(patterns[m_p_ram[m_out_offs]&15], 6)); // uses 'g' segment
+ output().set_value(wordnum, !BIT(patterns[m_p_ram[m_out_offs]&15], 6)); // uses 'g' segment
}
else
{
// Digits
- output_set_digit_value(m_out_offs << 1, patterns[m_p_ram[m_out_offs]>>4]);
- output_set_digit_value((m_out_offs << 1)+1, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(m_out_offs << 1, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value((m_out_offs << 1)+1, patterns[m_p_ram[m_out_offs]&15]);
}
}
diff --git a/src/mame/drivers/atari_s2.cpp b/src/mame/drivers/atari_s2.cpp
index 71b2c5035f4..1399a296577 100644
--- a/src/mame/drivers/atari_s2.cpp
+++ b/src/mame/drivers/atari_s2.cpp
@@ -350,7 +350,7 @@ WRITE8_MEMBER( atari_s2_state::display_w )
{
data &= 7;
for (UINT8 i = 0; i < 7; i++)
- output_set_digit_value(i * 10 + data, m_segment[i]);
+ output().set_digit_value(i * 10 + data, m_segment[i]);
}
}
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 ddb2f038808..a3ad029f96b 100644
--- a/src/mame/drivers/atarig1.cpp
+++ b/src/mame/drivers/atarig1.cpp
@@ -118,7 +118,7 @@ void atarig1_state::update_bank(int bank)
{
/* bank 0 comes from the copy we made earlier */
if (bank == 0)
- memcpy(m_bslapstic_base, m_bslapstic_bank0, 0x2000);
+ memcpy(m_bslapstic_base, m_bslapstic_bank0.get(), 0x2000);
else
memcpy(m_bslapstic_base, &m_bslapstic_base[bank * 0x1000], 0x2000);
@@ -172,8 +172,8 @@ void atarig1_state::pitfightb_cheap_slapstic_init()
m_bslapstic_base = m_maincpu->space(AS_PROGRAM).install_read_handler(0x038000, 0x03ffff, read16_delegate(FUNC(atarig1_state::pitfightb_cheap_slapstic_r),this));
/* allocate memory for a copy of bank 0 */
- m_bslapstic_bank0 = auto_alloc_array(machine(), UINT8, 0x2000);
- memcpy(m_bslapstic_bank0, m_bslapstic_base, 0x2000);
+ m_bslapstic_bank0 = std::make_unique<UINT8[]>(0x2000);
+ memcpy(m_bslapstic_bank0.get(), m_bslapstic_base, 0x2000);
/* not primed by default */
m_bslapstic_primed = false;
diff --git a/src/mame/drivers/atarigt.cpp b/src/mame/drivers/atarigt.cpp
index 4fe11fdd654..315d6e747dc 100644
--- a/src/mame/drivers/atarigt.cpp
+++ b/src/mame/drivers/atarigt.cpp
@@ -210,8 +210,8 @@ WRITE32_MEMBER(atarigt_state::latch_w)
if (ACCESSING_BITS_16_23)
{
//cage_reset_w(space, data & 0x00100000);
- coin_counter_w(machine(), 0, data & 0x00080000);
- coin_counter_w(machine(), 1, data & 0x00010000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x00080000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x00010000);
}
}
diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp
index 053d68c4b61..f06e1a98ed7 100644
--- a/src/mame/drivers/atarist.cpp
+++ b/src/mame/drivers/atarist.cpp
@@ -623,7 +623,7 @@ WRITE8_MEMBER( st_state::ikbd_port3_w )
*/
// caps lock led
- set_led_status(machine(), 1, BIT(data, 0));
+ output().set_led_value(1, BIT(data, 0));
// keyboard row select
m_ikbd_keylatch = (m_ikbd_keylatch & 0xff00) | data;
diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp
index 0d674b89268..bc643691371 100644
--- a/src/mame/drivers/atarisy1.cpp
+++ b/src/mame/drivers/atarisy1.cpp
@@ -415,7 +415,7 @@ READ8_MEMBER(atarisy1_state::via_pb_r)
WRITE8_MEMBER(atarisy1_state::led_w)
{
- set_led_status(machine(), offset, ~data & 1);
+ output().set_led_value(offset, ~data & 1);
}
diff --git a/src/mame/drivers/atarisy2.cpp b/src/mame/drivers/atarisy2.cpp
index 1486979e4f9..539e86f5a05 100644
--- a/src/mame/drivers/atarisy2.cpp
+++ b/src/mame/drivers/atarisy2.cpp
@@ -338,8 +338,8 @@ READ8_MEMBER(atarisy2_state::switch_6502_r)
WRITE8_MEMBER(atarisy2_state::switch_6502_w)
{
- set_led_status(machine(), 0, data & 0x04);
- set_led_status(machine(), 1, data & 0x08);
+ output().set_led_value(0, data & 0x04);
+ output().set_led_value(1, data & 0x08);
if (m_has_tms5220)
{
data = 12 | ((data >> 5) & 1);
@@ -736,8 +736,8 @@ WRITE8_MEMBER(atarisy2_state::tms5220_strobe_w)
WRITE8_MEMBER(atarisy2_state::coincount_w)
{
- coin_counter_w(machine(), 0, (data >> 0) & 1);
- coin_counter_w(machine(), 1, (data >> 1) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 0) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 1) & 1);
}
diff --git a/src/mame/drivers/atarisy4.cpp b/src/mame/drivers/atarisy4.cpp
index d03be4447b5..78af3c1417c 100644
--- a/src/mame/drivers/atarisy4.cpp
+++ b/src/mame/drivers/atarisy4.cpp
@@ -69,14 +69,14 @@ public:
required_memory_bank m_dsp0_bank1;
optional_memory_bank m_dsp1_bank1;
- atarisy4_renderer *m_renderer;
+ std::unique_ptr<atarisy4_renderer> m_renderer;
UINT8 m_r_color_table[256];
UINT8 m_g_color_table[256];
UINT8 m_b_color_table[256];
UINT16 m_dsp_bank[2];
UINT8 m_csr[2];
- UINT16 *m_shared_ram[2];
+ std::unique_ptr<UINT16[]> m_shared_ram[2];
DECLARE_WRITE16_MEMBER(gpu_w);
DECLARE_READ16_MEMBER(gpu_r);
@@ -179,9 +179,9 @@ atarisy4_renderer::atarisy4_renderer(atarisy4_state &state, screen_device &scree
{
}
- void atarisy4_state::video_start()
+void atarisy4_state::video_start()
{
- m_renderer = auto_alloc(machine(), atarisy4_renderer(*this, *m_screen));
+ m_renderer = std::make_unique<atarisy4_renderer>(*this, *m_screen);
}
void atarisy4_state::video_reset()
@@ -997,14 +997,14 @@ DRIVER_INIT_MEMBER(atarisy4_state,laststar)
address_space &main = m_maincpu->space(AS_PROGRAM);
/* Allocate 16kB of shared RAM */
- m_shared_ram[0] = auto_alloc_array_clear(machine(), UINT16, 0x2000);
+ m_shared_ram[0] = make_unique_clear<UINT16[]>(0x2000);
/* Populate the 68000 address space with data from the HEX files */
load_hexfile(main, memregion("code")->base());
load_hexfile(main, memregion("data")->base());
/* Set up the DSP */
- membank("dsp0_bank0")->set_base(m_shared_ram[0]);
+ membank("dsp0_bank0")->set_base(m_shared_ram[0].get());
m_dsp0_bank1->set_base(&m_shared_ram[0][0x800]);
load_ldafile(m_dsp0->space(AS_PROGRAM), memregion("dsp")->base());
}
@@ -1012,19 +1012,19 @@ DRIVER_INIT_MEMBER(atarisy4_state,laststar)
DRIVER_INIT_MEMBER(atarisy4_state,airrace)
{
/* Allocate two sets of 32kB shared RAM */
- m_shared_ram[0] = auto_alloc_array_clear(machine(), UINT16, 0x4000);
- m_shared_ram[1] = auto_alloc_array_clear(machine(), UINT16, 0x4000);
+ m_shared_ram[0] = make_unique_clear<UINT16[]>(0x4000);
+ m_shared_ram[1] = make_unique_clear<UINT16[]>(0x4000);
/* Populate RAM with data from the HEX files */
load_hexfile(m_maincpu->space(AS_PROGRAM), memregion("code")->base());
/* Set up the first DSP */
- membank("dsp0_bank0")->set_base(m_shared_ram[0]);
+ membank("dsp0_bank0")->set_base(m_shared_ram[0].get());
m_dsp0_bank1->set_base(&m_shared_ram[0][0x800]);
load_ldafile(m_dsp0->space(AS_PROGRAM), memregion("dsp")->base());
/* Set up the second DSP */
- membank("dsp1_bank0")->set_base(m_shared_ram[1]);
+ membank("dsp1_bank0")->set_base(m_shared_ram[1].get());
m_dsp1_bank1->set_base(&m_shared_ram[1][0x800]);
load_ldafile(m_dsp1->space(AS_PROGRAM), memregion("dsp")->base());
}
diff --git a/src/mame/drivers/ataxx.cpp b/src/mame/drivers/ataxx.cpp
index 17c85b40d0d..6cf04fe60aa 100644
--- a/src/mame/drivers/ataxx.cpp
+++ b/src/mame/drivers/ataxx.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
+// copyright-holders:Aaron Giles,Paul Leaman
/***************************************************************************
Leland Ataxx-era driver
diff --git a/src/mame/drivers/atetris.cpp b/src/mame/drivers/atetris.cpp
index 76a157c57a7..61892668c33 100644
--- a/src/mame/drivers/atetris.cpp
+++ b/src/mame/drivers/atetris.cpp
@@ -157,8 +157,8 @@ READ8_MEMBER(atetris_state::slapstic_r)
WRITE8_MEMBER(atetris_state::coincount_w)
{
- coin_counter_w(machine(), 0, (data >> 5) & 1);
- coin_counter_w(machine(), 1, (data >> 4) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 5) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 4) & 1);
}
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/avalnche.cpp b/src/mame/drivers/avalnche.cpp
index 6fa16e5616e..b52c51aa261 100644
--- a/src/mame/drivers/avalnche.cpp
+++ b/src/mame/drivers/avalnche.cpp
@@ -91,23 +91,23 @@ WRITE8_MEMBER(avalnche_state::avalance_video_invert_w)
WRITE8_MEMBER(avalnche_state::catch_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
WRITE8_MEMBER(avalnche_state::avalance_credit_1_lamp_w)
{
- set_led_status(machine(), 0, data & 1);
+ output().set_led_value(0, data & 1);
}
WRITE8_MEMBER(avalnche_state::avalance_credit_2_lamp_w)
{
- set_led_status(machine(), 1, data & 1);
+ output().set_led_value(1, data & 1);
}
WRITE8_MEMBER(avalnche_state::avalance_start_lamp_w)
{
- set_led_status(machine(), 2, data & 1);
+ output().set_led_value(2, data & 1);
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, avalnche_state )
diff --git a/src/mame/drivers/avt.cpp b/src/mame/drivers/avt.cpp
index 20ddc6ec0d1..5a752526f81 100644
--- a/src/mame/drivers/avt.cpp
+++ b/src/mame/drivers/avt.cpp
@@ -446,7 +446,6 @@ public:
tilemap_t *m_bg_tilemap;
UINT8 m_crtc_vreg[0x100],m_crtc_index;
- DECLARE_WRITE8_MEMBER(debug_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start() override;
DECLARE_PALETTE_INIT(avt);
diff --git a/src/mame/drivers/babbage.cpp b/src/mame/drivers/babbage.cpp
index 8812456ac39..f3d9c187fc8 100644
--- a/src/mame/drivers/babbage.cpp
+++ b/src/mame/drivers/babbage.cpp
@@ -161,7 +161,7 @@ WRITE8_MEMBER( babbage_state::pio1_b_w )
for (int i = 0; i < 8; i++)
{
sprintf(ledname,"led%d",i);
- output_set_value(ledname, BIT(data, i));
+ output().set_value(ledname, BIT(data, i));
}
}
@@ -182,7 +182,7 @@ WRITE8_MEMBER( babbage_state::pio2_b_w )
m_step = true;
}
else
- output_set_digit_value(data, m_segment);
+ output().set_digit_value(data, m_segment);
}
static const z80_daisy_config babbage_daisy_chain[] =
diff --git a/src/mame/drivers/backfire.cpp b/src/mame/drivers/backfire.cpp
index 98341a9867c..9ca90c212e8 100644
--- a/src/mame/drivers/backfire.cpp
+++ b/src/mame/drivers/backfire.cpp
@@ -47,8 +47,8 @@ public:
{ }
/* memory pointers */
- UINT16 * m_spriteram_1;
- UINT16 * m_spriteram_2;
+ std::unique_ptr<UINT16[]> m_spriteram_1;
+ std::unique_ptr<UINT16[]> m_spriteram_2;
required_shared_ptr<UINT32> m_mainram;
required_shared_ptr<UINT32> m_left_priority;
required_shared_ptr<UINT32> m_right_priority;
@@ -56,8 +56,8 @@ public:
optional_device<decospr_device> m_sprgen2;
/* video related */
- bitmap_ind16 *m_left;
- bitmap_ind16 *m_right;
+ std::unique_ptr<bitmap_ind16> m_left;
+ std::unique_ptr<bitmap_ind16> m_right;
/* devices */
required_device<cpu_device> m_maincpu;
@@ -72,7 +72,6 @@ public:
UINT16 m_pf3_rowscroll[0x0800/2];
UINT16 m_pf4_rowscroll[0x0800/2];
DECLARE_READ32_MEMBER(backfire_control2_r);
- DECLARE_READ32_MEMBER(backfire_control3_r);
DECLARE_WRITE32_MEMBER(backfire_nonbuffered_palette_w);
DECLARE_READ32_MEMBER(backfire_pf1_rowscroll_r);
DECLARE_READ32_MEMBER(backfire_pf2_rowscroll_r);
@@ -87,9 +86,6 @@ public:
DECLARE_READ32_MEMBER(backfire_spriteram2_r);
DECLARE_WRITE32_MEMBER(backfire_spriteram2_w);
DECLARE_READ32_MEMBER(backfire_speedup_r);
- DECLARE_READ32_MEMBER(backfire_unknown_wheel_r);
- DECLARE_READ32_MEMBER(backfire_wheel1_r);
- DECLARE_READ32_MEMBER(backfire_wheel2_r);
DECLARE_READ32_MEMBER(backfire_eeprom_r);
DECLARE_WRITE32_MEMBER(backfire_eeprom_w);
DECLARE_DRIVER_INIT(backfire);
@@ -115,8 +111,8 @@ public:
/* I'm using the functions in deco16ic.c ... same chips, why duplicate code? */
void backfire_state::video_start()
{
- m_spriteram_1 = auto_alloc_array(machine(), UINT16, 0x2000/2);
- m_spriteram_2 = auto_alloc_array(machine(), UINT16, 0x2000/2);
+ m_spriteram_1 = std::make_unique<UINT16[]>(0x2000/2);
+ m_spriteram_2 = std::make_unique<UINT16[]>(0x2000/2);
/* and register the allocated ram so that save states still work */
save_item(NAME(m_pf1_rowscroll));
@@ -124,11 +120,11 @@ void backfire_state::video_start()
save_item(NAME(m_pf3_rowscroll));
save_item(NAME(m_pf4_rowscroll));
- m_left = auto_bitmap_ind16_alloc(machine(), 80*8, 32*8);
- m_right = auto_bitmap_ind16_alloc(machine(), 80*8, 32*8);
+ m_left = std::make_unique<bitmap_ind16>(80*8, 32*8);
+ m_right = std::make_unique<bitmap_ind16>(80*8, 32*8);
- save_pointer(NAME(m_spriteram_1), 0x2000/2);
- save_pointer(NAME(m_spriteram_2), 0x2000/2);
+ save_pointer(NAME(m_spriteram_1.get()), 0x2000/2);
+ save_pointer(NAME(m_spriteram_2.get()), 0x2000/2);
save_item(NAME(*m_left));
save_item(NAME(*m_right));
@@ -153,13 +149,13 @@ UINT32 backfire_state::screen_update_backfire_left(screen_device &screen, bitmap
{
m_deco_tilegen2->tilemap_1_draw(screen, bitmap, cliprect, 0, 1);
m_deco_tilegen1->tilemap_1_draw(screen, bitmap, cliprect, 0, 2);
- m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram_1, 0x800);
+ m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram_1.get(), 0x800);
}
else if (m_left_priority[0] == 2)
{
m_deco_tilegen1->tilemap_1_draw(screen, bitmap, cliprect, 0, 2);
m_deco_tilegen2->tilemap_1_draw(screen, bitmap, cliprect, 0, 4);
- m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram_1, 0x800);
+ m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram_1.get(), 0x800);
}
else
popmessage( "unknown left priority %08x", m_left_priority[0]);
@@ -184,13 +180,13 @@ UINT32 backfire_state::screen_update_backfire_right(screen_device &screen, bitma
{
m_deco_tilegen2->tilemap_2_draw(screen, bitmap, cliprect, 0, 1);
m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, 0, 2);
- m_sprgen2->draw_sprites(bitmap, cliprect, m_spriteram_2, 0x800);
+ m_sprgen2->draw_sprites(bitmap, cliprect, m_spriteram_2.get(), 0x800);
}
else if (m_right_priority[0] == 2)
{
m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, 0, 2);
m_deco_tilegen2->tilemap_2_draw(screen, bitmap, cliprect, 0, 4);
- m_sprgen2->draw_sprites(bitmap, cliprect, m_spriteram_2, 0x800);
+ m_sprgen2->draw_sprites(bitmap, cliprect, m_spriteram_2.get(), 0x800);
}
else
popmessage( "unknown right priority %08x", m_right_priority[0]);
diff --git a/src/mame/drivers/bagman.cpp b/src/mame/drivers/bagman.cpp
index 0d2f28aab57..8090f0cbc42 100644
--- a/src/mame/drivers/bagman.cpp
+++ b/src/mame/drivers/bagman.cpp
@@ -120,7 +120,7 @@ WRITE8_MEMBER(bagman_state::ls259_w)
WRITE8_MEMBER(bagman_state::coincounter_w)
{
- coin_counter_w(machine(), offset,data);
+ machine().bookkeeping().coin_counter_w(offset,data);
}
WRITE8_MEMBER(bagman_state::irq_mask_w)
@@ -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/baraduke.cpp b/src/mame/drivers/baraduke.cpp
index ff5f32bf094..16522d28f32 100644
--- a/src/mame/drivers/baraduke.cpp
+++ b/src/mame/drivers/baraduke.cpp
@@ -119,9 +119,9 @@ WRITE8_MEMBER(baraduke_state::inputport_select_w)
m_inputport_selected = data & 0x07;
else if ((data & 0xe0) == 0xc0)
{
- coin_lockout_global_w(machine(), ~data & 1);
- coin_counter_w(machine(), 0,data & 2);
- coin_counter_w(machine(), 1,data & 4);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 2);
+ machine().bookkeeping().coin_counter_w(1,data & 4);
}
}
@@ -150,8 +150,8 @@ READ8_MEMBER(baraduke_state::inputport_r)
WRITE8_MEMBER(baraduke_state::baraduke_lamps_w)
{
- set_led_status(machine(), 0,data & 0x08);
- set_led_status(machine(), 1,data & 0x10);
+ output().set_led_value(0,data & 0x08);
+ output().set_led_value(1,data & 0x10);
}
WRITE8_MEMBER(baraduke_state::baraduke_irq_ack_w)
diff --git a/src/mame/drivers/barata.cpp b/src/mame/drivers/barata.cpp
index 0953db8959d..e4e2b974ca5 100644
--- a/src/mame/drivers/barata.cpp
+++ b/src/mame/drivers/barata.cpp
@@ -53,6 +53,8 @@ public:
DECLARE_WRITE8_MEMBER(port0_w);
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:
@@ -153,26 +155,27 @@ const char* mode_strings[] = {
"Set counter values"
};
-static void fpga_send(device_t *device, unsigned char cmd){
+void barata_state::fpga_send(unsigned char cmd)
+{
static unsigned char byte = 0;
static unsigned char mode = FPGA_WAITING_FOR_NEW_CMD;
static unsigned char lamp_data = 0;
- device->logerror("FPGA CMD: %d\n", cmd);
+ logerror("FPGA CMD: %d\n", cmd);
if (mode == FPGA_WAITING_FOR_NEW_CMD){
if (cmd < FPGA_WAITING_FOR_NEW_CMD){
mode = cmd;
byte=1;
- device->logerror("SET FPGA MODE: %s\n", mode_strings[mode]);
+ logerror("SET FPGA MODE: %s\n", mode_strings[mode]);
if (mode == FPGA_PLAY_BGM){
- device->logerror("PLAY_BGM.\n");
+ logerror("PLAY_BGM.\n");
mode = FPGA_WAITING_FOR_NEW_CMD;
}
if (mode == FPGA_STOP_BGM){
- device->logerror("STOP_BGM.\n");
+ logerror("STOP_BGM.\n");
mode = FPGA_WAITING_FOR_NEW_CMD;
}
}
@@ -195,10 +198,10 @@ static void fpga_send(device_t *device, unsigned char cmd){
if (erase_all){
// logerror("LED: ERASE ALL\n");
for (int i=0; i<16; i++){
- output_set_led_value(i, 1);
+ output().set_led_value(i, 1);
}
} else {
- output_set_led_value(lamp_index, state ? 0 : 1);
+ output().set_led_value(lamp_index, state ? 0 : 1);
}
default:
mode = FPGA_WAITING_FOR_NEW_CMD;
@@ -226,11 +229,11 @@ static void fpga_send(device_t *device, unsigned char cmd){
counter_data = (counter_data << 3) | cmd;
if (counter_state){
- output_set_digit_value(2*counter_bank, 0);
- output_set_digit_value(2*counter_bank+1, 0);
+ output().set_digit_value(2*counter_bank, 0);
+ output().set_digit_value(2*counter_bank+1, 0);
} else {
- output_set_digit_value(2*counter_bank, dec_7seg(counter_data/10));
- output_set_digit_value(2*counter_bank+1, dec_7seg(counter_data%10));
+ output().set_digit_value(2*counter_bank, dec_7seg(counter_data/10));
+ output().set_digit_value(2*counter_bank+1, dec_7seg(counter_data%10));
}
default:
mode = FPGA_WAITING_FOR_NEW_CMD;
@@ -248,7 +251,7 @@ static void fpga_send(device_t *device, unsigned char cmd){
break;
case 2:
sample_index = (sample_index << 3) | cmd;
- device->logerror("PLAY_SAMPLE #%d.\n", sample_index);
+ logerror("PLAY_SAMPLE #%d.\n", sample_index);
default:
mode = FPGA_WAITING_FOR_NEW_CMD;
break;
@@ -263,7 +266,7 @@ WRITE8_MEMBER(barata_state::fpga_w)
static unsigned char old_data = 0;
if (!BIT(old_data, 5) && BIT(data, 5)){
//process the command sent to the FPGA
- fpga_send(this, (data >> 2) & 7);
+ fpga_send((data >> 2) & 7);
}
old_data = data;
}
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/battlane.cpp b/src/mame/drivers/battlane.cpp
index bacf394c722..815b8b00976 100644
--- a/src/mame/drivers/battlane.cpp
+++ b/src/mame/drivers/battlane.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
diff --git a/src/mame/drivers/battlera.cpp b/src/mame/drivers/battlera.cpp
index b6c756b811f..fc008ff5351 100644
--- a/src/mame/drivers/battlera.cpp
+++ b/src/mame/drivers/battlera.cpp
@@ -7,12 +7,12 @@
Emulation by Bryan McPhail, mish@tendril.co.uk
- This board is based on the Hudson HuC6280 and Huc6270 IC's used in
+ This board is based on the Hudson HuC6280 and Huc6270 IC's used in
the NEC PC-Engine.
-
+
Differences from PC-Engine console:
Input ports are different (2 dips, 2 joysticks, 1 coin port)
- _Interface_ to palette is different (Huc6260 isn't present),
+ _Interface_ to palette is different (Huc6260 isn't present),
palette data is the same.
Extra sound chips (YM2203 & Oki M5205), and extra HuC6280 processor to drive them.
Twice as much VRAM (128kb).
@@ -20,7 +20,7 @@
Todo:
- There seems to be a bug with a stuck note from the YM2203 FM channel
at the start of scene 3 and near the ending when your characters are
- flying over a forest in a helicopter.
+ flying over a forest in a helicopter.
This is verified to NOT happen on real hardware - Guru
**********************************************************************
@@ -64,7 +64,7 @@ Notes:
DEC-01 - Hudson HuC6280 6502-based CPU with in-built Programmable Sound Generator
used as the main CPU. Clock input is 21.4772MHz and is divided internally
by 3 for the CPU (7.15906MHz) and by 6 for the PSG (3.579533MHz), although
- in this case the PSG isn't used. The Hudson markings have been scratch off
+ in this case the PSG isn't used. The Hudson markings have been scratch off
and the IC is labelled 'DEC-01'
45 - Hudson HuC6280 6502-based CPU with in-built PSG used as the sound CPU
Clock input is 21.4772MHz and is divided internally by 3 for the CPU
diff --git a/src/mame/drivers/battlnts.cpp b/src/mame/drivers/battlnts.cpp
index d3596e2d1b5..e4fa41bac78 100644
--- a/src/mame/drivers/battlnts.cpp
+++ b/src/mame/drivers/battlnts.cpp
@@ -43,8 +43,8 @@ WRITE8_MEMBER(battlnts_state::battlnts_bankswitch_w)
m_rombank->set_entry((data & 0xc0) >> 6);
/* bits 4 & 5 = coin counters */
- coin_counter_w(machine(), 0, data & 0x10);
- coin_counter_w(machine(), 1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
/* other bits unknown */
}
diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp
index 3deeebc5a1f..1450a44a654 100644
--- a/src/mame/drivers/bbc.cpp
+++ b/src/mame/drivers/bbc.cpp
@@ -32,7 +32,7 @@
Acorn Business Computer
- ABC110 - 64K, 10MB HDD, Z80, CP/M 2.2
+ ABC110 - 64K, 10MB HDD, Z80, CP/M 2.2
ABC210/ACW443 - 4096K, 20MB HDD, 32016, PanOS
ABC310 - 1024K, 10MB HDD, 80286, DOS 3.1/GEM
@@ -386,13 +386,13 @@ static INPUT_PORTS_START(bbc_keyboard)
PORT_START("COL9")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LEFT") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DOWN") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("UP") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DELETE") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("COPY") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END))
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_START("BRK")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BREAK") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12)) PORT_CHANGED_MEMBER(DEVICE_SELF, bbc_state, trigger_reset, 0)
@@ -441,6 +441,49 @@ static INPUT_PORTS_START(bbc_keypad)
INPUT_PORTS_END
+static INPUT_PORTS_START(torch_keyboard)
+ PORT_MODIFY("COL9")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MOVE LEFT") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LOWERCASE") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("UPPERCASE") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DELETE THIS") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MOVE PAST") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END))
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MOVE RIGHT") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
+
+ PORT_MODIFY("COL10")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad +") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad /") PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD))
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad #") PORT_CODE(KEYCODE_NUMLOCK) PORT_CHAR(UCHAR_MAMEKEY(NUMLOCK))
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
+
+ PORT_MODIFY("COL11")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad DELETE") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad *") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK))
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
+
+ PORT_MODIFY("COL12")
+ 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_KEYBOARD) PORT_NAME("Keypad RETURN") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_STOP) PORT_CHAR(UCHAR_MAMEKEY(STOP))
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad ,") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(UCHAR_MAMEKEY(COMMA))
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START(bbc_dipswitch)
PORT_MODIFY("COL2")
PORT_DIPNAME(0x01, 0x01, "Default File System") PORT_DIPLOCATION("KBD:1")
@@ -651,6 +694,13 @@ static INPUT_PORTS_START(bbcbp)
PORT_INCLUDE(bbc_joy)
INPUT_PORTS_END
+static INPUT_PORTS_START(torch)
+ PORT_INCLUDE(bbc_keyboard)
+ PORT_INCLUDE(torch_keyboard)
+ PORT_INCLUDE(bbcb_links)
+ PORT_INCLUDE(bbc_joy)
+INPUT_PORTS_END
+
static INPUT_PORTS_START(abc)
PORT_INCLUDE(bbc_keyboard)
PORT_INCLUDE(bbc_keypad)
@@ -684,6 +734,7 @@ WRITE_LINE_MEMBER(bbc_state::bbcb_acia6850_irq_w)
FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_bbc )
FLOPPY_BBC_DFS_FORMAT,
FLOPPY_BBC_CPM_FORMAT,
+ FLOPPY_BBC_CPN_FORMAT,
FLOPPY_FSD_FORMAT
FLOPPY_FORMATS_END
@@ -691,6 +742,7 @@ FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_bbcm )
FLOPPY_BBC_DFS_FORMAT,
FLOPPY_BBC_ADFS_FORMAT,
FLOPPY_BBC_CPM_FORMAT,
+ FLOPPY_BBC_CPN_FORMAT,
FLOPPY_BBC_DOS_FORMAT,
FLOPPY_FSD_FORMAT
FLOPPY_FORMATS_END
@@ -879,13 +931,22 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
MCFG_FLOPPY_DRIVE_ADD("i8271:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_bbc)
MCFG_FLOPPY_DRIVE_SOUND(true)
+ /* econet */
+ MCFG_DEVICE_ADD("mc6854", MC6854, 0)
+ MCFG_MC6854_OUT_TXD_CB(DEVWRITELINE(ECONET_TAG, econet_device, data_w))
+ MCFG_ECONET_ADD()
+ MCFG_ECONET_CLK_CALLBACK(WRITELINE(bbc_state, econet_clk_w))
+ MCFG_ECONET_DATA_CALLBACK(DEVWRITELINE("mc6854", mc6854_device, set_rx))
+ 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
@@ -910,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
@@ -922,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
@@ -960,6 +1021,47 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Torch Computers
+
+****************************************************************************/
+
+
+static MACHINE_CONFIG_DERIVED( torchf, bbcb )
+ /* basic machine hardware */
+ MCFG_MACHINE_START_OVERRIDE(bbc_state, torch)
+ MCFG_MACHINE_RESET_OVERRIDE(bbc_state, torch)
+
+ /* Add Torch Z80 Communicator co-processor */
+
+ /* software lists */
+ 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
+
+
+static MACHINE_CONFIG_DERIVED( torchh10, torchf )
+ /* fdc */
+ MCFG_DEVICE_REMOVE("i8271:1")
+
+ /* Add 10MB HDD */
+
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( torchh21, torchf )
+ /* fdc */
+ MCFG_DEVICE_REMOVE("i8271:1")
+
+ /* Add 21MB HDD */
+
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
+
Acorn Business Computers
****************************************************************************/
@@ -982,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
@@ -1004,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
@@ -1024,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
@@ -1059,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
@@ -1140,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)
@@ -1208,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
@@ -1260,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
@@ -1269,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
@@ -1523,10 +1629,42 @@ ROM_START(bbcb_us)
ROM_DEFAULT_BIOS("os10b3")
ROM_SYSTEM_BIOS( 0, "os10b3", "OS A1.0 / BASIC3" )
ROMX_LOAD("usmos10.rom", 0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1))
- ROMX_LOAD("usbasic3.rom", 0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
+ ROMX_LOAD("usbasic3.rom", 0x38000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
ROM_LOAD("viewa210.rom", 0x30000, 0x4000, CRC(4345359f) SHA1(88c93df1854f5fbe6cd6e5f0e29a8bf4ea3b5614))
- ROM_LOAD("usdnfs10.rom", 0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
+ ROM_LOAD("usdnfs10.rom", 0x34000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phrom_us.bin", 0x0000, 0x4000, CRC(bf4b3b64) SHA1(66876702d1d95eecc034d20f25047f893a27cde5))
+ROM_END
+
+
+ROM_START(torchf)
+ ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
+
+ ROM_REGION(0x44000,"option",0) /* ROM */
+ /* rom page 12 30000 IC52 BASIC */
+ /* rom page 13 34000 IC88 DNFS */
+ /* rom page 14 38000 IC100 CPN */
+ /* rom page 15 3c000 IC101 SPARE SOCKET */
+ ROM_LOAD("os12.rom", 0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d)) /* os */
+
+ ROM_LOAD("basic2.rom", 0x0c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
+ ROM_LOAD("dnfs120-201666.rom", 0x34000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
+
+ 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, "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)
ROM_COPY("option", 0x40000, 0, 0x4000)
@@ -1536,6 +1674,12 @@ ROM_START(bbcb_us)
ROM_END
+#define rom_torchh10 rom_torchf
+
+
+#define rom_torchh21 rom_torchf
+
+
ROM_START(bbcbp)
ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
@@ -1558,7 +1702,7 @@ ROM_START(bbcbp)
/* rom page 11 2c000 IC68 SPARE SOCKET */
/* rom page 12 30000 SWRAM (B+ 128K only) */
/* rom page 13 34000 SWRAM (B+ 128K only) */
- /* rom page 14 38000 32K IN PAGE 15 */
+ /* rom page 14 38000 IC71 32K IN PAGE 15 */
/* rom page 15 3C000 IC71 BASIC */
ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
@@ -1693,11 +1837,11 @@ ROM_START(bbcm)
ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
ROM_REGION(0x44000,"option",0) /* ROM */
- ROM_DEFAULT_BIOS("mos350")
- ROM_SYSTEM_BIOS( 0, "mos350", "Enhanced MOS 3.50" )
- ROMX_LOAD("mos350.ic24", 0x20000, 0x20000, CRC(141027b9) SHA1(85211b5bc7c7a269952d2b063b7ec0e1f0196803), ROM_BIOS(1))
- ROM_SYSTEM_BIOS( 1, "mos320", "Original MOS 3.20" )
- ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0f747ebe) SHA1(eacacbec3892dc4809ad5800e6c8299ff9eb528f), ROM_BIOS(2))
+ ROM_DEFAULT_BIOS("mos320")
+ ROM_SYSTEM_BIOS( 0, "mos320", "Original MOS 3.20" )
+ ROMX_LOAD("mos320.ic24", 0x20000, 0x20000, CRC(0f747ebe) SHA1(eacacbec3892dc4809ad5800e6c8299ff9eb528f), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS( 1, "mos350", "Enhanced MOS 3.50" )
+ ROMX_LOAD("mos350.ic24", 0x20000, 0x20000, CRC(141027b9) SHA1(85211b5bc7c7a269952d2b063b7ec0e1f0196803), ROM_BIOS(2))
ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
ROM_FILL(0x20000, 0x4000, 0xFFFF)
/* 00000 rom 0 SK3 Rear Cartridge bottom 16K */
@@ -1951,15 +2095,18 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP ( 1981, bbcb, 0, bbca, bbcb, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B w/8271 FDC", MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1981, bbca, bbcb, 0, bbca, bbca, bbc_state, bbc, "Acorn", "BBC Micro Model A", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1982, torchf, bbcb, 0, torchf, torch, bbc_state, bbc, "Torch", "Torch CF240", MACHINE_IMPERFECT_KEYBOARD | MACHINE_NOT_WORKING)
+COMP ( 1982, torchh10, bbcb, 0, torchh10, torch, bbc_state, bbc, "Torch", "Torch CH240/10", MACHINE_IMPERFECT_KEYBOARD | MACHINE_NOT_WORKING)
+COMP ( 1982, torchh21, bbcb, 0, torchh21, torch, bbc_state, bbc, "Torch", "Torch CH240/21", MACHINE_IMPERFECT_KEYBOARD | MACHINE_NOT_WORKING)
COMP ( 1982, bbcb_de, bbcb, 0, bbcb_de, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B (German)", MACHINE_IMPERFECT_GRAPHICS)
COMP ( 1983, bbcb_us, bbcb, 0, bbcb_us, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B (US)", MACHINE_IMPERFECT_GRAPHICS)
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, 0, 0, acw443, abc, bbc_state, bbc, "Acorn", "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING)
-COMP ( 1985, abc110, acw443, 0, abc110, abc, bbc_state, bbc, "Acorn", "ABC 110", MACHINE_NOT_WORKING)
-COMP ( 1985, abc310, acw443, 0, abc310, abc, bbc_state, bbc, "Acorn", "ABC 310", MACHINE_NOT_WORKING)
-COMP ( 1985, reutapm, 0, 0, reutapm, bbcb, bbc_state, bbc, "Acorn", "Reuters APM", MACHINE_NO_SOUND | 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)
COMP ( 1986, bbcmt, bbcm, 0, bbcmt, bbcm, bbc_state, bbc, "Acorn", "BBC Master Turbo", MACHINE_NOT_WORKING)
COMP ( 1986, bbcmaiv, bbcm, 0, bbcmaiv, bbcm, bbc_state, bbc, "Acorn", "BBC Master AIV", MACHINE_NOT_WORKING)
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/bbusters.cpp b/src/mame/drivers/bbusters.cpp
index f3cde4a2359..e515416b646 100644
--- a/src/mame/drivers/bbusters.cpp
+++ b/src/mame/drivers/bbusters.cpp
@@ -292,15 +292,15 @@ WRITE16_MEMBER(bbusters_state::gun_select_w)
WRITE16_MEMBER(bbusters_state::two_gun_output_w)
{
- output_set_value("Player1_Gun_Recoil",(data & 0x01));
- output_set_value("Player2_Gun_Recoil",(data & 0x02)>>1);
+ output().set_value("Player1_Gun_Recoil",(data & 0x01));
+ output().set_value("Player2_Gun_Recoil",(data & 0x02)>>1);
}
WRITE16_MEMBER(bbusters_state::three_gun_output_w)
{
- output_set_value("Player1_Gun_Recoil",(data & 0x01));
- output_set_value("Player2_Gun_Recoil",(data & 0x02)>>1);
- output_set_value("Player3_Gun_Recoil",(data & 0x04)>>2);
+ output().set_value("Player1_Gun_Recoil",(data & 0x01));
+ output().set_value("Player2_Gun_Recoil",(data & 0x02)>>1);
+ output().set_value("Player3_Gun_Recoil",(data & 0x04)>>2);
}
READ16_MEMBER(bbusters_state::kludge_r)
diff --git a/src/mame/drivers/beathead.cpp b/src/mame/drivers/beathead.cpp
index 2f7b18f674f..79221b41aa4 100644
--- a/src/mame/drivers/beathead.cpp
+++ b/src/mame/drivers/beathead.cpp
@@ -263,7 +263,7 @@ WRITE32_MEMBER( beathead_state::sound_reset_w )
WRITE32_MEMBER( beathead_state::coin_count_w )
{
- coin_counter_w(machine(), 0, !offset);
+ machine().bookkeeping().coin_counter_w(0, !offset);
}
diff --git a/src/mame/drivers/berzerk.cpp b/src/mame/drivers/berzerk.cpp
index 81d28ee6c4c..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)
@@ -124,7 +123,7 @@ static const UINT8 nmi_trigger_v256s [NMIS_PER_FRAME] = { 0x00, 0x00, 0x00, 0x00
READ8_MEMBER(berzerk_state::led_on_r)
{
- set_led_status(machine(), 0, 1);
+ output().set_led_value(0, 1);
return 0;
}
@@ -132,13 +131,13 @@ READ8_MEMBER(berzerk_state::led_on_r)
WRITE8_MEMBER(berzerk_state::led_on_w)
{
- set_led_status(machine(), 0, 1);
+ output().set_led_value(0, 1);
}
READ8_MEMBER(berzerk_state::led_off_r)
{
- set_led_status(machine(), 0, 0);
+ output().set_led_value(0, 0);
return 0;
}
@@ -146,7 +145,7 @@ READ8_MEMBER(berzerk_state::led_off_r)
WRITE8_MEMBER(berzerk_state::led_off_w)
{
- set_led_status(machine(), 0, 0);
+ output().set_led_value(0, 0);
}
@@ -355,7 +354,7 @@ void berzerk_state::machine_reset()
{
m_irq_enabled = 0;
m_nmi_enabled = 0;
- set_led_status(machine(), 0, 0);
+ output().set_led_value(0, 0);
m_magicram_control = 0;
start_irq_timer();
@@ -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/beta.cpp b/src/mame/drivers/beta.cpp
index 89e0f7209d6..024a42d5c69 100644
--- a/src/mame/drivers/beta.cpp
+++ b/src/mame/drivers/beta.cpp
@@ -155,7 +155,7 @@ TIMER_CALLBACK_MEMBER(beta_state::led_refresh)
{
if (m_ls145_p < 6)
{
- output_set_digit_value(m_ls145_p, m_segment);
+ output().set_digit_value(m_ls145_p, m_segment);
}
}
@@ -253,10 +253,10 @@ WRITE8_MEMBER( beta_state::riot_pb_w )
m_speaker->level_w(!BIT(data, 4));
/* address led */
- output_set_led_value(0, BIT(data, 5));
+ output().set_led_value(0, BIT(data, 5));
/* data led */
- output_set_led_value(1, !BIT(data, 5));
+ output().set_led_value(1, !BIT(data, 5));
/* EPROM address shift */
if (!BIT(m_old_data, 5) && BIT(data, 5))
diff --git a/src/mame/drivers/bfcobra.cpp b/src/mame/drivers/bfcobra.cpp
index 9a992e15637..d26eff4d673 100644
--- a/src/mame/drivers/bfcobra.cpp
+++ b/src/mame/drivers/bfcobra.cpp
@@ -245,13 +245,14 @@ public:
m_acia6850_1(*this, "acia6850_1"),
m_acia6850_2(*this, "acia6850_2"),
m_upd7759(*this, "upd"),
- m_palette(*this, "palette")
+ m_palette(*this, "palette"),
+ m_meters(*this, "meters")
{
}
UINT8 m_bank_data[4];
- UINT8 *m_work_ram;
- UINT8 *m_video_ram;
+ std::unique_ptr<UINT8[]> m_work_ram;
+ std::unique_ptr<UINT8[]> m_video_ram;
UINT8 m_h_scroll;
UINT8 m_v_scroll;
UINT8 m_flip_8;
@@ -289,8 +290,6 @@ public:
DECLARE_WRITE8_MEMBER(meter_w);
DECLARE_READ8_MEMBER(latch_r);
DECLARE_WRITE8_MEMBER(latch_w);
- DECLARE_WRITE8_MEMBER(fd_op_w);
- DECLARE_WRITE8_MEMBER(fd_ctrl_w);
DECLARE_READ8_MEMBER(upd_r);
DECLARE_WRITE8_MEMBER(upd_w);
DECLARE_WRITE_LINE_MEMBER(z80_acia_irq);
@@ -311,8 +310,6 @@ public:
void command_phase(struct fdc_t &fdc, UINT8 data);
inline UINT8* blitter_get_addr(UINT32 addr);
inline void z80_bank(int num, int data);
- UINT8 exec_r_phase(void);
- UINT8 results_phase(void);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<acia6850_device> m_acia6850_0;
@@ -320,6 +317,7 @@ public:
required_device<acia6850_device> m_acia6850_2;
required_device<upd7759_device> m_upd7759;
required_device<palette_device> m_palette;
+ required_device<meters_device> m_meters;
};
@@ -1424,7 +1422,7 @@ WRITE8_MEMBER(bfcobra_state::meter_w)
{
if (changed & (1 << i))
{
- MechMtr_update(i, data & (1 << i) );
+ m_meters->update(i, data & (1 << i) );
space.device().execute().set_input_line(M6809_FIRQ_LINE, HOLD_LINE);
}
}
@@ -1615,10 +1613,10 @@ INPUT_PORTS_END
void bfcobra_state::init_ram()
{
/* 768kB work RAM */
- m_work_ram = auto_alloc_array_clear(machine(), UINT8, 0xC0000);
+ m_work_ram = make_unique_clear<UINT8[]>(0xC0000);
/* 128kB video RAM */
- m_video_ram = auto_alloc_array_clear(machine(), UINT8, 0x20000);
+ m_video_ram = make_unique_clear<UINT8[]>(0x20000);
}
@@ -1708,8 +1706,8 @@ DRIVER_INIT_MEMBER(bfcobra_state,bfcobra)
save_item(NAME(m_z80_int));
save_item(NAME(m_z80_inten));
save_item(NAME(m_bank_data));
- save_pointer(NAME(m_work_ram), 0xc0000);
- save_pointer(NAME(m_video_ram), 0x20000);
+ save_pointer(NAME(m_work_ram.get()), 0xc0000);
+ save_pointer(NAME(m_video_ram.get()), 0x20000);
}
/* TODO */
@@ -1770,6 +1768,9 @@ static MACHINE_CONFIG_START( bfcobra, bfcobra_state )
MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16) // What are the correct ACIA clocks ?
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(bfcobra_state, write_acia_clock))
+
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
MACHINE_CONFIG_END
/***************************************************************************
diff --git a/src/mame/drivers/bfm_sc1.cpp b/src/mame/drivers/bfm_sc1.cpp
index b87fda1b128..49a4a89f6e7 100644
--- a/src/mame/drivers/bfm_sc1.cpp
+++ b/src/mame/drivers/bfm_sc1.cpp
@@ -108,7 +108,6 @@ class bfm_sc1_state : public driver_device
public:
bfm_sc1_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_vfd0(*this, "vfd0"),
m_maincpu(*this, "maincpu"),
m_reel0(*this, "reel0"),
m_reel1(*this, "reel1"),
@@ -116,9 +115,9 @@ public:
m_reel3(*this, "reel3"),
m_reel4(*this, "reel4"),
m_reel5(*this, "reel5"),
- m_upd7759(*this, "upd") { }
-
- optional_device<bfm_bd1_t> m_vfd0;
+ m_upd7759(*this, "upd"),
+ m_vfd0(*this, "vfd0"),
+ m_meters(*this, "meters") { }
int m_mmtr_latch;
int m_triac_latch;
@@ -175,7 +174,6 @@ public:
DECLARE_WRITE8_MEMBER(triac_w);
DECLARE_READ8_MEMBER(triac_r);
DECLARE_READ8_MEMBER(nec_r);
- DECLARE_WRITE8_MEMBER(nec_reset_w);
DECLARE_WRITE8_MEMBER(nec_latch_w);
void save_state();
@@ -191,7 +189,6 @@ public:
INTERRUPT_GEN_MEMBER(timer_irq);
void sc1_common_init(int reels, int decrypt, int defaultbank);
void Scorpion1_SetSwitchState(int strobe, int data, int state);
- int Scorpion1_GetSwitchState(int strobe, int data);
int sc1_find_project_string( );
required_device<cpu_device> m_maincpu;
required_device<stepper_device> m_reel0;
@@ -201,6 +198,8 @@ public:
required_device<stepper_device> m_reel4;
required_device<stepper_device> m_reel5;
optional_device<upd7759_device> m_upd7759;
+ optional_device<bfm_bd1_t> m_vfd0;
+ required_device<meters_device> m_meters;
};
#define VFD_RESET 0x20
@@ -298,8 +297,8 @@ WRITE8_MEMBER(bfm_sc1_state::reel12_w)
m_reel0->update((data>>4)&0x0f);
m_reel1->update( data &0x0f);
}
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
}
///////////////////////////////////////////////////////////////////////////
@@ -315,8 +314,8 @@ WRITE8_MEMBER(bfm_sc1_state::reel34_w)
m_reel2->update((data>>4)&0x0f);
m_reel3->update( data &0x0f);
}
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
}
///////////////////////////////////////////////////////////////////////////
@@ -326,8 +325,8 @@ WRITE8_MEMBER(bfm_sc1_state::reel56_w)
m_reel4->update((data>>4)&0x0f);
m_reel5->update( data &0x0f);
- awp_draw_reel("reel5", m_reel4);
- awp_draw_reel("reel6", m_reel5);
+ awp_draw_reel(machine(),"reel5", m_reel4);
+ awp_draw_reel(machine(),"reel6", m_reel5);
}
///////////////////////////////////////////////////////////////////////////
@@ -351,7 +350,7 @@ WRITE8_MEMBER(bfm_sc1_state::mmtr_w)
{
if ( changed & (1 << i) )
{
- MechMtr_update(i, data & (1 << i) );
+ m_meters->update(i, data & (1 << i) );
m_maincpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE);
}
}
@@ -460,8 +459,8 @@ WRITE8_MEMBER(bfm_sc1_state::mux1latch_w)
for ( i = 0; i < 8; i++ )
{
- output_set_lamp_value(BFM_strcnv[offset ], (m_mux1_datalo & pattern?1:0) );
- output_set_lamp_value(BFM_strcnv[offset+8], (m_mux1_datahi & pattern?1:0) );
+ output().set_lamp_value(BFM_strcnv[offset ], (m_mux1_datalo & pattern?1:0) );
+ output().set_lamp_value(BFM_strcnv[offset+8], (m_mux1_datahi & pattern?1:0) );
pattern<<=1;
offset++;
}
@@ -533,8 +532,8 @@ WRITE8_MEMBER(bfm_sc1_state::mux2latch_w)
for ( i = 0; i < 8; i++ )
{
- output_set_lamp_value(BFM_strcnv[offset ], (m_mux2_datalo & pattern?1:0) );
- output_set_lamp_value(BFM_strcnv[offset+8], (m_mux2_datahi & pattern?1:0) );
+ output().set_lamp_value(BFM_strcnv[offset ], (m_mux2_datalo & pattern?1:0) );
+ output().set_lamp_value(BFM_strcnv[offset+8], (m_mux2_datahi & pattern?1:0) );
pattern<<=1;
offset++;
}
@@ -1090,6 +1089,9 @@ 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
/////////////////////////////////////////////////////////////////////////////////////
@@ -1219,7 +1221,6 @@ int bfm_sc1_state::sc1_find_project_string( )
DRIVER_INIT_MEMBER(bfm_sc1_state,toppoker)
{
sc1_common_init(3,1, 3);
- MechMtr_config(machine(),8);
sc1_find_project_string();
save_state();
}
@@ -1227,7 +1228,6 @@ DRIVER_INIT_MEMBER(bfm_sc1_state,toppoker)
DRIVER_INIT_MEMBER(bfm_sc1_state,lotse)
{
sc1_common_init(6,1, 3);
- MechMtr_config(machine(),8);
sc1_find_project_string();
save_state();
}
@@ -1235,7 +1235,6 @@ DRIVER_INIT_MEMBER(bfm_sc1_state,lotse)
DRIVER_INIT_MEMBER(bfm_sc1_state,lotse_bank0)
{
sc1_common_init(6,1, 0);
- MechMtr_config(machine(),8);
sc1_find_project_string();
save_state();
}
@@ -1244,7 +1243,6 @@ DRIVER_INIT_MEMBER(bfm_sc1_state,lotse_bank0)
DRIVER_INIT_MEMBER(bfm_sc1_state,nocrypt)
{
sc1_common_init(6,0, 3);
- MechMtr_config(machine(),8);
sc1_find_project_string();
save_state();
}
@@ -1252,7 +1250,6 @@ DRIVER_INIT_MEMBER(bfm_sc1_state,nocrypt)
DRIVER_INIT_MEMBER(bfm_sc1_state,nocrypt_bank0)
{
sc1_common_init(6,0, 0);
- MechMtr_config(machine(),8);
sc1_find_project_string();
save_state();
}
@@ -1263,7 +1260,6 @@ DRIVER_INIT_MEMBER(bfm_sc1_state,nocrypt_bank0)
DRIVER_INIT_MEMBER(bfm_sc1_state,rou029)
{
sc1_common_init(6,0, 3);
- MechMtr_config(machine(),8);
sc1_find_project_string();
save_state();
}
@@ -1273,7 +1269,6 @@ DRIVER_INIT_MEMBER(bfm_sc1_state,rou029)
DRIVER_INIT_MEMBER(bfm_sc1_state,clatt)
{
sc1_common_init(6,1, 3);
- MechMtr_config(machine(),8);
Scorpion1_SetSwitchState(3,2,1);
Scorpion1_SetSwitchState(3,3,1);
diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp
index 6ceb2a192bf..38045b108ec 100644
--- a/src/mame/drivers/bfm_sc2.cpp
+++ b/src/mame/drivers/bfm_sc2.cpp
@@ -191,7 +191,8 @@ public:
m_upd7759(*this, "upd"),
m_vfd0(*this, "vfd0"),
m_vfd1(*this, "vfd1"),
- m_dm01(*this, "dm01") { }
+ m_dm01(*this, "dm01"),
+ m_meters(*this, "meters") { }
required_device<cpu_device> m_maincpu;
optional_device<stepper_device> m_reel0;
@@ -204,6 +205,7 @@ public:
optional_device<bfm_bd1_t> m_vfd0;
optional_device<bfm_bd1_t> m_vfd1;
optional_device<bfmdm01_device> m_dm01;
+ optional_device<meters_device> m_meters; // scorpion2_vid doesn't use this (scorpion2_vidm does)
int m_sc2gui_update_mmtr; //not used?
UINT8 *m_nvram;
@@ -298,8 +300,6 @@ public:
DECLARE_WRITE8_MEMBER(vfd2_data_w);
DECLARE_WRITE8_MEMBER(e2ram_w);
DECLARE_READ8_MEMBER(direct_input_r);
- DECLARE_READ8_MEMBER(sc3_expansion_r);
- DECLARE_WRITE8_MEMBER(sc3_expansion_w);
int recdata(int changed, int data);
DECLARE_WRITE8_MEMBER(nec_reset_w);
DECLARE_WRITE8_MEMBER(nec_latch_w);
@@ -554,8 +554,8 @@ WRITE8_MEMBER(bfm_sc2_state::reel12_w)
m_reel0->update( data &0x0f);
m_reel1->update((data>>4)&0x0f);
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
}
WRITE8_MEMBER(bfm_sc2_state::reel34_w)
@@ -565,8 +565,8 @@ WRITE8_MEMBER(bfm_sc2_state::reel34_w)
m_reel2->update( data &0x0f);
m_reel3->update((data>>4)&0x0f);
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
}
///////////////////////////////////////////////////////////////////////////
@@ -578,8 +578,8 @@ WRITE8_MEMBER(bfm_sc2_state::reel56_w)
m_reel4->update( data &0x0f);
m_reel5->update((data>>4)&0x0f);
- awp_draw_reel("reel5", m_reel4);
- awp_draw_reel("reel6", m_reel5);
+ awp_draw_reel(machine(),"reel5", m_reel4);
+ awp_draw_reel(machine(),"reel6", m_reel5);
}
@@ -595,13 +595,17 @@ WRITE8_MEMBER(bfm_sc2_state::mmtr_w)
m_mmtr_latch = data;
- for (i = 0; i<8; i++)
+ if (m_meters != nullptr)
{
- if ( changed & (1 << i) )
+ for (i = 0; i<8; i++)
{
- MechMtr_update(i, data & (1 << i) );
+ if ( changed & (1 << i) )
+ {
+ m_meters->update(i, data & (1 << i) );
+ }
}
}
+
if ( data & 0x1F ) m_maincpu->set_input_line(M6809_FIRQ_LINE, ASSERT_LINE );
}
@@ -613,7 +617,7 @@ WRITE8_MEMBER(bfm_sc2_state::mux_output_w)
int off = offset<<3;
for (i=0; i<8; i++)
- output_set_lamp_value(off+i, ((data & (1 << i)) != 0));
+ output().set_lamp_value(off+i, ((data & (1 << i)) != 0));
}
@@ -841,7 +845,7 @@ WRITE8_MEMBER(bfm_sc2_state::coininhib_w)
{
if ( changed & p )
{ // this inhibit line has changed
- coin_lockout_w(machine(), i, (~data & p) ); // update lockouts
+ machine().bookkeeping().coin_lockout_w(i, (~data & p) ); // update lockouts
changed &= ~p;
}
@@ -2129,6 +2133,24 @@ static INPUT_PORTS_START( pokio )
PORT_DIPSETTING( 0x18, "3" )
INPUT_PORTS_END
+///////////////////////////////////////////////////////////////////////////
+// machine config fragments for different meters numbers //////////////////
+///////////////////////////////////////////////////////////////////////////
+
+MACHINE_CONFIG_FRAGMENT( _3meters )
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(3)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_FRAGMENT( _5meters )
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(5)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_FRAGMENT( _8meters )
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
+MACHINE_CONFIG_END
///////////////////////////////////////////////////////////////////////////
// machine driver for scorpion2 board + adder2 expansion //////////////////
@@ -2171,6 +2193,11 @@ static MACHINE_CONFIG_START( scorpion2_vid, bfm_sc2_state )
MACHINE_CONFIG_END
+/* machine driver for scorpion2_vid board with meters (i.e. quintoon uk). Are we really sure the other games don't?*/
+static MACHINE_CONFIG_DERIVED( scorpion2_vidm, scorpion2_vid )
+ MCFG_FRAGMENT_ADD(_8meters)
+MACHINE_CONFIG_END
+
int bfm_sc2_state::sc2_find_project_string( )
@@ -2257,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);
}
}
@@ -2271,7 +2297,6 @@ void bfm_sc2_state::adder2_common_init()
DRIVER_INIT_MEMBER(bfm_sc2_state,quintoon)
{
sc2_common_init( 1);
- MechMtr_config(machine(),8); // setup mech meters
m_has_hopper = 0;
@@ -3631,13 +3656,22 @@ 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
+static MACHINE_CONFIG_DERIVED( scorpion2_3m, scorpion2 )
+ MCFG_DEVICE_REMOVE("meters")
+ MCFG_FRAGMENT_ADD(_3meters)
+MACHINE_CONFIG_END
/* machine driver for scorpion3 board */
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
@@ -3681,6 +3715,18 @@ 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
+
+static MACHINE_CONFIG_DERIVED( scorpion2_dm01_3m, scorpion2_dm01 )
+ MCFG_DEVICE_REMOVE("meters")
+ MCFG_FRAGMENT_ADD( _3meters)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( scorpion2_dm01_5m, scorpion2_dm01 )
+ MCFG_DEVICE_REMOVE("meters")
+ MCFG_FRAGMENT_ADD( _5meters)
MACHINE_CONFIG_END
void bfm_sc2_state::sc2awp_common_init(int reels, int decrypt)
@@ -3704,7 +3750,6 @@ void bfm_sc2_state::sc2awpdmd_common_init(int reels, int decrypt)
DRIVER_INIT_MEMBER(bfm_sc2_state,bbrkfst)
{
sc2awp_common_init(5, 1);
- MechMtr_config(machine(),8);
m_has_hopper = 0;
@@ -3723,8 +3768,6 @@ DRIVER_INIT_MEMBER(bfm_sc2_state,bbrkfst)
DRIVER_INIT_MEMBER(bfm_sc2_state,drwho_common)
{
- MechMtr_config(machine(),8);
-
m_has_hopper = 0;
Scorpion2_SetSwitchState(4,0, 0); /* GBP1 Low Level Switch */
@@ -3755,7 +3798,6 @@ DRIVER_INIT_MEMBER(bfm_sc2_state,drwhon)
DRIVER_INIT_MEMBER(bfm_sc2_state,focus)
{
sc2awp_common_init(6, 1);
- MechMtr_config(machine(),5);
sc2_find_project_string();
}
@@ -3763,8 +3805,6 @@ DRIVER_INIT_MEMBER(bfm_sc2_state,cpeno1)
{
sc2awpdmd_common_init(6, 1);
- MechMtr_config(machine(),5);
-
Scorpion2_SetSwitchState(3,3,1); /* 5p play */
Scorpion2_SetSwitchState(3,4,1); /* 20p play */
@@ -3818,7 +3858,6 @@ DRIVER_INIT_MEMBER(bfm_sc2_state,ofah)
Scorpion2_SetSwitchState(6,2,0);
Scorpion2_SetSwitchState(6,3,1);
- MechMtr_config(machine(),3);
sc2_find_project_string();
}
@@ -3836,14 +3875,12 @@ DRIVER_INIT_MEMBER(bfm_sc2_state,prom)
Scorpion2_SetSwitchState(6,2,0);
Scorpion2_SetSwitchState(6,3,1);
- MechMtr_config(machine(),3);
sc2_find_project_string();
}
DRIVER_INIT_MEMBER(bfm_sc2_state,bfmcgslm)
{
sc2awp_common_init(6, 1);
- MechMtr_config(machine(),8);
m_has_hopper = 0;
sc2_find_project_string();
}
@@ -3852,7 +3889,6 @@ DRIVER_INIT_MEMBER(bfm_sc2_state,luvjub)
{
sc2awpdmd_common_init(6, 1);
- MechMtr_config(machine(),8);
m_has_hopper = 0;
Scorpion2_SetSwitchState(3,0,1);
@@ -7477,9 +7513,9 @@ ROM_END
#define GAME_FLAGS MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL
-GAMEL( 1993, quintoon, 0, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-206)", MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification
-GAMEL( 1993, quintond, quintoon, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-751-206, Datapak)",MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING,layout_quintoon ) //Current samples need verification
-GAMEL( 1993, quintono, quintoon, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-203)", MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification
+GAMEL( 1993, quintoon, 0, scorpion2_vidm, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-206)", MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification
+GAMEL( 1993, quintond, quintoon, scorpion2_vidm, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-751-206, Datapak)",MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING,layout_quintoon ) //Current samples need verification
+GAMEL( 1993, quintono, quintoon, scorpion2_vidm, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-203)", MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification
GAMEL( 1993, qntoond, 0, scorpion2_vid, qntoond, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Quintoon (Dutch, Game Card 95-750-243)", MACHINE_SUPPORTS_SAVE,layout_quintoon )
GAMEL( 1993, qntoondo, qntoond, scorpion2_vid, qntoond, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Quintoon (Dutch, Game Card 95-750-136)", MACHINE_SUPPORTS_SAVE,layout_quintoon )
@@ -7703,7 +7739,7 @@ GAME( 199?, sc2copcl , 0 , scorpion2 , drwho , bfm_sc2_st
GAME( 199?, sc2copclp , sc2copcl , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Cops 'n' Robbers Club (Bellfruit) (set 9, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-859
// PROJECT NUMBER PR6231 CLUB COPS AND ROBBERS 20P/#250 - 2-SEP-1996 17:26:44
GAME( 199?, sc2copcl2 , sc2copcl , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Cops 'n' Robbers Club (Bellfruit) (set 10, UK) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-858
-GAME( 199?, sc2copcl12 , sc2copcl , scorpion2 , drwho , bfm_sc2_state, prom , 0, "BFM", "Cops 'n' Robbers Club (Bellfruit) (set 10, UK, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-858
+GAME( 199?, sc2copcl12 , sc2copcl , scorpion2_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Cops 'n' Robbers Club (Bellfruit) (set 10, UK, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-858
// PROJECT PR6231 CLUB COPS AND ROBBERS NPO 63% SEALINK VERSION - 5-JAN-1998 11:53:49
GAME( 199?, sc2copcl5 , sc2copcl , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Cops 'n' Robbers Club (Bellfruit) (set 11, UK) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-752-015
GAME( 199?, sc2copcl11p , sc2copcl , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Cops 'n' Robbers Club (Bellfruit) (set 11, UK, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-753-015
@@ -8366,20 +8402,20 @@ GAME( 1996, sc2luvv1p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER PR6331 PUBLIC ENEMY NO.1 - 26-JUL-1994 09:24:19
-GAME( 1996, sc2cpe3 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 1, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-257
-GAME( 1996, sc2cpe3p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 1, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-257
+GAME( 1996, sc2cpe3 , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 1, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-257
+GAME( 1996, sc2cpe3p , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 1, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-257
// PROJECT NUMBER PR6331 PUBLIC ENEMY NO.1 FIXED 65% - 10-AUG-1994 11:26:30
-GAME( 1996, sc2cpe4 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 2, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-273
-GAME( 1996, sc2cpe4p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 2, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-273
+GAME( 1996, sc2cpe4 , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 2, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-273
+GAME( 1996, sc2cpe4p , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 2, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-273
// PROJECT NUMBER PR6574 PUBLIC ENEMY NO.1 S+P 25P/#250 STENA SEALINK - 3-JAN-1996 12:17:33
-GAME( 1996, sc2cpe2 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 3, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-597
-GAME( 1996, sc2cpe2p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 3, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-597
+GAME( 1996, sc2cpe2 , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 3, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-597
+GAME( 1996, sc2cpe2p , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 3, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-597
// PROJECT NUMBER PR6574 PUBLIC ENEMY NO.1 S+P 25P/#250 FIXED 65% - 3-JAN-1996 12:19:01
-GAME( 1996, sc2cpe1 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 4, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-598
-GAME( 1996, sc2cpe1p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 4, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-598
+GAME( 1996, sc2cpe1 , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 4, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-598
+GAME( 1996, sc2cpe1p , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 4, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-598
// PROJECT NUMBER PR6574 PUBLIC ENEMY NO.1 S+P 25P/#250 - 20-AUG-1996 10:05:21
-GAME( 1996, sc2cpe , 0 , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 5, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-846
-GAME( 1996, sc2cpep , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 5, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-846
+GAME( 1996, sc2cpe , 0 , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 5, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-846
+GAME( 1996, sc2cpep , sc2cpe , scorpion2_dm01_5m , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 5, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-846
/********************************************************************************************************************************************************************************************************************
Cops 'n' Robbers
@@ -8387,19 +8423,19 @@ GAME( 1996, sc2cpep , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6012 COPS & ROBBERS #3/#6 - 29-DEC-1992 21:26:28
-GAME( 199?, sc2cops5 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-044
+GAME( 199?, sc2cops5 , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-044
// PROJECT NUMBER 6012 COPS AND ROBBERS S+P 10P - 7-JUL-1993 10:17:18
-GAME( 199?, sc2cops2 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-110
+GAME( 199?, sc2cops2 , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-110
// PROJECT NUMBER 6589 (6012) COPS & ROBBERS (SINGLE SITE 5P/10P/20P) - 4-DEC-1995 10:52:08
-GAME( 199?, sc2cops3 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-577
-GAME( 199?, sc2cops3p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-577
+GAME( 199?, sc2cops3 , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-577
+GAME( 199?, sc2cops3p , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-577
// PROJECT NUMBER 6589 (6012) COPS & ROBBERS (ARCADE 5P/10P/20P) - 4-DEC-1995 10:53:58
-GAME( 199?, sc2copsp , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 4, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-578
+GAME( 199?, sc2copsp , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 4, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-578
// PROJECT NUMBER 6589 (6012) COPS & ROBBERS (IRISH ALL CASH 5P/10P/20P) - 7-MAR-1996 15:07:40
-GAME( 199?, sc2cops4 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 5) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-645
+GAME( 199?, sc2cops4 , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 5) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-645
// PROJECT NUMBER 6589 (6012) COPS & ROBBERS (#10 ALL CASH 20P/25P) - 15-MAR-1996 11:52:02
-GAME( 199?, sc2cops , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 6) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-652
-GAME( 199?, sc2cops1p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-652
+GAME( 199?, sc2cops , 0 , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 6) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-652
+GAME( 199?, sc2cops1p , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-652
/********************************************************************************************************************************************************************************************************************
@@ -8409,12 +8445,12 @@ GAME( 199?, sc2cops1p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6622 BINGO COPS N ROBBERS #8/#10 ALL CASH - 9-JUL-1996 17:08:15
-GAME( 199?, sc2copsc , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-814
-GAME( 199?, sc2copscp , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 1, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-814
+GAME( 199?, sc2copsc , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-814
+GAME( 199?, sc2copscp , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 1, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-814
// PROJECT NUMBER 6622 BINGO COPS N ROBBERS SWITCHABLE BINGO/ARCADE - 9-JUL-1996 17:12:33
-GAME( 199?, sc2copsc1 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-816
-GAME( 199?, sc2copsc1p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-816
-GAME( 199?, sc2copsc1pa , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3) (alt matrix rom)", GAME_FLAGS) // GAME No 95-751-816
+GAME( 199?, sc2copsc1 , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-816
+GAME( 199?, sc2copsc1p , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-816
+GAME( 199?, sc2copsc1pa , sc2cops , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3) (alt matrix rom)", GAME_FLAGS) // GAME No 95-751-816
/********************************************************************************************************************************************************************************************************************
@@ -8423,25 +8459,25 @@ GAME( 199?, sc2copsc1pa , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT PR6332 CLUB COPS AND ROBBERS DELUXE - 17-NOV-1995 12:36:04
-GAME( 199?, sc2copdc5 , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 200GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-561
-GAME( 199?, sc2copdc5p , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 200GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-561
+GAME( 199?, sc2copdc5 , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 200GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-561
+GAME( 199?, sc2copdc5p , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 200GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-561
// PROJECT PR6588 CLUB COPS AND ROBBERS DELUXE 25P/#250 - 17-NOV-1995 13:18:57
-GAME( 199?, sc2copdc6 , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-562
+GAME( 199?, sc2copdc6 , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-562
// PROJECT PR6588 CLUB COPS AND ROBBERS DELUXE 25P/#250 65% - 30-NOV-1995 16:14:25
-GAME( 199?, sc2copdc1 , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-574
-GAME( 199?, sc2copdc1p , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-574
+GAME( 199?, sc2copdc1 , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-574
+GAME( 199?, sc2copdc1p , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-574
// PROJECT NUMBER 6588 CLUB COPS AND ROBBERS DELUXE 20P/#250 - 25-MAR-1996 13:57:23
-GAME( 199?, sc2copdc2 , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-658
-GAME( 199?, sc2copdc2p , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-658
+GAME( 199?, sc2copdc2 , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-658
+GAME( 199?, sc2copdc2p , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-658
// PROJECT PR6588 CLUB COPS AND ROBBERS DELUXE 25P/#250 - 13-AUG-1996 14:01:25
-GAME( 199?, sc2copdc3 , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-842
-GAME( 199?, sc2copdc3p , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-842
+GAME( 199?, sc2copdc3 , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-842
+GAME( 199?, sc2copdc3p , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-842
// PROJECT PR6588 CLUB COPS AND ROBBERS DELUXE 25P/#250 63% - 25-SEP-1997 08:30:05
-GAME( 199?, sc2copdc4 , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-993
-GAME( 199?, sc2copdc4p , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-993
+GAME( 199?, sc2copdc4 , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-993
+GAME( 199?, sc2copdc4p , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-993
// PROJECT PR6588 CLUB COPS AND ROBBERS DELUXE 25P/#250 67% - 25-SEP-1997 08:33:14
-GAME( 199?, sc2copdc , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-992
-GAME( 199?, sc2copdcp , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-992
+GAME( 199?, sc2copdc , 0 , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-992
+GAME( 199?, sc2copdcp , sc2copdc , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-992
/********************************************************************************************************************************************************************************************************************
@@ -8451,21 +8487,21 @@ GAME( 199?, sc2copdcp , sc2copdc , scorpion2_dm01 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6201 ROUND THE TOWN - 4-MAR-1993 11:05:07
-GAME( 199?, sc2town4 , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-052
+GAME( 199?, sc2town4 , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-052
// PROJECT NUMBER 6201 ROUND THE TOWN IRISH ALL CASH - 1-APR-1993 14:44:50
-GAME( 199?, sc2town2 , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-069
+GAME( 199?, sc2town2 , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-069
// PROJECT NUMBER 6620 (6201) ROUND THE TOWN S&P - 15-DEC-1995 14:50:50
-GAME( 199?, sc2town3 , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 3) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-591
-GAME( 199?, sc2town3p , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-591
+GAME( 199?, sc2town3 , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 3) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-591
+GAME( 199?, sc2town3p , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-591
// PROJECT NUMBER 6620 (6201) ROUND THE TOWN (ARCADE/HIGH TOKEN) - 18-DEC-1995 15:59:22
-GAME( 199?, sc2town1 , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 4) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-592
-GAME( 199?, sc2town1a , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 4, alt) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-592
-GAME( 199?, sc2town1p , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 4, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-592
+GAME( 199?, sc2town1 , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 4) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-592
+GAME( 199?, sc2town1a , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 4, alt) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-592
+GAME( 199?, sc2town1p , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 4, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-592
// PROJECT NUMBER 6620 (6201) ROUND THE TOWN S&P IRISH AC - 5-MAR-1996 12:05:06
-GAME( 199?, sc2town5 , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 5) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-642
+GAME( 199?, sc2town5 , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 5) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-642
// PROJECT NUMBER 6620 (6201) ROUND THE TOWN #10 AC - 15-MAR-1996 12:07:18
-GAME( 199?, sc2town , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 6) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-654
-GAME( 199?, sc2townp , sc2town , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-654
+GAME( 199?, sc2town , 0 , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 6) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-654
+GAME( 199?, sc2townp , sc2town , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Round The Town (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-654
// PROJECT NUMBER 6620 (6201) ROUND THE TOWN (ARCADE/HIGH TOKEN) - 18-DEC-1995 15:59:22
@@ -8474,15 +8510,15 @@ GAME( 199?, sc2townp , sc2town , scorpion2_dm01 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6207 ONLY FOOLS AND HORSES - 14-OCT-1993 15:28:16
-GAME( 199?, sc2ofool1 , sc2ofool , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-147
+GAME( 199?, sc2ofool1 , sc2ofool , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-147
// PROJECT NUMBER 6207 ONLY FOOLS AND HORSES ALL CASH - 29-OCT-1993 13:00:02
-GAME( 199?, sc2ofool3 , sc2ofool , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-151
+GAME( 199?, sc2ofool3 , sc2ofool , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-151
// PROJECT NUMBER 6207 ONLY FOOLS AND HORSES - 18-NOV-1993 14:32:21
-GAME( 199?, sc2ofool , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 3) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-159
+GAME( 199?, sc2ofool , 0 , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 3) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-159
// PROJECT NUMBER 6207 ONLY FOOLS AND HORSES ALL CASH - 18-NOV-1993 16:12:34
-GAME( 199?, sc2ofool2 , sc2ofool , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 4) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-162
+GAME( 199?, sc2ofool2 , sc2ofool , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 4) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-162
// PROJECT NUMBER 6207 ONLY FOOLS AND HORSES ARCADE 10P PLAY - 14-DEC-1993 14:51:34
-GAME( 199?, sc2ofool4 , sc2ofool , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 5) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-177
+GAME( 199?, sc2ofool4 , sc2ofool , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Only Fools & Horses (Bellfruit) (set 5) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-177
/********************************************************************************************************************************************************************************************************************
@@ -8490,10 +8526,10 @@ GAME( 199?, sc2ofool4 , sc2ofool , scorpion2_dm01 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6221 PARTY TIME BINGO SCORPION 2 - 10-JUN-1993 14:26:26
-GAME( 199?, sc2ptytm1 , sc2ptytm , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Party Time (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-092
+GAME( 199?, sc2ptytm1 , sc2ptytm , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Party Time (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-092
// PROJECT NUMBER 6221 PARTY TIME BINGO SCORPION 2 #4 ALL CASH 10P PLAY - 1-JUL-1996 12:02:22
-GAME( 199?, sc2ptytm , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Party Time (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-806
-GAME( 199?, sc2ptytmp , sc2ptytm , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Party Time (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-806
+GAME( 199?, sc2ptytm , 0 , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Party Time (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-806
+GAME( 199?, sc2ptytmp , sc2ptytm , scorpion2_dm01_3m , drwho , bfm_sc2_state, ofah , 0, "BFM", "Party Time (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-806
/********************************************************************************************************************************************************************************************************************
@@ -8501,7 +8537,7 @@ GAME( 199?, sc2ptytmp , sc2ptytm , scorpion2_dm01 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6172 ALONG THE PROM SINGLE SITE - 30-MAR-1993 12:03:27
-GAME( 199?, sc2prom , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Along The Prom (Bellfruit) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-062
+GAME( 199?, sc2prom , 0 , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Along The Prom (Bellfruit) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-062
/********************************************************************************************************************************************************************************************************************
@@ -8509,12 +8545,12 @@ GAME( 199?, sc2prom , 0 , scorpion2_dm01 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER PR6432 PREMIER CLUB MANAGER - 26-JAN-1996 11:52:43
-GAME( 199?, sc2prem2 , sc2prem , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Premier Club Manager (Bellfruit) (set 1, UK) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-616
+GAME( 199?, sc2prem2 , sc2prem , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Premier Club Manager (Bellfruit) (set 1, UK) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-616
// PROJECT NUMBER PR6432 PREMIER CLUB MANAGER 25P !250 - 13-AUG-1996 14:05:05
-GAME( 199?, sc2prem , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Premier Club Manager (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-848
+GAME( 199?, sc2prem , 0 , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Premier Club Manager (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-848
// PROJECT NUMBER PR6432 PREMIER CLUB MANAGER - 20-AUG-1996 10:06:44
-GAME( 199?, sc2prem1 , sc2prem , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Premier Club Manager (Bellfruit) (set 3, UK) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-847
-GAME( 199?, sc2prem1p , sc2prem , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Premier Club Manager (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-847
+GAME( 199?, sc2prem1 , sc2prem , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Premier Club Manager (Bellfruit) (set 3, UK) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-847
+GAME( 199?, sc2prem1p , sc2prem , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Premier Club Manager (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-847
/********************************************************************************************************************************************************************************************************************
Golden Casino Club
@@ -8522,14 +8558,14 @@ GAME( 199?, sc2prem1p , sc2prem , scorpion2_dm01 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6632 GOLDEN CASINO VAR STAKE/JACKPOT - 12-FEB-1997 15:54:10
-GAME( 199?, sc2gcclb2 , sc2gcclb , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-927
-GAME( 199?, sc2gcclb2p , sc2gcclb , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-927
+GAME( 199?, sc2gcclb2 , sc2gcclb , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-927
+GAME( 199?, sc2gcclb2p , sc2gcclb , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-927
// PROJECT NUMBER 6632 GOLDEN CASINO 20P STAKE/#250 JACKPOT - 12-FEB-1997 15:56:05
-GAME( 199?, sc2gcclb , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-928
-GAME( 199?, sc2gcclbp , sc2gcclb , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-928
+GAME( 199?, sc2gcclb , 0 , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-928
+GAME( 199?, sc2gcclbp , sc2gcclb , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-928
// PROJECT NUMBER 6632 GOLDEN CASINO 5P STAKE/#100 JACKPOT - 12-FEB-1997 15:57:23
-GAME( 199?, sc2gcclb1 , sc2gcclb , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 3, UK, 100GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-929
-GAME( 199?, sc2gcclb1p , sc2gcclb , scorpion2_dm01 , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 3, UK, 100GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-929
+GAME( 199?, sc2gcclb1 , sc2gcclb , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 3, UK, 100GBP Jackpot) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-929
+GAME( 199?, sc2gcclb1p , sc2gcclb , scorpion2_dm01_3m , drwho , bfm_sc2_state, prom , 0, "BFM", "Golden Casino Club (Bellfruit) (set 3, UK, 100GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-929
/********************************************************************************************************************************************************************************************************************
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/bfm_sc45_helper.cpp b/src/mame/drivers/bfm_sc45_helper.cpp
index 264f9dbe71f..d49c449a230 100644
--- a/src/mame/drivers/bfm_sc45_helper.cpp
+++ b/src/mame/drivers/bfm_sc45_helper.cpp
@@ -155,10 +155,7 @@ int find_input_strings(running_machine &machine)
{
for (int j = 0; j < 16; j++)
{
- char tempstr[32];
- sprintf(tempstr, "IN%d-%d", i, j);
-
- sc4inputs[i][j].name = tempstr;
+ sc4inputs[i][j].name = strformat("IN%d-%d", i, j);
sc4inputs[i][j].used = false;
}
}
diff --git a/src/mame/drivers/bfm_sc4h.cpp b/src/mame/drivers/bfm_sc4h.cpp
index f6298442371..d2d7394306d 100644
--- a/src/mame/drivers/bfm_sc4h.cpp
+++ b/src/mame/drivers/bfm_sc4h.cpp
@@ -255,10 +255,10 @@ WRITE8_MEMBER(bfm_sc45_state::mux_output_w)
int off = offset<<3;
for (i=0; i<8; i++)
- output_set_lamp_value(off+i, ((data & (1 << i)) != 0));
+ output().set_lamp_value(off+i, ((data & (1 << i)) != 0));
- output_set_indexed_value("matrix", off+i, ((data & (1 << i)) != 0));
+ output().set_indexed_value("matrix", off+i, ((data & (1 << i)) != 0));
}
WRITE8_MEMBER(bfm_sc45_state::mux_output2_w)
@@ -269,14 +269,14 @@ WRITE8_MEMBER(bfm_sc45_state::mux_output2_w)
// some games use this as a matrix port (luckb etc.)
for (i=0; i<8; i++)
{
- output_set_indexed_value("matrix", off+i, ((data & (1 << i)) != 0));
+ output().set_indexed_value("matrix", off+i, ((data & (1 << i)) != 0));
}
// others drive 7-segs with it.. so rendering it there as well in our debug layouts
// todo: reorder properly!
UINT8 bf7segdata = BITSWAP8(data,7,6,5,4,3,2,1,0);
- output_set_digit_value(offset, bf7segdata);
+ output().set_digit_value(offset, bf7segdata);
}
WRITE16_MEMBER(sc4_state::sc4_mem_w)
@@ -518,13 +518,13 @@ void sc4_state::bfm_sc4_68307_porta_w(address_space &space, bool dedicated, UINT
if(m_reel1)
{
m_reel1->update( data &0x0f);
- awp_draw_reel("reel1", m_reel1);
+ awp_draw_reel(machine(),"reel1", m_reel1);
}
if (m_reel2)
{
m_reel2->update((data>>4)&0x0f);
- awp_draw_reel("reel2", m_reel2);
+ awp_draw_reel(machine(),"reel2", m_reel2);
}
}
@@ -535,7 +535,7 @@ WRITE8_MEMBER( sc4_state::bfm_sc4_reel3_w )
if(m_reel3)
{
m_reel3->update( data &0x0f);
- awp_draw_reel("reel3", m_reel3);
+ awp_draw_reel(machine(),"reel3", m_reel3);
}
}
@@ -546,7 +546,7 @@ WRITE8_MEMBER( sc4_state::bfm_sc4_reel4_w )
if(m_reel4)
{
m_reel4->update( data &0x0f);
- awp_draw_reel("reel4", m_reel4);
+ awp_draw_reel(machine(),"reel4", m_reel4);
}
}
@@ -640,13 +640,13 @@ WRITE8_MEMBER(sc4_state::bfm_sc4_duart_output_w)
if(m_reel5)
{
m_reel5->update( data &0x0f);
- awp_draw_reel("reel5", m_reel5);
+ awp_draw_reel(machine(),"reel5", m_reel5);
}
if (m_reel6)
{
m_reel6->update((data>>4)&0x0f);
- awp_draw_reel("reel6", m_reel6);
+ awp_draw_reel(machine(),"reel6", m_reel6);
}
}
@@ -1031,7 +1031,7 @@ MACHINE_CONFIG_END
MACHINE_START_MEMBER(sc4_adder4_state,adder4)
{
m_adder4cpuregion = (UINT32*)memregion( "adder4" )->base();
- m_adder4ram = (UINT32*)auto_alloc_array_clear(machine(), UINT32, 0x10000);
+ m_adder4ram = make_unique_clear<UINT32[]>(0x10000);
MACHINE_START_CALL_MEMBER(sc4);
}
diff --git a/src/mame/drivers/bfm_swp.cpp b/src/mame/drivers/bfm_swp.cpp
index 62c7405f489..5198984a975 100644
--- a/src/mame/drivers/bfm_swp.cpp
+++ b/src/mame/drivers/bfm_swp.cpp
@@ -114,7 +114,7 @@ public:
{ }
UINT32* m_cpuregion;
- UINT32* m_mainram;
+ std::unique_ptr<UINT32[]> m_mainram;
DECLARE_READ32_MEMBER(bfm_swp_mem_r);
DECLARE_WRITE32_MEMBER(bfm_swp_mem_w);
@@ -191,7 +191,7 @@ INPUT_PORTS_END
void bfm_swp_state::machine_start()
{
m_cpuregion = (UINT32*)memregion( "maincpu" )->base();
- m_mainram = (UINT32*)auto_alloc_array_clear(machine(), UINT32, 0x10000);
+ m_mainram = make_unique_clear<UINT32[]>(0x10000);
}
diff --git a/src/mame/drivers/bfmsys85.cpp b/src/mame/drivers/bfmsys85.cpp
index 370166c4e5b..c0517ae2742 100644
--- a/src/mame/drivers/bfmsys85.cpp
+++ b/src/mame/drivers/bfmsys85.cpp
@@ -80,11 +80,11 @@ public:
m_reel1(*this, "reel1"),
m_reel2(*this, "reel2"),
m_reel3(*this, "reel3"),
- m_acia6850_0(*this, "acia6850_0")
+ m_acia6850_0(*this, "acia6850_0"),
+ m_meters(*this, "meters")
{
}
- optional_device<roc10937_t> m_vfd;
int m_mmtr_latch;
int m_triac_latch;
int m_alpha_clock;
@@ -117,7 +117,6 @@ public:
DECLARE_WRITE8_MEMBER(mux_enable_w);
DECLARE_WRITE8_MEMBER(triac_w);
DECLARE_READ8_MEMBER(triac_r);
- DECLARE_READ_LINE_MEMBER(sys85_data_r);
DECLARE_WRITE_LINE_MEMBER(sys85_data_w);
DECLARE_WRITE_LINE_MEMBER(write_acia_clock);
DECLARE_DRIVER_INIT(decode);
@@ -126,12 +125,14 @@ public:
virtual void machine_reset() override;
INTERRUPT_GEN_MEMBER(timer_irq);
int b85_find_project_string( );
+ optional_device<roc10937_t> m_vfd;
required_device<cpu_device> m_maincpu;
required_device<stepper_device> m_reel0;
required_device<stepper_device> m_reel1;
required_device<stepper_device> m_reel2;
required_device<stepper_device> m_reel3;
required_device<acia6850_device> m_acia6850_0;
+ required_device<meters_device> m_meters;
};
#define MASTER_CLOCK (XTAL_4MHz)
@@ -210,8 +211,8 @@ WRITE8_MEMBER(bfmsys85_state::reel12_w)
m_reel0->update((data>>4)&0x0f);
m_reel1->update( data &0x0f);
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
}
///////////////////////////////////////////////////////////////////////////
@@ -221,8 +222,8 @@ WRITE8_MEMBER(bfmsys85_state::reel34_w)
m_reel2->update((data>>4)&0x0f);
m_reel3->update( data &0x0f);
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
}
///////////////////////////////////////////////////////////////////////////
@@ -231,13 +232,13 @@ WRITE8_MEMBER(bfmsys85_state::reel34_w)
WRITE8_MEMBER(bfmsys85_state::mmtr_w)
{
- int i;
int changed = m_mmtr_latch ^ data;
m_mmtr_latch = data;
- for (i=0; i<8; i++)
- if ( changed & (1 << i) ) MechMtr_update(i, data & (1 << i) );
+ for (int i=0; i<8; i++)
+ if ( changed & (1 << i) )
+ m_meters->update(i, data & (1 << i) );
if ( data ) m_maincpu->set_input_line(M6809_FIRQ_LINE, HOLD_LINE);
}
@@ -311,7 +312,7 @@ WRITE8_MEMBER(bfmsys85_state::mux_data_w)
for ( i = 0; i < 8; i++ )
{
- output_set_lamp_value(off, (data & pattern ? 1 : 0));
+ output().set_lamp_value(off, (data & pattern ? 1 : 0));
pattern <<= 1;
off++;
}
@@ -413,6 +414,9 @@ static MACHINE_CONFIG_START( bfmsys85, bfmsys85_state )
MCFG_STARPOINT_48STEP_ADD("reel3")
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfmsys85_state, reel3_optic_cb))
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
+
MCFG_DEFAULT_LAYOUT(layout_bfmsys85)
MACHINE_CONFIG_END
@@ -750,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 1427618e00b..013e53c92e5 100644
--- a/src/mame/drivers/bigbord2.cpp
+++ b/src/mame/drivers/bigbord2.cpp
@@ -126,8 +126,6 @@ public:
DECLARE_READ8_MEMBER(portc4_r);
DECLARE_READ8_MEMBER(portd0_r);
DECLARE_WRITE8_MEMBER(bigbord2_kbd_put);
- DECLARE_WRITE_LINE_MEMBER(intrq_w);
- DECLARE_WRITE_LINE_MEMBER(drq_w);
DECLARE_WRITE_LINE_MEMBER(frame);
DECLARE_DRIVER_INIT(bigbord2);
TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick);
@@ -147,8 +145,6 @@ private:
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
- void fdc_intrq_w(bool state);
- void fdc_drq_w(bool state);
address_space *m_mem;
address_space *m_io;
required_device<cpu_device> m_maincpu;
@@ -475,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);
@@ -599,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/bingoc.cpp b/src/mame/drivers/bingoc.cpp
index 267156611e7..868fd3c3563 100644
--- a/src/mame/drivers/bingoc.cpp
+++ b/src/mame/drivers/bingoc.cpp
@@ -47,7 +47,6 @@ public:
UINT8 m_x;
DECLARE_READ16_MEMBER(unknown_r);
- DECLARE_READ8_MEMBER(sound_test_r);
DECLARE_WRITE16_MEMBER(main_sound_latch_w);
DECLARE_WRITE8_MEMBER(sound_play_w);
virtual void video_start() override;
diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp
index 7b50e17bbe7..9b5cff65089 100644
--- a/src/mame/drivers/bionicc.cpp
+++ b/src/mame/drivers/bionicc.cpp
@@ -1,5 +1,6 @@
-// license:???
-// copyright-holders:Steven Frew, Phil Stroffolino, Paul Leaman
+// license:BSD-3-Clause
+// copyright-holders:Phil Stroffolino, Paul Leaman
+// thanks-to: Steven Frew (the author of Slutte)
/******************************************************************************************
Bionic Commando
diff --git a/src/mame/drivers/bitgraph.cpp b/src/mame/drivers/bitgraph.cpp
index 3a2f6a0c26e..511f4fb2a1b 100644
--- a/src/mame/drivers/bitgraph.cpp
+++ b/src/mame/drivers/bitgraph.cpp
@@ -116,8 +116,6 @@ public:
DECLARE_WRITE8_MEMBER( pia_pa_w );
DECLARE_WRITE8_MEMBER( pia_pb_w );
DECLARE_READ_LINE_MEMBER( pia_ca1_r );
- DECLARE_READ_LINE_MEMBER( pia_cb1_r );
- DECLARE_WRITE_LINE_MEMBER( pia_ca2_w );
DECLARE_WRITE_LINE_MEMBER( pia_cb2_w );
DECLARE_WRITE16_MEMBER( baud_write );
diff --git a/src/mame/drivers/bladestl.cpp b/src/mame/drivers/bladestl.cpp
index 14f8fc0a641..565ba8b3fab 100644
--- a/src/mame/drivers/bladestl.cpp
+++ b/src/mame/drivers/bladestl.cpp
@@ -65,12 +65,12 @@ READ8_MEMBER(bladestl_state::trackball_r)
WRITE8_MEMBER(bladestl_state::bladestl_bankswitch_w)
{
/* bits 0 & 1 = coin counters */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
/* bits 2 & 3 = lamps */
- set_led_status(machine(), 0,data & 0x04);
- set_led_status(machine(), 1,data & 0x08);
+ output().set_led_value(0,data & 0x04);
+ output().set_led_value(1,data & 0x08);
/* bit 4 = relay (???) */
diff --git a/src/mame/drivers/blitz.cpp b/src/mame/drivers/blitz.cpp
index ab634220cec..b4a5eb325f0 100644
--- a/src/mame/drivers/blitz.cpp
+++ b/src/mame/drivers/blitz.cpp
@@ -419,16 +419,16 @@ WRITE8_MEMBER(blitz_state::mux_w)
WRITE8_MEMBER(blitz_state::lamps_a_w)
{
-// output_set_lamp_value(0, 1 - ((data) & 1)); /* Lamp 0 */
-// output_set_lamp_value(1, 1 - ((data >> 1) & 1)); /* Lamp 1 */
-// output_set_lamp_value(2, 1 - ((data >> 2) & 1)); /* Lamp 2 */
-// output_set_lamp_value(3, 1 - ((data >> 3) & 1)); /* Lamp 3 */
-// output_set_lamp_value(4, 1 - ((data >> 4) & 1)); /* Lamp 4 */
+// output().set_lamp_value(0, 1 - ((data) & 1)); /* Lamp 0 */
+// output().set_lamp_value(1, 1 - ((data >> 1) & 1)); /* Lamp 1 */
+// output().set_lamp_value(2, 1 - ((data >> 2) & 1)); /* Lamp 2 */
+// output().set_lamp_value(3, 1 - ((data >> 3) & 1)); /* Lamp 3 */
+// output().set_lamp_value(4, 1 - ((data >> 4) & 1)); /* Lamp 4 */
// popmessage("written : %02X", data);
-// coin_counter_w(machine(), 0, data & 0x40); /* counter1 */
-// coin_counter_w(machine(), 1, data & 0x80); /* counter2 */
-// coin_counter_w(machine(), 2, data & 0x20); /* counter3 */
+// machine().bookkeeping().coin_counter_w(0, data & 0x40); /* counter1 */
+// machine().bookkeeping().coin_counter_w(1, data & 0x80); /* counter2 */
+// machine().bookkeeping().coin_counter_w(2, data & 0x20); /* counter3 */
}
diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp
index e236de0c4ad..ffa7d6215c8 100644
--- a/src/mame/drivers/blitz68k.cpp
+++ b/src/mame/drivers/blitz68k.cpp
@@ -73,7 +73,7 @@ public:
m_palette(*this, "palette") { }
optional_shared_ptr<UINT16> m_nvram;
- UINT8 *m_blit_buffer;
+ std::unique_ptr<UINT8[]> m_blit_buffer;
optional_shared_ptr<UINT16> m_frame_buffer;
optional_shared_ptr<UINT16> m_blit_romaddr;
optional_shared_ptr<UINT16> m_blit_attr1_ram;
@@ -116,8 +116,6 @@ public:
DECLARE_READ16_MEMBER(blitter_status_r);
DECLARE_WRITE16_MEMBER(lamps_w);
DECLARE_READ16_MEMBER(test_r);
- DECLARE_WRITE16_MEMBER(irq_callback_w);
- DECLARE_WRITE16_MEMBER(sound_write_w);
DECLARE_READ8_MEMBER(bankrob_mcu1_r);
DECLARE_READ8_MEMBER(bankrob_mcu2_r);
DECLARE_READ8_MEMBER(bankrob_mcu_status_read_r);
@@ -206,7 +204,7 @@ struct blit_t
VIDEO_START_MEMBER(blitz68k_state,blitz68k)
{
- m_blit_buffer = auto_alloc_array(machine(), UINT8, 512*256);
+ m_blit_buffer = std::make_unique<UINT8[]>(512*256);
blit.addr_factor = 2;
}
@@ -220,7 +218,7 @@ UINT32 blitz68k_state::screen_update_blitz68k(screen_device &screen, bitmap_rgb3
{
int x,y;
- UINT8 *src = m_blit_buffer;
+ UINT8 *src = m_blit_buffer.get();
for(y = 0; y < 256; y++)
{
@@ -844,14 +842,14 @@ WRITE16_MEMBER(blitz68k_state::cjffruit_leds1_w)
data = COMBINE_DATA(m_leds0);
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x0100); // coin in
- set_led_status(machine(), 0, data & 0x0200); // win???
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100); // coin in
+ output().set_led_value(0, data & 0x0200); // win???
// 1 data & 0x0400 // win???
- set_led_status(machine(), 2, data & 0x0800); // small
- set_led_status(machine(), 3, data & 0x1000); // big
- set_led_status(machine(), 4, data & 0x2000); // take
- set_led_status(machine(), 5, data & 0x4000); // double up
- set_led_status(machine(), 6, data & 0x8000); // cancel
+ output().set_led_value(2, data & 0x0800); // small
+ output().set_led_value(3, data & 0x1000); // big
+ output().set_led_value(4, data & 0x2000); // take
+ output().set_led_value(5, data & 0x4000); // double up
+ output().set_led_value(6, data & 0x8000); // cancel
show_leds123();
}
}
@@ -861,14 +859,14 @@ WRITE16_MEMBER(blitz68k_state::cjffruit_leds2_w)
data = COMBINE_DATA(m_leds1);
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 7, data & 0x0100); // start
- set_led_status(machine(), 8, data & 0x0200); // bet
- set_led_status(machine(), 9, data & 0x0400); // hold 5
- set_led_status(machine(), 10, data & 0x0800); // hold 4
- set_led_status(machine(), 11, data & 0x1000); // hold 3
- set_led_status(machine(), 12, data & 0x2000); // hold 2
- set_led_status(machine(), 13, data & 0x4000); // collect
- set_led_status(machine(), 14, data & 0x8000); // call attendant
+ output().set_led_value( 7, data & 0x0100); // start
+ output().set_led_value( 8, data & 0x0200); // bet
+ output().set_led_value( 9, data & 0x0400); // hold 5
+ output().set_led_value(10, data & 0x0800); // hold 4
+ output().set_led_value(11, data & 0x1000); // hold 3
+ output().set_led_value(12, data & 0x2000); // hold 2
+ output().set_led_value(13, data & 0x4000); // collect
+ output().set_led_value(14, data & 0x8000); // call attendant
show_leds123();
}
}
@@ -878,8 +876,8 @@ WRITE16_MEMBER(blitz68k_state::cjffruit_leds3_w)
data = COMBINE_DATA(m_leds2);
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 15, data & 0x0100); // hopper coins?
- set_led_status(machine(), 16, data & 0x0400); // coin out?
+ output().set_led_value(15, data & 0x0100); // hopper coins?
+ output().set_led_value(16, data & 0x0400); // coin out?
show_leds123();
}
}
@@ -984,14 +982,14 @@ WRITE16_MEMBER(blitz68k_state::deucesw2_leds1_w)
data = COMBINE_DATA(m_leds0);
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x0100); // coin in
- set_led_status(machine(), 0, data & 0x0200); // win???
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100); // coin in
+ output().set_led_value(0, data & 0x0200); // win???
// 1 data & 0x0400 // win???
- set_led_status(machine(), 2, data & 0x0800); // small
- set_led_status(machine(), 3, data & 0x1000); // big
- set_led_status(machine(), 4, data & 0x2000); // take
- set_led_status(machine(), 5, data & 0x4000); // double up
- set_led_status(machine(), 6, data & 0x8000); // cancel
+ output().set_led_value(2, data & 0x0800); // small
+ output().set_led_value(3, data & 0x1000); // big
+ output().set_led_value(4, data & 0x2000); // take
+ output().set_led_value(5, data & 0x4000); // double up
+ output().set_led_value(6, data & 0x8000); // cancel
show_leds123();
}
}
@@ -1001,14 +999,14 @@ WRITE16_MEMBER(blitz68k_state::deucesw2_leds2_w)
data = COMBINE_DATA(m_leds1);
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 7, data & 0x0100); // start
- set_led_status(machine(), 8, data & 0x0200); // bet
- set_led_status(machine(), 9, data & 0x0400); // hold 5
- set_led_status(machine(), 10, data & 0x0800); // hold 4
- set_led_status(machine(), 11, data & 0x1000); // hold 3
- set_led_status(machine(), 12, data & 0x2000); // hold 2
- set_led_status(machine(), 13, data & 0x4000); // hold 1
- set_led_status(machine(), 14, data & 0x8000); // call attendant
+ output().set_led_value( 7, data & 0x0100); // start
+ output().set_led_value( 8, data & 0x0200); // bet
+ output().set_led_value( 9, data & 0x0400); // hold 5
+ output().set_led_value(10, data & 0x0800); // hold 4
+ output().set_led_value(11, data & 0x1000); // hold 3
+ output().set_led_value(12, data & 0x2000); // hold 2
+ output().set_led_value(13, data & 0x4000); // hold 1
+ output().set_led_value(14, data & 0x8000); // call attendant
show_leds123();
}
}
@@ -1018,8 +1016,8 @@ WRITE16_MEMBER(blitz68k_state::deucesw2_leds3_w)
data = COMBINE_DATA(m_leds2);
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 15, data & 0x0100); // hopper coins?
- set_led_status(machine(), 16, data & 0x0400); // coin out?
+ output().set_led_value(15, data & 0x0100); // hopper coins?
+ output().set_led_value(16, data & 0x0400); // coin out?
show_leds123();
}
}
@@ -1174,7 +1172,7 @@ WRITE16_MEMBER(blitz68k_state::hermit_leds1_w)
data = COMBINE_DATA(m_leds0);
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x0100); // coin in
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100); // coin in
show_leds12();
}
}
@@ -1184,7 +1182,7 @@ WRITE16_MEMBER(blitz68k_state::hermit_leds2_w)
data = COMBINE_DATA(m_leds1);
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 7, data & 0x0100); // button
+ output().set_led_value( 7, data & 0x0100); // button
show_leds12();
}
}
diff --git a/src/mame/drivers/blktiger.cpp b/src/mame/drivers/blktiger.cpp
index f79c4adac3c..869195e3a6d 100644
--- a/src/mame/drivers/blktiger.cpp
+++ b/src/mame/drivers/blktiger.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
@@ -63,8 +63,8 @@ WRITE8_MEMBER(blktiger_state::blktiger_coinlockout_w)
{
if (ioport("COIN_LOCKOUT")->read() & 0x01)
{
- coin_lockout_w(machine(), 0,~data & 0x01);
- coin_lockout_w(machine(), 1,~data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x02);
}
}
diff --git a/src/mame/drivers/blockhl.cpp b/src/mame/drivers/blockhl.cpp
index 3d288cc5849..8cca358e26a 100644
--- a/src/mame/drivers/blockhl.cpp
+++ b/src/mame/drivers/blockhl.cpp
@@ -188,8 +188,8 @@ WRITE8_MEMBER( blockhl_state::banking_callback )
// bit 2, unknown (always 0)
// bits 3/4 = coin counters
- coin_counter_w(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 1, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(1, data & 0x10);
// bit 5 = select palette RAM or work RAM at 5800-5fff
m_bank5800->set_bank(BIT(data, 5));
diff --git a/src/mame/drivers/blueprnt.cpp b/src/mame/drivers/blueprnt.cpp
index 03d71b8fcd2..1c21a0ca56d 100644
--- a/src/mame/drivers/blueprnt.cpp
+++ b/src/mame/drivers/blueprnt.cpp
@@ -85,8 +85,8 @@ WRITE8_MEMBER(blueprnt_state::blueprnt_sound_command_w)
WRITE8_MEMBER(blueprnt_state::blueprnt_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
/*************************************
diff --git a/src/mame/drivers/bmcpokr.cpp b/src/mame/drivers/bmcpokr.cpp
index 6a645bc9fcf..6bd9d2c6ce8 100644
--- a/src/mame/drivers/bmcpokr.cpp
+++ b/src/mame/drivers/bmcpokr.cpp
@@ -81,11 +81,10 @@ public:
tilemap_t *m_tilemap_2;
TILE_GET_INFO_MEMBER(get_t1_tile_info);
TILE_GET_INFO_MEMBER(get_t2_tile_info);
- TILE_GET_INFO_MEMBER(get_t3_tile_info);
DECLARE_WRITE16_MEMBER(videoram_1_w);
DECLARE_WRITE16_MEMBER(videoram_2_w);
- bitmap_ind16 *m_pixbitmap;
+ std::unique_ptr<bitmap_ind16> m_pixbitmap;
void pixbitmap_redraw();
UINT16 m_pixpal;
DECLARE_WRITE16_MEMBER(pixram_w);
@@ -149,7 +148,7 @@ void bmcpokr_state::video_start()
m_tilemap_1->set_scroll_cols(1);
m_tilemap_2->set_scroll_cols(1);
- m_pixbitmap = auto_bitmap_ind16_alloc(machine(), 0x400, 0x200);
+ m_pixbitmap = std::make_unique<bitmap_ind16>(0x400, 0x200);
save_state();
}
@@ -328,8 +327,8 @@ WRITE16_MEMBER(bmcpokr_state::mux_w)
if (ACCESSING_BITS_0_7)
{
m_hopper->write(space, 0, (data & 0x0001) ? 0x80 : 0x00); // hopper motor
- coin_counter_w(machine(), 1, data & 0x0002); // coin-in / key-in
- coin_counter_w(machine(), 2, data & 0x0004); // pay-out
+ machine().bookkeeping().coin_counter_w(1, data & 0x0002); // coin-in / key-in
+ machine().bookkeeping().coin_counter_w(2, data & 0x0004); // pay-out
// data & 0x0060 // DSW mux
// data & 0x0080 // ? always on
}
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/bml3.cpp b/src/mame/drivers/bml3.cpp
index b0421009ec1..a2e405950c6 100644
--- a/src/mame/drivers/bml3.cpp
+++ b/src/mame/drivers/bml3.cpp
@@ -145,7 +145,7 @@ private:
virtual void machine_start() override;
void m6845_change_clock(UINT8 setting);
UINT8 m_crtc_index;
- UINT8 *m_extram;
+ std::unique_ptr<UINT8[]> m_extram;
UINT8 m_firq_mask;
UINT8 m_firq_status;
required_device<cpu_device> m_maincpu;
@@ -762,7 +762,7 @@ INTERRUPT_GEN_MEMBER(bml3_state::bml3_timer_firq)
void bml3_state::machine_start()
{
- m_extram = auto_alloc_array(machine(),UINT8,0x10000);
+ m_extram = std::make_unique<UINT8[]>(0x10000);
m_p_chargen = memregion("chargen")->base();
m_p_videoram = memregion("vram")->base();
m_psg_latch = 0;
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/bob85.cpp b/src/mame/drivers/bob85.cpp
index 71f28bd5ad4..d0c1eb88965 100644
--- a/src/mame/drivers/bob85.cpp
+++ b/src/mame/drivers/bob85.cpp
@@ -137,7 +137,7 @@ READ8_MEMBER(bob85_state::bob85_keyboard_r)
WRITE8_MEMBER(bob85_state::bob85_7seg_w)
{
- output_set_digit_value(offset, BITSWAP8( data,3,2,1,0,7,6,5,4 ));
+ output().set_digit_value(offset, BITSWAP8( data,3,2,1,0,7,6,5,4 ));
}
static ADDRESS_MAP_START( bob85_mem, AS_PROGRAM, 8, bob85_state )
diff --git a/src/mame/drivers/bottom9.cpp b/src/mame/drivers/bottom9.cpp
index d5e1fa3479c..7d3e5d9a61f 100644
--- a/src/mame/drivers/bottom9.cpp
+++ b/src/mame/drivers/bottom9.cpp
@@ -108,8 +108,8 @@ WRITE8_MEMBER(bottom9_state::bankswitch_w)
WRITE8_MEMBER(bottom9_state::bottom9_1f90_w)
{
/* bits 0/1 = coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
diff --git a/src/mame/drivers/boxer.cpp b/src/mame/drivers/boxer.cpp
index d8300fc9dde..eb31c5dc174 100644
--- a/src/mame/drivers/boxer.cpp
+++ b/src/mame/drivers/boxer.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -316,14 +316,14 @@ WRITE8_MEMBER(boxer_state::boxer_crowd_w)
/* BIT2 => CROWD-2 */
/* BIT3 => CROWD-3 */
- coin_lockout_global_w(machine(), data & 1);
+ machine().bookkeeping().coin_lockout_global_w(data & 1);
}
WRITE8_MEMBER(boxer_state::boxer_led_w)
{
- set_led_status(machine(), 1, !(data & 1));
- set_led_status(machine(), 0, !(data & 2));
+ output().set_led_value(1, !(data & 1));
+ output().set_led_value(0, !(data & 2));
}
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/buster.cpp b/src/mame/drivers/buster.cpp
index b7048f13bbc..f08a32eeb0a 100644
--- a/src/mame/drivers/buster.cpp
+++ b/src/mame/drivers/buster.cpp
@@ -25,7 +25,6 @@ public:
m_palette(*this, "palette") { }
required_shared_ptr<UINT8> m_vram;
- DECLARE_READ8_MEMBER(test_r);
virtual void video_start() override;
UINT32 screen_update_buster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp
index 3f2db33ab16..fb9e1ce66c2 100644
--- a/src/mame/drivers/bw12.cpp
+++ b/src/mame/drivers/bw12.cpp
@@ -123,7 +123,7 @@ void bw12_state::ls259_w(int address, int data)
break;
case 4: /* CAP LOCK */
- output_set_led_value(0, data);
+ output().set_led_value(0, data);
break;
case 5: /* MOTOR 0 */
@@ -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/bwidow.cpp b/src/mame/drivers/bwidow.cpp
index afe5c9654d7..ad21a0444be 100644
--- a/src/mame/drivers/bwidow.cpp
+++ b/src/mame/drivers/bwidow.cpp
@@ -333,24 +333,24 @@ WRITE8_MEMBER(bwidow_state::bwidow_misc_w)
*/
if (data == m_lastdata) return;
- set_led_status(machine(), 0,~data & 0x10);
- set_led_status(machine(), 1,~data & 0x20);
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ output().set_led_value(0,~data & 0x10);
+ output().set_led_value(1,~data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
m_lastdata = data;
}
WRITE8_MEMBER(bwidow_state::spacduel_coin_counter_w)
{
if (data == m_lastdata) return;
- set_led_status(machine(), 0, !BIT(data,5)); // start lamp
- set_led_status(machine(), 1, !BIT(data,4)); // select lamp
- coin_lockout_w(machine(), 0, !BIT(data,3));
- coin_lockout_w(machine(), 1, !BIT(data,3));
- coin_lockout_w(machine(), 2, !BIT(data,3));
- coin_counter_w(machine(), 0, BIT(data,0));
- coin_counter_w(machine(), 1, BIT(data,1));
- coin_counter_w(machine(), 2, BIT(data,2));
+ output().set_led_value(0, !BIT(data,5)); // start lamp
+ output().set_led_value(1, !BIT(data,4)); // select lamp
+ machine().bookkeeping().coin_lockout_w(0, !BIT(data,3));
+ machine().bookkeeping().coin_lockout_w(1, !BIT(data,3));
+ machine().bookkeeping().coin_lockout_w(2, !BIT(data,3));
+ machine().bookkeeping().coin_counter_w(0, BIT(data,0));
+ machine().bookkeeping().coin_counter_w(1, BIT(data,1));
+ machine().bookkeeping().coin_counter_w(2, BIT(data,2));
m_lastdata = data;
}
diff --git a/src/mame/drivers/by17.cpp b/src/mame/drivers/by17.cpp
index 9d2fec2ace3..690409b5c13 100644
--- a/src/mame/drivers/by17.cpp
+++ b/src/mame/drivers/by17.cpp
@@ -533,11 +533,11 @@ WRITE_LINE_MEMBER( by17_state::u10_ca2_w )
for (digit=1; digit<=8; digit++)
{
- output_set_digit_value(10+digit, 0);
- output_set_digit_value(20+digit, 0);
- output_set_digit_value(30+digit, 0);
- output_set_digit_value(40+digit, 0);
- output_set_digit_value(50+digit, 0);
+ output().set_digit_value(10+digit, 0);
+ output().set_digit_value(20+digit, 0);
+ output().set_digit_value(30+digit, 0);
+ output().set_digit_value(40+digit, 0);
+ output().set_digit_value(50+digit, 0);
}
}
#endif
@@ -557,7 +557,7 @@ WRITE_LINE_MEMBER( by17_state::u10_cb2_w )
WRITE_LINE_MEMBER( by17_state::u11_ca2_w )
{
- output_set_value("led0", state);
+ output().set_value("led0", state);
}
READ_LINE_MEMBER( by17_state::u11_ca1_r )
@@ -605,10 +605,10 @@ WRITE8_MEMBER( by17_state::u10_a_w )
{
if ((m_lamp_decode & 0x0f) < 0x0f)
{
- if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00), ((data & 0x10) ? FALSE : TRUE));
- if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15), ((data & 0x20) ? FALSE : TRUE));
- if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30), ((data & 0x40) ? FALSE : TRUE));
- if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45), ((data & 0x80) ? FALSE : TRUE));
+ if (output().get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00) ) ==0 ) output().set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00), ((data & 0x10) ? FALSE : TRUE));
+ if (output().get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15) ) ==0 ) output().set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15), ((data & 0x20) ? FALSE : TRUE));
+ if (output().get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30) ) ==0 ) output().set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30), ((data & 0x40) ? FALSE : TRUE));
+ if (output().get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45) ) ==0 ) output().set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45), ((data & 0x80) ? FALSE : TRUE));
}
else
{
@@ -698,11 +698,11 @@ WRITE8_MEMBER( by17_state::u11_a_w )
{
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 - BCD to 7 Segment Display Decoder
- output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
- output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
- output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
- output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
- output_set_digit_value(50+m_digit, patterns[m_segment[5]]);
+ output().set_digit_value(10+m_digit, patterns[m_segment[1]]);
+ output().set_digit_value(20+m_digit, patterns[m_segment[2]]);
+ output().set_digit_value(30+m_digit, patterns[m_segment[3]]);
+ output().set_digit_value(40+m_digit, patterns[m_segment[4]]);
+ output().set_digit_value(50+m_digit, patterns[m_segment[5]]);
}
@@ -715,7 +715,7 @@ WRITE8_MEMBER( by17_state::u11_b_w )
{
if ((data & 0x0f) < 0x0f) // Momentary Solenoids
{
- output_set_indexed_value( "solenoid", (data & 0x0f), TRUE);
+ output().set_indexed_value( "solenoid", (data & 0x0f), TRUE);
if (m_solenoid_features[(data & 0x0f)][3]) // Reset/release relevant switch after firing Solenoid
m_io_hold_x[(m_solenoid_features[(data & 0x0f)][2])] &= (m_solenoid_features[(data & 0x0f)][3]);
@@ -727,7 +727,7 @@ WRITE8_MEMBER( by17_state::u11_b_w )
{
for (int i=0; i<15; i++)
{
- output_set_indexed_value( "solenoid", i, FALSE);
+ output().set_indexed_value( "solenoid", i, FALSE);
}
}
}
@@ -735,49 +735,49 @@ WRITE8_MEMBER( by17_state::u11_b_w )
if ((m_u11b & 0x10) && ((data & 0x10)==0))
{
- output_set_value("solenoid16", TRUE);
+ output().set_value("solenoid16", TRUE);
if (m_solenoid_features[16][0] != 0xff)
m_samples->start(m_solenoid_features[16][0], m_solenoid_features[16][1]);
}
else if ((data & 0x10) && ((m_u11b & 0x10)==0))
{
- output_set_value("solenoid16", FALSE);
+ output().set_value("solenoid16", FALSE);
if (m_solenoid_features[16][0] != 0xff)
m_samples->start(m_solenoid_features[16][0], m_solenoid_features[16][2]);
}
if ((m_u11b & 0x20) && ((data & 0x20)==0))
{
- output_set_value("solenoid17", TRUE); // Coin Lockout Coil engage
+ output().set_value("solenoid17", TRUE); // Coin Lockout Coil engage
if (m_solenoid_features[17][0] != 0xff)
m_samples->start(m_solenoid_features[17][0], m_solenoid_features[17][1]);
}
else if ((data & 0x20) && ((m_u11b & 0x20)==0))
{
- output_set_value("solenoid17", FALSE); // Coin Lockout Coil release
+ output().set_value("solenoid17", FALSE); // Coin Lockout Coil release
if (m_solenoid_features[17][0] != 0xff)
m_samples->start(m_solenoid_features[17][0], m_solenoid_features[17][2]);
}
if ((m_u11b & 0x40) && ((data & 0x40)==0))
{
- output_set_value("solenoid18", TRUE); // Flipper Enable Relay engage
+ output().set_value("solenoid18", TRUE); // Flipper Enable Relay engage
if (m_solenoid_features[18][0] != 0xff)
m_samples->start(m_solenoid_features[18][0], m_solenoid_features[18][1]);
}
else if ((data & 0x40) && ((m_u11b & 0x40)==0))
{
- output_set_value("solenoid18", FALSE); // Flipper Enable Relay release
+ output().set_value("solenoid18", FALSE); // Flipper Enable Relay release
if (m_solenoid_features[18][0] != 0xff)
m_samples->start(m_solenoid_features[18][0], m_solenoid_features[18][2]);
}
if ((m_u11b & 0x80) && ((data & 0x80)==0))
{
- output_set_value("solenoid19", TRUE);
+ output().set_value("solenoid19", TRUE);
if (m_solenoid_features[19][0] != 0xff)
m_samples->start(m_solenoid_features[19][0], m_solenoid_features[19][1]);
}
else if ((data & 0x80) && ((m_u11b & 0x80)==0))
{
- output_set_value("solenoid19", FALSE);
+ output().set_value("solenoid19", FALSE);
if (m_solenoid_features[19][0] != 0xff)
m_samples->start(m_solenoid_features[19][0], m_solenoid_features[19][2]);
}
@@ -809,7 +809,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( by17_state::timer_z_freq )
for (int i=0; i<60; i++)
{
- output_set_indexed_value( "lamp", i, 0 );
+ output().set_indexed_value( "lamp", i, 0 );
}
}
diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp
index 923b11470fb..476804d398b 100644
--- a/src/mame/drivers/by35.cpp
+++ b/src/mame/drivers/by35.cpp
@@ -521,11 +521,11 @@ WRITE_LINE_MEMBER( by35_state::u10_ca2_w )
for (digit=1; digit<=8; digit++)
{
- output_set_digit_value(10+digit, 0);
- output_set_digit_value(20+digit, 0);
- output_set_digit_value(30+digit, 0);
- output_set_digit_value(40+digit, 0);
- output_set_digit_value(50+digit, 0);
+ output().set_digit_value(10+digit, 0);
+ output().set_digit_value(20+digit, 0);
+ output().set_digit_value(30+digit, 0);
+ output().set_digit_value(40+digit, 0);
+ output().set_digit_value(50+digit, 0);
}
}
#endif
@@ -545,7 +545,7 @@ WRITE_LINE_MEMBER( by35_state::u10_cb2_w )
WRITE_LINE_MEMBER( by35_state::u11_ca2_w )
{
- output_set_value("led0", state);
+ output().set_value("led0", state);
}
READ_LINE_MEMBER( by35_state::u11_ca1_r )
@@ -609,10 +609,10 @@ WRITE8_MEMBER( by35_state::u10_a_w )
{
if ((m_lamp_decode & 0x0f) < 0x0f)
{
- if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00), ((data & 0x10) ? FALSE : TRUE));
- if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15), ((data & 0x20) ? FALSE : TRUE));
- if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30), ((data & 0x40) ? FALSE : TRUE));
- if (output_get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45) ) ==0 ) output_set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45), ((data & 0x80) ? FALSE : TRUE));
+ if (output().get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00) ) ==0 ) output().set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+00), ((data & 0x10) ? FALSE : TRUE));
+ if (output().get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15) ) ==0 ) output().set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+15), ((data & 0x20) ? FALSE : TRUE));
+ if (output().get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30) ) ==0 ) output().set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+30), ((data & 0x40) ? FALSE : TRUE));
+ if (output().get_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45) ) ==0 ) output().set_indexed_value("lamp", ((m_lamp_decode & 0x0f)+45), ((data & 0x80) ? FALSE : TRUE));
}
else
{
@@ -705,11 +705,11 @@ WRITE8_MEMBER( by35_state::u11_a_w )
{
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543 - BCD to 7 Segment Display Decoder
- output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
- output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
- output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
- output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
- output_set_digit_value(50+m_digit, patterns[m_segment[5]]);
+ output().set_digit_value(10+m_digit, patterns[m_segment[1]]);
+ output().set_digit_value(20+m_digit, patterns[m_segment[2]]);
+ output().set_digit_value(30+m_digit, patterns[m_segment[3]]);
+ output().set_digit_value(40+m_digit, patterns[m_segment[4]]);
+ output().set_digit_value(50+m_digit, patterns[m_segment[5]]);
}
@@ -723,11 +723,11 @@ WRITE8_MEMBER( by35_state::u11_b_w )
if ((data & 0x0f) < 0x0f) // Momentary Solenoids
{
if (m_solenoid_features[(data & 0x0f)][0] != 0xff) { // Play solenoid audio sample
- if (output_get_indexed_value("solenoid", (data & 0x0f)) == FALSE)
+ if (output().get_indexed_value("solenoid", (data & 0x0f)) == FALSE)
m_samples->start(m_solenoid_features[(data & 0x0f)][0], m_solenoid_features[(data & 0x0f)][1]);
}
- output_set_indexed_value( "solenoid", (data & 0x0f), TRUE);
+ output().set_indexed_value( "solenoid", (data & 0x0f), TRUE);
if (m_solenoid_features[(data & 0x0f)][3]) // Reset/release relevant switch after firing Solenoid
m_io_hold_x[(m_solenoid_features[(data & 0x0f)][2])] &= (m_solenoid_features[(data & 0x0f)][3]);
@@ -736,7 +736,7 @@ WRITE8_MEMBER( by35_state::u11_b_w )
{
for (int i=0; i<15; i++)
{
- output_set_indexed_value( "solenoid", i, FALSE);
+ output().set_indexed_value( "solenoid", i, FALSE);
}
}
}
@@ -744,49 +744,49 @@ WRITE8_MEMBER( by35_state::u11_b_w )
if ((m_u11b & 0x10) && ((data & 0x10)==0))
{
- output_set_value("solenoid16", TRUE);
+ output().set_value("solenoid16", TRUE);
if (m_solenoid_features[16][0] != 0xff)
m_samples->start(m_solenoid_features[16][0], m_solenoid_features[16][1]);
}
else if ((data & 0x10) && ((m_u11b & 0x10)==0))
{
- output_set_value("solenoid16", FALSE);
+ output().set_value("solenoid16", FALSE);
if (m_solenoid_features[16][0] != 0xff)
m_samples->start(m_solenoid_features[16][0], m_solenoid_features[16][2]);
}
if ((m_u11b & 0x20) && ((data & 0x20)==0))
{
- output_set_value("solenoid17", TRUE); // Coin Lockout Coil engage
+ output().set_value("solenoid17", TRUE); // Coin Lockout Coil engage
if (m_solenoid_features[17][0] != 0xff)
m_samples->start(m_solenoid_features[17][0], m_solenoid_features[17][1]);
}
else if ((data & 0x20) && ((m_u11b & 0x20)==0))
{
- output_set_value("solenoid17", FALSE); // Coin Lockout Coil release
+ output().set_value("solenoid17", FALSE); // Coin Lockout Coil release
if (m_solenoid_features[17][0] != 0xff)
m_samples->start(m_solenoid_features[17][0], m_solenoid_features[17][2]);
}
if ((m_u11b & 0x40) && ((data & 0x40)==0))
{
- output_set_value("solenoid18", TRUE); // Flipper Enable Relay engage
+ output().set_value("solenoid18", TRUE); // Flipper Enable Relay engage
if (m_solenoid_features[18][0] != 0xff)
m_samples->start(m_solenoid_features[18][0], m_solenoid_features[18][1]);
}
else if ((data & 0x40) && ((m_u11b & 0x40)==0))
{
- output_set_value("solenoid18", FALSE); // Flipper Enable Relay release
+ output().set_value("solenoid18", FALSE); // Flipper Enable Relay release
if (m_solenoid_features[18][0] != 0xff)
m_samples->start(m_solenoid_features[18][0], m_solenoid_features[18][2]);
}
if ((m_u11b & 0x80) && ((data & 0x80)==0))
{
- output_set_value("solenoid19", TRUE);
+ output().set_value("solenoid19", TRUE);
if (m_solenoid_features[19][0] != 0xff)
m_samples->start(m_solenoid_features[19][0], m_solenoid_features[19][1]);
}
else if ((data & 0x80) && ((m_u11b & 0x80)==0))
{
- output_set_value("solenoid19", FALSE);
+ output().set_value("solenoid19", FALSE);
if (m_solenoid_features[19][0] != 0xff)
m_samples->start(m_solenoid_features[19][0], m_solenoid_features[19][2]);
}
@@ -823,7 +823,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( by35_state::timer_z_freq )
for (int i=0; i<60; i++)
{
- output_set_indexed_value( "lamp", i, 0 );
+ output().set_indexed_value( "lamp", i, 0 );
}
}
diff --git a/src/mame/drivers/by6803.cpp b/src/mame/drivers/by6803.cpp
index e2a9e1da262..bc7ce7e9f14 100644
--- a/src/mame/drivers/by6803.cpp
+++ b/src/mame/drivers/by6803.cpp
@@ -186,7 +186,7 @@ READ8_MEMBER( by6803_state::port2_r )
WRITE8_MEMBER( by6803_state::port2_w )
{
m_port2 = data;
- output_set_value("led0", BIT(data, 2)); // P22 drives LED
+ output().set_value("led0", BIT(data, 2)); // P22 drives LED
}
// display latch strobes; display blanking
@@ -222,19 +222,19 @@ WRITE8_MEMBER( by6803_state::pia0_a_w )
switch (m_pia0_a)
{
case 0x10: // wrong
- output_set_digit_value(m_digit, m_segment);
+ output().set_digit_value(m_digit, m_segment);
break;
case 0x1d:
- output_set_digit_value(8+m_digit, m_segment);
+ output().set_digit_value(8+m_digit, m_segment);
break;
case 0x1b:
- output_set_digit_value(16+m_digit, m_segment);
+ output().set_digit_value(16+m_digit, m_segment);
break;
case 0x07:
- output_set_digit_value(24+m_digit, m_segment);
+ output().set_digit_value(24+m_digit, m_segment);
break;
case 0x0f:
- output_set_digit_value(32+m_digit, m_segment);
+ output().set_digit_value(32+m_digit, m_segment);
break;
default:
break;
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/bzone.cpp b/src/mame/drivers/bzone.cpp
index 03601f5cb6e..e3b43d4d4cf 100644
--- a/src/mame/drivers/bzone.cpp
+++ b/src/mame/drivers/bzone.cpp
@@ -266,7 +266,7 @@ CUSTOM_INPUT_MEMBER(bzone_state::clock_r)
WRITE8_MEMBER(bzone_state::bzone_coin_counter_w)
{
- coin_counter_w(machine(), offset,data);
+ machine().bookkeeping().coin_counter_w(offset,data);
}
diff --git a/src/mame/drivers/c80.cpp b/src/mame/drivers/c80.cpp
index 028bcb5c803..b1dfb1263aa 100644
--- a/src/mame/drivers/c80.cpp
+++ b/src/mame/drivers/c80.cpp
@@ -202,7 +202,7 @@ WRITE8_MEMBER( c80_state::pio1_pb_w )
if (!m_pio1_a5)
{
- output_set_digit_value(m_digit, data);
+ output().set_digit_value(m_digit, data);
}
m_keylatch = data;
diff --git a/src/mame/drivers/cabal.cpp b/src/mame/drivers/cabal.cpp
index 304d42390db..d60976bc679 100644
--- a/src/mame/drivers/cabal.cpp
+++ b/src/mame/drivers/cabal.cpp
@@ -175,8 +175,8 @@ READ8_MEMBER(cabal_state::cabalbl_snd1_r)
WRITE8_MEMBER(cabal_state::cabalbl_coin_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
//data & 0x40? video enable?
}
diff --git a/src/mame/drivers/cabaret.cpp b/src/mame/drivers/cabaret.cpp
index 8f9df7a020d..bdaf1aef465 100644
--- a/src/mame/drivers/cabaret.cpp
+++ b/src/mame/drivers/cabaret.cpp
@@ -154,12 +154,12 @@ WRITE8_MEMBER(cabaret_state::cabaret_nmi_and_coins_w)
// popmessage("%02x",data);
}
- coin_counter_w(machine(), 0, data & 0x01); // coin_a
- coin_counter_w(machine(), 1, data & 0x04); // coin_c
- coin_counter_w(machine(), 2, data & 0x08); // key in
- coin_counter_w(machine(), 3, data & 0x10); // coin m_out mech
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); // coin_a
+ machine().bookkeeping().coin_counter_w(1, data & 0x04); // coin_c
+ machine().bookkeeping().coin_counter_w(2, data & 0x08); // key in
+ machine().bookkeeping().coin_counter_w(3, data & 0x10); // coin m_out mech
- set_led_status(machine(), 6, data & 0x40); // led for coin m_out / hopper active
+ output().set_led_value(6, data & 0x40); // led for coin m_out / hopper active
m_nmi_enable = data; // data & 0x80 // nmi enable?
diff --git a/src/mame/drivers/calchase.cpp b/src/mame/drivers/calchase.cpp
index 6b446ae47d2..18354d8e5dc 100644
--- a/src/mame/drivers/calchase.cpp
+++ b/src/mame/drivers/calchase.cpp
@@ -149,8 +149,8 @@ public:
{
}
- UINT32 *m_bios_ram;
- UINT32 *m_bios_ext_ram;
+ std::unique_ptr<UINT32[]> m_bios_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext_ram;
UINT8 m_mtxc_config_reg[256];
UINT8 m_piix4_config_reg[4][256];
@@ -204,11 +204,11 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
if (reg == 0x63)
{
if (data & 0x20) // enable RAM access to region 0xf0000 - 0xfffff
- state->membank("bios_bank")->set_base(state->m_bios_ram);
+ state->membank("bios_bank")->set_base(state->m_bios_ram.get());
else // disable RAM access (reads go to BIOS ROM)
state->membank("bios_bank")->set_base(state->memregion("bios")->base() + 0x10000);
if (data & 0x80) // enable RAM access to region 0xe0000 - 0xeffff
- state->membank("bios_ext")->set_base(state->m_bios_ext_ram);
+ state->membank("bios_ext")->set_base(state->m_bios_ext_ram.get());
else
state->membank("bios_ext")->set_base(state->memregion("bios")->base() + 0);
}
@@ -339,7 +339,7 @@ WRITE32_MEMBER(calchase_state::bios_ram_w)
{
if (m_mtxc_config_reg[0x63] & 0x10) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ram + offset);
+ COMBINE_DATA(m_bios_ram.get() + offset);
}
}
@@ -347,7 +347,7 @@ WRITE32_MEMBER(calchase_state::bios_ext_ram_w)
{
if (m_mtxc_config_reg[0x63] & 0x40) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext_ram + offset);
+ COMBINE_DATA(m_bios_ext_ram.get() + offset);
}
}
@@ -641,8 +641,8 @@ INPUT_PORTS_END
void calchase_state::machine_start()
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
- m_bios_ext_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x10000/4);
+ m_bios_ext_ram = std::make_unique<UINT32[]>(0x10000/4);
}
void calchase_state::machine_reset()
@@ -725,7 +725,7 @@ WRITE32_MEMBER(calchase_state::calchase_idle_skip_w)
DRIVER_INIT_MEMBER(calchase_state,calchase)
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x20000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x20000/4);
intel82439tx_init();
@@ -734,7 +734,7 @@ DRIVER_INIT_MEMBER(calchase_state,calchase)
DRIVER_INIT_MEMBER(calchase_state, hostinv)
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x20000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x20000/4);
intel82439tx_init();
}
diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp
index 553d8b0d2e6..4143ff318d1 100644
--- a/src/mame/drivers/calomega.cpp
+++ b/src/mame/drivers/calomega.cpp
@@ -784,33 +784,33 @@ WRITE8_MEMBER(calomega_state::pia1_bout_w)
WRITE8_MEMBER(calomega_state::lamps_903a_w)
{
/* First 5 bits of PIA0 port B */
- output_set_lamp_value(1, 1-((data) & 1)); /* L1 (Hold 1) */
- output_set_lamp_value(2, 1-((data >> 1) & 1)); /* L2 (Hold 2) */
- output_set_lamp_value(3, 1-((data >> 2) & 1)); /* L3 (Hold 3) */
- output_set_lamp_value(4, 1-((data >> 3) & 1)); /* L4 (Hold 4) */
- output_set_lamp_value(5, 1-((data >> 4) & 1)); /* L5 (Hold 5) */
+ output().set_lamp_value(1, 1-((data) & 1)); /* L1 (Hold 1) */
+ output().set_lamp_value(2, 1-((data >> 1) & 1)); /* L2 (Hold 2) */
+ output().set_lamp_value(3, 1-((data >> 2) & 1)); /* L3 (Hold 3) */
+ output().set_lamp_value(4, 1-((data >> 3) & 1)); /* L4 (Hold 4) */
+ output().set_lamp_value(5, 1-((data >> 4) & 1)); /* L5 (Hold 5) */
}
WRITE8_MEMBER(calomega_state::lamps_903b_w)
{
/* First 4 bits of PIA1 port A */
- output_set_lamp_value(6, 1-((data) & 1)); /* L6 (Cancel) */
- output_set_lamp_value(7, 1-((data >> 1) & 1)); /* L7 (Bet) */
- output_set_lamp_value(8, 1-((data >> 2) & 1)); /* L8 (Take) */
- output_set_lamp_value(9, 1-((data >> 3) & 1)); /* L9 (Door?) */
+ output().set_lamp_value(6, 1-((data) & 1)); /* L6 (Cancel) */
+ output().set_lamp_value(7, 1-((data >> 1) & 1)); /* L7 (Bet) */
+ output().set_lamp_value(8, 1-((data >> 2) & 1)); /* L8 (Take) */
+ output().set_lamp_value(9, 1-((data >> 3) & 1)); /* L9 (Door?) */
}
WRITE8_MEMBER(calomega_state::lamps_905_w)
{
/* Whole 8 bits of PIA0 port B */
- output_set_lamp_value(1, 1-((data) & 1)); /* L1 (Hold 1) */
- output_set_lamp_value(2, 1-((data >> 1) & 1)); /* L2 (Hold 2) */
- output_set_lamp_value(3, 1-((data >> 2) & 1)); /* L3 (Hold 3) */
- output_set_lamp_value(4, 1-((data >> 3) & 1)); /* L4 (Hold 4) */
- output_set_lamp_value(5, 1-((data >> 4) & 1)); /* L5 (Hold 5) */
- output_set_lamp_value(6, 1-((data >> 5) & 1)); /* L6 (unknown) */
- output_set_lamp_value(7, 1-((data >> 6) & 1)); /* L7 (unknown) */
- output_set_lamp_value(8, 1-((data >> 7) & 1)); /* L8 (unknown) */
+ output().set_lamp_value(1, 1-((data) & 1)); /* L1 (Hold 1) */
+ output().set_lamp_value(2, 1-((data >> 1) & 1)); /* L2 (Hold 2) */
+ output().set_lamp_value(3, 1-((data >> 2) & 1)); /* L3 (Hold 3) */
+ output().set_lamp_value(4, 1-((data >> 3) & 1)); /* L4 (Hold 4) */
+ output().set_lamp_value(5, 1-((data >> 4) & 1)); /* L5 (Hold 5) */
+ output().set_lamp_value(6, 1-((data >> 5) & 1)); /* L6 (unknown) */
+ output().set_lamp_value(7, 1-((data >> 6) & 1)); /* L7 (unknown) */
+ output().set_lamp_value(8, 1-((data >> 7) & 1)); /* L8 (unknown) */
}
diff --git a/src/mame/drivers/canyon.cpp b/src/mame/drivers/canyon.cpp
index 1e08018a616..41a9fe0bbad 100644
--- a/src/mame/drivers/canyon.cpp
+++ b/src/mame/drivers/canyon.cpp
@@ -95,7 +95,7 @@ READ8_MEMBER(canyon_state::canyon_options_r)
WRITE8_MEMBER(canyon_state::canyon_led_w)
{
- set_led_status(machine(), offset & 0x01, offset & 0x02);
+ output().set_led_value(offset & 0x01, offset & 0x02);
}
diff --git a/src/mame/drivers/cardline.cpp b/src/mame/drivers/cardline.cpp
index ae58b74824b..740fb7e28f4 100644
--- a/src/mame/drivers/cardline.cpp
+++ b/src/mame/drivers/cardline.cpp
@@ -196,14 +196,14 @@ READ8_MEMBER(cardline_state::hsync_r)
WRITE8_MEMBER(cardline_state::lamps_w)
{
/* button lamps 1-8 (collect, card 1-5, bet, start) */
- output_set_lamp_value(5,(data >> 0) & 1);
- output_set_lamp_value(0,(data >> 1) & 1);
- output_set_lamp_value(1,(data >> 2) & 1);
- output_set_lamp_value(2,(data >> 3) & 1);
- output_set_lamp_value(3,(data >> 4) & 1);
- output_set_lamp_value(4,(data >> 5) & 1);
- output_set_lamp_value(6,(data >> 6) & 1);
- output_set_lamp_value(7,(data >> 7) & 1);
+ output().set_lamp_value(5,(data >> 0) & 1);
+ output().set_lamp_value(0,(data >> 1) & 1);
+ output().set_lamp_value(1,(data >> 2) & 1);
+ output().set_lamp_value(2,(data >> 3) & 1);
+ output().set_lamp_value(3,(data >> 4) & 1);
+ output().set_lamp_value(4,(data >> 5) & 1);
+ output().set_lamp_value(6,(data >> 6) & 1);
+ output().set_lamp_value(7,(data >> 7) & 1);
}
static ADDRESS_MAP_START( mem_prg, AS_PROGRAM, 8, cardline_state )
diff --git a/src/mame/drivers/casloopy.cpp b/src/mame/drivers/casloopy.cpp
index 2b5f60f3a41..d01b81163a2 100644
--- a/src/mame/drivers/casloopy.cpp
+++ b/src/mame/drivers/casloopy.cpp
@@ -175,9 +175,9 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- UINT16 *m_paletteram;
- UINT8 *m_vram;
- UINT8 *m_bitmap_vram;
+ std::unique_ptr<UINT16[]> m_paletteram;
+ std::unique_ptr<UINT8[]> m_vram;
+ std::unique_ptr<UINT8[]> m_bitmap_vram;
UINT16 sh7021_regs[0x100];
int m_gfx_index;
DECLARE_DRIVER_INIT(casloopy);
@@ -225,9 +225,9 @@ static const gfx_layout casloopy_8bpp_layout =
void casloopy_state::video_start()
{
/* TODO: proper sizes */
- m_paletteram = auto_alloc_array_clear(machine(), UINT16, 0x1000);
- m_vram = auto_alloc_array_clear(machine(), UINT8, 0x10000);
- m_bitmap_vram = auto_alloc_array_clear(machine(), UINT8, 0x20000);
+ m_paletteram = make_unique_clear<UINT16[]>(0x1000);
+ m_vram = make_unique_clear<UINT8[]>(0x10000);
+ m_bitmap_vram = make_unique_clear<UINT8[]>(0x20000);
for (m_gfx_index = 0; m_gfx_index < MAX_GFX_ELEMENTS; m_gfx_index++)
if (m_gfxdecode->gfx(m_gfx_index) == nullptr)
@@ -236,8 +236,8 @@ void casloopy_state::video_start()
for(int i=0;i<0x10000;i++)
m_vram[i] = i & 0xff;
- m_gfxdecode->set_gfx(m_gfx_index, global_alloc(gfx_element(m_palette, casloopy_4bpp_layout, m_vram, 0, 0x10, 0)));
- m_gfxdecode->set_gfx(m_gfx_index+1, global_alloc(gfx_element(m_palette, casloopy_8bpp_layout, m_vram, 0, 1, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index, std::make_unique<gfx_element>(m_palette, casloopy_4bpp_layout, m_vram.get(), 0, 0x10, 0));
+ m_gfxdecode->set_gfx(m_gfx_index+1, std::make_unique<gfx_element>(m_palette, casloopy_8bpp_layout, m_vram.get(), 0, 1, 0));
}
UINT32 casloopy_state::screen_update_casloopy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -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/caswin.cpp b/src/mame/drivers/caswin.cpp
index fa8b3420104..f774057fd73 100644
--- a/src/mame/drivers/caswin.cpp
+++ b/src/mame/drivers/caswin.cpp
@@ -163,11 +163,11 @@ READ8_MEMBER(caswin_state::vvillage_rng_r)
WRITE8_MEMBER(caswin_state::vvillage_output_w)
{
- coin_counter_w(machine(), 0,data & 1);
- coin_counter_w(machine(), 1,data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
+ machine().bookkeeping().coin_counter_w(1,data & 1);
// data & 4 payout counter
- coin_lockout_w(machine(), 0,data & 0x20);
- coin_lockout_w(machine(), 1,data & 0x20);
+ machine().bookkeeping().coin_lockout_w(0,data & 0x20);
+ machine().bookkeeping().coin_lockout_w(1,data & 0x20);
}
WRITE8_MEMBER(caswin_state::vvillage_lamps_w)
@@ -179,11 +179,11 @@ WRITE8_MEMBER(caswin_state::vvillage_lamps_w)
---- --x- lamp button 2
---- ---x lamp button 1
*/
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x02);
- set_led_status(machine(), 2, data & 0x04);
- set_led_status(machine(), 3, data & 0x08);
- set_led_status(machine(), 4, data & 0x10);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
+ output().set_led_value(2, data & 0x04);
+ output().set_led_value(3, data & 0x08);
+ output().set_led_value(4, data & 0x10);
}
static ADDRESS_MAP_START( vvillage_mem, AS_PROGRAM, 8, caswin_state )
diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp
index 5e333578c03..0a4b3447626 100644
--- a/src/mame/drivers/cave.cpp
+++ b/src/mame/drivers/cave.cpp
@@ -298,10 +298,10 @@ WRITE16_MEMBER(cave_state::cave_eeprom_msb_w)
if (ACCESSING_BITS_8_15) // even address
{
- coin_lockout_w(machine(), 1,~data & 0x8000);
- coin_lockout_w(machine(), 0,~data & 0x4000);
- coin_counter_w(machine(), 1, data & 0x2000);
- coin_counter_w(machine(), 0, data & 0x1000);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x8000);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x4000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x2000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x1000);
// latch the bit
m_eeprom->di_write((data & 0x0800) >> 11);
@@ -363,10 +363,10 @@ WRITE16_MEMBER(cave_state::cave_eeprom_lsb_w)
if (ACCESSING_BITS_0_7) // odd address
{
- coin_lockout_w(machine(), 1, ~data & 0x0008);
- coin_lockout_w(machine(), 0, ~data & 0x0004);
- coin_counter_w(machine(), 1, data & 0x0002);
- coin_counter_w(machine(), 0, data & 0x0001);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x0008);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x0004);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0002);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
// latch the bit
m_eeprom->di_write((data & 0x80) >> 7);
@@ -384,8 +384,8 @@ WRITE16_MEMBER(cave_state::gaia_coin_lsb_w)
{
if (ACCESSING_BITS_0_7) // odd address
{
- coin_counter_w(machine(), 1, data & 0x0002);
- coin_counter_w(machine(), 0, data & 0x0001);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0002);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
}
}
@@ -398,8 +398,8 @@ WRITE16_MEMBER(cave_state::metmqstr_eeprom_msb_w)
if (ACCESSING_BITS_8_15) // even address
{
- coin_counter_w(machine(), 1, data & 0x2000);
- coin_counter_w(machine(), 0, data & 0x1000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x2000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x1000);
if (~data & 0x0100)
{
@@ -640,21 +640,21 @@ WRITE16_MEMBER(cave_state::korokoro_leds_w)
{
COMBINE_DATA(&m_leds[0]);
- set_led_status(machine(), 0, data & 0x8000);
- set_led_status(machine(), 1, data & 0x4000);
- set_led_status(machine(), 2, data & 0x1000); // square button
- set_led_status(machine(), 3, data & 0x0800); // round button
-// coin_lockout_w(machine(), 1, ~data & 0x0200); // coin lockouts?
-// coin_lockout_w(machine(), 0, ~data & 0x0100);
+ output().set_led_value(0, data & 0x8000);
+ output().set_led_value(1, data & 0x4000);
+ output().set_led_value(2, data & 0x1000); // square button
+ output().set_led_value(3, data & 0x0800); // round button
+// machine().bookkeeping().coin_lockout_w(1, ~data & 0x0200); // coin lockouts?
+// machine().bookkeeping().coin_lockout_w(0, ~data & 0x0100);
-// coin_counter_w(machine(), 2, data & 0x0080);
-// coin_counter_w(machine(), 1, data & 0x0020);
- coin_counter_w(machine(), 0, data & 0x0010);
+// machine().bookkeeping().coin_counter_w(2, data & 0x0080);
+// machine().bookkeeping().coin_counter_w(1, data & 0x0020);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0010);
- set_led_status(machine(), 5, data & 0x0008);
- set_led_status(machine(), 6, data & 0x0004);
- set_led_status(machine(), 7, data & 0x0002);
- set_led_status(machine(), 8, data & 0x0001);
+ output().set_led_value(5, data & 0x0008);
+ output().set_led_value(6, data & 0x0004);
+ output().set_led_value(7, data & 0x0002);
+ output().set_led_value(8, data & 0x0001);
show_leds();
}
@@ -843,19 +843,19 @@ WRITE16_MEMBER(cave_state::ppsatan_out_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x0001);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
- set_led_status(machine(), 0, data & 0x0010);
- set_led_status(machine(), 1, data & 0x0020);
- set_led_status(machine(), 2, data & 0x0040);
- set_led_status(machine(), 3, data & 0x0080);
+ output().set_led_value(0, data & 0x0010);
+ output().set_led_value(1, data & 0x0020);
+ output().set_led_value(2, data & 0x0040);
+ output().set_led_value(3, data & 0x0080);
}
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 4, data & 0x0100);
- set_led_status(machine(), 5, data & 0x0200);
- set_led_status(machine(), 6, data & 0x0400); // not tested in service mode
- set_led_status(machine(), 7, data & 0x0800); // not tested in service mode
+ output().set_led_value(4, data & 0x0100);
+ output().set_led_value(5, data & 0x0200);
+ output().set_led_value(6, data & 0x0400); // not tested in service mode
+ output().set_led_value(7, data & 0x0800); // not tested in service mode
m_oki->set_bank_base((data & 0x8000) ? 0x40000 : 0);
}
@@ -1027,14 +1027,14 @@ WRITE16_MEMBER(cave_state::tjumpman_leds_w)
{
if (ACCESSING_BITS_0_7)
{
- set_led_status(machine(), 0, data & 0x0001); // suru
- set_led_status(machine(), 1, data & 0x0002); // shinai
- set_led_status(machine(), 2, data & 0x0004); // payout
- set_led_status(machine(), 3, data & 0x0008); // go
- set_led_status(machine(), 4, data & 0x0010); // 1 bet
- set_led_status(machine(), 5, data & 0x0020); // medal
+ output().set_led_value(0, data & 0x0001); // suru
+ output().set_led_value(1, data & 0x0002); // shinai
+ output().set_led_value(2, data & 0x0004); // payout
+ output().set_led_value(3, data & 0x0008); // go
+ output().set_led_value(4, data & 0x0010); // 1 bet
+ output().set_led_value(5, data & 0x0020); // medal
m_hopper = data & 0x0040; // hopper
- set_led_status(machine(), 6, data & 0x0080); // 3 bet
+ output().set_led_value(6, data & 0x0080); // 3 bet
}
// popmessage("led %04X", data);
@@ -1073,12 +1073,12 @@ WRITE16_MEMBER(cave_state::pacslot_leds_w)
{
if (ACCESSING_BITS_0_7)
{
- set_led_status(machine(), 0, data & 0x0001); // pac-man
- set_led_status(machine(), 1, data & 0x0002); // ms. pac-man
- set_led_status(machine(), 2, data & 0x0004); // payout
- set_led_status(machine(), 3, data & 0x0008); // start
- set_led_status(machine(), 4, data & 0x0010); // bet
- set_led_status(machine(), 5, data & 0x0020); // medal
+ output().set_led_value(0, data & 0x0001); // pac-man
+ output().set_led_value(1, data & 0x0002); // ms. pac-man
+ output().set_led_value(2, data & 0x0004); // payout
+ output().set_led_value(3, data & 0x0008); // start
+ output().set_led_value(4, data & 0x0010); // bet
+ output().set_led_value(5, data & 0x0020); // medal
m_hopper = data & 0x0040; // hopper
}
@@ -1994,12 +1994,11 @@ static MACHINE_CONFIG_START( dfeveron, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_2_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@@ -2036,12 +2035,11 @@ static MACHINE_CONFIG_START( ddonpach, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@@ -2077,15 +2075,13 @@ static MACHINE_CONFIG_START( donpachi, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_OKIM6295_ADD("oki1", XTAL_4_224MHz/4, OKIM6295_PIN7_HIGH) // pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.60)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.60)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.60)
MCFG_OKIM6295_ADD("oki2", XTAL_4_224MHz/2, OKIM6295_PIN7_HIGH) // pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_DEVICE_ADD("nmk112", NMK112, 0)
MCFG_NMK112_ROM0("oki1")
@@ -2126,12 +2122,11 @@ static MACHINE_CONFIG_START( esprade, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@@ -2166,12 +2161,11 @@ static MACHINE_CONFIG_START( gaia, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@@ -2207,12 +2201,11 @@ static MACHINE_CONFIG_START( guwange, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
/***************************************************************************
@@ -2251,22 +2244,17 @@ static MACHINE_CONFIG_START( hotdogst, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_32MHz/8)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.20)
- MCFG_SOUND_ROUTE(1, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
- MCFG_SOUND_ROUTE(2, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(2, "rspeaker", 0.20)
- MCFG_SOUND_ROUTE(3, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(3, "rspeaker", 0.80)
+ MCFG_SOUND_ROUTE(0, "mono", 0.20)
+ MCFG_SOUND_ROUTE(1, "mono", 0.20)
+ MCFG_SOUND_ROUTE(2, "mono", 0.20)
+ MCFG_SOUND_ROUTE(3, "mono", 0.80)
MCFG_OKIM6295_ADD("oki", XTAL_32MHz/16, OKIM6295_PIN7_HIGH) // pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)
MACHINE_CONFIG_END
@@ -2303,12 +2291,11 @@ static MACHINE_CONFIG_START( korokoro, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( crusherm, korokoro )
@@ -2357,22 +2344,17 @@ static MACHINE_CONFIG_START( mazinger, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_2_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_4MHz)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.20)
- MCFG_SOUND_ROUTE(1, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
- MCFG_SOUND_ROUTE(2, "lspeaker", 0.20)
- MCFG_SOUND_ROUTE(2, "rspeaker", 0.20)
- MCFG_SOUND_ROUTE(3, "lspeaker", 0.60)
- MCFG_SOUND_ROUTE(3, "rspeaker", 0.60)
+ MCFG_SOUND_ROUTE(0, "mono", 0.20)
+ MCFG_SOUND_ROUTE(1, "mono", 0.20)
+ MCFG_SOUND_ROUTE(2, "mono", 0.20)
+ MCFG_SOUND_ROUTE(3, "mono", 0.60)
MCFG_OKIM6295_ADD("oki", XTAL_1_056MHz, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 2.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 2.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)
MACHINE_CONFIG_END
@@ -2415,21 +2397,18 @@ static MACHINE_CONFIG_START( metmqstr, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_YM2151_ADD("ymsnd", XTAL_16MHz / 4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.20)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.20)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6)
MCFG_OKIM6295_ADD("oki1", XTAL_32MHz / 16 , OKIM6295_PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)
MCFG_OKIM6295_ADD("oki2", XTAL_32MHz / 16 , OKIM6295_PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map)
MACHINE_CONFIG_END
@@ -2588,26 +2567,20 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_4_layers)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_16MHz / 4)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
- MCFG_SOUND_ROUTE(0, "rspeaker", 0.40)
- MCFG_SOUND_ROUTE(1, "lspeaker", 0.40)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
- MCFG_SOUND_ROUTE(2, "lspeaker", 0.40)
- MCFG_SOUND_ROUTE(2, "rspeaker", 0.40)
- MCFG_SOUND_ROUTE(3, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(3, "rspeaker", 0.80)
+ MCFG_SOUND_ROUTE(0, "mono", 0.40)
+ MCFG_SOUND_ROUTE(1, "mono", 0.40)
+ MCFG_SOUND_ROUTE(2, "mono", 0.40)
+ MCFG_SOUND_ROUTE(3, "mono", 0.80)
MCFG_OKIM6295_ADD("oki1", XTAL_3MHz , OKIM6295_PIN7_LOW)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_OKIM6295_ADD("oki2", XTAL_3MHz , OKIM6295_PIN7_LOW)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MCFG_DEVICE_ADD("nmk112", NMK112, 0)
MCFG_NMK112_ROM0("oki1")
@@ -2653,20 +2626,17 @@ static MACHINE_CONFIG_START( sailormn, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,sailormn_3_layers) /* Layer 2 has 1 banked ROM */
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.30)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.30)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MCFG_OKIM6295_ADD("oki1", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)
MCFG_OKIM6295_ADD("oki2", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map)
MACHINE_CONFIG_END
@@ -2750,12 +2720,11 @@ static MACHINE_CONFIG_START( uopoko, cave_state )
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
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/cball.cpp b/src/mame/drivers/cball.cpp
index fb192cc7155..ecb12c186d3 100644
--- a/src/mame/drivers/cball.cpp
+++ b/src/mame/drivers/cball.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/drivers/cbasebal.cpp b/src/mame/drivers/cbasebal.cpp
index 7ae08b20537..beca2e9a642 100644
--- a/src/mame/drivers/cbasebal.cpp
+++ b/src/mame/drivers/cbasebal.cpp
@@ -78,10 +78,10 @@ WRITE8_MEMBER(cbasebal_state::bankedram_w)
WRITE8_MEMBER(cbasebal_state::cbasebal_coinctrl_w)
{
- coin_lockout_w(machine(), 0, ~data & 0x04);
- coin_lockout_w(machine(), 1, ~data & 0x08);
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
@@ -337,11 +337,11 @@ DRIVER_INIT_MEMBER(cbasebal_state,cbasebal)
{
UINT8 *src = memregion("maincpu")->base();
int size = memregion("maincpu")->bytes();
- UINT8 *dst = auto_alloc_array(machine(), UINT8, size);
- pang_decode(src, dst, size);
+ m_decoded = std::make_unique<UINT8[]>(size);
+ pang_decode(src, m_decoded.get(), size);
membank("bank1")->configure_entries(0, 32, src + 0x10000, 0x4000);
- membank("bank0d")->set_base(dst);
- membank("bank1d")->configure_entries(0, 32, dst + 0x10000, 0x4000);
+ membank("bank0d")->set_base(m_decoded.get());
+ membank("bank1d")->configure_entries(0, 32, m_decoded.get() + 0x10000, 0x4000);
}
diff --git a/src/mame/drivers/cc40.cpp b/src/mame/drivers/cc40.cpp
index 16dcead7cde..d36d5dce934 100644
--- a/src/mame/drivers/cc40.cpp
+++ b/src/mame/drivers/cc40.cpp
@@ -116,7 +116,7 @@ public:
UINT8 m_clock_divider;
UINT8 m_key_select;
- UINT8 *m_sysram[2];
+ std::unique_ptr<UINT8[]> m_sysram[2];
UINT16 m_sysram_size[2];
UINT16 m_sysram_end[2];
UINT16 m_sysram_mask[2];
@@ -195,7 +195,7 @@ void cc40_state::update_lcd_indicator(UINT8 y, UINT8 x, int state)
// ---- raw lcd screen here ----
// under | ERROR v v v v v v _LOW
// output# | 60 61 62 63 50 51 52 53
- output_set_lamp_value(y * 10 + x, state);
+ output().set_lamp_value(y * 10 + x, state);
}
static HD44780_PIXEL_UPDATE(cc40_pixel_update)
@@ -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" )
@@ -523,15 +523,15 @@ void cc40_state::init_sysram(int chip, UINT16 size)
if (m_sysram[chip] == nullptr)
{
// init to largest possible
- m_sysram[chip] = auto_alloc_array(machine(), UINT8, 0x2000);
- save_pointer(NAME(m_sysram[chip]), 0x2000, chip);
+ m_sysram[chip] = std::make_unique<UINT8[]>(0x2000);
+ save_pointer(NAME(m_sysram[chip].get()), 0x2000, chip);
save_item(NAME(m_sysram_size[chip]), chip);
save_item(NAME(m_sysram_end[chip]), chip);
save_item(NAME(m_sysram_mask[chip]), chip);
}
- m_nvram[chip]->set_base(m_sysram[chip], size);
+ m_nvram[chip]->set_base(m_sysram[chip].get(), size);
m_sysram_size[chip] = size;
}
diff --git a/src/mame/drivers/ccastles.cpp b/src/mame/drivers/ccastles.cpp
index 7e6ee7c0f27..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]
@@ -249,13 +247,13 @@ WRITE8_MEMBER(ccastles_state::irq_ack_w)
WRITE8_MEMBER(ccastles_state::led_w)
{
- set_led_status(machine(), offset, ~data & 1);
+ output().set_led_value(offset, ~data & 1);
}
WRITE8_MEMBER(ccastles_state::ccounter_w)
{
- coin_counter_w(machine(), offset, data & 1);
+ machine().bookkeeping().coin_counter_w(offset, data & 1);
}
diff --git a/src/mame/drivers/cchance.cpp b/src/mame/drivers/cchance.cpp
index 0fd606a3051..0283cf99df9 100644
--- a/src/mame/drivers/cchance.cpp
+++ b/src/mame/drivers/cchance.cpp
@@ -58,9 +58,9 @@ public:
WRITE8_MEMBER(cchance_state::output_0_w)
{
//---- --x- divider?
- coin_lockout_w(machine(), 0, ~data & 1);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 1);
-// coin_counter_w(machine(), 0, ~data & 1);
+// machine().bookkeeping().coin_counter_w(0, ~data & 1);
}
diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp
index c7e624d30ce..bc924df4980 100644
--- a/src/mame/drivers/cclimber.cpp
+++ b/src/mame/drivers/cclimber.cpp
@@ -2483,11 +2483,11 @@ DRIVER_INIT_MEMBER(cclimber_state,toprollr)
{ 0x20,0xa0,0x28,0xa8 }, { 0x00,0x08,0x20,0x28 } /* ...1...1...1...1 */
};
- UINT8 *opcodes = auto_alloc_array(machine(), UINT8, 0x6000*3);
- sega_decode(memregion("user1")->base(), opcodes, 0, convtable, 3, 0x6000);
+ m_opcodes = std::make_unique<UINT8[]>(0x6000*3);
+ sega_decode(memregion("user1")->base(), m_opcodes.get(), 0, convtable, 3, 0x6000);
membank("bank1")->configure_entries(0, 3, memregion("user1")->base(), 0x6000);
- membank("bank1d")->configure_entries(0, 3, opcodes, 0x6000);
+ membank("bank1d")->configure_entries(0, 3, m_opcodes.get(), 0x6000);
membank("bank1")->set_entry(0);
membank("bank1d")->set_entry(0);
diff --git a/src/mame/drivers/ccs2810.cpp b/src/mame/drivers/ccs2810.cpp
index 54be00bab5b..ab38592295a 100644
--- a/src/mame/drivers/ccs2810.cpp
+++ b/src/mame/drivers/ccs2810.cpp
@@ -101,8 +101,6 @@ private:
bool m_dsize;
UINT8 m_ds;
floppy_image_device *m_floppy;
- void fdc_intrq_w(bool state);
- void fdc_drq_w(bool state);
required_device<cpu_device> m_maincpu;
required_device<generic_terminal_device> m_terminal;
optional_device<mb8877_t> m_fdc;
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/cdi.cpp b/src/mame/drivers/cdi.cpp
index 8b1e60376aa..e2c984228e6 100644
--- a/src/mame/drivers/cdi.cpp
+++ b/src/mame/drivers/cdi.cpp
@@ -18,9 +18,11 @@ Quizard does not work for unknown reasons.
TODO:
-- Proper handling of the 68070's internal devices (UART,DMA,Timers etc.)
-
-- Full emulation of the CDIC, SLAVE and/or MCD212 customs
+- Proper abstraction of the 68070's internal devices (UART,DMA,Timers etc.)
+- Mono-I: Full emulation of the CDIC, SLAVE and/or MCD212 customs
+- Mono-II: SERVO and SLAVE I/O device hookup
+- Mono-II: DSP56k hookup
+- Mono-II: Move 68HC05 I/O device hookup into CPU core
*******************************************************************************/
@@ -29,6 +31,7 @@ TODO:
#include "emu.h"
#include "cpu/m68000/m68000.h"
+#include "cpu/m6805/m6805.h"
#include "includes/cdi.h"
#include "machine/timekpr.h"
#include "sound/cdda.h"
@@ -38,7 +41,7 @@ TODO:
#include "softlist.h"
#if ENABLE_VERBOSE_LOG
-static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_level, const char *s_fmt, ...)
+static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...)
{
if( VERBOSE_LEVEL >= n_level )
{
@@ -47,7 +50,7 @@ static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_l
va_start( v, s_fmt );
vsprintf( buf, s_fmt, v );
va_end( v );
- logerror( "%08x: %s", machine.device("maincpu")->safe_pc(), buf );
+ device.logerror("%s: %s", device.machine().describe_context(), buf );
}
}
#else
@@ -66,7 +69,26 @@ static ADDRESS_MAP_START( cdimono1_mem, AS_PROGRAM, 16, cdi_state )
#endif
AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w)
AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w)
- AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave", cdislave_device, slave_r, slave_w)
+ AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave_hle", cdislave_device, slave_r, slave_w)
+ AM_RANGE(0x00318000, 0x0031ffff) AM_NOP
+ AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
+ AM_RANGE(0x00400000, 0x0047ffff) AM_ROM AM_REGION("maincpu", 0)
+ AM_RANGE(0x004fffe0, 0x004fffff) AM_DEVREADWRITE("mcd212", mcd212_device, regs_r, regs_w)
+ AM_RANGE(0x00500000, 0x0057ffff) AM_RAM
+ AM_RANGE(0x00500000, 0x00ffffff) AM_NOP
+ AM_RANGE(0x00e00000, 0x00efffff) AM_RAM // DVC
+ AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( cdimono2_mem, AS_PROGRAM, 16, cdi_state )
+ AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("planea")
+ AM_RANGE(0x00200000, 0x0027ffff) AM_RAM AM_SHARE("planeb")
+#if ENABLE_UART_PRINTING
+ AM_RANGE(0x00301400, 0x00301403) AM_DEVREAD("scc68070", cdi68070_device, uart_loopback_enable)
+#endif
+ //AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w)
+ //AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w)
+ //AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave", cdislave_device, slave_r, slave_w)
//AM_RANGE(0x00318000, 0x0031ffff) AM_NOP
AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
AM_RANGE(0x00400000, 0x0047ffff) AM_ROM AM_REGION("maincpu", 0)
@@ -77,6 +99,39 @@ static ADDRESS_MAP_START( cdimono1_mem, AS_PROGRAM, 16, cdi_state )
AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( cdi910_mem, AS_PROGRAM, 16, cdi_state )
+ AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("planea")
+ AM_RANGE(0x00180000, 0x001fffff) AM_ROM AM_REGION("maincpu", 0) // boot vectors point here
+
+ AM_RANGE(0x00200000, 0x0027ffff) AM_RAM AM_SHARE("planeb")
+#if ENABLE_UART_PRINTING
+ AM_RANGE(0x00301400, 0x00301403) AM_DEVREAD("scc68070", cdi68070_device, uart_loopback_enable)
+#endif
+// AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w)
+// AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w)
+// AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave_hle", cdislave_device, slave_r, slave_w)
+// AM_RANGE(0x00318000, 0x0031ffff) AM_NOP
+ AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */
+ AM_RANGE(0x004fffe0, 0x004fffff) AM_DEVREADWRITE("mcd212", mcd212_device, regs_r, regs_w)
+// AM_RANGE(0x00500000, 0x0057ffff) AM_RAM
+ AM_RANGE(0x00500000, 0x00ffffff) AM_NOP
+// AM_RANGE(0x00e00000, 0x00efffff) AM_RAM // DVC
+ AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( cdimono2_servo_mem, AS_PROGRAM, 8, cdi_state )
+ AM_RANGE(0x0000, 0x001f) AM_READWRITE(servo_io_r, servo_io_w)
+ AM_RANGE(0x0050, 0x00ff) AM_RAM
+ AM_RANGE(0x0100, 0x1fff) AM_ROM AM_REGION("servo", 0x100)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( cdimono2_slave_mem, AS_PROGRAM, 8, cdi_state )
+ AM_RANGE(0x0000, 0x001f) AM_READWRITE(slave_io_r, slave_io_w)
+ AM_RANGE(0x0050, 0x00ff) AM_RAM
+ AM_RANGE(0x0100, 0x1fff) AM_ROM AM_REGION("slave", 0x100)
+ADDRESS_MAP_END
+
/*************************
* Input ports *
*************************/
@@ -129,14 +184,55 @@ INPUT_CHANGED_MEMBER(cdi_state::mcu_input)
static INPUT_PORTS_START( cdi )
PORT_START("MOUSEX")
- PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
+
+ PORT_START("MOUSEY")
+ PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
+
+ PORT_START("MOUSEBTN")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
+ PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("DEBUG")
+ PORT_CONFNAME( 0x01, 0x00, "Plane A Disable")
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( On ) )
+ PORT_CONFNAME( 0x02, 0x00, "Plane B Disable")
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x02, DEF_STR( On ) )
+ PORT_CONFNAME( 0x04, 0x00, "Force Backdrop Color")
+ PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x04, DEF_STR( On ) )
+ PORT_CONFNAME( 0xf0, 0x00, "Backdrop Color")
+ PORT_CONFSETTING( 0x00, "Black" )
+ PORT_CONFSETTING( 0x10, "Half-Bright Blue" )
+ PORT_CONFSETTING( 0x20, "Half-Bright Green" )
+ PORT_CONFSETTING( 0x30, "Half-Bright Cyan" )
+ PORT_CONFSETTING( 0x40, "Half-Bright Red" )
+ PORT_CONFSETTING( 0x50, "Half-Bright Magenta" )
+ PORT_CONFSETTING( 0x60, "Half-Bright Yellow" )
+ PORT_CONFSETTING( 0x70, "Half-Bright White" )
+ PORT_CONFSETTING( 0x80, "Black (Alternate)" )
+ PORT_CONFSETTING( 0x90, "Blue" )
+ PORT_CONFSETTING( 0xa0, "Green" )
+ PORT_CONFSETTING( 0xb0, "Cyan" )
+ PORT_CONFSETTING( 0xc0, "Red" )
+ PORT_CONFSETTING( 0xd0, "Magenta" )
+ PORT_CONFSETTING( 0xe0, "Yellow" )
+ PORT_CONFSETTING( 0xf0, "White" )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( cdimono2 )
+ PORT_START("MOUSEX")
+ PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
PORT_START("MOUSEY")
- PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
PORT_START("MOUSEBTN")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("DEBUG")
@@ -190,20 +286,29 @@ static INPUT_PORTS_START( quizard )
INPUT_PORTS_END
-void cdi_state::machine_start()
+INTERRUPT_GEN_MEMBER( cdi_state::mcu_frame )
{
+ m_scc->mcu_frame();
}
-INTERRUPT_GEN_MEMBER( cdi_state::mcu_frame )
+MACHINE_RESET_MEMBER( cdi_state, cdimono1 )
{
- m_scc->mcu_frame();
+ UINT16 *src = (UINT16*)memregion("maincpu")->base();
+ UINT16 *dst = m_planea;
+ memcpy(dst, src, 0x8);
+ memset(m_servo_io_regs, 0, 0x20);
+ memset(m_slave_io_regs, 0, 0x20);
+
+ m_maincpu->reset();
+
+ m_dmadac[0] = machine().device<dmadac_sound_device>("dac1");
+ m_dmadac[1] = machine().device<dmadac_sound_device>("dac2");
}
-MACHINE_RESET_MEMBER(cdi_state,cdi)
+MACHINE_RESET_MEMBER( cdi_state, cdimono2 )
{
UINT16 *src = (UINT16*)memregion("maincpu")->base();
UINT16 *dst = m_planea;
- //device_t *cdrom_dev = machine().device("cdrom");
memcpy(dst, src, 0x8);
m_maincpu->reset();
@@ -212,34 +317,34 @@ MACHINE_RESET_MEMBER(cdi_state,cdi)
m_dmadac[1] = machine().device<dmadac_sound_device>("dac2");
}
-MACHINE_RESET_MEMBER(cdi_state,quizard12)
+MACHINE_RESET_MEMBER( cdi_state, quizard12 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
m_scc->set_quizard_mcu_value(0x021f);
m_scc->set_quizard_mcu_ack(0x5a);
}
-MACHINE_RESET_MEMBER(cdi_state,quizard17)
+MACHINE_RESET_MEMBER( cdi_state, quizard17 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
m_scc->set_quizard_mcu_value(0x021f);
m_scc->set_quizard_mcu_ack(0x5a);
}
/* Untested - copied from quizard17 */
-MACHINE_RESET_MEMBER(cdi_state,quizard18)
+MACHINE_RESET_MEMBER( cdi_state, quizard18 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
m_scc->set_quizard_mcu_value(0x021f);
m_scc->set_quizard_mcu_ack(0x5a);
}
-MACHINE_RESET_MEMBER(cdi_state,quizard22)
+MACHINE_RESET_MEMBER( cdi_state, quizard22 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
// 0x2b1: Italian
// 0x001: French
@@ -250,9 +355,9 @@ MACHINE_RESET_MEMBER(cdi_state,quizard22)
}
/* Untested - copied from quizard22 */
-MACHINE_RESET_MEMBER(cdi_state,quizard23)
+MACHINE_RESET_MEMBER( cdi_state, quizard23 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
// 0x2b1: Italian
// 0x001: French
@@ -262,56 +367,457 @@ MACHINE_RESET_MEMBER(cdi_state,quizard23)
m_scc->set_quizard_mcu_ack(0x59);
}
-MACHINE_RESET_MEMBER(cdi_state,quizard32)
+MACHINE_RESET_MEMBER( cdi_state, quizard32 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
m_scc->set_quizard_mcu_value(0x00ae);
m_scc->set_quizard_mcu_ack(0x58);
}
/* Untested - copied from quizard32 */
-MACHINE_RESET_MEMBER(cdi_state,quizard34)
+MACHINE_RESET_MEMBER( cdi_state, quizard34 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
m_scc->set_quizard_mcu_value(0x00ae);
m_scc->set_quizard_mcu_ack(0x58);
}
/* Untested - copied from quizard4r41 */
-MACHINE_RESET_MEMBER(cdi_state,quizard4r40)
+MACHINE_RESET_MEMBER( cdi_state, quizard4r40 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
//m_scc->set_quizard_mcu_value(0x0139);
m_scc->set_quizard_mcu_value(0x011f);
m_scc->set_quizard_mcu_ack(0x57);
}
-MACHINE_RESET_MEMBER(cdi_state,quizard4r41)
+MACHINE_RESET_MEMBER( cdi_state, quizard4r41 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
//m_scc->set_quizard_mcu_value(0x0139);
m_scc->set_quizard_mcu_value(0x011f);
m_scc->set_quizard_mcu_ack(0x57);
}
-MACHINE_RESET_MEMBER(cdi_state,quizard4r42)
+MACHINE_RESET_MEMBER( cdi_state, quizard4r42 )
{
- MACHINE_RESET_CALL_MEMBER( cdi );
+ MACHINE_RESET_CALL_MEMBER( cdimono1 );
m_scc->set_quizard_mcu_value(0x01ae);
m_scc->set_quizard_mcu_ack(0x57);
}
+/**************************
+* 68HC05 Handlers *
+**************************/
+
+READ8_MEMBER( cdi_state::servo_io_r )
+{
+ if (space.debugger_access())
+ {
+ return 0;
+ }
+
+ UINT8 ret = m_servo_io_regs[offset];
+
+ switch(offset)
+ {
+ case m68hc05eg_io_reg_t::PORT_A_DATA:
+ verboselog(*this, 1, "SERVO Port A Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_B_DATA:
+ ret = 0x08;
+ verboselog(*this, 1, "SERVO Port B Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_C_DATA:
+ ret |= INV_CADDYSWITCH_IN;
+ verboselog(*this, 1, "SERVO Port C Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_D_INPUT:
+ verboselog(*this, 1, "SERVO Port D Input read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_A_DDR:
+ verboselog(*this, 1, "SERVO Port A DDR read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_B_DDR:
+ verboselog(*this, 1, "SERVO Port B DDR read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_C_DDR:
+ verboselog(*this, 1, "SERVO Port C DDR read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SPI_CTRL:
+ verboselog(*this, 1, "SERVO SPI Control read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SPI_STATUS:
+ verboselog(*this, 1, "SERVO SPI Status read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SPI_DATA:
+ verboselog(*this, 1, "SERVO SPI Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_BAUD:
+ verboselog(*this, 1, "SERVO SCC Baud Rate read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_CTRL1:
+ verboselog(*this, 1, "SERVO SCC Control 1 read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_CTRL2:
+ verboselog(*this, 1, "SERVO SCC Control 2 read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_STATUS:
+ verboselog(*this, 1, "SERVO SCC Status read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_DATA:
+ verboselog(*this, 1, "SERVO SCC Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::TIMER_CTRL:
+ verboselog(*this, 1, "SERVO Timer Control read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::TIMER_STATUS:
+ verboselog(*this, 1, "SERVO Timer Status read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::ICAP_HI:
+ verboselog(*this, 1, "SERVO Input Capture Hi read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::ICAP_LO:
+ verboselog(*this, 1, "SERVO Input Capture Lo read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::OCMP_HI:
+ verboselog(*this, 1, "SERVO Output Compare Hi read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::OCMP_LO:
+ verboselog(*this, 1, "SERVO Output Compare Lo read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::COUNT_HI:
+ {
+ const UINT16 count = (m_servo->total_cycles() / 4) & 0x0000ffff;
+ ret = count >> 8;
+ verboselog(*this, 1, "SERVO Count Hi read (%02x)\n", ret);
+ break;
+ }
+ case m68hc05eg_io_reg_t::COUNT_LO:
+ {
+ const UINT16 count = (m_servo->total_cycles() / 4) & 0x0000ffff;
+ ret = count & 0x00ff;
+ verboselog(*this, 1, "SERVO Count Lo read (%02x)\n", ret);
+ break;
+ }
+ case m68hc05eg_io_reg_t::ACOUNT_HI:
+ {
+ const UINT16 count = (m_servo->total_cycles() / 4) & 0x0000ffff;
+ ret = count >> 8;
+ verboselog(*this, 1, "SERVO Alternate Count Hi read (%02x)\n", ret);
+ break;
+ }
+ case m68hc05eg_io_reg_t::ACOUNT_LO:
+ {
+ const UINT16 count = (m_servo->total_cycles() / 4) & 0x0000ffff;
+ ret = count & 0x00ff;
+ verboselog(*this, 1, "SERVO Alternate Count Lo read (%02x)\n", ret);
+ break;
+ }
+ default:
+ verboselog(*this, 0, "Unknown SERVO I/O read (%02x)\n", offset);
+ break;
+ }
+
+ return ret;
+}
+
+
+WRITE8_MEMBER( cdi_state::servo_io_w )
+{
+ switch(offset)
+ {
+ case m68hc05eg_io_reg_t::PORT_A_DATA:
+ verboselog(*this, 1, "SERVO Port A Data write (%02x)\n", data);
+ return;
+ case m68hc05eg_io_reg_t::PORT_B_DATA:
+ verboselog(*this, 1, "SERVO Port B Data write (%02x)\n", data);
+ return;
+ case m68hc05eg_io_reg_t::PORT_C_DATA:
+ verboselog(*this, 1, "SERVO Port C Data write (%02x)\n", data);
+ return;
+ case m68hc05eg_io_reg_t::PORT_D_INPUT:
+ verboselog(*this, 1, "SERVO Port D Input write (%02x)\n", data);
+ return;
+ case m68hc05eg_io_reg_t::PORT_A_DDR:
+ verboselog(*this, 1, "SERVO Port A DDR write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::PORT_B_DDR:
+ verboselog(*this, 1, "SERVO Port B DDR write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::PORT_C_DDR:
+ verboselog(*this, 1, "SERVO Port C DDR write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SPI_CTRL:
+ verboselog(*this, 1, "SERVO SPI Control write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SPI_STATUS:
+ verboselog(*this, 1, "SERVO SPI Status write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SPI_DATA:
+ verboselog(*this, 1, "SERVO SPI Data write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_BAUD:
+ verboselog(*this, 1, "SERVO SCC Baud Rate write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_CTRL1:
+ verboselog(*this, 1, "SERVO SCC Control 1 write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_CTRL2:
+ verboselog(*this, 1, "SERVO SCC Control 2 write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_STATUS:
+ verboselog(*this, 1, "SERVO SCC Status write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_DATA:
+ verboselog(*this, 1, "SERVO SCC Data write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::TIMER_CTRL:
+ verboselog(*this, 1, "SERVO Timer Control write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::TIMER_STATUS:
+ verboselog(*this, 1, "SERVO Timer Status write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::ICAP_HI:
+ verboselog(*this, 1, "SERVO Input Capture Hi write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::ICAP_LO:
+ verboselog(*this, 1, "SERVO Input Capture Lo write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::OCMP_HI:
+ verboselog(*this, 1, "SERVO Output Compare Hi write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::OCMP_LO:
+ verboselog(*this, 1, "SERVO Output Compare Lo write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::COUNT_HI:
+ verboselog(*this, 1, "SERVO Count Hi write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::COUNT_LO:
+ verboselog(*this, 1, "SERVO Count Lo write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::ACOUNT_HI:
+ verboselog(*this, 1, "SERVO Alternate Count Hi write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::ACOUNT_LO:
+ verboselog(*this, 1, "SERVO Alternate Count Lo write (%02x)\n", data);
+ break;
+ default:
+ verboselog(*this, 0, "Unknown SERVO I/O write (%02x = %02x)\n", offset, data);
+ break;
+ }
+
+ m_servo_io_regs[offset] = data;
+}
+
+READ8_MEMBER( cdi_state::slave_io_r )
+{
+ if (space.debugger_access())
+ {
+ return 0;
+ }
+
+ UINT8 ret = m_slave_io_regs[offset];
+
+ switch(offset)
+ {
+ case m68hc05eg_io_reg_t::PORT_A_DATA:
+ verboselog(*this, 1, "SLAVE Port A Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_B_DATA:
+ verboselog(*this, 1, "SLAVE Port B Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_C_DATA:
+ verboselog(*this, 1, "SLAVE Port C Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_D_INPUT:
+ verboselog(*this, 1, "SLAVE Port D Input read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_A_DDR:
+ verboselog(*this, 1, "SLAVE Port A DDR read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_B_DDR:
+ verboselog(*this, 1, "SLAVE Port B DDR read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::PORT_C_DDR:
+ verboselog(*this, 1, "SLAVE Port C DDR read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SPI_CTRL:
+ verboselog(*this, 1, "SLAVE SPI Control read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SPI_STATUS:
+ verboselog(*this, 1, "SLAVE SPI Status read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SPI_DATA:
+ verboselog(*this, 1, "SLAVE SPI Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_BAUD:
+ verboselog(*this, 1, "SLAVE SCC Baud Rate read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_CTRL1:
+ verboselog(*this, 1, "SLAVE SCC Control 1 read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_CTRL2:
+ verboselog(*this, 1, "SLAVE SCC Control 2 read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_STATUS:
+ verboselog(*this, 1, "SLAVE SCC Status read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::SCC_DATA:
+ verboselog(*this, 1, "SLAVE SCC Data read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::TIMER_CTRL:
+ verboselog(*this, 1, "SLAVE Timer Control read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::TIMER_STATUS:
+ verboselog(*this, 1, "SLAVE Timer Status read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::ICAP_HI:
+ verboselog(*this, 1, "SLAVE Input Capture Hi read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::ICAP_LO:
+ verboselog(*this, 1, "SLAVE Input Capture Lo read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::OCMP_HI:
+ verboselog(*this, 1, "SLAVE Output Compare Hi read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::OCMP_LO:
+ verboselog(*this, 1, "SLAVE Output Compare Lo read (%02x)\n", ret);
+ break;
+ case m68hc05eg_io_reg_t::COUNT_HI:
+ {
+ const UINT16 count = (m_slave->total_cycles() / 4) & 0x0000ffff;
+ ret = count >> 8;
+ verboselog(*this, 1, "SLAVE Count Hi read (%02x)\n", ret);
+ break;
+ }
+ case m68hc05eg_io_reg_t::COUNT_LO:
+ {
+ const UINT16 count = (m_slave->total_cycles() / 4) & 0x0000ffff;
+ ret = count & 0x00ff;
+ verboselog(*this, 1, "SLAVE Count Lo read (%02x)\n", ret);
+ break;
+ }
+ case m68hc05eg_io_reg_t::ACOUNT_HI:
+ {
+ const UINT16 count = (m_slave->total_cycles() / 4) & 0x0000ffff;
+ ret = count >> 8;
+ verboselog(*this, 1, "SLAVE Alternate Count Hi read (%02x)\n", ret);
+ break;
+ }
+ case m68hc05eg_io_reg_t::ACOUNT_LO:
+ {
+ const UINT16 count = (m_slave->total_cycles() / 4) & 0x0000ffff;
+ ret = count & 0x00ff;
+ verboselog(*this, 1, "SLAVE Alternate Count Lo read (%02x)\n", ret);
+ break;
+ }
+ default:
+ verboselog(*this, 0, "Unknown SLAVE I/O read (%02x)\n", offset);
+ break;
+ }
+
+ return ret;
+}
+
+WRITE8_MEMBER( cdi_state::slave_io_w )
+{
+ switch(offset)
+ {
+ case m68hc05eg_io_reg_t::PORT_A_DATA:
+ verboselog(*this, 1, "SLAVE Port A Data write (%02x)\n", data);
+ return;
+ case m68hc05eg_io_reg_t::PORT_B_DATA:
+ verboselog(*this, 1, "SLAVE Port B Data write (%02x)\n", data);
+ return;
+ case m68hc05eg_io_reg_t::PORT_C_DATA:
+ verboselog(*this, 1, "SLAVE Port C Data write (%02x)\n", data);
+ return;
+ case m68hc05eg_io_reg_t::PORT_D_INPUT:
+ verboselog(*this, 1, "SLAVE Port D Input write (%02x)\n", data);
+ return;
+ case m68hc05eg_io_reg_t::PORT_A_DDR:
+ verboselog(*this, 1, "SLAVE Port A DDR write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::PORT_B_DDR:
+ verboselog(*this, 1, "SLAVE Port B DDR write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::PORT_C_DDR:
+ verboselog(*this, 1, "SLAVE Port C DDR write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SPI_CTRL:
+ verboselog(*this, 1, "SLAVE SPI Control write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SPI_STATUS:
+ verboselog(*this, 1, "SLAVE SPI Status write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SPI_DATA:
+ verboselog(*this, 1, "SLAVE SPI Data write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_BAUD:
+ verboselog(*this, 1, "SLAVE SCC Baud Rate write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_CTRL1:
+ verboselog(*this, 1, "SLAVE SCC Control 1 write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_CTRL2:
+ verboselog(*this, 1, "SLAVE SCC Control 2 write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_STATUS:
+ verboselog(*this, 1, "SLAVE SCC Status write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::SCC_DATA:
+ verboselog(*this, 1, "SLAVE SCC Data write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::TIMER_CTRL:
+ verboselog(*this, 1, "SLAVE Timer Control write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::TIMER_STATUS:
+ verboselog(*this, 1, "SLAVE Timer Status write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::ICAP_HI:
+ verboselog(*this, 1, "SLAVE Input Capture Hi write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::ICAP_LO:
+ verboselog(*this, 1, "SLAVE Input Capture Lo write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::OCMP_HI:
+ verboselog(*this, 1, "SLAVE Output Compare Hi write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::OCMP_LO:
+ verboselog(*this, 1, "SLAVE Output Compare Lo write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::COUNT_HI:
+ verboselog(*this, 1, "SLAVE Count Hi write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::COUNT_LO:
+ verboselog(*this, 1, "SLAVE Count Lo write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::ACOUNT_HI:
+ verboselog(*this, 1, "SLAVE Alternate Count Hi write (%02x)\n", data);
+ break;
+ case m68hc05eg_io_reg_t::ACOUNT_LO:
+ verboselog(*this, 1, "SLAVE Alternate Count Lo write (%02x)\n", data);
+ break;
+ default:
+ verboselog(*this, 0, "Unknown SLAVE I/O write (%02x = %02x)\n", offset, data);
+ break;
+ }
+
+ m_slave_io_regs[offset] = data;
+}
+
/*************************
* Machine Drivers *
*************************/
-static MACHINE_CONFIG_START( cdi, cdi_state )
-
+// CD-i Mono-I system base
+static MACHINE_CONFIG_START( cdimono1_base, cdi_state )
MCFG_CPU_ADD("maincpu", SCC68070, CLOCK_A/2)
MCFG_CPU_PROGRAM_MAP(cdimono1_mem)
@@ -322,7 +828,7 @@ static MACHINE_CONFIG_START( cdi, cdi_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(384, 302)
- MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) //dynamic resolution,TODO
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) // TODO: dynamic resolution
MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1)
MCFG_SCREEN_ADD("lcd", RASTER)
@@ -338,7 +844,62 @@ static MACHINE_CONFIG_START( cdi, cdi_state )
MCFG_CDI68070_ADD("scc68070")
MCFG_CDICDIC_ADD("cdic")
- MCFG_CDISLAVE_ADD("slave")
+ MCFG_CDISLAVE_ADD("slave_hle")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_SOUND_ADD( "dac1", DMADAC, 0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
+
+ MCFG_SOUND_ADD( "dac2", DMADAC, 0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
+
+ MCFG_SOUND_ADD( "cdda", CDDA, 0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
+
+ MCFG_MK48T08_ADD( "mk48t08" )
+MACHINE_CONFIG_END
+
+// CD-i model 220 (Mono-II, NTSC)
+static MACHINE_CONFIG_START( cdimono2, cdi_state )
+ MCFG_CPU_ADD("maincpu", SCC68070, CLOCK_A/2)
+ MCFG_CPU_PROGRAM_MAP(cdimono2_mem)
+
+ MCFG_MCD212_ADD("mcd212")
+ MCFG_MCD212_SET_SCREEN("screen")
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(384, 302)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) // TODO: dynamic resolution
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1)
+
+ MCFG_SCREEN_ADD("lcd", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(192, 22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 22-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1_lcd)
+
+ MCFG_PALETTE_ADD("palette", 0x100)
+
+ MCFG_DEFAULT_LAYOUT(layout_cdi)
+
+ MCFG_MACHINE_RESET_OVERRIDE( cdi_state, cdimono2 )
+
+ MCFG_CDI68070_ADD("scc68070")
+ MCFG_CPU_ADD("servo", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
+ MCFG_CPU_PROGRAM_MAP(cdimono2_servo_mem)
+ MCFG_CPU_ADD("slave", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
+ MCFG_CPU_PROGRAM_MAP(cdimono2_slave_mem)
+
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("cdi_cdrom")
+ MCFG_SOFTWARE_LIST_ADD("cd_list","cdi")
+ MCFG_SOFTWARE_LIST_FILTER("cd_list","!DVC")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -356,19 +917,71 @@ static MACHINE_CONFIG_START( cdi, cdi_state )
MCFG_MK48T08_ADD( "mk48t08" )
MACHINE_CONFIG_END
-// Standard CD-i system, with CD-ROM image device (MESS) and Software List (MESS)
-static MACHINE_CONFIG_DERIVED( cdi_base, cdi )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, cdi )
+static MACHINE_CONFIG_START( cdi910, cdi_state )
+ MCFG_CPU_ADD("maincpu", SCC68070, CLOCK_A/2)
+ MCFG_CPU_PROGRAM_MAP(cdi910_mem)
+
+ MCFG_MCD212_ADD("mcd212")
+ MCFG_MCD212_SET_SCREEN("screen")
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(384, 302)
+ MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 22, 302-1) // TODO: dynamic resolution
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1)
+
+ MCFG_SCREEN_ADD("lcd", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(192, 22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 22-1)
+ MCFG_SCREEN_UPDATE_DRIVER(cdi_state, screen_update_cdimono1_lcd)
+
+ MCFG_PALETTE_ADD("palette", 0x100)
+
+ MCFG_DEFAULT_LAYOUT(layout_cdi)
+
+ MCFG_MACHINE_RESET_OVERRIDE( cdi_state, cdimono2 )
+
+ MCFG_CDI68070_ADD("scc68070")
+ MCFG_CPU_ADD("servo", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
+ MCFG_CPU_PROGRAM_MAP(cdimono2_servo_mem)
+ MCFG_CPU_ADD("slave", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
+ MCFG_CPU_PROGRAM_MAP(cdimono2_slave_mem)
+
+ MCFG_CDROM_ADD( "cdrom" )
+ MCFG_CDROM_INTERFACE("cdi_cdrom")
+ MCFG_SOFTWARE_LIST_ADD("cd_list","cdi")
+ MCFG_SOFTWARE_LIST_FILTER("cd_list","!DVC")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_SOUND_ADD( "dac1", DMADAC, 0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
+
+ MCFG_SOUND_ADD( "dac2", DMADAC, 0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
+
+ MCFG_SOUND_ADD( "cdda", CDDA, 0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "lspeaker", 1.0 )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "rspeaker", 1.0 )
+
+ MCFG_MK48T08_ADD( "mk48t08" )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( cdimono1, cdi_base )
+// CD-i Mono-I, with CD-ROM image device (MESS) and Software List (MESS)
+static MACHINE_CONFIG_DERIVED( cdimono1, cdimono1_base )
+ MCFG_MACHINE_RESET_OVERRIDE(cdi_state, cdimono1)
+
MCFG_CDROM_ADD( "cdrom" )
MCFG_CDROM_INTERFACE("cdi_cdrom")
MCFG_SOFTWARE_LIST_ADD("cd_list","cdi")
MCFG_SOFTWARE_LIST_FILTER("cd_list","!DVC")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( quizard, cdi_base )
+static MACHINE_CONFIG_DERIVED( quizard, cdimono1_base )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(cdimono1_mem)
MCFG_CPU_VBLANK_INT_DRIVER("screen", cdi_state, mcu_frame)
@@ -422,17 +1035,13 @@ MACHINE_CONFIG_END
*************************/
ROM_START( cdimono1 )
- ROM_REGION(0x80000, "maincpu", 0)
+ ROM_REGION(0x80000, "maincpu", 0) // these roms need byteswapping
ROM_SYSTEM_BIOS( 0, "mcdi200", "Magnavox CD-i 200" )
ROMX_LOAD( "cdi200.rom", 0x000000, 0x80000, CRC(40c4e6b9) SHA1(d961de803c89b3d1902d656ceb9ce7c02dccb40a), ROM_BIOS(1) )
ROM_SYSTEM_BIOS( 1, "pcdi220", "Philips CD-i 220 F2" )
ROMX_LOAD( "cdi220b.rom", 0x000000, 0x80000, CRC(279683ca) SHA1(53360a1f21ddac952e95306ced64186a3fc0b93e), ROM_BIOS(2) )
- // This one is a Mono-IV board, needs to be a separate driver
- //ROM_SYSTEM_BIOS( 2, "pcdi490", "Philips CD-i 490" )
- //ROMX_LOAD( "cdi490.rom", 0x000000, 0x80000, CRC(e115f45b) SHA1(f71be031a5dfa837de225081b2ddc8dcb74a0552), ROM_BIOS(3) )
- // This one is a Mini-MMC board, needs to be a separate driver
- //ROM_SYSTEM_BIOS( 3, "pcdi910m", "Philips CD-i 910" )
- //ROMX_LOAD( "cdi910.rom", 0x000000, 0x80000, CRC(8ee44ed6) SHA1(3fcdfa96f862b0cb7603fb6c2af84cac59527b05), ROM_BIOS(4) )
+ ROM_SYSTEM_BIOS( 2, "pcdi220_alt", "Philips CD-i 220?" ) // doesn't boot
+ ROMX_LOAD( "cdi220.rom", 0x000000, 0x80000, CRC(584c0af8) SHA1(5d757ab46b8c8fc36361555d978d7af768342d47), ROM_BIOS(3) )
ROM_REGION(0x2000, "cdic", 0)
ROM_LOAD( "cdic.bin", 0x0000, 0x2000, NO_DUMP ) // Undumped 68HC05 microcontroller, might need decapping
@@ -442,18 +1051,58 @@ ROM_START( cdimono1 )
ROM_END
-ROM_START( cdibios )
+
+ROM_START( cdi910 )
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_SYSTEM_BIOS( 0, "cdi910", "CD-I 910-17P Mini-MMC" )
+ ROMX_LOAD( "philips__cd-i_2.1__mb834200b-15__26b_aa__9224_z01.tc574200.7211", 0x000000, 0x80000, CRC(4ae3bee3) SHA1(9729b4ee3ce0c17172d062339c47b1ab822b222b), ROM_BIOS(1) | ROM_GROUPWORD | ROM_REVERSE )
+ ROM_SYSTEM_BIOS( 1, "cdi910_alt", "alt" )
+ ROMX_LOAD( "cdi910.rom", 0x000000, 0x80000, CRC(2f3048d2) SHA1(11c4c3e602060518b52e77156345fa01f619e793), ROM_BIOS(2) | ROM_GROUPWORD | ROM_REVERSE )
+
+ // cdic
+
+ ROM_REGION(0x2000, "servo", 0)
+ ROM_LOAD( "zx405037p__cdi_servo_2.1__b43t__llek9215.mc68hc705c8a_withtestrom.7201", 0x0000, 0x2000, CRC(7a3af407) SHA1(fdf8d78d6a0df4a56b5b963d72eabd39fcec163f) )
+
+ ROM_REGION(0x2000, "slave", 0)
+ ROM_LOAD( "zx405042p__cdi_slave_2.0__b43t__zzmk9213.mc68hc705c8a_withtestrom.7206", 0x0000, 0x2000, CRC(688cda63) SHA1(56d0acd7caad51c7de703247cd6d842b36173079) )
+
+ ROM_REGION(0x2000, "pals", 0)
+ ROM_LOAD( "ti_portugal_206xf__tibpal20l8-15cnt__m7205n.7205.bin", 0x0000, 0x144, CRC(dd167e0d) SHA1(2ba82a4619d7a0f19e62e02a2841afd4d45d56ba) )
+ ROM_LOAD( "ti_portugal_774_206xf__tibpal16l8-10cn_m7204n.7204.bin", 0x0000, 0x104, CRC(04e6bd37) SHA1(153d1a977291bedb7420484a9f889325dbd3628e) )
+ROM_END
+
+ROM_START( cdimono2 )
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_LOAD16_WORD_SWAP( "philips__cdi-220_ph3_r1.2__mb834200b-15__02f_aa__9402_z04.tc574200-le._1.7211", 0x000000, 0x80000, CRC(17d723e7) SHA1(6c317a82e35d60ca5e7a74fc99f665055693169d) )
+
+ ROM_REGION(0x2000, "servo", 0)
+ ROM_LOAD( "zc405351p__servo_cdi_4.1__0d67p__lluk9404.mc68hc705c8a.7490", 0x0000, 0x2000, CRC(2bc8e4e9) SHA1(8cd052b532fc052d6b0077261c12f800e8655bb1) )
+
+ ROM_REGION(0x2000, "slave", 0)
+ ROM_LOAD( "zc405352p__slave_cdi_4.1__0d67p__lltr9403.mc68hc705c8a.7206", 0x0000, 0x2000, CRC(5b19da07) SHA1(cf02d84977050c71e87a38f1249e83c43a93949b) )
+ROM_END
+
+
+ROM_START( cdi490a )
+ ROM_REGION(0x80000, "maincpu", 0)
+ ROM_SYSTEM_BIOS( 0, "cdi490", "CD-i 490" )
+ ROMX_LOAD( "cdi490a.rom", 0x000000, 0x80000, CRC(e2f200f6) SHA1(c9bf3c4c7e4fe5cbec3fe3fc993c77a4522ca547), ROM_BIOS(1) | ROM_GROUPWORD | ROM_REVERSE )
+
+ ROM_REGION(0x40000, "mpegs", 0) // keep these somewhere
+ ROM_LOAD( "impega.rom", 0x0000, 0x40000, CRC(84d6f6aa) SHA1(02526482a0851ea2a7b582d8afaa8ef14a8bd914) )
+ ROM_LOAD( "vmpega.rom", 0x0000, 0x40000, CRC(db264e8b) SHA1(be407fbc102f1731a0862554855e963e5a47c17b) )
+ROM_END
+
+
+
+
+ROM_START( cdibios ) // for the quizard sets
ROM_REGION(0x80000, "maincpu", 0)
ROM_SYSTEM_BIOS( 0, "mcdi200", "Magnavox CD-i 200" )
ROMX_LOAD( "cdi200.rom", 0x000000, 0x80000, CRC(40c4e6b9) SHA1(d961de803c89b3d1902d656ceb9ce7c02dccb40a), ROM_BIOS(1) )
ROM_SYSTEM_BIOS( 1, "pcdi220", "Philips CD-i 220 F2" )
ROMX_LOAD( "cdi220b.rom", 0x000000, 0x80000, CRC(279683ca) SHA1(53360a1f21ddac952e95306ced64186a3fc0b93e), ROM_BIOS(2) )
- // This one is a Mono-IV board, needs to be a separate driver
- //ROM_SYSTEM_BIOS( 2, "pcdi490", "Philips CD-i 490" )
- //ROMX_LOAD( "cdi490.rom", 0x000000, 0x80000, CRC(e115f45b) SHA1(f71be031a5dfa837de225081b2ddc8dcb74a0552), ROM_BIOS(3) )
- // This one is a Mini-MMC board, needs to be a separate driver
- //ROM_SYSTEM_BIOS( 3, "pcdi910m", "Philips CD-i 910" )
- //ROMX_LOAD( "cdi910.rom", 0x000000, 0x80000, CRC(8ee44ed6) SHA1(3fcdfa96f862b0cb7603fb6c2af84cac59527b05), ROM_BIOS(4) )
ROM_REGION(0x2000, "cdic", 0)
ROM_LOAD( "cdic.bin", 0x0000, 0x2000, NO_DUMP ) // Undumped 68HC05 microcontroller, might need decapping
@@ -632,12 +1281,17 @@ ROM_END
* Game driver(s) *
*************************/
+/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME */
+
// BIOS / System
CONS( 1991, cdimono1, 0, 0, cdimono1, cdi, driver_device, 0, "Philips", "CD-i (Mono-I) (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+CONS( 1991, cdimono2, 0, 0, cdimono2, cdimono2, driver_device, 0, "Philips", "CD-i (Mono-II) (NTSC)", MACHINE_NOT_WORKING )
+CONS( 1991, cdi910, 0, 0, cdi910, cdimono2, driver_device, 0, "Philips", "CD-i 910-17P Mini-MMC (PAL)", MACHINE_NOT_WORKING )
+CONS( 1991, cdi490a, 0, 0, cdimono1, cdi, driver_device, 0, "Philips", "CD-i 490", MACHINE_NOT_WORKING )
// The Quizard games are RETAIL CD-i units, with additional JAMMA adapters & dongles for protection, hence being 'clones' of the system.
-GAME( 1995, cdibios, 0, cdi_base, quizard, driver_device, 0, ROT0, "Philips", "CD-i Bios", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IS_BIOS_ROOT )
+GAME( 1995, cdibios, 0, cdimono1_base, quizard, driver_device, 0, ROT0, "Philips", "CD-i (Mono-I) (PAL) BIOS", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IS_BIOS_ROOT )
GAME( 1995, quizard, cdibios, quizard18, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.8)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
GAME( 1995, quizard_17, quizard, quizard17, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.7)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
diff --git a/src/mame/drivers/centiped.cpp b/src/mame/drivers/centiped.cpp
index e69467346a9..9f8b5a21fcc 100644
--- a/src/mame/drivers/centiped.cpp
+++ b/src/mame/drivers/centiped.cpp
@@ -617,7 +617,7 @@ READ8_MEMBER(centiped_state::bullsdrt_data_port_r)
WRITE8_MEMBER(centiped_state::led_w)
{
- set_led_status(machine(), offset, ~data & 0x80);
+ output().set_led_value(offset, ~data & 0x80);
}
@@ -629,13 +629,13 @@ READ8_MEMBER(centiped_state::caterplr_unknown_r)
WRITE8_MEMBER(centiped_state::coin_count_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
WRITE8_MEMBER(centiped_state::bullsdrt_coin_count_w)
{
- coin_counter_w(machine(), 0, data);
+ machine().bookkeeping().coin_counter_w(0, data);
}
diff --git a/src/mame/drivers/cesclass.cpp b/src/mame/drivers/cesclass.cpp
index 53a53b1882a..28f85f089e3 100644
--- a/src/mame/drivers/cesclass.cpp
+++ b/src/mame/drivers/cesclass.cpp
@@ -115,7 +115,7 @@ WRITE16_MEMBER( cesclassic_state::outputs_w )
---- --x- coin counter
*/
m_oki->set_bank_base((data & 0x40) ? 0x40000 : 0);
- coin_counter_w(machine(), 0, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 2);
if(data & ~0x62)
logerror("Output: %02x\n",data);
}
diff --git a/src/mame/drivers/cham24.cpp b/src/mame/drivers/cham24.cpp
index 15a0758538e..0fc42e73776 100644
--- a/src/mame/drivers/cham24.cpp
+++ b/src/mame/drivers/cham24.cpp
@@ -72,7 +72,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<ppu2c0x_device> m_ppu;
- UINT8* m_nt_ram;
+ std::unique_ptr<UINT8[]> m_nt_ram;
UINT8* m_nt_page[4];
UINT32 m_in_0;
UINT32 m_in_1;
@@ -102,29 +102,29 @@ void cham24_state::cham24_set_mirroring( int mirroring )
switch(mirroring)
{
case PPU_MIRROR_LOW:
- m_nt_page[0] = m_nt_page[1] = m_nt_page[2] = m_nt_page[3] = m_nt_ram;
+ m_nt_page[0] = m_nt_page[1] = m_nt_page[2] = m_nt_page[3] = m_nt_ram.get();
break;
case PPU_MIRROR_HIGH:
- m_nt_page[0] = m_nt_page[1] = m_nt_page[2] = m_nt_page[3] = m_nt_ram + 0x400;
+ m_nt_page[0] = m_nt_page[1] = m_nt_page[2] = m_nt_page[3] = m_nt_ram.get() + 0x400;
break;
case PPU_MIRROR_HORZ:
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram;
- m_nt_page[2] = m_nt_ram + 0x400;
- m_nt_page[3] = m_nt_ram + 0x400;
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get();
+ m_nt_page[2] = m_nt_ram.get() + 0x400;
+ m_nt_page[3] = m_nt_ram.get() + 0x400;
break;
case PPU_MIRROR_VERT:
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram;
- m_nt_page[3] = m_nt_ram + 0x400;
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get();
+ m_nt_page[3] = m_nt_ram.get() + 0x400;
break;
case PPU_MIRROR_NONE:
default:
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram + 0x800;
- m_nt_page[3] = m_nt_ram + 0xc00;
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get() + 0x800;
+ m_nt_page[3] = m_nt_ram.get() + 0xc00;
break;
}
}
@@ -289,11 +289,11 @@ void cham24_state::machine_start()
membank("bank1")->set_base(memregion("gfx1")->base());
/* need nametable ram, though. I doubt this uses more than 2k, but it starts up configured for 4 */
- m_nt_ram = auto_alloc_array(machine(), UINT8, 0x1000);
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram + 0x800;
- m_nt_page[3] = m_nt_ram + 0xc00;
+ m_nt_ram = std::make_unique<UINT8[]>(0x1000);
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get() + 0x800;
+ m_nt_page[3] = m_nt_ram.get() + 0xc00;
/* and read/write handlers */
m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff,read8_delegate(FUNC(cham24_state::nt_r), this), write8_delegate(FUNC(cham24_state::nt_w), this));
diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp
index 709cd463600..745870f02bc 100644
--- a/src/mame/drivers/champbwl.cpp
+++ b/src/mame/drivers/champbwl.cpp
@@ -218,11 +218,11 @@ READ8_MEMBER(champbwl_state::trackball_r)
WRITE8_MEMBER(champbwl_state::champbwl_misc_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
- coin_lockout_w(machine(), 0, ~data & 8);
- coin_lockout_w(machine(), 1, ~data & 4);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 8);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 4);
membank("bank1")->set_entry((data & 0x30) >> 4);
}
@@ -255,10 +255,10 @@ ADDRESS_MAP_END
WRITE8_MEMBER(champbwl_state::doraemon_outputs_w)
{
- coin_counter_w(machine(), 0, data & 1); // coin in counter
- coin_counter_w(machine(), 1, data & 2); // gift out counter
+ machine().bookkeeping().coin_counter_w(0, data & 1); // coin in counter
+ machine().bookkeeping().coin_counter_w(1, data & 2); // gift out counter
- coin_lockout_w(machine(), 0, ~data & 8); // coin lockout
+ machine().bookkeeping().coin_lockout_w(0, ~data & 8); // coin lockout
machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (data & 0x04) ? 0x00 : 0x80); // gift out motor
membank("bank1")->set_entry((data & 0x30) >> 4);
diff --git a/src/mame/drivers/chance32.cpp b/src/mame/drivers/chance32.cpp
index 7c49c0125ec..b7831f8f159 100644
--- a/src/mame/drivers/chance32.cpp
+++ b/src/mame/drivers/chance32.cpp
@@ -168,13 +168,13 @@ WRITE8_MEMBER(chance32_state::muxout_w)
if (data & 1) // bit 0 is the mux selector.
{
- output_set_lamp_value(0, (data >> 1) & 1); /* Lamp 0 - Small / Big */
- output_set_lamp_value(1, (data >> 2) & 1); /* Lamp 1 - Big / Small */
- output_set_lamp_value(2, (data >> 3) & 1); /* Lamp 2 - Hold 5 */
- output_set_lamp_value(3, (data >> 4) & 1); /* Lamp 3 - Hold 4 */
- output_set_lamp_value(4, (data >> 5) & 1); /* Lamp 4 - Hold 3 */
- output_set_lamp_value(5, (data >> 6) & 1); /* Lamp 5 - Hold 2 */
- output_set_lamp_value(6, (data >> 7) & 1); /* Lamp 6 - Hold 1 */
+ output().set_lamp_value(0, (data >> 1) & 1); /* Lamp 0 - Small / Big */
+ output().set_lamp_value(1, (data >> 2) & 1); /* Lamp 1 - Big / Small */
+ output().set_lamp_value(2, (data >> 3) & 1); /* Lamp 2 - Hold 5 */
+ output().set_lamp_value(3, (data >> 4) & 1); /* Lamp 3 - Hold 4 */
+ output().set_lamp_value(4, (data >> 5) & 1); /* Lamp 4 - Hold 3 */
+ output().set_lamp_value(5, (data >> 6) & 1); /* Lamp 5 - Hold 2 */
+ output().set_lamp_value(6, (data >> 7) & 1); /* Lamp 6 - Hold 1 */
logerror("Lamps A: %02x\n", data);
}
@@ -182,12 +182,12 @@ WRITE8_MEMBER(chance32_state::muxout_w)
else
{
// bit 1 is unknown...
- output_set_lamp_value(7, (data >> 2) & 1); /* Lamp 7 - Fever! */
- output_set_lamp_value(8, (data >> 3) & 1); /* Lamp 8 - Cancel */
- output_set_lamp_value(9, (data >> 4) & 1); /* Lamp 9 - D-Up / Take */
- output_set_lamp_value(10, (data >> 5) & 1); /* Lamp 10 - Take / D-Up */
- output_set_lamp_value(11, (data >> 6) & 1); /* Lamp 11 - Deal */
- output_set_lamp_value(12, (data >> 7) & 1); /* Lamp 12 - Bet */
+ output().set_lamp_value(7, (data >> 2) & 1); /* Lamp 7 - Fever! */
+ output().set_lamp_value(8, (data >> 3) & 1); /* Lamp 8 - Cancel */
+ output().set_lamp_value(9, (data >> 4) & 1); /* Lamp 9 - D-Up / Take */
+ output().set_lamp_value(10, (data >> 5) & 1); /* Lamp 10 - Take / D-Up */
+ output().set_lamp_value(11, (data >> 6) & 1); /* Lamp 11 - Deal */
+ output().set_lamp_value(12, (data >> 7) & 1); /* Lamp 12 - Bet */
logerror("Lamps B: %02x\n", data);
}
diff --git a/src/mame/drivers/changela.cpp b/src/mame/drivers/changela.cpp
index 4c9cb8909ca..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
@@ -198,7 +198,7 @@ WRITE8_MEMBER(changela_state::changela_collision_reset_1)
WRITE8_MEMBER(changela_state::changela_coin_counter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
diff --git a/src/mame/drivers/chaos.cpp b/src/mame/drivers/chaos.cpp
index 01245e83d7f..b03531bc362 100644
--- a/src/mame/drivers/chaos.cpp
+++ b/src/mame/drivers/chaos.cpp
@@ -50,7 +50,6 @@ public:
DECLARE_WRITE8_MEMBER(port1f_w);
DECLARE_READ8_MEMBER(port90_r);
DECLARE_READ8_MEMBER(port91_r);
- DECLARE_WRITE8_MEMBER(port92_w);
DECLARE_WRITE8_MEMBER(kbd_put);
UINT8 m_term_data;
virtual void machine_reset() override;
diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp
index bb844e64b12..e92d94056dc 100644
--- a/src/mame/drivers/chessmst.cpp
+++ b/src/mame/drivers/chessmst.cpp
@@ -170,25 +170,25 @@ WRITE8_MEMBER( chessmst_state::pio1_port_a_w )
for (int row=1; row<=8; row++)
{
if (m_led_sel & 0x01)
- output_set_indexed_value("led_a", row, BIT(data, 8-row));
+ output().set_indexed_value("led_a", row, BIT(data, 8-row));
if (m_led_sel & 0x02)
- output_set_indexed_value("led_b", row, BIT(data, 8-row));
+ output().set_indexed_value("led_b", row, BIT(data, 8-row));
if (m_led_sel & 0x04)
- output_set_indexed_value("led_c", row, BIT(data, 8-row));
+ output().set_indexed_value("led_c", row, BIT(data, 8-row));
if (m_led_sel & 0x08)
- output_set_indexed_value("led_d", row, BIT(data, 8-row));
+ output().set_indexed_value("led_d", row, BIT(data, 8-row));
if (m_led_sel & 0x10)
- output_set_indexed_value("led_e", row, BIT(data, 8-row));
+ output().set_indexed_value("led_e", row, BIT(data, 8-row));
if (m_led_sel & 0x20)
- output_set_indexed_value("led_f", row, BIT(data, 8-row));
+ output().set_indexed_value("led_f", row, BIT(data, 8-row));
if (m_led_sel & 0x40)
- output_set_indexed_value("led_g", row, BIT(data, 8-row));
+ output().set_indexed_value("led_g", row, BIT(data, 8-row));
if (m_led_sel & 0x80)
- output_set_indexed_value("led_h", row, BIT(data, 8-row));
+ output().set_indexed_value("led_h", row, BIT(data, 8-row));
if (m_led_sel & 0x100)
- output_set_indexed_value("led_i", row, BIT(data, 8-row));
+ output().set_indexed_value("led_i", row, BIT(data, 8-row));
if (m_led_sel & 0x200)
- output_set_indexed_value("led_j", row, BIT(data, 8-row));
+ output().set_indexed_value("led_j", row, BIT(data, 8-row));
}
m_led_sel = 0;
diff --git a/src/mame/drivers/chesstrv.cpp b/src/mame/drivers/chesstrv.cpp
index 3fb8de7a40d..e34954a6af0 100644
--- a/src/mame/drivers/chesstrv.cpp
+++ b/src/mame/drivers/chesstrv.cpp
@@ -66,13 +66,13 @@ WRITE8_MEMBER( chesstrv_state::display_w )
UINT8 seg_data = BITSWAP8(data,0,1,2,3,4,5,6,7);
if(!(m_matrix & 0x01))
- output_set_digit_value( 3, seg_data );
+ output().set_digit_value( 3, seg_data );
if(!(m_matrix & 0x02))
- output_set_digit_value( 2, seg_data );
+ output().set_digit_value( 2, seg_data );
if(!(m_matrix & 0x04))
- output_set_digit_value( 1, seg_data );
+ output().set_digit_value( 1, seg_data );
if(!(m_matrix & 0x08))
- output_set_digit_value( 0, seg_data );
+ output().set_digit_value( 0, seg_data );
}
WRITE8_MEMBER( chesstrv_state::matrix_w )
@@ -98,7 +98,7 @@ READ8_MEMBER( chesstrv_state::keypad_r )
WRITE8_MEMBER( chesstrv_state::diplomat_display_w )
{
- output_set_digit_value( m_matrix & 7, data ^ 0xff );
+ output().set_digit_value( m_matrix & 7, data ^ 0xff );
}
READ8_MEMBER( chesstrv_state::diplomat_keypad_r )
diff --git a/src/mame/drivers/chexx.cpp b/src/mame/drivers/chexx.cpp
index 2f9a85abe7b..f32da626237 100644
--- a/src/mame/drivers/chexx.cpp
+++ b/src/mame/drivers/chexx.cpp
@@ -107,7 +107,7 @@ WRITE8_MEMBER(chexx_state::via_b_out)
digitalker_set_bank(data & 3);
m_digitalker->set_output_gain(0, BIT(data,2) ? 1.0f : 0.0f); // bit 2 controls the Digitalker output
- coin_counter_w(machine(), 0, BIT(~data,3));
+ machine().bookkeeping().coin_counter_w(0, BIT(~data,3));
// bit 4 is EJECT
// bit 7 is related to speaker out
@@ -133,16 +133,16 @@ WRITE_LINE_MEMBER(chexx_state::via_cb2_out)
// 7segs (score)
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // 4511
- output_set_digit_value(0, patterns[(m_shift >> (16+4)) & 0xf]);
- output_set_digit_value(1, patterns[(m_shift >> (16+0)) & 0xf]);
+ output().set_digit_value(0, patterns[(m_shift >> (16+4)) & 0xf]);
+ output().set_digit_value(1, patterns[(m_shift >> (16+0)) & 0xf]);
- output_set_digit_value(2, patterns[(m_shift >> (8+4)) & 0xf]);
- output_set_digit_value(3, patterns[(m_shift >> (8+0)) & 0xf]);
+ output().set_digit_value(2, patterns[(m_shift >> (8+4)) & 0xf]);
+ output().set_digit_value(3, patterns[(m_shift >> (8+0)) & 0xf]);
// Leds (period being played)
- output_set_led_value(0, BIT(m_shift,2));
- output_set_led_value(1, BIT(m_shift,1));
- output_set_led_value(2, BIT(m_shift,0));
+ output().set_led_value(0, BIT(m_shift,2));
+ output().set_led_value(1, BIT(m_shift,1));
+ output().set_led_value(2, BIT(m_shift,0));
// logerror("%s: VIA write CB2 = %02X\n", machine().describe_context(), state);
}
@@ -178,8 +178,8 @@ ADDRESS_MAP_END
WRITE8_MEMBER(chexx_state::lamp_w)
{
m_lamp = data;
- output_set_lamp_value(0, BIT(m_lamp,0));
- output_set_lamp_value(1, BIT(m_lamp,1));
+ output().set_lamp_value(0, BIT(m_lamp,0));
+ output().set_lamp_value(1, BIT(m_lamp,1));
}
WRITE8_MEMBER(chexx_state::ay_w)
diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp
index 624c58b7b95..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 | |
@@ -364,14 +365,11 @@ Thanks to Alex, Mr Mudkips, and Philip Burke for this info.
#include "emu.h"
#include "cpu/i386/i386.h"
-#include "machine/lpci.h"
#include "machine/pic8259.h"
-#include "machine/pit8253.h"
#include "machine/idectrl.h"
#include "machine/idehd.h"
#include "machine/naomigd.h"
#include "video/poly.h"
-#include "bitmap.h"
#include "debug/debugcon.h"
#include "debug/debugcmd.h"
#include "debug/debugcpu.h"
diff --git a/src/mame/drivers/chinsan.cpp b/src/mame/drivers/chinsan.cpp
index c0f51e3cea8..49d8e3e4adf 100644
--- a/src/mame/drivers/chinsan.cpp
+++ b/src/mame/drivers/chinsan.cpp
@@ -87,7 +87,7 @@ public:
required_device<msm5205_device> m_adpcm;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- UINT8 *m_decrypted_opcodes;
+ std::unique_ptr<UINT8[]> m_decrypted_opcodes;
};
@@ -572,8 +572,8 @@ WRITE_LINE_MEMBER(chinsan_state::chin_adpcm_int)
void chinsan_state::machine_start()
{
membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x8000, 0x4000);
- membank("bank0d")->set_base(m_decrypted_opcodes);
- membank("bank1d")->configure_entries(0, 4, m_decrypted_opcodes + 0x8000, 0x4000);
+ membank("bank0d")->set_base(m_decrypted_opcodes.get());
+ membank("bank1d")->configure_entries(0, 4, m_decrypted_opcodes.get() + 0x8000, 0x4000);
save_item(NAME(m_adpcm_idle));
save_item(NAME(m_port_select));
@@ -677,8 +677,8 @@ ROM_END
DRIVER_INIT_MEMBER(chinsan_state,chinsan)
{
- m_decrypted_opcodes = auto_alloc_array(machine(), UINT8, 0x18000);
- mc8123_decode(memregion("maincpu")->base(), m_decrypted_opcodes, memregion("user1")->base(), 0x18000);
+ m_decrypted_opcodes = std::make_unique<UINT8[]>(0x18000);
+ mc8123_decode(memregion("maincpu")->base(), m_decrypted_opcodes.get(), memregion("user1")->base(), 0x18000);
}
diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp
index 20dd8ac7958..052e2916a2a 100644
--- a/src/mame/drivers/chqflag.cpp
+++ b/src/mame/drivers/chqflag.cpp
@@ -56,8 +56,8 @@ WRITE8_MEMBER(chqflag_state::chqflag_bankswitch_w)
WRITE8_MEMBER(chqflag_state::chqflag_vreg_w)
{
/* bits 0 & 1 = coin counters */
- coin_counter_w(machine(), 1, data & 0x01);
- coin_counter_w(machine(), 0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
/* bit 4 = enable rom reading through K051316 #1 & #2 */
m_k051316_readroms = (data & 0x10);
diff --git a/src/mame/drivers/chsuper.cpp b/src/mame/drivers/chsuper.cpp
index 91391054baf..226cf66514d 100644
--- a/src/mame/drivers/chsuper.cpp
+++ b/src/mame/drivers/chsuper.cpp
@@ -42,7 +42,7 @@ public:
int m_tilexor;
UINT8 m_blacklamp;
UINT8 m_redlamp;
- UINT8 *m_vram;
+ std::unique_ptr<UINT8[]> m_vram;
required_device<z180_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -65,7 +65,7 @@ public:
void chsuper_state::video_start()
{
- m_vram = auto_alloc_array_clear(machine(), UINT8, 1 << 14);
+ m_vram = make_unique_clear<UINT8[]>(1 << 14);
}
UINT32 chsuper_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
@@ -137,12 +137,12 @@ WRITE8_MEMBER( chsuper_state::chsuper_vram_w )
WRITE8_MEMBER( chsuper_state::chsuper_outporta_w ) // Port EEh
{
- coin_counter_w(machine(), 0, data & 0x01); // Coin counter
- output_set_lamp_value(0, (data >> 1) & 1); // Hold 1 / Black (Nero) lamp.
- coin_counter_w(machine(), 1, data & 0x04); // Payout / Ticket Out pulse
- output_set_lamp_value(1, (data >> 3) & 1); // Hold 2 / Low (Bassa) lamp.
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); // Coin counter
+ output().set_lamp_value(0, (data >> 1) & 1); // Hold 1 / Black (Nero) lamp.
+ machine().bookkeeping().coin_counter_w(1, data & 0x04); // Payout / Ticket Out pulse
+ output().set_lamp_value(1, (data >> 3) & 1); // Hold 2 / Low (Bassa) lamp.
// D4: unused...
- output_set_lamp_value(5, (data >> 5) & 1); // BET lamp
+ output().set_lamp_value(5, (data >> 5) & 1); // BET lamp
// D6: ticket motor...
// D7: unused...
@@ -153,11 +153,11 @@ WRITE8_MEMBER( chsuper_state::chsuper_outporta_w ) // Port EEh
if ((m_blacklamp == 1) & (m_redlamp == 1)) // if both are ON...
{
- output_set_lamp_value(2, 1); // HOLD 3 ON
+ output().set_lamp_value(2, 1); // HOLD 3 ON
}
else
{
- output_set_lamp_value(2, 0); // otherwise HOLD 3 OFF
+ output().set_lamp_value(2, 0); // otherwise HOLD 3 OFF
}
}
@@ -165,11 +165,11 @@ WRITE8_MEMBER( chsuper_state::chsuper_outportb_w ) // Port EFh
{
// D0: unknown...
// D1: unused...
- output_set_lamp_value(3, (data >> 2) & 1); // Hold 4 / High (Alta) lamp.
+ output().set_lamp_value(3, (data >> 2) & 1); // Hold 4 / High (Alta) lamp.
// D3: unused...
// D4: unused...
- output_set_lamp_value(4, (data >> 5) & 1); // Hold 5 / Red (Rosso) / Gamble (Raddoppio) lamp.
- output_set_lamp_value(6, (data >> 6) & 1); // Start / Gamble (Raddoppio) lamp.
+ output().set_lamp_value(4, (data >> 5) & 1); // Hold 5 / Red (Rosso) / Gamble (Raddoppio) lamp.
+ output().set_lamp_value(6, (data >> 6) & 1); // Start / Gamble (Raddoppio) lamp.
// D7: unused...
/* Workaround to get the HOLD 3 lamp line active,
@@ -179,11 +179,11 @@ WRITE8_MEMBER( chsuper_state::chsuper_outportb_w ) // Port EFh
if ((m_blacklamp == 1) & (m_redlamp == 1)) // if both are ON...
{
- output_set_lamp_value(2, 1); // Hold 3 ON
+ output().set_lamp_value(2, 1); // Hold 3 ON
}
else
{
- output_set_lamp_value(2, 0); // Hold 3 OFF
+ output().set_lamp_value(2, 0); // Hold 3 OFF
}
}
@@ -399,13 +399,13 @@ ROM_END
DRIVER_INIT_MEMBER(chsuper_state,chsuper2)
{
- UINT8 *buffer;
+ std::unique_ptr<UINT8[]> buffer;
UINT8 *rom = memregion("gfx1")->base();
int i;
m_tilexor = 0x7f00;
- buffer = auto_alloc_array(machine(), UINT8, 0x100000);
+ buffer = std::make_unique<UINT8[]>(0x100000);
for (i=0;i<0x100000;i++)
{
@@ -416,18 +416,18 @@ DRIVER_INIT_MEMBER(chsuper_state,chsuper2)
buffer[j] = rom[i];
}
- memcpy(rom,buffer,0x100000);
+ memcpy(rom,buffer.get(),0x100000);
}
DRIVER_INIT_MEMBER(chsuper_state,chsuper3)
{
- UINT8 *buffer;
+ std::unique_ptr<UINT8[]> buffer;
UINT8 *rom = memregion("gfx1")->base();
int i;
m_tilexor = 0x0e00;
- buffer = auto_alloc_array(machine(), UINT8, 0x100000);
+ buffer = std::make_unique<UINT8[]>(0x100000);
for (i=0;i<0x100000;i++)
{
@@ -438,18 +438,18 @@ DRIVER_INIT_MEMBER(chsuper_state,chsuper3)
buffer[j] = rom[i];
}
- memcpy(rom,buffer,0x100000);
+ memcpy(rom,buffer.get(),0x100000);
}
DRIVER_INIT_MEMBER(chsuper_state,chmpnum)
{
- UINT8 *buffer;
+ std::unique_ptr<UINT8[]> buffer;
UINT8 *rom = memregion("gfx1")->base();
int i;
m_tilexor = 0x1800;
- buffer = auto_alloc_array(machine(), UINT8, 0x100000);
+ buffer = std::make_unique<UINT8[]>(0x100000);
for (i=0;i<0x100000;i++)
{
@@ -464,7 +464,7 @@ DRIVER_INIT_MEMBER(chsuper_state,chmpnum)
buffer[j] = rom[i];
}
- memcpy(rom,buffer,0x100000);
+ memcpy(rom,buffer.get(),0x100000);
}
diff --git a/src/mame/drivers/cidelsa.cpp b/src/mame/drivers/cidelsa.cpp
index 7417b063e17..6d2d91c21b1 100644
--- a/src/mame/drivers/cidelsa.cpp
+++ b/src/mame/drivers/cidelsa.cpp
@@ -113,9 +113,9 @@ WRITE8_MEMBER( cidelsa_state::altair_out1_w )
7 CONT. M1
*/
- set_led_status(machine(), 0, data & 0x08); // 1P
- set_led_status(machine(), 1, data & 0x10); // 2P
- set_led_status(machine(), 2, data & 0x20); // FIRE
+ output().set_led_value(0, data & 0x08); // 1P
+ output().set_led_value(1, data & 0x10); // 2P
+ output().set_led_value(2, data & 0x20); // FIRE
}
WRITE8_MEMBER( draco_state::out1_w )
diff --git a/src/mame/drivers/circusc.cpp b/src/mame/drivers/circusc.cpp
index 64a19ac1392..f0955c0f396 100644
--- a/src/mame/drivers/circusc.cpp
+++ b/src/mame/drivers/circusc.cpp
@@ -97,7 +97,7 @@ WRITE8_MEMBER(circusc_state::circusc_sh_irqtrigger_w)
WRITE8_MEMBER(circusc_state::circusc_coin_counter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
WRITE8_MEMBER(circusc_state::circusc_sound_w)
diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp
index cc74b05727f..6c8426c16ba 100644
--- a/src/mame/drivers/cischeat.cpp
+++ b/src/mame/drivers/cischeat.cpp
@@ -178,6 +178,7 @@ Cisco Heat.
#include "cischeat.lh"
#include "f1gpstar.lh"
+#include "captflag.lh"
/**************************************************************************
@@ -383,15 +384,15 @@ WRITE16_MEMBER(cischeat_state::scudhamm_leds_w)
{
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 0, data & 0x0100); // 3 buttons
- set_led_status(machine(), 1, data & 0x0200);
- set_led_status(machine(), 2, data & 0x0400);
+ output().set_led_value(0, data & 0x0100); // 3 buttons
+ output().set_led_value(1, data & 0x0200);
+ output().set_led_value(2, data & 0x0400);
}
if (ACCESSING_BITS_0_7)
{
-// set_led_status(machine(), 3, data & 0x0010); // if we had more leds..
-// set_led_status(machine(), 4, data & 0x0020);
+// output().set_led_value(3, data & 0x0010); // if we had more leds..
+// output().set_led_value(4, data & 0x0020);
}
}
@@ -482,16 +483,16 @@ WRITE16_MEMBER(cischeat_state::armchmp2_leds_w)
{
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 0, data & 0x0100);
- set_led_status(machine(), 1, data & 0x1000);
- set_led_status(machine(), 2, data & 0x2000);
- set_led_status(machine(), 3, data & 0x4000);
+ output().set_led_value(0, data & 0x0100);
+ output().set_led_value(1, data & 0x1000);
+ output().set_led_value(2, data & 0x2000);
+ output().set_led_value(3, data & 0x4000);
}
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x0040);
- coin_counter_w(machine(), 1, data & 0x0080);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0040);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0080);
}
}
@@ -513,6 +514,160 @@ ADDRESS_MAP_END
/**************************************************************************
+ Captain Flag
+**************************************************************************/
+
+#define RIGHT 0
+#define LEFT 1
+
+WRITE16_MEMBER(cischeat_state::captflag_leds_w)
+{
+ COMBINE_DATA( &m_captflag_leds );
+ if (ACCESSING_BITS_8_15)
+ {
+ machine().bookkeeping().coin_counter_w(1, data & 0x0100); // coin 2
+ output().set_led_value(0, data & 0x0200); // decide
+ machine().bookkeeping().coin_counter_w(0, data & 0x0400); // coin 1
+ output().set_led_value(1, data & 0x2000); // select
+
+ int power = (data & 0x1000);
+ m_captflag_hopper->write(space, 0, power ? 0x80 : 0x00); // prize motor
+ if (!power)
+ m_captflag_hopper->reset();
+ }
+}
+
+WRITE16_MEMBER(cischeat_state::captflag_oki_bank_w)
+{
+ if (ACCESSING_BITS_0_7)
+ {
+ m_oki1_bank->set_entry(((data >> 0) + 1) & 0x7);
+ m_oki2_bank->set_entry(((data >> 4) + 1) & 0x7);
+ }
+}
+
+// Motors
+
+WRITE16_MEMBER(cischeat_state::captflag_motor_command_right_w)
+{
+ // Output check:
+ // e09a up
+ // 80b9 - (when not busy)
+ // 0088 - (when busy)
+ // e0ba down
+ data = COMBINE_DATA( &m_captflag_motor_command[RIGHT] );
+ captflag_motor_move(RIGHT, data);
+}
+WRITE16_MEMBER(cischeat_state::captflag_motor_command_left_w)
+{
+ // Output check:
+ // e0ba up
+ // 8099 - (when not busy)
+ // 0088 - (when busy)
+ // e09a down
+ data = COMBINE_DATA( &m_captflag_motor_command[LEFT] );
+ captflag_motor_move(LEFT, data);
+}
+
+void cischeat_state::captflag_motor_move(int side, UINT16 data)
+{
+ UINT16 & pos = m_captflag_motor_pos[side];
+
+ timer_device & dev = ((side == RIGHT) ? m_captflag_motor_right : m_captflag_motor_left);
+
+// bool busy = !(dev.time_left() == attotime::never);
+ bool busy = false;
+
+ if (data & 0x0010)
+ {
+ if (!busy)
+ {
+ bool down = (data & 0x0020);
+
+ int inc;
+ switch (data >> 8)
+ {
+ case 0xf5: inc = +2; break; // -5 -6
+ case 0xf8: inc = +1; break; // -5 -3
+ case 0xfe: inc = -1; break; // -5 +3
+ case 0x01: inc = -2; break; // -5 +6
+ default:
+ if ((data >> 8) + 5 >= 0x100)
+ inc = -1;
+ else
+ inc = +1;
+ }
+
+ if (data & 0x0001)
+ inc = 1;
+
+ if (down)
+ inc *= -1;
+
+ int new_pos = pos + inc;
+ if (new_pos > 3)
+ new_pos = 3;
+ else if (new_pos < 0)
+ new_pos = 0;
+ busy = (new_pos != pos);
+ pos = new_pos;
+
+ if (busy)
+ dev.adjust(attotime::from_msec(100));
+ }
+ }
+ else
+ {
+ dev.reset();
+ }
+
+ output().set_value((side == RIGHT) ? "right" : "left", pos);
+}
+
+CUSTOM_INPUT_MEMBER(cischeat_state::captflag_motor_pos_r)
+{
+ const UINT8 pos[4] = {1,0,2,3}; // -> 2,3,1,0 offsets -> 0123
+ return ~pos[m_captflag_motor_pos[(FPTR)param]];
+}
+
+CUSTOM_INPUT_MEMBER(cischeat_state::captflag_motor_busy_r)
+{
+// timer_device & dev = ((side == RIGHT) ? m_captflag_motor_right : m_captflag_motor_left);
+// return (dev.time_left() == attotime::never) ? 0 : 1;
+ return 0;
+}
+
+static ADDRESS_MAP_START( captflag_map, AS_PROGRAM, 16, cischeat_state )
+ AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
+ AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(scudhamm_vregs_w) AM_SHARE("vregs") // Video Registers + RAM
+ AM_RANGE(0x090008, 0x090009) AM_WRITENOP // 0?
+ AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_WRITE(cischeat_scrollram_0_w) AM_SHARE("scrollram.0") // Scroll RAM 0
+ AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(cischeat_scrollram_2_w) AM_SHARE("scrollram.2") // Scroll RAM 2
+ AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
+ AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // Work RAM + Spriteram
+ AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SW1_2") AM_WRITE(captflag_oki_bank_w) // 2 x DSW + Sound
+ AM_RANGE(0x100008, 0x100009) AM_READ_PORT("Buttons") AM_WRITE(captflag_leds_w) // Buttons + Leds
+ AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Sound
+ AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) //
+ AM_RANGE(0x10001c, 0x10001d) AM_WRITE(scudhamm_enable_w) // ?
+ AM_RANGE(0x100040, 0x100041) AM_READ_PORT("SW01") // DSW + Motor
+ AM_RANGE(0x100044, 0x100045) AM_WRITE(captflag_motor_command_left_w) // Motor Command (Left)
+ AM_RANGE(0x100048, 0x100049) AM_WRITE(captflag_motor_command_right_w) // Motor Command (Right)
+ AM_RANGE(0x100060, 0x10007d) AM_RAM // 7-seg? NVRAM?
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( captflag_oki1_map, AS_0, 8, cischeat_state )
+ AM_RANGE(0x00000, 0x1ffff) AM_ROM
+ AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki1_bank")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( captflag_oki2_map, AS_0, 8, cischeat_state )
+ AM_RANGE(0x00000, 0x1ffff) AM_ROM
+ AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki2_bank")
+ADDRESS_MAP_END
+
+
+/**************************************************************************
Memory Maps - Road CPUs (#2 & #3)
@@ -1323,6 +1478,97 @@ INPUT_PORTS_END
/**************************************************************************
+ Captain Flag
+**************************************************************************/
+
+static INPUT_PORTS_START( captflag )
+ PORT_START("Buttons")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) // up left
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) // down left
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) // up right
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) // down right
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1) // coin 2
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 ) // decide
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) // coin 1
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE ) // test
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) // select
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH,IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // prize sensor
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // potery on schems?
+
+ PORT_START("SW1_2")
+ PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
+ PORT_DIPSETTING( 0x0001, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0003, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6")
+ PORT_DIPSETTING( 0x0008, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0018, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0028, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x00c0, 0x00c0, "Qualify" ) PORT_DIPLOCATION("SW1:7,8")
+ PORT_DIPSETTING( 0x0000, "30/40" )
+ PORT_DIPSETTING( 0x00c0, "30/50" )
+ PORT_DIPSETTING( 0x0080, "40/50" )
+ PORT_DIPSETTING( 0x0040, "50/50" )
+
+ PORT_DIPUNKNOWN_DIPLOC( 0x0100, 0x0100, "SW2:1" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x0200, 0x0200, "SW2:2" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x0400, 0x0400, "SW2:3" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x0800, 0x0800, "SW2:4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x1000, 0x1000, "SW2:5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x2000, 0x2000, "SW2:6" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x4000, 0x4000, "SW2:7" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x8000, 0x8000, "SW2:8" )
+
+ PORT_START("SW01")
+ PORT_BIT( 0x0003, IP_ACTIVE_LOW, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, cischeat_state, captflag_motor_pos_r, (void *)LEFT)
+ PORT_BIT( 0x000c, IP_ACTIVE_LOW, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, cischeat_state, captflag_motor_pos_r, (void *)RIGHT)
+
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, cischeat_state, captflag_motor_busy_r, (void *)LEFT)
+ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, cischeat_state, captflag_motor_busy_r, (void *)RIGHT)
+
+ PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW01:1,2")
+ PORT_DIPSETTING( 0x0000, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x0200, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x0100, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW01:3")
+ PORT_DIPSETTING( 0x0400, "3/4" )
+ PORT_DIPSETTING( 0x0000, "4/5" )
+ PORT_DIPNAME( 0x0800, 0x0800, "BGM Volume" ) PORT_DIPLOCATION("SW01:4")
+ PORT_DIPSETTING( 0x0000, "Low" )
+ PORT_DIPSETTING( 0x0800, DEF_STR( Normal ) )
+ PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW01:5")
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
+ PORT_DIPNAME( 0xe000, 0xe000, "Capsule Payout" ) PORT_DIPLOCATION("SW01:6,7,8")
+ PORT_DIPSETTING( 0x0000, "Nothing" )
+ PORT_DIPSETTING( 0xc000, "05%" )
+ PORT_DIPSETTING( 0xe000, "10%" )
+ PORT_DIPSETTING( 0xa000, "15%" )
+ PORT_DIPSETTING( 0x8000, "20%" )
+ PORT_DIPSETTING( 0x6000, "30%" )
+ PORT_DIPSETTING( 0x4000, "50%" )
+ PORT_DIPSETTING( 0x2000, "All" )
+INPUT_PORTS_END
+
+
+/**************************************************************************
Gfx Layouts
@@ -1690,6 +1936,76 @@ static MACHINE_CONFIG_DERIVED( armchmp2, scudhamm )
MACHINE_CONFIG_END
+/**************************************************************************
+ Captain Flag
+**************************************************************************/
+
+/*
+ 1] no-op
+ 2] copy text buffer to tilemap, sound (~50 scanlines at 30Hz)
+ 3] I/O, sound (~5 scanlines at 30Hz). Sets a flag to update text buffer and sprites
+ 4-7] rte
+*/
+
+TIMER_DEVICE_CALLBACK_MEMBER(cischeat_state::captflag_scanline)
+{
+ int scanline = param;
+
+ if(scanline == 240) // vblank: draw screen
+ m_maincpu->set_input_line(2, HOLD_LINE);
+
+ if(scanline == 50)
+ m_maincpu->set_input_line(3, HOLD_LINE);
+}
+
+static MACHINE_CONFIG_START( captflag, cischeat_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",M68000, XTAL_24MHz / 2) // TMP68000P-12
+ MCFG_CPU_PROGRAM_MAP(captflag_map)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cischeat_state, captflag_scanline, "screen", 0, 1)
+
+ MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH )
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+// MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(30) //TODO: wrong!
+// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0 +16, 256-1 -16)
+ MCFG_SCREEN_UPDATE_DRIVER(cischeat_state, screen_update_scudhamm)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", scudhamm)
+ MCFG_PALETTE_ADD("palette", 0x8000/2)
+ MCFG_PALETTE_FORMAT(RRRRGGGGBBBBRGBx)
+ MCFG_PALETTE_ENABLE_SHADOWS()
+
+ MCFG_VIDEO_START_OVERRIDE(cischeat_state,f1gpstar)
+
+ // Motors
+ MCFG_TIMER_ADD_NONE("motor_left")
+ MCFG_TIMER_ADD_NONE("motor_right")
+
+ // Layout
+ MCFG_DEFAULT_LAYOUT(layout_captflag)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_OKIM6295_ADD("oki1", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, captflag_oki1_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5)
+
+ MCFG_OKIM6295_ADD("oki2", 2112000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
+ MCFG_DEVICE_ADDRESS_MAP(AS_0, captflag_oki2_map)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.5)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.5)
+MACHINE_CONFIG_END
+
+
/***************************************************************************
@@ -2922,6 +3238,68 @@ ROM_END
/***************************************************************************
+ Captain Flag
+
+**************************************************************************/
+
+ROM_START( captflag )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* Main CPU Code */
+ ROM_LOAD16_BYTE( "cf-92128a_3_ver1.4.ic40", 0x000000, 0x020000, CRC(e62af6ae) SHA1(38eb581def468860e4705f25088550799303a9aa) )
+ ROM_LOAD16_BYTE( "cf-92128_4_ver1.4.ic46", 0x000001, 0x020000, CRC(e773f87f) SHA1(cf9d72b0df256b69b96f1cd6b5f86282801873e3) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 ) /* Scroll 0 */
+ ROM_LOAD( "mr92027-11_w89.ic54", 0x000000, 0x080000, CRC(d34cae3c) SHA1(622ad4645df12d34e55bbfb7194508957bb2198b) ) // 5 on the PCB
+
+// ROM_REGION( 0x080000, "gfx2", 0 ) /* Scroll 1 */
+// UNUSED
+
+ ROM_REGION( 0x20000, "gfx3", 0 ) /* Scroll 2 */
+ ROM_LOAD( "cf-92128_6.ic55", 0x000000, 0x020000, CRC(12debfc2) SHA1(f28d3f63a3c8965fcd838eedad4ef3682a28da0d) ) // 6 on the PCB
+
+ ROM_REGION( 0x400000, "gfx4", 0 ) /* Sprites */
+ ROM_LOAD16_BYTE( "gp-9189_1.ic1", 0x000000, 0x080000, CRC(03d69f0f) SHA1(97a0552d94ca1e9c76896903c02c3f005752e5db) )
+ ROM_LOAD16_BYTE( "gp-9189_2.ic2", 0x000001, 0x080000, CRC(fbfba282) SHA1(65735d8f6abdb5816b8b26ce2969959a0f2e2c7d) )
+ ROM_LOAD16_BYTE( "mr92027-08_w85.ic5", 0x100000, 0x080000, CRC(1e02abff) SHA1(497aeab40c778ef6d8a76b005530fea5f4f68ab8) )
+ ROM_LOAD16_BYTE( "mr92027-04_w86.ic6", 0x100001, 0x080000, CRC(89dfe3e8) SHA1(f069cf55d08e5901699e7ee7c6b2b5cdba031cf2) )
+ ROM_LOAD16_BYTE( "gp-9189_5.ic11", 0x200000, 0x080000, CRC(edc33285) SHA1(a23f9a1877108eaaef6d467ae21433fe5f24261f) )
+ ROM_LOAD16_BYTE( "gp-9189_6.ic12", 0x200001, 0x080000, CRC(99b8f6d8) SHA1(e01c85861d5a131bb31908460cb3bc9eb0ea045c) )
+ ROM_LOAD16_BYTE( "mr92027-07_w87.ic15", 0x300000, 0x080000, CRC(07e49754) SHA1(c9fcd394badba104508e4c5ec5cf5513ecb2d69e) )
+ ROM_LOAD16_BYTE( "mr92027-08_w88.ic16", 0x300001, 0x080000, CRC(fb080dd6) SHA1(49eceba8cdce76dec3f6a85327135125bb0910f0) )
+
+ ROM_REGION( 0x80000, "user2", 0 ) /* ? Unused ROMs ? */
+ ROM_LOAD( "pr91042.ic86", 0x000000, 0x000100, CRC(e71de4aa) SHA1(d06e5a35ad2127df2d6328cce153073380ee7819) ) // FIXED BITS (00000xxx0000xxxx)
+ ROM_LOAD( "pr88004q.ic88", 0x000000, 0x000200, CRC(9327dc37) SHA1(cfe7b144cdcd76170d47f1c4e0f72b6d4fca0c8d) ) // FIXED BITS (1xxxxxxx1111x1xx)
+ ROM_LOAD( "pr92027a.ic16", 0x000000, 0x000020, CRC(bee7adc6) SHA1(cd11a3dae0317d06a69b5707a653b8997c1eb97f) ) // FIXED BITS (0000000000000xxx), 1xxx0 = 0x00
+ ROM_LOAD( "pr92027a.ic17", 0x000000, 0x000020, CRC(bee7adc6) SHA1(cd11a3dae0317d06a69b5707a653b8997c1eb97f) ) // ""
+ ROM_LOAD( "pr92027b.ic32.bin", 0x000000, 0x000113, CRC(483f4fb5) SHA1(84bb0300a106261634c921a37858482d3233c05a) )
+ ROM_LOAD( "pr92027b.ic32.jedec", 0x000000, 0x000bd0, CRC(f0ed1845) SHA1(203438fdee05810b2265624e1a1fdd55d360f833) )
+ ROM_LOAD( "pr92027b.ic36.bin", 0x000000, 0x000113, CRC(483f4fb5) SHA1(84bb0300a106261634c921a37858482d3233c05a) )
+ ROM_LOAD( "pr92027b.ic36.jedec", 0x000000, 0x000bd0, CRC(f0ed1845) SHA1(203438fdee05810b2265624e1a1fdd55d360f833) )
+
+ ROM_LOAD( "ch9072_4.ic39", 0x000000, 0x002000, CRC(b45b4dc0) SHA1(b9fae0c9ac2d40f0a202c538d866d5f2941ba8dd) ) // FIXED BITS (0000000x), 1ST AND 2ND HALF IDENTICAL
+ ROM_LOAD( "ch9072_5.ic33", 0x000000, 0x001000, CRC(a8025dc1) SHA1(c9bb7ea59bba3041c687b449ff1560d7d1ce2ec9) ) // FIXED BITS (xxxx0xxx)
+ ROM_LOAD( "ch9072_6.ic35", 0x000000, 0x001000, CRC(5cc9c561) SHA1(10866fd0707498fe4d4415bf755c07b55af4ae18) )
+ ROM_LOAD( "ch9072_8.ic59", 0x000000, 0x001000, CRC(6c99523b) SHA1(cc00b326b69a97b5bd2e2d741ab41692a14eae35) ) // FIXED BITS (0xxx0xxx)
+
+ ROM_LOAD( "mr90015-35_w33.ic54", 0x000000, 0x080000, CRC(9d428fb7) SHA1(02f72938d73db932bd217620a175a05215f6016a) ) // not dumped yet (taken from the other games)
+ ROM_LOAD( "mr90015-35_w33.ic67", 0x000000, 0x080000, CRC(9d428fb7) SHA1(02f72938d73db932bd217620a175a05215f6016a) ) // ""
+
+ ROM_REGION( 0x100000, "oki1", 0 ) /* Samples (8x20000) */
+ ROM_LOAD( "mr92027-10_w27.ic19", 0x000000, 0x100000, CRC(04bd729e) SHA1(92bcedf16554f33cc3d0dbdd8807b0e2fafe5d7c) ) // 2 on the PCB
+
+ ROM_REGION( 0x100000, "oki2", 0 ) /* Samples (8x20000) */
+ ROM_LOAD( "mr92027-09_w26.ic18", 0x000000, 0x100000, CRC(3aaa332a) SHA1(6c19364069e0b077a07ac4f9c4b0cf0c0985a42a) ) // 1 on the PCB
+ROM_END
+
+DRIVER_INIT_MEMBER(cischeat_state, captflag)
+{
+ m_oki1_bank->configure_entries(0, 0x100000 / 0x20000, memregion("oki1")->base(), 0x20000);
+ m_oki2_bank->configure_entries(0, 0x100000 / 0x20000, memregion("oki2")->base(), 0x20000);
+}
+
+
+/***************************************************************************
+
Game Drivers
@@ -2931,8 +3309,9 @@ ROM_END
GAMEL( 1989, bigrun, 0, bigrun, bigrun, cischeat_state, bigrun, ROT0, "Jaleco", "Big Run (11th Rallye version)", MACHINE_IMPERFECT_GRAPHICS, layout_cischeat ) // there's a 13th Rallye version (1991) (only on the SNES?)
GAMEL( 1990, cischeat, 0, cischeat, cischeat, cischeat_state, cischeat, ROT0, "Jaleco", "Cisco Heat", MACHINE_IMPERFECT_GRAPHICS, layout_cischeat )
GAMEL( 1991, f1gpstar, 0, f1gpstar, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "Grand Prix Star", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar )
-GAME ( 1992, armchmp2, 0, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v2.6", MACHINE_IMPERFECT_GRAPHICS )
-GAME ( 1992, armchmp2o,armchmp2, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v1.7", MACHINE_IMPERFECT_GRAPHICS )
+GAME ( 1992, armchmp2, 0, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v2.6", MACHINE_IMPERFECT_GRAPHICS )
+GAME ( 1992, armchmp2o,armchmp2, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v1.7", MACHINE_IMPERFECT_GRAPHICS )
GAME ( 1992, wildplt, 0, f1gpstr2, wildplt, cischeat_state, wildplt, ROT0, "Jaleco", "Wild Pilot", MACHINE_IMPERFECT_GRAPHICS )
GAMEL( 1993, f1gpstr2, 0, f1gpstr2, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "F-1 Grand Prix Star II", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar )
-GAME ( 1994, scudhamm, 0, scudhamm, scudhamm, driver_device, 0, ROT270, "Jaleco", "Scud Hammer", MACHINE_IMPERFECT_GRAPHICS )
+GAME ( 1993, captflag, 0, captflag, captflag, cischeat_state, captflag, ROT270, "Jaleco", "Captain Flag (Japan)", MACHINE_IMPERFECT_GRAPHICS )
+GAME ( 1994, scudhamm, 0, scudhamm, scudhamm, driver_device, 0, ROT270, "Jaleco", "Scud Hammer", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/cliffhgr.cpp b/src/mame/drivers/cliffhgr.cpp
index 3d59e1456da..c9cfe5f40b1 100644
--- a/src/mame/drivers/cliffhgr.cpp
+++ b/src/mame/drivers/cliffhgr.cpp
@@ -128,7 +128,7 @@ public:
WRITE8_MEMBER(cliffhgr_state::cliff_test_led_w)
{
- set_led_status(machine(), 0, offset ^ 1);
+ output().set_led_value(0, offset ^ 1);
}
WRITE8_MEMBER(cliffhgr_state::cliff_port_bank_w)
@@ -165,7 +165,7 @@ WRITE8_MEMBER(cliffhgr_state::cliff_phillips_clear_w)
WRITE8_MEMBER(cliffhgr_state::cliff_coin_counter_w)
{
- coin_counter_w(machine(), 0, (data & 0x40) ? 1 : 0 );
+ machine().bookkeeping().coin_counter_w(0, (data & 0x40) ? 1 : 0 );
}
READ8_MEMBER(cliffhgr_state::cliff_irq_ack_r)
diff --git a/src/mame/drivers/cloak.cpp b/src/mame/drivers/cloak.cpp
index 0190b1860e9..ff2c8aab3c3 100644
--- a/src/mame/drivers/cloak.cpp
+++ b/src/mame/drivers/cloak.cpp
@@ -130,12 +130,12 @@
WRITE8_MEMBER(cloak_state::cloak_led_w)
{
- set_led_status(machine(), 1 - offset, ~data & 0x80);
+ output().set_led_value(1 - offset, ~data & 0x80);
}
WRITE8_MEMBER(cloak_state::cloak_coin_counter_w)
{
- coin_counter_w(machine(), 1 - offset, data & 0x80);
+ machine().bookkeeping().coin_counter_w(1 - offset, data & 0x80);
}
WRITE8_MEMBER(cloak_state::cloak_custom_w)
diff --git a/src/mame/drivers/cloud9.cpp b/src/mame/drivers/cloud9.cpp
index 745e5c402c5..17d12c4b268 100644
--- a/src/mame/drivers/cloud9.cpp
+++ b/src/mame/drivers/cloud9.cpp
@@ -215,13 +215,13 @@ WRITE8_MEMBER(cloud9_state::irq_ack_w)
WRITE8_MEMBER(cloud9_state::cloud9_led_w)
{
- set_led_status(machine(), offset, ~data & 0x80);
+ output().set_led_value(offset, ~data & 0x80);
}
WRITE8_MEMBER(cloud9_state::cloud9_coin_counter_w)
{
- coin_counter_w(machine(), offset, data & 0x80);
+ machine().bookkeeping().coin_counter_w(offset, data & 0x80);
}
diff --git a/src/mame/drivers/clowndwn.cpp b/src/mame/drivers/clowndwn.cpp
index 5299fff61f8..2eacdadfc44 100644
--- a/src/mame/drivers/clowndwn.cpp
+++ b/src/mame/drivers/clowndwn.cpp
@@ -17,13 +17,13 @@ class clowndwn_state : public driver_device
public:
clowndwn_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- // ,m_maincpu(*this, "maincpu")
+ // ,m_maincpu(*this, "maincpu")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
-// required_device<mcs51_cpu_device> m_maincpu;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( clowndwn )
@@ -43,9 +43,9 @@ void clowndwn_state::machine_reset()
static MACHINE_CONFIG_START( clowndwn, clowndwn_state )
/* basic machine hardware */
-// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown (vectors at end? 6xxx ?)
-// MCFG_CPU_PROGRAM_MAP(clowndwn_map)
-// MCFG_CPU_IO_MAP(clowndwn_io)
+// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown (vectors at end? 6xxx ?)
+// MCFG_CPU_PROGRAM_MAP(clowndwn_map)
+// MCFG_CPU_IO_MAP(clowndwn_io)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -63,4 +63,3 @@ ROM_START( clowndwn )
ROM_END
GAME( 1987, clowndwn, 0, clowndwn, clowndwn, driver_device, 0, ROT0, "Elwood Electronics", "Clown Roll Down (Elwood)", MACHINE_IS_SKELETON_MECHANICAL )
-
diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp
index a1e90713cb9..c7b749278e5 100644
--- a/src/mame/drivers/cobra.cpp
+++ b/src/mame/drivers/cobra.cpp
@@ -358,15 +358,15 @@ public:
cobra_renderer(screen_device &screen)
: poly_manager<float, cobra_polydata, 8, 10000>(screen)
{
- m_texture_ram = auto_alloc_array(machine(), UINT32, 0x100000);
+ m_texture_ram = std::make_unique<UINT32[]>(0x100000);
- m_framebuffer = auto_bitmap_rgb32_alloc(machine(), 1024, 1024);
- m_backbuffer = auto_bitmap_rgb32_alloc(machine(), 1024, 1024);
- m_overlay = auto_bitmap_rgb32_alloc(machine(), 1024, 1024);
- m_zbuffer = auto_bitmap_ind32_alloc(machine(), 1024, 1024);
- m_stencil = auto_bitmap_ind32_alloc(machine(), 1024, 1024);
+ m_framebuffer = std::make_unique<bitmap_rgb32>( 1024, 1024);
+ m_backbuffer = std::make_unique<bitmap_rgb32>( 1024, 1024);
+ m_overlay = std::make_unique<bitmap_rgb32>( 1024, 1024);
+ m_zbuffer = std::make_unique<bitmap_ind32>(1024, 1024);
+ m_stencil = std::make_unique<bitmap_ind32>(1024, 1024);
- m_gfx_regmask = auto_alloc_array(machine(), UINT32, 0x100);
+ m_gfx_regmask = std::make_unique<UINT32[]>(0x100);
for (int i=0; i < 0x100; i++)
{
UINT32 mask = 0;
@@ -400,19 +400,19 @@ public:
void display(bitmap_rgb32 *bitmap, const rectangle &cliprect);
inline rgb_t texture_fetch(UINT32 *texture, int u, int v, int width, int format);
private:
- bitmap_rgb32 *m_framebuffer;
- bitmap_rgb32 *m_backbuffer;
- bitmap_rgb32 *m_overlay;
- bitmap_ind32 *m_zbuffer;
- bitmap_ind32 *m_stencil;
+ std::unique_ptr<bitmap_rgb32> m_framebuffer;
+ std::unique_ptr<bitmap_rgb32> m_backbuffer;
+ std::unique_ptr<bitmap_rgb32> m_overlay;
+ std::unique_ptr<bitmap_ind32> m_zbuffer;
+ std::unique_ptr<bitmap_ind32> m_stencil;
- UINT32 *m_texture_ram;
+ std::unique_ptr<UINT32[]> m_texture_ram;
- UINT32 *m_gfx_gram;
- UINT32 *m_gfx_regmask;
+ std::unique_ptr<UINT32[]> m_gfx_gram;
+ std::unique_ptr<UINT32[]> m_gfx_regmask;
UINT32 m_gfx_register_select;
- UINT64 *m_gfx_register;
+ std::unique_ptr<UINT64[]> m_gfx_register;
UINT32 m_texram_ptr;
@@ -451,7 +451,7 @@ public:
cobra_fifo(running_machine &machine, int capacity, const char *name, bool verbose, event_delegate event_callback)
{
- m_data = auto_alloc_array(machine, UINT64, capacity);
+ m_data = std::make_unique<UINT64[]>(capacity);
m_name = name;
m_size = capacity;
@@ -481,7 +481,7 @@ private:
int m_num;
bool m_verbose;
const char *m_name;
- UINT64 *m_data;
+ std::unique_ptr<UINT64[]> m_data;
event_delegate m_event_callback;
};
@@ -493,9 +493,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 +510,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 +574,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;
}
@@ -647,8 +685,6 @@ public:
DECLARE_READ32_MEMBER(sub_comram_r);
DECLARE_WRITE32_MEMBER(sub_comram_w);
- DECLARE_READ32_MEMBER(sub_sound_r);
- DECLARE_WRITE32_MEMBER(sub_sound_w);
DECLARE_READ32_MEMBER(sub_unk7e_r);
DECLARE_WRITE32_MEMBER(sub_debug_w);
DECLARE_READ32_MEMBER(sub_unk1_r);
@@ -680,7 +716,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(ide_interrupt);
- cobra_renderer *m_renderer;
+ std::unique_ptr<cobra_renderer> m_renderer;
cobra_fifo *m_gfxfifo_in;
cobra_fifo *m_gfxfifo_out;
@@ -708,7 +744,7 @@ public:
UINT8 m_main_int_active;
- UINT32 *m_comram[2];
+ std::unique_ptr<UINT32[]> m_comram[2];
int m_comram_page;
int m_main_debug_state;
@@ -737,8 +773,8 @@ public:
bool m_has_psac;
- INT16 *m_sound_dma_buffer_l;
- INT16 *m_sound_dma_buffer_r;
+ std::unique_ptr<INT16[]> m_sound_dma_buffer_l;
+ std::unique_ptr<INT16[]> m_sound_dma_buffer_r;
UINT32 m_sound_dma_ptr;
dmadac_sound_device *m_dmadac[2];
@@ -746,6 +782,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);
@@ -1020,7 +1057,7 @@ void cobra_state::video_start()
{
machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(cobra_state::cobra_video_exit), this));
- m_renderer = auto_alloc(machine(), cobra_renderer(*m_screen));
+ m_renderer = std::make_unique<cobra_renderer>(*m_screen);
m_renderer->gfx_init();
}
@@ -1895,7 +1932,7 @@ WRITE32_MEMBER(cobra_state::sub_comram_w)
{
int page = m_comram_page ^ 1;
- COMBINE_DATA(m_comram[page] + offset);
+ COMBINE_DATA(m_comram[page].get() + offset);
}
WRITE32_MEMBER(cobra_state::sub_psac_palette_w)
@@ -1946,8 +1983,8 @@ WRITE32_MEMBER(cobra_state::sub_sound_dma_w)
{
m_sound_dma_ptr = 0;
- dmadac_transfer(&m_dmadac[0], 1, 0, 1, DMA_SOUND_BUFFER_SIZE, m_sound_dma_buffer_l);
- dmadac_transfer(&m_dmadac[1], 1, 0, 1, DMA_SOUND_BUFFER_SIZE, m_sound_dma_buffer_r);
+ dmadac_transfer(&m_dmadac[0], 1, 0, 1, DMA_SOUND_BUFFER_SIZE, m_sound_dma_buffer_l.get());
+ dmadac_transfer(&m_dmadac[1], 1, 0, 1, DMA_SOUND_BUFFER_SIZE, m_sound_dma_buffer_r.get());
}
}
@@ -2052,9 +2089,9 @@ void cobra_renderer::gfx_init()
{
const rectangle& visarea = screen().visible_area();
- m_gfx_gram = auto_alloc_array(machine(), UINT32, 0x40000);
+ m_gfx_gram = std::make_unique<UINT32[]>(0x40000);
- m_gfx_register = auto_alloc_array(machine(), UINT64, 0x3000);
+ m_gfx_register = std::make_unique<UINT64[]>(0x3000);
m_gfx_register_select = 0;
float zvalue = 10000000.0f;
@@ -2251,13 +2288,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]);
}
@@ -3098,50 +3135,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)
@@ -3166,6 +3207,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;
@@ -3248,7 +3300,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
@@ -3298,13 +3352,13 @@ DRIVER_INIT_MEMBER(cobra_state, cobra)
m_subcpu->ppc4xx_spu_set_tx_handler(write8_delegate(FUNC(cobra_state::sub_jvs_w), this));
- m_comram[0] = auto_alloc_array(machine(), UINT32, 0x40000/4);
- m_comram[1] = auto_alloc_array(machine(), UINT32, 0x40000/4);
+ m_comram[0] = std::make_unique<UINT32[]>(0x40000/4);
+ m_comram[1] = std::make_unique<UINT32[]>(0x40000/4);
m_comram_page = 0;
- m_sound_dma_buffer_l = auto_alloc_array(machine(), INT16, DMA_SOUND_BUFFER_SIZE);
- m_sound_dma_buffer_r = auto_alloc_array(machine(), INT16, DMA_SOUND_BUFFER_SIZE);
+ m_sound_dma_buffer_l = std::make_unique<INT16[]>(DMA_SOUND_BUFFER_SIZE);
+ m_sound_dma_buffer_r = std::make_unique<INT16[]>(DMA_SOUND_BUFFER_SIZE);
// setup fake pagetable until we figure out what really maps there...
//m_gfx_pagetable[0x80 / 8] = U64(0x800001001e0001a8);
diff --git a/src/mame/drivers/cocoloco.cpp b/src/mame/drivers/cocoloco.cpp
index 7cb6dec9d94..3111a461866 100644
--- a/src/mame/drivers/cocoloco.cpp
+++ b/src/mame/drivers/cocoloco.cpp
@@ -195,7 +195,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<palette_device> m_palette;
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
UINT8 m_videobank;
DECLARE_READ8_MEMBER(vram_r);
@@ -290,9 +290,9 @@ PALETTE_INIT_MEMBER(cocoloco_state, cocoloco)
void cocoloco_state::video_start()
{
- m_videoram = auto_alloc_array(machine(), UINT8, 0x2000 * 8);
+ m_videoram = std::make_unique<UINT8[]>(0x2000 * 8);
- save_pointer(NAME(m_videoram), 0x2000 * 8);
+ save_pointer(NAME(m_videoram.get()), 0x2000 * 8);
save_item(NAME(m_videobank));
}
@@ -367,7 +367,7 @@ WRITE8_MEMBER( cocoloco_state::coincounter_w )
They explain in a sheet that the coin in for 50 pesetas
behaves like 2x 25 pesetas (1 duro) coins, so has sense.
*/
- coin_counter_w(machine(), 0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
}
diff --git a/src/mame/drivers/coinmstr.cpp b/src/mame/drivers/coinmstr.cpp
index c60626bbfad..ea5b3edf2aa 100644
--- a/src/mame/drivers/coinmstr.cpp
+++ b/src/mame/drivers/coinmstr.cpp
@@ -162,8 +162,6 @@ public:
DECLARE_WRITE8_MEMBER(quizmstr_attr1_w);
DECLARE_WRITE8_MEMBER(quizmstr_attr2_w);
DECLARE_WRITE8_MEMBER(quizmstr_attr3_w);
- DECLARE_WRITE8_MEMBER(jpcoin2_attr1_w);
- DECLARE_WRITE8_MEMBER(jpcoin2_attr2_w);
DECLARE_READ8_MEMBER(question_r);
DECLARE_WRITE8_MEMBER(question_w);
DECLARE_READ8_MEMBER(ff_r);
@@ -344,16 +342,6 @@ static ADDRESS_MAP_START( jpcoin_map, AS_PROGRAM, 8, coinmstr_state )
AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(quizmstr_attr3_w) AM_SHARE("attr_ram3")
ADDRESS_MAP_END
-/* 3x 6116 hardware E000-E800, E800-EFFF & F000-F7FF */
-static ADDRESS_MAP_START( jpcoin2_map, AS_PROGRAM, 8, coinmstr_state )
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM /* only for the 2x 6462 hardware */
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(quizmstr_bg_w) AM_SHARE("videoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(quizmstr_attr1_w) AM_SHARE("attr_ram1")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(quizmstr_attr2_w) AM_SHARE("attr_ram2")
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(quizmstr_attr3_w) AM_SHARE("attr_ram3")
-ADDRESS_MAP_END
-
// Different I/O mappping for every game
static ADDRESS_MAP_START( quizmstr_io_map, AS_IO, 8, coinmstr_state )
@@ -492,17 +480,6 @@ E0-E1 CRTC
AM_RANGE(0xc4, 0xc4) AM_READ(ff_r) /* needed to boot */
ADDRESS_MAP_END
-static ADDRESS_MAP_START( jpcoin2_io_map, AS_IO, 8, coinmstr_state )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("crtc", mc6845_device, address_w) /* confirmed */
- AM_RANGE(0xe1, 0xe1) AM_DEVWRITE("crtc", mc6845_device, register_w) /* confirmed */
- AM_RANGE(0xc0, 0xc1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) /* confirmed */
- AM_RANGE(0xc1, 0xc1) AM_DEVREAD("aysnd", ay8910_device, data_r) /* confirmed */
- AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("pia0", pia6821_device, read, write) /* confirmed */
- AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("pia1", pia6821_device, read, write) /* confirmed */
- AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE("pia2", pia6821_device, read, write) /* confirmed */
-ADDRESS_MAP_END
-
static INPUT_PORTS_START( quizmstr )
PORT_START("PIA0.A")
@@ -1060,191 +1037,6 @@ INPUT_PORTS_END
static INPUT_PORTS_START( jpcoin )
PORT_START("PIA0.A")
- PORT_DIPNAME( 0x01, 0x01, "PIA0.A" )
- 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("PIA0.B")
- PORT_DIPNAME( 0x01, 0x01, "PIA0.B" )
- 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("PIA1.A")
- PORT_DIPNAME( 0x01, 0x01, "PIA1.A" )
- 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("PIA1.B")
- PORT_DIPNAME( 0x01, 0x01, "PIA1.B" )
- 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("PIA2.A")
- PORT_DIPNAME( 0x01, 0x01, "PIA2.A" )
- 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("PIA2.B")
- PORT_DIPNAME( 0x01, 0x01, "PIA2.B" )
- 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("DSW1")
- PORT_DIPNAME( 0x01, 0x01, "Minimal Hand" )
- PORT_DIPSETTING( 0x01, "Jacks or Better" )
- PORT_DIPSETTING( 0x00, "Pair of Aces" )
- PORT_DIPNAME( 0x02, 0x02, "DSW1" )
- 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
-
-static INPUT_PORTS_START( jpcoin2 )
- PORT_START("PIA0.A")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Bookkeeping") PORT_TOGGLE
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("credits x10") // credits x10
@@ -1507,13 +1299,6 @@ static MACHINE_CONFIG_DERIVED( jpcoin, coinmstr )
// MCFG_NVRAM_ADD_0FILL("attr_ram3")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( jpcoin2, coinmstr )
- MCFG_CPU_MODIFY("maincpu")
- MCFG_CPU_PROGRAM_MAP(jpcoin2_map)
- MCFG_CPU_IO_MAP(jpcoin2_io_map)
-// MCFG_NVRAM_ADD_0FILL("attr_ram3")
-MACHINE_CONFIG_END
-
/*
Quizmaster
@@ -1694,11 +1479,11 @@ ROM_END
ROM_START( jpcoin )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "2.bin", 0x0000, 0x2000, CRC(67e1aa60) SHA1(32301f60a7325f23047d84bb1e9416ea05753493) )
- ROM_LOAD( "1.bin", 0x2000, 0x2000, CRC(6c79e430) SHA1(56e026329ea6aba122d1f66c375bf4c3cc829feb) )
+ ROM_LOAD( "1.bin", 0x4000, 0x2000, CRC(6c79e430) SHA1(56e026329ea6aba122d1f66c375bf4c3cc829feb) )
ROM_REGION( 0x8000, "gfx1", 0 )
- ROM_LOAD( "3.bin", 0x0000, 0x4000, CRC(4984053e) SHA1(e0f7c56160f48f7b1c2c407f448c13a191770adc) ) // 1ST AND 2ND HALF IDENTICAL
- ROM_LOAD( "4.bin", 0x4000, 0x4000, CRC(2bac1c0b) SHA1(3e45fc38ed6d332e1d49b2b66bf8001610f914c5) ) // 1ST AND 2ND HALF IDENTICAL
+ ROM_LOAD( "4.bin", 0x0000, 0x4000, CRC(2bac1c0b) SHA1(3e45fc38ed6d332e1d49b2b66bf8001610f914c5) ) // 1ST AND 2ND HALF IDENTICAL
+ ROM_LOAD( "3.bin", 0x4000, 0x4000, CRC(4984053e) SHA1(e0f7c56160f48f7b1c2c407f448c13a191770adc) ) // 1ST AND 2ND HALF IDENTICAL
ROM_END
/*
@@ -1767,5 +1552,5 @@ GAME( 1985, quizmstr, 0, quizmstr, quizmstr, coinmstr_state, coinmstr, RO
GAME( 1987, trailblz, 0, trailblz, trailblz, coinmstr_state, coinmstr, ROT0, "Coinmaster", "Trail Blazer", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // or Trail Blazer 2 ?
GAME( 1989, supnudg2, 0, supnudg2, supnudg2, coinmstr_state, coinmstr, ROT0, "Coinmaster", "Super Nudger II - P173 (Version 5.21)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1990, pokeroul, 0, pokeroul, pokeroul, driver_device, 0, ROT0, "Coinmaster", "Poker Roulette (Version 8.22)", MACHINE_NOT_WORKING )
-GAME( 1985, jpcoin, 0, jpcoin , jpcoin, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster set 1)", MACHINE_NOT_WORKING ) // io stuff is different at least
-GAME( 1990, jpcoin2, 0, jpcoin2, jpcoin2, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster, Amusement Only)", 0 )
+GAME( 1985, jpcoin, 0, jpcoin, jpcoin, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster set 1)", 0 )
+GAME( 1990, jpcoin2, 0, jpcoin, jpcoin, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster, Amusement Only)", 0 )
diff --git a/src/mame/drivers/coinmvga.cpp b/src/mame/drivers/coinmvga.cpp
index 6d59758b421..9b0993bca4b 100644
--- a/src/mame/drivers/coinmvga.cpp
+++ b/src/mame/drivers/coinmvga.cpp
@@ -241,8 +241,6 @@ public:
m_palette2(*this, "palette2") { }
required_shared_ptr<UINT16> m_vram;
- DECLARE_WRITE8_MEMBER(debug_w);
- DECLARE_READ16_MEMBER(test_r);
DECLARE_DRIVER_INIT(colorama);
DECLARE_DRIVER_INIT(cmrltv75);
virtual void video_start() override;
diff --git a/src/mame/drivers/combatsc.cpp b/src/mame/drivers/combatsc.cpp
index 2d9323791ef..a0ca9509c9d 100644
--- a/src/mame/drivers/combatsc.cpp
+++ b/src/mame/drivers/combatsc.cpp
@@ -258,8 +258,8 @@ WRITE8_MEMBER(combatsc_state::combatsc_coin_counter_w)
/* b1: coin counter 2 */
/* b0: coin counter 1 */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
READ8_MEMBER(combatsc_state::trackball_r)
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/contra.cpp b/src/mame/drivers/contra.cpp
index e10f10ca5e6..868741667dd 100644
--- a/src/mame/drivers/contra.cpp
+++ b/src/mame/drivers/contra.cpp
@@ -46,10 +46,10 @@ WRITE8_MEMBER(contra_state::contra_sh_irqtrigger_w)
WRITE8_MEMBER(contra_state::contra_coin_counter_w)
{
if (data & 0x01)
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
if (data & 0x02)
- coin_counter_w(machine(), 1, (data & 0x02) >> 1);
+ machine().bookkeeping().coin_counter_w(1, (data & 0x02) >> 1);
}
WRITE8_MEMBER(contra_state::cpu_sound_command_w)
diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp
index c54ec39c031..cfdc7f36027 100644
--- a/src/mame/drivers/coolpool.cpp
+++ b/src/mame/drivers/coolpool.cpp
@@ -206,8 +206,8 @@ WRITE16_MEMBER(coolpool_state::amerdart_misc_w)
{
logerror("%08x:IOP_system_w %04x\n",space.device().safe_pc(),data);
- coin_counter_w(machine(), 0, ~data & 0x0001);
- coin_counter_w(machine(), 1, ~data & 0x0002);
+ machine().bookkeeping().coin_counter_w(0, ~data & 0x0001);
+ machine().bookkeeping().coin_counter_w(1, ~data & 0x0002);
/* bits 10-15 are counted down over time */
@@ -420,8 +420,8 @@ WRITE16_MEMBER(coolpool_state::coolpool_misc_w)
{
logerror("%08x:IOP_system_w %04x\n",space.device().safe_pc(),data);
- coin_counter_w(machine(), 0, ~data & 0x0001);
- coin_counter_w(machine(), 1, ~data & 0x0002);
+ machine().bookkeeping().coin_counter_w(0, ~data & 0x0001);
+ machine().bookkeeping().coin_counter_w(1, ~data & 0x0002);
m_dsp->set_input_line(INPUT_LINE_RESET, (data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
}
diff --git a/src/mame/drivers/coolridr.cpp b/src/mame/drivers/coolridr.cpp
index 2e5b1263a32..b6d0b5a83fd 100644
--- a/src/mame/drivers/coolridr.cpp
+++ b/src/mame/drivers/coolridr.cpp
@@ -390,16 +390,14 @@ public:
UINT8 sound_data, sound_fifo;
UINT8* m_compressedgfx;
- UINT16* m_expanded_10bit_gfx;
- UINT16* m_rearranged_16bit_gfx;
+ std::unique_ptr<UINT16[]> m_expanded_10bit_gfx;
+ std::unique_ptr<UINT16[]> m_rearranged_16bit_gfx;
UINT32 get_20bit_data(UINT32 romoffset, int _20bitwordnum);
UINT16 get_10bit_data(UINT32 romoffset, int _10bitwordnum);
DECLARE_READ32_MEMBER(sysh1_sound_dma_r);
DECLARE_WRITE32_MEMBER(sysh1_sound_dma_w);
- DECLARE_READ32_MEMBER(sysh1_ioga_r);
- DECLARE_WRITE32_MEMBER(sysh1_ioga_w);
DECLARE_READ32_MEMBER(sysh1_unk_blit_r);
DECLARE_WRITE32_MEMBER(sysh1_unk_blit_w);
DECLARE_WRITE32_MEMBER(sysh1_blit_mode_w);
@@ -407,9 +405,7 @@ public:
DECLARE_WRITE32_MEMBER(sysh1_fb_mode_w);
DECLARE_WRITE32_MEMBER(sysh1_fb_data_w);
- DECLARE_WRITE32_MEMBER(sysh1_pal_w);
DECLARE_WRITE32_MEMBER(sysh1_dma_w);
- DECLARE_WRITE32_MEMBER(sysh1_char_w);
DECLARE_READ32_MEMBER(coolridr_hack2_r);
DECLARE_READ32_MEMBER(aquastge_hack_r);
DECLARE_READ16_MEMBER(h1_soundram_r);
@@ -442,7 +438,6 @@ public:
UINT32 screen_update_coolridr1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_coolridr2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void blit_current_sprite(address_space &space);
- INTERRUPT_GEN_MEMBER(system_h1);
TIMER_DEVICE_CALLBACK_MEMBER(system_h1_main);
TIMER_DEVICE_CALLBACK_MEMBER(system_h1_sub);
DECLARE_WRITE8_MEMBER(scsp_irq);
@@ -451,9 +446,9 @@ public:
int debug_randompal;
- UINT16 *m_h1_vram;
- UINT8 *m_h1_pcg;
- UINT16 *m_h1_pal;
+ std::unique_ptr<UINT16[]> m_h1_vram;
+ std::unique_ptr<UINT8[]> m_h1_pcg;
+ std::unique_ptr<UINT16[]> m_h1_pal;
int m_gfx_index;
int m_color_bank;
struct {
@@ -481,8 +476,6 @@ public:
int colbase;
};
- static int comp_sprite_z(const void *q1, const void *q2);
-
struct cool_render_object **m_cool_render_object_list1;
struct cool_render_object **m_cool_render_object_list2;
@@ -573,7 +566,7 @@ void coolridr_state::video_start()
m_screen->register_screen_bitmap(m_screen1_bitmap);
m_screen->register_screen_bitmap(m_screen2_bitmap);
- m_gfxdecode->set_gfx(m_gfx_index, global_alloc(gfx_element(m_palette, h1_tile_layout, m_h1_pcg, 0, 8, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index, std::make_unique<gfx_element>(m_palette, h1_tile_layout, m_h1_pcg.get(), 0, 8, 0));
}
/*
@@ -1319,8 +1312,8 @@ void *coolridr_state::draw_object_threaded(void *param, int threadid)
- UINT16* rearranged_16bit_gfx = object->state->m_rearranged_16bit_gfx;
- UINT16* expanded_10bit_gfx = object->state->m_expanded_10bit_gfx;
+ UINT16* rearranged_16bit_gfx = object->state->m_rearranged_16bit_gfx.get();
+ UINT16* expanded_10bit_gfx = object->state->m_expanded_10bit_gfx.get();
INT16 clipminX = CLIPMINX_FULL;
INT16 clipmaxX = CLIPMAXX_FULL;
@@ -3621,7 +3614,7 @@ void coolridr_state::machine_start()
size_t size = memregion( "compressedgfx" )->bytes();
// we're expanding 10bit packed data to 16bits(10 used)
- m_expanded_10bit_gfx = auto_alloc_array(machine(), UINT16, ((size/10)*16)/2);
+ m_expanded_10bit_gfx = std::make_unique<UINT16[]>(((size/10)*16)/2);
for (int i=0;i<(0x800000*8)/2;i++)
{
@@ -3630,7 +3623,7 @@ void coolridr_state::machine_start()
// do a rearranged version too with just the 16-bit words in a different order, palettes seem to
// be referenced this way?!
- m_rearranged_16bit_gfx = auto_alloc_array(machine(), UINT16, size/2);
+ m_rearranged_16bit_gfx = std::make_unique<UINT16[]>(size/2);
UINT16* compressed = (UINT16*)memregion( "compressedgfx" )->base();
int count = 0;
@@ -3660,16 +3653,16 @@ void coolridr_state::machine_start()
{
for (int i=0;i<(0x800000*8);i++)
{
- fwrite((UINT8*)m_expanded_10bit_gfx+(i^1), 1, 1, fp);
+ fwrite((UINT8*)m_expanded_10bit_gfx.get()+(i^1), 1, 1, fp);
}
fclose(fp);
}
}
- m_h1_vram = auto_alloc_array_clear(machine(), UINT16, VRAM_SIZE);
- m_h1_pcg = auto_alloc_array_clear(machine(), UINT8, VRAM_SIZE);
- m_h1_pal = auto_alloc_array_clear(machine(), UINT16, VRAM_SIZE);
+ m_h1_vram = make_unique_clear<UINT16[]>(VRAM_SIZE);
+ m_h1_pcg = make_unique_clear<UINT8[]>(VRAM_SIZE);
+ m_h1_pal = make_unique_clear<UINT16[]>(VRAM_SIZE);
m_cool_render_object_list1 = auto_alloc_array_clear(machine(), struct cool_render_object*, 1000000);
m_listcount1 = 0;
@@ -3683,9 +3676,9 @@ void coolridr_state::machine_start()
decode[1].current_object = 0;
debug_randompal = 9;
- save_pointer(NAME(m_h1_vram), VRAM_SIZE);
- save_pointer(NAME(m_h1_pcg), VRAM_SIZE);
- save_pointer(NAME(m_h1_pal), VRAM_SIZE);
+ save_pointer(NAME(m_h1_vram.get()), VRAM_SIZE);
+ save_pointer(NAME(m_h1_pcg.get()), VRAM_SIZE);
+ save_pointer(NAME(m_h1_pal.get()), VRAM_SIZE);
}
void coolridr_state::machine_reset()
diff --git a/src/mame/drivers/cops.cpp b/src/mame/drivers/cops.cpp
index 1f3797f8d72..44529d40ae3 100644
--- a/src/mame/drivers/cops.cpp
+++ b/src/mame/drivers/cops.cpp
@@ -569,7 +569,7 @@ WRITE8_MEMBER(cops_state::io1_w)
sprintf(output_name, "digit%d", i);
display_data = m_lcd_data_l | (m_lcd_data_h << 8);
display_data = BITSWAP16(display_data, 4, 5, 12, 1, 0, 11, 10, 6, 7, 2, 9, 3, 15, 8, 14, 13);
- output_set_value(output_name, display_data);
+ output().set_value(output_name, display_data);
}
}
break;
@@ -580,23 +580,23 @@ WRITE8_MEMBER(cops_state::io1_w)
m_lcd_data_h = data;
break;
case 0x04: /* WOP4 */
- output_set_value("Offroad Right 4 Lamp", data & 0x80);
- output_set_value("Offroad Right 3 Lamp", data & 0x40);
- output_set_value("Offroad Right 2 Lamp", data & 0x20);
- output_set_value("Offroad Right 1 Lamp", data & 0x10);
- output_set_value("Offroad Left 4 Lamp", data & 0x08);
- output_set_value("Offroad Left 3 Lamp", data & 0x04);
- output_set_value("Offroad Left 2 Lamp", data & 0x02);
- output_set_value("Offroad Left 1 Lamp", data & 0x01);
+ output().set_value("Offroad Right 4 Lamp", data & 0x80);
+ output().set_value("Offroad Right 3 Lamp", data & 0x40);
+ output().set_value("Offroad Right 2 Lamp", data & 0x20);
+ output().set_value("Offroad Right 1 Lamp", data & 0x10);
+ output().set_value("Offroad Left 4 Lamp", data & 0x08);
+ output().set_value("Offroad Left 3 Lamp", data & 0x04);
+ output().set_value("Offroad Left 2 Lamp", data & 0x02);
+ output().set_value("Offroad Left 1 Lamp", data & 0x01);
break;
case 0x05: /* WOP5 */
- output_set_value("Damage Lamp", data & 0x80);
- output_set_value("Stop Lamp", data & 0x40);
- output_set_value("Gun Active Right Lamp", data & 0x20);
- output_set_value("Vest Hit 2 Lamp", data & 0x10);
- output_set_value("Vest Hit 3 Lamp", data & 0x04);
- output_set_value("Gun Active Left Lamp", data & 0x02);
- output_set_value("Vest Hit 1 Lamp", data & 0x01);
+ output().set_value("Damage Lamp", data & 0x80);
+ output().set_value("Stop Lamp", data & 0x40);
+ output().set_value("Gun Active Right Lamp", data & 0x20);
+ output().set_value("Vest Hit 2 Lamp", data & 0x10);
+ output().set_value("Vest Hit 3 Lamp", data & 0x04);
+ output().set_value("Gun Active Left Lamp", data & 0x02);
+ output().set_value("Vest Hit 1 Lamp", data & 0x01);
break;
case 0x06: /* WOP6 */
logerror("WOP6: data = %02x\n", data);
@@ -630,17 +630,17 @@ WRITE8_MEMBER(cops_state::io2_w)
switch( offset & 0x0f )
{
case 0x02:
- output_set_value("Flash Red Lamp", data & 0x01);
- output_set_value("Flash Blue Lamp", data & 0x80);
+ output().set_value("Flash Red Lamp", data & 0x01);
+ output().set_value("Flash Blue Lamp", data & 0x80);
if ( data & ~0x91 ) logerror("Unknown io2_w, offset = %02x, data = %02x\n", offset, data);
break;
case 0x04:
- output_set_value("Bullet Lamp 6", data & 0x20);
- output_set_value("Bullet Lamp 5", data & 0x10);
- output_set_value("Bullet Lamp 4", data & 0x08);
- output_set_value("Bullet Lamp 3", data & 0x04);
- output_set_value("Bullet Lamp 2", data & 0x02);
- output_set_value("Bullet Lamp 1", data & 0x01);
+ output().set_value("Bullet Lamp 6", data & 0x20);
+ output().set_value("Bullet Lamp 5", data & 0x10);
+ output().set_value("Bullet Lamp 4", data & 0x08);
+ output().set_value("Bullet Lamp 3", data & 0x04);
+ output().set_value("Bullet Lamp 2", data & 0x02);
+ output().set_value("Bullet Lamp 1", data & 0x01);
if ( data & ~0x3f ) logerror("Unknown io2_w, offset = %02x, data = %02x\n", offset, data);
break;
default:
diff --git a/src/mame/drivers/copsnrob.cpp b/src/mame/drivers/copsnrob.cpp
index d31c1d7d5b9..c53c4e8ecec 100644
--- a/src/mame/drivers/copsnrob.cpp
+++ b/src/mame/drivers/copsnrob.cpp
@@ -77,7 +77,7 @@ WRITE8_MEMBER(copsnrob_state::copsnrob_misc2_w)
{
m_misc = data & 0x7f;
/* Multi Player Start */
- set_led_status(machine(), 1, !((data >> 6) & 0x01));
+ output().set_led_value(1, !((data >> 6) & 0x01));
}
diff --git a/src/mame/drivers/corona.cpp b/src/mame/drivers/corona.cpp
index b2f752c08f7..b4037863bf3 100644
--- a/src/mame/drivers/corona.cpp
+++ b/src/mame/drivers/corona.cpp
@@ -330,7 +330,7 @@ public:
UINT8 m_blitter_y_reg;
UINT8 m_blitter_aux_reg;
UINT8 m_blitter_unk_reg;
- UINT8 *m_videobuf;
+ std::unique_ptr<UINT8[]> m_videobuf;
UINT8 m_lamp;
UINT8 m_lamp_old;
int m_input_selector;
@@ -462,7 +462,7 @@ WRITE8_MEMBER(corona_state::blitter_trig_wdht_w)
void corona_state::video_start()
{
- m_videobuf = auto_alloc_array_clear(machine(), UINT8, VIDEOBUF_SIZE);
+ m_videobuf = make_unique_clear<UINT8[]>(VIDEOBUF_SIZE);
}
UINT32 corona_state::screen_update_winner(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -509,8 +509,8 @@ WRITE8_MEMBER(corona_state::ball_w)
{
m_lamp = data;
- output_set_lamp_value(data, 1);
- output_set_lamp_value(m_lamp_old, 0);
+ output().set_lamp_value(data, 1);
+ output().set_lamp_value(m_lamp_old, 0);
m_lamp_old = m_lamp;
}
@@ -545,8 +545,8 @@ WRITE8_MEMBER(corona_state::mux_port_w)
*/
m_input_selector = (data ^ 0xff) & 0x3f; /* Input Selector, */
- coin_counter_w(machine(), 0, (data ^ 0xff) & 0x40); /* Credits In (mechanical meters) */
- coin_counter_w(machine(), 1, (data ^ 0xff) & 0x80); /* Credits Out (mechanical meters) */
+ machine().bookkeeping().coin_counter_w(0, (data ^ 0xff) & 0x40); /* Credits In (mechanical meters) */
+ machine().bookkeeping().coin_counter_w(1, (data ^ 0xff) & 0x80); /* Credits Out (mechanical meters) */
// logerror("muxsel: %02x \n", m_input_selector);
}
@@ -564,9 +564,9 @@ WRITE8_MEMBER(corona_state::wc_meters_w)
Data is written inverted.
*/
- coin_counter_w(machine(), 0, (data ^ 0xff) & 0x01); /* Credits In */
- coin_counter_w(machine(), 1, (data ^ 0xff) & 0x02); /* Credits In (through Coin 3) */
- coin_counter_w(machine(), 2, (data ^ 0xff) & 0x04); /* Credits Out */
+ machine().bookkeeping().coin_counter_w(0, (data ^ 0xff) & 0x01); /* Credits In */
+ machine().bookkeeping().coin_counter_w(1, (data ^ 0xff) & 0x02); /* Credits In (through Coin 3) */
+ machine().bookkeeping().coin_counter_w(2, (data ^ 0xff) & 0x04); /* Credits Out */
// popmessage("meters: %02x", (data ^ 0xff));
}
diff --git a/src/mame/drivers/cosmicos.cpp b/src/mame/drivers/cosmicos.cpp
index 8ec2903c821..dd84a091687 100644
--- a/src/mame/drivers/cosmicos.cpp
+++ b/src/mame/drivers/cosmicos.cpp
@@ -158,7 +158,7 @@ WRITE8_MEMBER( cosmicos_state::segment_w )
if ((m_counter > 0) && (m_counter < 9))
{
- output_set_digit_value(10 - m_counter, data);
+ output().set_digit_value(10 - m_counter, data);
}
}
@@ -201,7 +201,7 @@ INPUT_CHANGED_MEMBER( cosmicos_state::data )
if (!BIT(data, i))
{
m_data |= (1 << i);
- output_set_led_value(LED_D0 - i, 1);
+ output().set_led_value(LED_D0 - i, 1);
}
}
}
@@ -221,29 +221,29 @@ INPUT_CHANGED_MEMBER( cosmicos_state::single_step )
void cosmicos_state::set_cdp1802_mode(int mode)
{
- output_set_led_value(LED_RUN, 0);
- output_set_led_value(LED_LOAD, 0);
- output_set_led_value(LED_PAUSE, 0);
- output_set_led_value(LED_RESET, 0);
+ output().set_led_value(LED_RUN, 0);
+ output().set_led_value(LED_LOAD, 0);
+ output().set_led_value(LED_PAUSE, 0);
+ output().set_led_value(LED_RESET, 0);
switch (mode)
{
case MODE_RUN:
- output_set_led_value(LED_RUN, 1);
+ output().set_led_value(LED_RUN, 1);
m_wait = 1;
m_clear = 1;
break;
case MODE_LOAD:
- output_set_led_value(LED_LOAD, 1);
+ output().set_led_value(LED_LOAD, 1);
m_wait = 0;
m_clear = 0;
break;
case MODE_PAUSE:
- output_set_led_value(LED_PAUSE, 1);
+ output().set_led_value(LED_PAUSE, 1);
m_wait = 1;
m_clear = 0;
@@ -257,7 +257,7 @@ void cosmicos_state::set_cdp1802_mode(int mode)
m_clear = 0;
m_boot = 1;
- output_set_led_value(LED_RESET, 1);
+ output().set_led_value(LED_RESET, 1);
break;
}
}
@@ -275,7 +275,7 @@ void cosmicos_state::clear_input_data()
for (i = 0; i < 8; i++)
{
- output_set_led_value(LED_D0 - i, 0);
+ output().set_led_value(LED_D0 - i, 0);
}
}
@@ -353,7 +353,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cosmicos_state::digit_tick)
{
m_digit = !m_digit;
- output_set_digit_value(m_digit, m_segment);
+ output().set_digit_value(m_digit, m_segment);
}
TIMER_DEVICE_CALLBACK_MEMBER(cosmicos_state::int_tick)
@@ -395,7 +395,7 @@ READ_LINE_MEMBER( cosmicos_state::ef2_r )
UINT8 special = m_special->read();
int casin = (m_cassette)->input() < 0.0;
- output_set_led_value(LED_CASSETTE, casin);
+ output().set_led_value(LED_CASSETTE, casin);
return BIT(special, 1) | BIT(special, 3) | casin;
}
diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp
index 825b39e36c0..bf7e382819e 100644
--- a/src/mame/drivers/cp1.cpp
+++ b/src/mame/drivers/cp1.cpp
@@ -185,12 +185,12 @@ WRITE8_MEMBER(cp1_state::i8155_porta_w)
if (m_7seg)
{
- if (!(m_matrix & 0x01)) output_set_digit_value(5, data);
- if (!(m_matrix & 0x02)) output_set_digit_value(4, data);
- if (!(m_matrix & 0x04)) output_set_digit_value(3, data);
- if (!(m_matrix & 0x08)) output_set_digit_value(2, data | 0x80); // this digit has always the dot active
- if (!(m_matrix & 0x10)) output_set_digit_value(1, data);
- if (!(m_matrix & 0x20)) output_set_digit_value(0, data);
+ if (!(m_matrix & 0x01)) output().set_digit_value(5, data);
+ if (!(m_matrix & 0x02)) output().set_digit_value(4, data);
+ if (!(m_matrix & 0x04)) output().set_digit_value(3, data);
+ if (!(m_matrix & 0x08)) output().set_digit_value(2, data | 0x80); // this digit has always the dot active
+ if (!(m_matrix & 0x10)) output().set_digit_value(1, data);
+ if (!(m_matrix & 0x20)) output().set_digit_value(0, data);
}
m_7seg ^= 0x01;
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp
index 2380fe10eb5..d0aefe36539 100644
--- a/src/mame/drivers/cps1.cpp
+++ b/src/mame/drivers/cps1.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
@@ -331,10 +331,10 @@ WRITE16_MEMBER(cps_state::cps1_coinctrl_w)
{
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x0100);
- coin_counter_w(machine(), 1, data & 0x0200);
- coin_lockout_w(machine(), 0, ~data & 0x0400);
- coin_lockout_w(machine(), 1, ~data & 0x0800);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0200);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x0400);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x0800);
// bit 15 = CPS-A custom reset?
}
@@ -344,10 +344,10 @@ WRITE16_MEMBER(cps_state::cpsq_coinctrl2_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 2, data & 0x01);
- coin_lockout_w(machine(), 2, ~data & 0x02);
- coin_counter_w(machine(), 3, data & 0x04);
- coin_lockout_w(machine(), 3, ~data & 0x08);
+ machine().bookkeeping().coin_counter_w(2, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(3, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(3, ~data & 0x08);
}
}
@@ -4004,6 +4004,50 @@ ROM_START( striderua )
ROM_LOAD( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) )
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) )
+ ROM_LOAD16_WORD_SWAP( "33.6f", 0x080000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) )
+
+ ROM_REGION( 0x400000, "gfx", 0 )
+ ROMX_LOAD( "6.8a", 0x000000, 0x80000, CRC(4eee9aea) SHA1(5e619fd5f3f1181e32a8fd9dbb4661d74ff8a484) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "8.10a", 0x000002, 0x80000, CRC(2d7f21e4) SHA1(593cec513de40ff802084d54313bb25a4561e25d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "5.7a", 0x000004, 0x80000, CRC(7705aa46) SHA1(6cbfa30b2852fd117d117beefba434ce41d24c2f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "7.9a", 0x000006, 0x80000, CRC(5b18b722) SHA1(cf71c62348ca6b404279e87a6686cb3a842eb381) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "15.8c", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "17.10c", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "14.7c", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "16.9c", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "9.12a", 0x00000, 0x08000, CRC(08d63519) SHA1(c120ecfe25c3c50bc51bc7d5a9ef1c8ca6591240) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) )
+ ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) )
+
+ // which of these should we be using?
+ /*
+ ROM_REGION( 0x0200, "aboardplds", ROMREGION_ERASE00 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", ROMREGION_ERASE00 )
+ ROM_LOAD( "stf29.1a", 0x0000, 0x0117, CRC(043309c5) SHA1(f6b9610c9f896c495041ba56a654776a521c356b) )
+ ROM_LOAD( "iob1.11d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+
+ ROM_REGION( 0x0200, "cboardplds", ROMREGION_ERASE00 )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ */
+ROM_END
+
/* B-Board 88622B-3 */
ROM_START( striderj )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
@@ -9001,6 +9045,48 @@ ROM_START( sf2ceblp )
ROM_LOAD( "pic16c55", 0x00000, 0x2000, BAD_DUMP CRC(f22e2311) SHA1(320edfba140728599e91c01e863a8b6d071e4bbf) )
ROM_END
+
+
+ROM_START( sf2cebltw )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "27.12e", 0x000000, 0x20000, CRC(035ee5d9) SHA1(9d268333db96dc6d1539ea938d3b213482e276c6) )
+ ROM_LOAD16_BYTE( "31.12f", 0x000001, 0x20000, CRC(353dbde1) SHA1(039785f8863fda945267fc8b9cf640d954ea9803) )
+ ROM_LOAD16_BYTE( "24.9e", 0x040000, 0x20000, CRC(005b54cc) SHA1(3d3d7742c11f31cc62d81931dc970cd1f4a26835) )
+ ROM_LOAD16_BYTE( "28.9f", 0x040001, 0x20000, CRC(c184d26d) SHA1(b1011e869d0b84c1ab609fcf193b46c7d9cc3b28) )
+ ROM_LOAD16_BYTE( "25.10e", 0x080000, 0x20000, CRC(524f5c55) SHA1(67adfd36bb325c4a6d3e1e5b668c4dc983ac0a62) )
+ ROM_LOAD16_BYTE( "29.10f", 0x080001, 0x20000, CRC(f06a12f2) SHA1(ddc431ce01392d4a7562760743abd9ea73b06cf3) )
+ ROM_LOAD16_BYTE( "26.11e", 0x0c0000, 0x20000, CRC(8312d055) SHA1(e36c23c197096d50d71ceefbf93205d5758153e0) )
+ ROM_LOAD16_BYTE( "30.11f", 0x0c0001, 0x20000, CRC(d0580ff2) SHA1(1b2e4c4abbe90a68283c86e7cb5328b242be5683) )
+ ROM_LOAD16_WORD_SWAP( "s92_21a.5f", 0x100000, 0x80000, CRC(925a7877) SHA1(1960dca35f0ca6f2b399a9fccfbc0132ac6425d1) )
+
+ ROM_REGION( 0x40000, "pal", 0 )
+ ROM_LOAD( "bruteforce.palce16v8h-25.11d", 0x00000, 0x40000, CRC(430f722d) SHA1(b0c0570057c782b1114819fae907f45a01c55065) )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+ROM_END
+
+
+
ROM_START( sf2amf )
/* the PCB is not working on real hardware */
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
@@ -11809,10 +11895,10 @@ DRIVER_INIT_MEMBER( cps_state, sf2m8 )
void cps_state::kabuki_setup(void (*decode)(UINT8 *src, UINT8 *dst))
{
- UINT8 *decrypt = auto_alloc_array(machine(), UINT8, 0x8000);
+ m_decrypt_kabuki = std::make_unique<UINT8[]>(0x8000);
UINT8 *rom = memregion("audiocpu")->base();
- decode(rom, decrypt);
- membank("decrypted")->set_base(decrypt);
+ decode(rom, m_decrypt_kabuki.get());
+ membank("decrypted")->set_base(m_decrypt_kabuki.get());
}
DRIVER_INIT_MEMBER(cps_state,wof)
@@ -11941,6 +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, "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.
@@ -12055,6 +12142,7 @@ GAME( 1992, sf2amf, sf2ce, cps1_12MHz, sf2amf, cps_state, sf2hack,
GAME( 1992, sf2amf2, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (L735 Test Rom, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
GAME( 1992, sf2dkot2, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Double K.O. Turbo II, bootleg)", MACHINE_SUPPORTS_SAVE ) // 902140 !!! - based on USA version
GAME( 1992, sf2ceblp, sf2ce, cps1_10MHz, sf2, cps_state, sf2ceblp, ROT0, "bootleg", "Street Fighter II': Champion Edition (protected bootleg on non-dash board)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
+GAME( 1992, sf2cebltw, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition ('Taiwan' bootleg with PAL)", MACHINE_SUPPORTS_SAVE ) // 'Taiwan'
GAME( 1992, sf2m2, sf2ce, cps1_12MHz, sf2m2, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M2, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
GAME( 1992, sf2m3, sf2ce, sf2m3, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M3, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
GAME( 1992, sf2m4, sf2ce, cps1_12MHz, sf2m4, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M4, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on Japan version
@@ -12062,7 +12150,7 @@ GAME( 1992, sf2m5, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack,
GAME( 1992, sf2m6, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M6, bootleg)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version
GAME( 1992, sf2m7, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M7, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
GAME( 1992, sf2m8, sf2ce, sf2m3, sf2, cps_state, sf2m8, ROT0, "bootleg", "Street Fighter II': Champion Edition (M8, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
-GAME( 1992, sf2m10, sf2ce, sf2m10, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M10, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2m10, sf2ce, sf2m10, sf2hack, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M10, bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (YYC, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version
GAME( 1992, sf2dongb, sf2ce, cps1_12MHz, sf2, cps_state, sf2dongb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp
index 248160d3134..c6719a958e7 100644
--- a/src/mame/drivers/cps2.cpp
+++ b/src/mame/drivers/cps2.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Andreas Naive, Nicola Salmoria
/***************************************************************************
@@ -749,7 +749,7 @@ WRITE16_MEMBER( cps_state::cps2_eeprom_port_w )
if (m_audiocpu != nullptr)
m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x0008) ? CLEAR_LINE : ASSERT_LINE);
- coin_counter_w(machine(), 0, data & 0x0001);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
if (m_cps2_dial_type == 1) // pzloop2
{
// Puzz Loop 2 uses coin counter 2 input to switch between stick and paddle controls
@@ -757,28 +757,28 @@ WRITE16_MEMBER( cps_state::cps2_eeprom_port_w )
}
else
{
- coin_counter_w(machine(), 1, data & 0x0002);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0002);
}
if (strncmp(machine().system().name, "mmatrix", 7) == 0) // Mars Matrix seems to require the coin lockout bit to be reversed
{
- coin_lockout_w(machine(), 0, data & 0x0010);
- coin_lockout_w(machine(), 1, data & 0x0020);
- coin_lockout_w(machine(), 2, data & 0x0040);
- coin_lockout_w(machine(), 3, data & 0x0080);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x0010);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x0020);
+ machine().bookkeeping().coin_lockout_w(2, data & 0x0040);
+ machine().bookkeeping().coin_lockout_w(3, data & 0x0080);
}
else
{
- coin_lockout_w(machine(), 0, ~data & 0x0010);
- coin_lockout_w(machine(), 1, ~data & 0x0020);
- coin_lockout_w(machine(), 2, ~data & 0x0040);
- coin_lockout_w(machine(), 3, ~data & 0x0080);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x0010);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x0020);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x0040);
+ machine().bookkeeping().coin_lockout_w(3, ~data & 0x0080);
}
/*
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x10);
- set_led_status(machine(), 2, data & 0x20);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x10);
+ output().set_led_value(2, data & 0x20);
*/
}
}
@@ -910,7 +910,7 @@ READ16_MEMBER(cps_state::joy_or_paddle_ecofghtr_r)
else if ((dial1 & 0x800) < (m_ecofghtr_dial_last1 & 0x800)) // value gone from 0xfff to 0x000
{
m_ecofghtr_dial_direction1 = 1;
- }
+ }
m_ecofghtr_dial_last0 = dial0;
m_ecofghtr_dial_last1 = dial1;
@@ -5857,6 +5857,41 @@ ROM_START( ringdesta )
RINGDEST_ASIA_KEY
ROM_END
+ROM_START( ringdesth )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "smbh.03b", 0x000000, 0x80000, CRC(2e316584) SHA1(7a7c2ec21bd46d784c2971e1dbb8d8312362371a) )
+ ROM_LOAD16_WORD_SWAP( "smbh.04b", 0x080000, 0x80000, CRC(9950a23a) SHA1(5afd12ae7f3e7283ba42f844f2ee5a96875dc74e) )
+ ROM_LOAD16_WORD_SWAP( "smbh.05b", 0x100000, 0x80000, CRC(41e0b3fc) SHA1(67fea6e194650c2a45cc0408ab1b0c2743ec6efa) )
+ ROM_LOAD16_WORD_SWAP( "smbh.06b", 0x180000, 0x80000, CRC(89c80007) SHA1(4c85aa5b224fdbb64f719a7b8b5b2e7413107c70) )
+ ROM_LOAD16_WORD_SWAP( "smbh.07b", 0x200000, 0x80000, CRC(b9a11577) SHA1(e9b58ef8acd1fedd3c9e0a3489593c7e931106c0) )
+ ROM_LOAD16_WORD_SWAP( "smbh.08b", 0x280000, 0x80000, CRC(f931b76b) SHA1(0b7e8d1278dcba89f0063bd09cda96d6ae1bc282) )
+
+ ROM_REGION( 0x1200000, "gfx", 0 )
+ ROMX_LOAD( "smb.13m", 0x0000000, 0x200000, CRC(d9b2d1de) SHA1(e8658983070dadcd1300a680a42c8431579e2b4f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.15m", 0x0000002, 0x200000, CRC(9a766d92) SHA1(afdf88afbec527268d63c11ea32f861b52e11489) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.17m", 0x0000004, 0x200000, CRC(51800f0f) SHA1(9526cd69a23340a81841271b51de03d9bf2b979f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.19m", 0x0000006, 0x200000, CRC(35757e96) SHA1(c915f3b9e4fdec3defc7eecb2c1f7377e6072228) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.14m", 0x0800000, 0x200000, CRC(e5bfd0e7) SHA1(327e626df4c2152f921f15535c01dda6c4437527) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.16m", 0x0800002, 0x200000, CRC(c56c0866) SHA1(1e2218e852ae72a9a95861dd37129fe78d4b1329) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.18m", 0x0800004, 0x200000, CRC(4ded3910) SHA1(d883541ce4d83f4e7ab095f2ef273408d9911f9a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.20m", 0x0800006, 0x200000, CRC(26ea1ec5) SHA1(22be249b1f73272feacf4026f09fc877f5d86353) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.21m", 0x1000000, 0x080000, CRC(0a08c5fc) SHA1(ff3fad4fbc98e3013291c7ba7ee5e057a2628b36) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.23m", 0x1000002, 0x080000, CRC(0911b6c4) SHA1(e7a7061b192658724d98cae8693f63dd5bc40c00) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.25m", 0x1000004, 0x080000, CRC(82d6c4ec) SHA1(ed8ed02a00f59a048b9891ec2a77720bb6a5e03d) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "smb.27m", 0x1000006, 0x080000, CRC(9b48678b) SHA1(4fa300d356c538947983ae85bb5c5cfd1fb835e7) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "smb.01", 0x00000, 0x08000, CRC(0abc229a) SHA1(967f574e6358dfc1b01e6a4a4df1a8f34eb3d814) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "smb.02", 0x28000, 0x20000, CRC(d051679a) SHA1(583c2521a30db1740d95dd94a38751fbeff3aae5) )
+
+ ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "smb.11m", 0x000000, 0x200000, CRC(c56935f9) SHA1(ca1705e48e31ddc13505e6297bceca2bec1bb209) )
+ ROM_LOAD16_WORD_SWAP( "smb.12m", 0x200000, 0x200000, CRC(955b0782) SHA1(ee09500e7b44e923126533613bfe26cdabc7ab5f) )
+
+ RINGDEST_HISPANIC_KEY
+ROM_END
+
ROM_START( mmancp2u )
ROM_REGION(CODE_SIZE, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_WORD_SWAP( "rcmu.03b", 0x000000, 0x80000, CRC(c39f037f) SHA1(eefc5aa0fde322c6f895a37399424060c702a459) )
@@ -9368,8 +9403,8 @@ DRIVER_INIT_MEMBER(cps_state,gigaman2)
DRIVER_INIT_CALL(cps2nc);
- m_gigaman2_dummyqsound_ram = auto_alloc_array(machine(), UINT16, 0x20000 / 2);
- save_pointer(NAME(m_gigaman2_dummyqsound_ram), 0x20000 / 2);
+ m_gigaman2_dummyqsound_ram = std::make_unique<UINT16[]>(0x20000 / 2);
+ save_pointer(NAME(m_gigaman2_dummyqsound_ram.get()), 0x20000 / 2);
space.install_readwrite_handler(0x618000, 0x619fff, read16_delegate(FUNC(cps_state::gigaman2_dummyqsound_r),this), write16_delegate(FUNC(cps_state::gigaman2_dummyqsound_w), this)); // no qsound..
@@ -9453,6 +9488,7 @@ GAME( 1994, vampja, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0,
GAME( 1994, vampjr1, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940630)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, ringdest, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Euro 940902)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, ringdesta, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Asia 940831)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ringdesth, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Hispanic 940902)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, smbomb, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940831)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, smbombr1, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940808)", MACHINE_SUPPORTS_SAVE )
GAME( 1994, armwar, 0, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Euro 941024)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp
index aeb038e8199..8ec2c17c68a 100644
--- a/src/mame/drivers/cps3.cpp
+++ b/src/mame/drivers/cps3.cpp
@@ -771,19 +771,13 @@ void cps3_state::cps3_decrypt_bios()
void cps3_state::init_common(void)
{
- /* just some NOPs for the game to execute if it crashes and starts executing unmapped addresses
- - this prevents MAME from crashing */
- m_nops = auto_alloc(machine(), UINT32);
- m_nops[0] = 0x00090009;
-
// flash roms
- std::string tempstr;
for (int simmnum = 0; simmnum < 7; simmnum++)
for (int chipnum = 0; chipnum < 8; chipnum++)
- m_simm[simmnum][chipnum] = machine().device<fujitsu_29f016a_device>(strformat(tempstr,"simm%d.%d", simmnum + 1, chipnum).c_str());
+ m_simm[simmnum][chipnum] = machine().device<fujitsu_29f016a_device>(strformat("simm%d.%d", simmnum + 1, chipnum).c_str());
- m_eeprom = auto_alloc_array(machine(), UINT32, 0x400/4);
- machine().device<nvram_device>("eeprom")->set_base(m_eeprom, 0x400);
+ m_eeprom = std::make_unique<UINT32[]>(0x400/4);
+ machine().device<nvram_device>("eeprom")->set_base(m_eeprom.get(), 0x400);
}
@@ -794,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);
@@ -894,27 +901,27 @@ void cps3_state::cps3_set_mame_colours(int colournum, UINT16 data, UINT32 fadeva
void cps3_state::video_start()
{
- m_ss_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
- memset(m_ss_ram, 0x00, 0x10000);
- save_pointer(NAME(m_ss_ram), 0x10000/4);
+ m_ss_ram = std::make_unique<UINT32[]>(0x10000/4);
+ memset(m_ss_ram.get(), 0x00, 0x10000);
+ save_pointer(NAME(m_ss_ram.get()), 0x10000/4);
- m_char_ram = auto_alloc_array(machine(), UINT32, 0x800000/4);
- memset(m_char_ram, 0x00, 0x800000);
- save_pointer(NAME(m_char_ram), 0x800000 /4);
+ m_char_ram = std::make_unique<UINT32[]>(0x800000/4);
+ memset(m_char_ram.get(), 0x00, 0x800000);
+ save_pointer(NAME(m_char_ram.get()), 0x800000 /4);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(0, global_alloc(gfx_element(m_palette, cps3_tiles8x8_layout, (UINT8 *)m_ss_ram, 0, m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, cps3_tiles8x8_layout, (UINT8 *)m_ss_ram.get(), 0, m_palette->entries() / 16, 0));
//decode_ssram();
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(1, global_alloc(gfx_element(m_palette, cps3_tiles16x16_layout, (UINT8 *)m_char_ram, 0, m_palette->entries() / 64, 0)));
+ m_gfxdecode->set_gfx(1, std::make_unique<gfx_element>(m_palette, cps3_tiles16x16_layout, (UINT8 *)m_char_ram.get(), 0, m_palette->entries() / 64, 0));
m_gfxdecode->gfx(1)->set_granularity(64);
//decode_charram();
- m_mame_colours = auto_alloc_array(machine(), UINT32, 0x80000/4);
- memset(m_mame_colours, 0x00, 0x80000);
+ m_mame_colours = std::make_unique<UINT32[]>(0x80000/4);
+ memset(m_mame_colours.get(), 0x00, 0x80000);
m_screenwidth = 384;
@@ -1474,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;
@@ -1581,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;
@@ -1805,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++)
@@ -1835,7 +1842,7 @@ WRITE32_MEMBER(cps3_state::cps3_palettedma_w)
UINT32 cps3_state::process_byte( UINT8 real_byte, UINT32 destination, int max_length )
{
- UINT8* dest = (UINT8*)m_char_ram;
+ UINT8* dest = (UINT8*)m_char_ram.get();
//printf("process byte for destination %08x\n", destination);
@@ -1879,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;
@@ -1930,7 +1937,7 @@ void cps3_state::cps3_do_char_dma( UINT32 real_source, UINT32 real_destination,
UINT32 cps3_state::ProcessByte8(UINT8 b,UINT32 dst_offset)
{
- UINT8* destRAM = (UINT8*)m_char_ram;
+ UINT8* destRAM = (UINT8*)m_char_ram.get();
int l=0;
if(m_lastb==m_lastb2) //rle
@@ -1962,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;
@@ -2305,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 */
@@ -2342,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);
@@ -3651,7 +3658,7 @@ ROM_START( cps3boot ) // for cart with standard SH2
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_hd6417095_sh2", 0, SHA1(6057cc3ec7991c0c00a7ab9da6ac2f92c9fb1aed) )
+ DISK_IMAGE_READONLY( "UniCD-CPS3_for_standard_SH2_V4", 0, SHA1(099c52bd38753f0f4876243e7aa87ca482a2dcb7) )
ROM_END
ROM_START( cps3booto ) // for cart with standard SH2
@@ -3659,6 +3666,14 @@ ROM_START( cps3booto ) // for cart with standard SH2
ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
+ DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_hd6417095_sh2", 0, SHA1(6057cc3ec7991c0c00a7ab9da6ac2f92c9fb1aed) )
+ROM_END
+
+ROM_START( cps3booto2 ) // for cart with standard SH2
+ ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
+ ROM_LOAD( "no-battery_bios_29f400_for_hd6417095_sh2.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
+
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_hd6417095_sh2_older", 0, SHA1(123f2fcb0f3dd3d6b859e82a51d0127e46763776) )
ROM_END
@@ -3683,11 +3698,19 @@ ROM_START( cps3boota ) // for cart with dead custom SH2 (or 2nd Impact CPU which
ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
+ DISK_IMAGE_READONLY( "UniCD-CPS3_for_custom_SH2_V5", 0, SHA1(50a5b2845d3dd3de3bce15c4f1b58500db80cabe) )
+ROM_END
+
+ROM_START( cps3bootao ) // for cart with dead custom SH2 (or 2nd Impact CPU which is the same as a dead one)
+ ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
+ ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
+
+ DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_dead_security_cart", 0, SHA1(1ede2f1ba197ee787208358a13eae7185a5ae3b2) )
ROM_END
-ROM_START( cps3bootoa ) // for cart with dead custom SH2 (or 2nd Impact CPU which is the same as a dead one)
+ROM_START( cps3bootao2 ) // for cart with dead custom SH2 (or 2nd Impact CPU which is the same as a dead one)
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "no-battery_bios_29f400_for_dead_security_cart.u2", 0x000000, 0x080000, CRC(0fd56fb3) SHA1(5a8bffc07eb7da73cf4bca6718df72e471296bfd) )
@@ -3914,12 +3937,17 @@ GAME( 1999, jojobanr1, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0
GAME( 1999, jojobaner1,jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990913, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
// bootlegs, hold START1 during bootup to change games
-GAME( 1999, cps3boot, 0, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1999, cps3boota, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart", MACHINE_IMPERFECT_GRAPHICS )
+
+// newest revision, fixes some issues with Warzard decryption.
+GAME( 1999, cps3boot, 0, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (V4)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3boota, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (V5)", MACHINE_IMPERFECT_GRAPHICS )
+
+GAME( 1999, cps3booto, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (older)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3bootao, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (older)", MACHINE_IMPERFECT_GRAPHICS )
// this doesn't play 2nd Impact despite it being listed. 2nd Impact uses separate data/code encryption and can't be decrypted cleanly for a standard SH2. Selecting it just flashes in a copy of 3rd Strike with the 2nd Impact loading screen
-GAME( 1999, cps3booto, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (older) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3booto2, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (oldest) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only)", MACHINE_IMPERFECT_GRAPHICS )
// this does not play Red Earth or the 2 Jojo games. New Generation and 3rd Strike have been heavily modified to work with the separate code/data encryption a dead cart / 2nd Impact cart has. Selecting the other games will give an 'invalid CD' message.
-GAME( 1999, cps3bootoa, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (older) (New Generation, 2nd Impact and 3rd Strike only)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3bootao2, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (oldest) (New Generation, 2nd Impact and 3rd Strike only)", MACHINE_IMPERFECT_GRAPHICS )
// these are test bootleg CDs for running 2nd Impact on a standard SH2
GAME( 1999, cps3bs32, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1999, cps3bs32a, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older)", MACHINE_IMPERFECT_GRAPHICS ) // older / buggier hack
diff --git a/src/mame/drivers/crimfght.cpp b/src/mame/drivers/crimfght.cpp
index febda7d58ff..460e133caa6 100644
--- a/src/mame/drivers/crimfght.cpp
+++ b/src/mame/drivers/crimfght.cpp
@@ -23,8 +23,8 @@
WRITE8_MEMBER(crimfght_state::crimfght_coin_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
READ8_MEMBER(crimfght_state::k052109_051960_r)
@@ -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/csc.cpp b/src/mame/drivers/csc.cpp
index 50e0ef39c61..11dcf7763b6 100644
--- a/src/mame/drivers/csc.cpp
+++ b/src/mame/drivers/csc.cpp
@@ -2,9 +2,14 @@
// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco
/******************************************************************************
+WIP: plan to move to main fidelity chess driver
+
+
+
+
Fidelity Champion Chess Challenger (model CSC)
- See fidelz80.c for hardware description
+ See drivers/fidelz80.cpp for hardware description
TODO:
- speech doesn't work
@@ -17,20 +22,19 @@
#include "machine/6821pia.h"
#include "sound/s14001a.h"
-#include "debugger.h"
-
// same layout of Sensory Chess Challenger
-extern const char layout_vsc[];
+//extern const char layout_vsc[];
class csc_state : public driver_device
{
public:
csc_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_speech(*this, "speech")
- ,
- m_maincpu(*this, "maincpu") { }
+ m_maincpu(*this, "maincpu"),
+ m_speech(*this, "speech")
+ { }
+ required_device<cpu_device> m_maincpu;
required_device<s14001a_device> m_speech;
virtual void machine_start() override;
@@ -50,7 +54,6 @@ public:
UINT8 m_selector;
TIMER_DEVICE_CALLBACK_MEMBER(irq_timer);
- required_device<cpu_device> m_maincpu;
};
@@ -58,8 +61,8 @@ UINT16 csc_state::input_read(int index)
{
static const char *const col_tag[] =
{
- "COL_A", "COL_B", "COL_C", "COL_D", "COL_E",
- "COL_F", "COL_G", "COL_H", "COL_I"
+ "IN.0", "IN.1", "IN.2", "IN.3", "IN.4",
+ "IN.5", "IN.6", "IN.7", "IN.8"
};
return ioport(col_tag[index])->read();
@@ -73,19 +76,19 @@ WRITE8_MEMBER( csc_state::pia0_pa_w )
switch (m_selector)
{
case 0:
- output_set_digit_value(0, out_digit & 0x7f);
- output_set_value("pm_led", BIT(out_digit, 7));
+ output().set_digit_value(0, out_digit & 0x7f);
+ output().set_value("pm_led", BIT(out_digit, 7));
break;
case 1:
- output_set_digit_value(1, out_digit & 0x7f);
+ output().set_digit_value(1, out_digit & 0x7f);
break;
case 2:
- output_set_digit_value(2, out_digit & 0x7f);
- output_set_value("up_dot", BIT(out_digit, 7));
+ output().set_digit_value(2, out_digit & 0x7f);
+ output().set_value("up_dot", BIT(out_digit, 7));
break;
case 3:
- output_set_digit_value(3, out_digit & 0x7f);
- output_set_value("low_dot", BIT(out_digit, 7));
+ output().set_digit_value(3, out_digit & 0x7f);
+ output().set_value("low_dot", BIT(out_digit, 7));
break;
}
@@ -134,7 +137,7 @@ WRITE8_MEMBER( csc_state::pia1_pb_w )
if (m_selector < 8)
for (int i=0; i<8; i++)
- output_set_indexed_value(row_tag[m_selector], i+1, BIT(data, 7-i));
+ output().set_indexed_value(row_tag[m_selector], i+1, BIT(data, 7-i));
}
READ8_MEMBER( csc_state::pia1_pa_r )
@@ -197,7 +200,7 @@ ADDRESS_MAP_END
/* Input ports */
static INPUT_PORTS_START( csc )
- PORT_START("COL_A")
+ PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD)
@@ -207,7 +210,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x100,IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE)
- PORT_START("COL_B")
+ PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD)
@@ -217,7 +220,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x100,IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("RV") PORT_CODE(KEYCODE_V)
- PORT_START("COL_C")
+ PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD)
@@ -227,7 +230,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x100,IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("TM") PORT_CODE(KEYCODE_T)
- PORT_START("COL_D")
+ PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD)
@@ -237,7 +240,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x100,IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
- PORT_START("COL_E")
+ PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD)
@@ -247,7 +250,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x100,IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
- PORT_START("COL_F")
+ PORT_START("IN.5")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD)
@@ -257,7 +260,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x100,IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
- PORT_START("COL_G")
+ PORT_START("IN.6")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD)
@@ -267,7 +270,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x100,IP_ACTIVE_LOW, IPT_UNUSED) PORT_UNUSED
- PORT_START("COL_H")
+ PORT_START("IN.7")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD)
@@ -277,7 +280,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD)
PORT_BIT(0x100,IP_ACTIVE_LOW, IPT_UNUSED) PORT_UNUSED
- PORT_START("COL_I")
+ PORT_START("IN.8")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Pawn") PORT_CODE(KEYCODE_1)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Rook") PORT_CODE(KEYCODE_2)
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Knight") PORT_CODE(KEYCODE_3)
@@ -301,7 +304,7 @@ static MACHINE_CONFIG_START( csc, csc_state )
MCFG_CPU_ADD("maincpu", M6502, 3900000/2)
MCFG_CPU_PROGRAM_MAP(csc_mem)
- MCFG_DEFAULT_LAYOUT(layout_vsc)
+ //MCFG_DEFAULT_LAYOUT(layout_vsc)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", csc_state, irq_timer, attotime::from_hz(38400/64))
@@ -343,4 +346,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 198?, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Chess Challenger (model CSC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK)
+COMP( 1981, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Chess Challenger (model CSC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK)
diff --git a/src/mame/drivers/csplayh5.cpp b/src/mame/drivers/csplayh5.cpp
index c9ea1186ec6..fa87c2f7a02 100644
--- a/src/mame/drivers/csplayh5.cpp
+++ b/src/mame/drivers/csplayh5.cpp
@@ -65,7 +65,6 @@ public:
DECLARE_READ16_MEMBER(csplayh5_mux_r);
DECLARE_WRITE16_MEMBER(csplayh5_mux_w);
DECLARE_WRITE16_MEMBER(csplayh5_sound_w);
- DECLARE_READ16_MEMBER(test_r);
DECLARE_READ8_MEMBER(csplayh5_sound_r);
DECLARE_WRITE8_MEMBER(csplayh5_soundclr_w);
diff --git a/src/mame/drivers/cubeqst.cpp b/src/mame/drivers/cubeqst.cpp
index 7cb464c2e45..6c084f3b897 100644
--- a/src/mame/drivers/cubeqst.cpp
+++ b/src/mame/drivers/cubeqst.cpp
@@ -39,7 +39,7 @@ public:
m_screen(*this, "screen"),
m_generic_paletteram_16(*this, "paletteram") { }
- UINT8 *m_depth_buffer;
+ std::unique_ptr<UINT8[]> m_depth_buffer;
int m_video_field;
UINT8 m_io_latch;
UINT8 m_reset_latch;
@@ -49,7 +49,7 @@ public:
required_device<cquestsnd_cpu_device> m_soundcpu;
required_device<screen_device> m_screen;
required_shared_ptr<UINT16> m_generic_paletteram_16;
- rgb_t *m_colormap;
+ std::unique_ptr<rgb_t[]> m_colormap;
DECLARE_WRITE16_MEMBER(palette_w);
DECLARE_READ16_MEMBER(line_r);
DECLARE_WRITE16_MEMBER(laserdisc_w);
@@ -96,7 +96,7 @@ public:
void cubeqst_state::video_start()
{
m_video_field = 0;
- m_depth_buffer = auto_alloc_array(machine(), UINT8, 512);
+ m_depth_buffer = std::make_unique<UINT8[]>(512);
}
WRITE16_MEMBER(cubeqst_state::palette_w)
@@ -130,7 +130,7 @@ UINT32 cubeqst_state::screen_update_cubeqst(screen_device &screen, bitmap_rgb32
UINT32 pen;
/* Zap the depth buffer */
- memset(m_depth_buffer, 0xff, 512);
+ memset(m_depth_buffer.get(), 0xff, 512);
/* Process all the spans on this scanline */
if (y < 256)
@@ -444,7 +444,7 @@ void cubeqst_state::machine_start()
/* TODO: Use resistor values */
int i;
- m_colormap = auto_alloc_array(machine(), rgb_t, 65536);
+ m_colormap = std::make_unique<rgb_t[]>(65536);
for (i = 0; i < 65536; ++i)
{
UINT8 a, r, g, b, y;
@@ -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 678137cf6dd..8e27e26e864 100644
--- a/src/mame/drivers/cubo.cpp
+++ b/src/mame/drivers/cubo.cpp
@@ -399,7 +399,7 @@ WRITE8_MEMBER( cubo_state::akiko_cia_0_port_a_write )
m_cdda->set_output_gain( 0, ( data & 1 ) ? 0.0 : 1.0 );
/* bit 2 = Power Led on Amiga */
- set_led_status(machine(), 0, (data & 2) ? 0 : 1);
+ output().set_led_value(0, (data & 2) ? 0 : 1);
handle_cd32_joystick_cia(machine(), data, m_cia_0->read(space, 2));
}
@@ -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/cultures.cpp b/src/mame/drivers/cultures.cpp
index a27bfe2b492..f9d58e31d57 100644
--- a/src/mame/drivers/cultures.cpp
+++ b/src/mame/drivers/cultures.cpp
@@ -177,7 +177,7 @@ WRITE8_MEMBER(cultures_state::bg_bank_w)
m_bg2_bank = (data & 0xc) >> 2;
m_bg2_tilemap->mark_all_dirty();
}
- coin_counter_w(machine(), 0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
}
diff --git a/src/mame/drivers/cvicny.cpp b/src/mame/drivers/cvicny.cpp
index 416309d78d0..8939702099d 100644
--- a/src/mame/drivers/cvicny.cpp
+++ b/src/mame/drivers/cvicny.cpp
@@ -56,7 +56,7 @@ public:
WRITE8_MEMBER( cvicny_state::segment_w ) // output segments on the selected digit
{
if (m_digit != m_digit_last)
- output_set_digit_value(m_digit, data);
+ output().set_digit_value(m_digit, data);
m_digit_last = m_digit;
}
diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp
index f3ec7e6ed80..e67e3899f12 100644
--- a/src/mame/drivers/cvs.cpp
+++ b/src/mame/drivers/cvs.cpp
@@ -155,7 +155,7 @@ READ8_MEMBER(cvs_state::cvs_s2636_0_or_character_ram_r)
if (m_s2650_flag)
return m_character_ram[(0 * 0x800) | 0x400 | m_character_ram_page_start | offset];
else
- return m_s2636_0->read(space, offset);
+ return m_s2636_0->read_data(space, offset);
}
WRITE8_MEMBER(cvs_state::cvs_s2636_0_or_character_ram_w)
@@ -167,7 +167,7 @@ WRITE8_MEMBER(cvs_state::cvs_s2636_0_or_character_ram_w)
m_gfxdecode->gfx(1)->mark_dirty((offset / 8) % 256);
}
else
- m_s2636_0->write(space, offset, data);
+ m_s2636_0->write_data(space, offset, data);
}
@@ -176,7 +176,7 @@ READ8_MEMBER(cvs_state::cvs_s2636_1_or_character_ram_r)
if (m_s2650_flag)
return m_character_ram[(1 * 0x800) | 0x400 | m_character_ram_page_start | offset];
else
- return m_s2636_1->read(space, offset);
+ return m_s2636_1->read_data(space, offset);
}
WRITE8_MEMBER(cvs_state::cvs_s2636_1_or_character_ram_w)
@@ -188,7 +188,7 @@ WRITE8_MEMBER(cvs_state::cvs_s2636_1_or_character_ram_w)
m_gfxdecode->gfx(1)->mark_dirty((offset / 8) % 256);
}
else
- m_s2636_1->write(space, offset, data);
+ m_s2636_1->write_data(space, offset, data);
}
@@ -197,7 +197,7 @@ READ8_MEMBER(cvs_state::cvs_s2636_2_or_character_ram_r)
if (m_s2650_flag)
return m_character_ram[(2 * 0x800) | 0x400 | m_character_ram_page_start | offset];
else
- return m_s2636_2->read(space, offset);
+ return m_s2636_2->read_data(space, offset);
}
WRITE8_MEMBER(cvs_state::cvs_s2636_2_or_character_ram_w)
@@ -209,7 +209,7 @@ WRITE8_MEMBER(cvs_state::cvs_s2636_2_or_character_ram_w)
m_gfxdecode->gfx(1)->mark_dirty((offset / 8) % 256);
}
else
- m_s2636_2->write(space, offset, data);
+ m_s2636_2->write_data(space, offset, data);
}
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/dacholer.cpp b/src/mame/drivers/dacholer.cpp
index 000140a5407..9179640f006 100644
--- a/src/mame/drivers/dacholer.cpp
+++ b/src/mame/drivers/dacholer.cpp
@@ -208,11 +208,11 @@ WRITE8_MEMBER(dacholer_state::bg_bank_w)
WRITE8_MEMBER(dacholer_state::coins_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
- set_led_status(machine(), 0, data & 4);
- set_led_status(machine(), 1, data & 8);
+ output().set_led_value(0, data & 4);
+ output().set_led_value(1, data & 8);
}
WRITE8_MEMBER(dacholer_state::snd_w)
diff --git a/src/mame/drivers/dai3wksi.cpp b/src/mame/drivers/dai3wksi.cpp
index 979385a4f65..08bfc4febc7 100644
--- a/src/mame/drivers/dai3wksi.cpp
+++ b/src/mame/drivers/dai3wksi.cpp
@@ -1,5 +1,5 @@
// license:???
-// copyright-holders:Derrick Renaud
+// copyright-holders:Hau,Derrick Renaud
/*
-Galaxy Force
diff --git a/src/mame/drivers/darius.cpp b/src/mame/drivers/darius.cpp
index 80202aa2645..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
/***************************************************************************
@@ -219,10 +219,10 @@ WRITE16_MEMBER(darius_state::darius_ioc_w)
case 0x30: /* coin control */
/* bits 7,5,4,0 used on reset */
/* bit 4 used whenever bg is blanked ? */
- coin_lockout_w(machine(), 0, ~data & 0x02);
- coin_lockout_w(machine(), 1, ~data & 0x04);
- coin_counter_w(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 1, data & 0x40);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x02);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
m_coin_word = data & 0xffff;
//popmessage(" address %04x value %04x",offset,data);
return;
diff --git a/src/mame/drivers/dassault.cpp b/src/mame/drivers/dassault.cpp
index c3a3557e889..5df8e0e002c 100644
--- a/src/mame/drivers/dassault.cpp
+++ b/src/mame/drivers/dassault.cpp
@@ -241,7 +241,7 @@ READ16_MEMBER(dassault_state::dassault_control_r)
WRITE16_MEMBER(dassault_state::dassault_control_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
if (data & 0xfffe)
logerror("Coin cointrol %04x\n", data);
}
diff --git a/src/mame/drivers/dblcrown.cpp b/src/mame/drivers/dblcrown.cpp
index f3d1119ae95..ed23cd2b96b 100644
--- a/src/mame/drivers/dblcrown.cpp
+++ b/src/mame/drivers/dblcrown.cpp
@@ -72,8 +72,8 @@ public:
UINT8 m_bank;
UINT8 m_irq_src;
- UINT8 *m_pal_ram;
- UINT8 *m_vram;
+ std::unique_ptr<UINT8[]> m_pal_ram;
+ std::unique_ptr<UINT8[]> m_vram;
UINT8 m_vram_bank[2];
UINT8 m_mux_data;
UINT8 m_lamps_data;
@@ -110,10 +110,10 @@ protected:
void dblcrown_state::video_start()
{
- m_pal_ram = auto_alloc_array(machine(), UINT8, 0x200 * 2);
- m_vram = auto_alloc_array(machine(), UINT8, 0x1000 * 0x10);
+ m_pal_ram = std::make_unique<UINT8[]>(0x200 * 2);
+ m_vram = std::make_unique<UINT8[]>(0x1000 * 0x10);
- save_pointer(NAME(m_vram), 0x1000 * 0x10);
+ save_pointer(NAME(m_vram.get()), 0x1000 * 0x10);
}
UINT32 dblcrown_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
@@ -298,8 +298,8 @@ WRITE8_MEMBER( dblcrown_state::output_w )
x-x- --xx unknown
*/
- coin_counter_w(machine(), 0, data & 0x10); /* Coin In counter pulse */
- coin_counter_w(machine(), 1 ,data & 0x08); /* Payout counter pulse */
+ machine().bookkeeping().coin_counter_w(0, data & 0x10); /* Coin In counter pulse */
+ machine().bookkeeping().coin_counter_w(1 ,data & 0x08); /* Payout counter pulse */
// popmessage("out: %02x", data);
}
@@ -322,14 +322,14 @@ WRITE8_MEMBER( dblcrown_state::lamps_w )
-x-- ---- Hold 2
x--- ---- Hold 1
*/
- output_set_lamp_value(0, (data) & 1); /* Deal */
- output_set_lamp_value(1, (data >> 1) & 1); /* Bet */
- output_set_lamp_value(2, (data >> 2) & 1); /* Cancel */
- output_set_lamp_value(3, (data >> 3) & 1); /* Hold 5 */
- output_set_lamp_value(4, (data >> 4) & 1); /* Hold 4 */
- output_set_lamp_value(5, (data >> 5) & 1); /* Hold 3 */
- output_set_lamp_value(6, (data >> 6) & 1); /* Hold 2 */
- output_set_lamp_value(7, (data >> 7) & 1); /* Hold 1 */
+ output().set_lamp_value(0, (data) & 1); /* Deal */
+ output().set_lamp_value(1, (data >> 1) & 1); /* Bet */
+ output().set_lamp_value(2, (data >> 2) & 1); /* Cancel */
+ output().set_lamp_value(3, (data >> 3) & 1); /* Hold 5 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* Hold 4 */
+ output().set_lamp_value(5, (data >> 5) & 1); /* Hold 3 */
+ output().set_lamp_value(6, (data >> 6) & 1); /* Hold 2 */
+ output().set_lamp_value(7, (data >> 7) & 1); /* Hold 1 */
m_lamps_data = data;
}
diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp
index f6c74cb331c..9076254e457 100644
--- a/src/mame/drivers/dblewing.cpp
+++ b/src/mame/drivers/dblewing.cpp
@@ -109,8 +109,6 @@ public:
required_device<deco16ic_device> m_deco_tilegen1;
required_shared_ptr<UINT16> m_decrypted_opcodes;
DECLARE_WRITE_LINE_MEMBER(sound_irq);
- DECLARE_READ16_MEMBER(dblewing_prot_r);
- DECLARE_WRITE16_MEMBER(dblewing_prot_w);
DECLARE_READ8_MEMBER(irq_latch_r);
DECLARE_DRIVER_INIT(dblewing);
virtual void machine_start() override;
diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp
index d2e05b7181d..6372c089fb1 100644
--- a/src/mame/drivers/dbz.cpp
+++ b/src/mame/drivers/dbz.cpp
@@ -89,8 +89,8 @@ WRITE16_MEMBER(dbz_state::dbzcontrol_w)
else
m_k053246->k053246_set_objcha_line( CLEAR_LINE);
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
WRITE16_MEMBER(dbz_state::dbz_sound_command_w)
diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp
index fbb92009889..9772ad3ba8c 100644
--- a/src/mame/drivers/dccons.cpp
+++ b/src/mame/drivers/dccons.cpp
@@ -658,103 +658,72 @@ static MACHINE_CONFIG_START( dc, dc_cons_state )
MCFG_SLOT_DEFAULT_OPTION("gdrom")
MACHINE_CONFIG_END
-/*
-PsyMan notes:
-
-Here's a basic report on the Dreamcast boot files used in MAME (BIOS+Flash pairs):
-
------
-
-"dc101d_us.bin", 0x000000, 0x200000, CRC(89f2b1a1) SHA1(8951d1bb219ab2ff8583033d2119c899cc81f18c) ) // BIOS
-This is a proper European and USA BIOS. It's even possible that it was used at a later point for Japanese systems.
-It only has minor differences compared to BIOS 1.01c.
-
-
-"dcus_ntsc.bin", 0x000000, 0x020000, BAD_DUMP CRC(c611b498) SHA1(94d44d7f9529ec1642ba3771ed3c5f756d5bc872) ) // Flash
-Checking at 0x0001A000 and the mirrored data at 0x0001A0A0 gives away that this is hacked from a PAL/European flash file.
-The broadcast (0x0001A004) is also set at 50Hz which is a PAL standard.
-
-
-"dc101d_eu.bin", 0x000000, 0x200000, CRC(a2564fad) SHA1(edc5d3d70a93c935703d26119b37731fd317d2bf),ROM_BIOS(1)) // BIOS
-This BIOS has Chinese language added. So either this is a bad BIOS or Dreamcast was actually officially released there.
-
-
-"dc101c_eu.bin", 0x000000, 0x200000, CRC(2f551bc5) SHA1(1ede8d5be49116a4c6f3fe0961175469537a0434),ROM_BIOS(2)) // BIOS
-This seems to be a proper European and USA BIOS. It's even possible that it was used at a later point for Japanese systems.
-It only has minor differences compared to BIOS 1.01d.
-
-
-
-"dceu_pal.bin", 0x000000, 0x020000, BAD_DUMP CRC(b7e5aeeb) SHA1(11e02433e13b793ec7ffe0ae2356750bb8a575b4) ) // Flash
-This appears to be a valid PAL/European flash. It's unknown if the data at 0x0001A0A0 (from 0x0001A000) should be mirrored there.
-Maybe a game does this mirroring or maybe it's there by default. It's certain that some games wrote to this flash though.
-
-"dc1004jp.bin", 0x000000, 0x200000, CRC(5454841f) SHA1(1ea132c0fbbf07ef76789eadc07908045c089bd6) ) // BIOS
-This seems to be a proper Japanese BIOS. This BIOS was used at least by early Japanese Dreamcast models.
-Code-wise, it has major differences compared to later BIOS versions.
+#define ROM_LOAD_BIOS(bios,name,offset,length,hash) \
+ ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_BIOS(bios+1))
+// actual mask rom labels can have -X1 or -X2 added, presumable depending on mobo revision and/or type of rom used (5v or 3.3v), contents is the same
+// known to exists undumped MPR-21086 (VA0 NTSC-J 3010) and MPR-21933 (VA0 US) boot roms
-"dcjp_ntsc.bin", 0x000000, 0x020000, CRC(5f92bf76) SHA1(be78b834f512ab2cf3d67b96e377c9f3093ff82a) ) // Flash
-Checking at 0x0001A000 and the mirrored data at 0x0001A0A0 gives away that this is hacked from a PAL/European flash file.
-The broadcast (0x0001A004) is also set at 50Hz which is a PAL standard.
-
------
-
-
-From all the aforementioned files the only personally verified one is "dc101d_us.bin", CRC(89f2b1a1).
-The resulting file was dumped twice, once from an NTSC/USA system and once from a PAL/EUR system. Both files had a side by side byte match.
-*/
+#define DREAMCAST_COMMON_BIOS \
+ ROM_REGION(0x200000, "maincpu", 0) \
+ ROM_SYSTEM_BIOS(0, "101d", "v1.01d (World)") \
+ ROM_LOAD_BIOS(0, "mpr-21931.ic501", 0x000000, 0x200000, CRC(89f2b1a1) SHA1(8951d1bb219ab2ff8583033d2119c899cc81f18c) ) \
+ ROM_SYSTEM_BIOS(1, "1022", "v1.022 (World)") \
+ ROM_LOAD_BIOS(1, "mpr-23588.ic501", 0x000000, 0x200000, CRC(786168f9) SHA1(ba8bbb90fdb29525f24f17055dc2c7b2d7674437) ) \
+ ROM_SYSTEM_BIOS(2, "101c", "v1.01c (World)") \
+ ROM_LOAD_BIOS(2, "mpr-21871.ic501", 0x000000, 0x200000, CRC(2f551bc5) SHA1(1ede8d5be49116a4c6f3fe0961175469537a0434) ) \
+ ROM_SYSTEM_BIOS(3, "101dch", "v1.01d (Chinese hack)") \
+ ROM_LOAD_BIOS(3, "dc101d_ch.bin", 0x000000, 0x200000, CRC(a2564fad) SHA1(edc5d3d70a93c935703d26119b37731fd317d2bf) )
+// ^^^ dc101d_eu.bin ^^^ is selfmade chinese translation, doesn't work on real hardware, does it must be here at all ?
ROM_START(dc)
- ROM_REGION(0x200000, "maincpu", 0)
- ROM_LOAD( "dc101d_us.bin", 0x000000, 0x200000, CRC(89f2b1a1) SHA1(8951d1bb219ab2ff8583033d2119c899cc81f18c) ) // BIOS
+ DREAMCAST_COMMON_BIOS
ROM_REGION(0x020000, "dcflash", 0)
- ROM_LOAD( "dcus_ntsc.bin", 0x000000, 0x020000, BAD_DUMP CRC(c611b498) SHA1(94d44d7f9529ec1642ba3771ed3c5f756d5bc872) ) // Flash
- ROM_FILL( 0x1a004, 1, 0x30 ) // patch broadcast back to NTSC
+ 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 )
- ROM_REGION(0x200000, "maincpu", 0)
- ROM_SYSTEM_BIOS(0, "101d", "v1.01d")
- ROMX_LOAD( "dc101d_eu.bin", 0x000000, 0x200000, CRC(a2564fad) SHA1(edc5d3d70a93c935703d26119b37731fd317d2bf),ROM_BIOS(1)) // BIOS
- ROM_SYSTEM_BIOS(1, "101c", "v1.01c")
- ROMX_LOAD( "dc101c_eu.bin", 0x000000, 0x200000, CRC(2f551bc5) SHA1(1ede8d5be49116a4c6f3fe0961175469537a0434),ROM_BIOS(2)) // BIOS
+ DREAMCAST_COMMON_BIOS
ROM_REGION(0x020000, "dcflash", 0)
- ROM_LOAD( "dceu_pal.bin", 0x000000, 0x020000, BAD_DUMP CRC(b7e5aeeb) SHA1(11e02433e13b793ec7ffe0ae2356750bb8a575b4) ) // Flash
+ ROM_LOAD( "dceu_pal.bin", 0x000000, 0x020000, BAD_DUMP CRC(b7e5aeeb) SHA1(11e02433e13b793ec7ffe0ae2356750bb8a575b4) )
ROM_END
ROM_START( dcjp )
- ROM_REGION(0x200000, "maincpu", 0)
- ROM_LOAD( "dc1004jp.bin", 0x000000, 0x200000, CRC(5454841f) SHA1(1ea132c0fbbf07ef76789eadc07908045c089bd6) ) // BIOS
+ DREAMCAST_COMMON_BIOS
+ 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)
/* ROM_LOAD( "dcjp_ntsc.bad", 0x000000, 0x020000, BAD_DUMP CRC(307a7035) SHA1(1411423a9d071340ea52c56e19c1aafc4e1309ee) ) // Hacked Flash */
- ROM_LOAD( "dcjp_ntsc.bin", 0x000000, 0x020000, BAD_DUMP CRC(5f92bf76) SHA1(be78b834f512ab2cf3d67b96e377c9f3093ff82a) ) // Flash
+ ROM_LOAD( "dcjp_ntsc.bin", 0x000000, 0x020000, BAD_DUMP CRC(5f92bf76) SHA1(be78b834f512ab2cf3d67b96e377c9f3093ff82a) ) // hacked PAL flash
ROM_FILL( 0x1a004, 1, 0x30 ) // patch broadcast back to NTSC
ROM_END
+// normally, with DIP switch 4 off, HKT-100/110/120 AKA "Katana Set 5.xx", will be booted from flash ROM IC507 (first 2 dumps below)
+// otherwise it boots from EPROM which contain system checker software (last dump)
ROM_START( dcdev )
ROM_REGION(0x200000, "maincpu", 0)
- ROM_LOAD( "hkt-0120.bin", 0x000000, 0x200000, CRC(2186e0e5) SHA1(6bd18fb83f8fdb56f1941e079580e5dd672a6dad) ) // BIOS
-
- ROM_REGION(0x020000, "dcflash", 0)
- ROM_LOAD( "hkt-0120-flash.bin", 0x000000, 0x020000, CRC(7784c304) SHA1(31ef57f550d8cd13e40263cbc657253089e53034) ) // Flash
-ROM_END
-
-ROM_START( dcprt )
- ROM_REGION(0x200000, "maincpu", 0)
- ROM_LOAD( "katana-set5-v0.41-98-08-27.bin", 0x000000, 0x200000, CRC(485877bd) SHA1(dc1af1f1248ffa87d57bc5ef2ea41aac95ecfc5e) ) // BIOS
+ 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_LOAD_BIOS(1, "set5v1.001.ic507", 0x000000, 0x200000, CRC(5702d38f) SHA1(ea7a3ae1de73683008dd795c252941a4fc81b42e) )
+
+ // 27C160 EPROM (DIP42) IC??? labeled
+ // SET5 FC52
+ // V0.41 98/08/27
+ // also known to exists v0.71 98/11/13
+ ROM_SYSTEM_BIOS(2, "041", "Katana Set5 Checker v0.41")
+ ROM_LOAD_BIOS(2, "set5v0.41.bin", 0x000000, 0x200000, CRC(485877bd) SHA1(dc1af1f1248ffa87d57bc5ef2ea41aac95ecfc5e) )
ROM_REGION(0x020000, "dcflash", 0)
- ROM_LOAD( "dcjp_ntsc.bin", 0x000000, 0x020000, CRC(5f92bf76) SHA1(be78b834f512ab2cf3d67b96e377c9f3093ff82a) ) // Flash
+ ROM_LOAD( "hkt-0120-flash.bin", 0x000000, 0x020000, CRC(7784c304) SHA1(31ef57f550d8cd13e40263cbc657253089e53034) )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
CONS( 1999, dc, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (USA, NTSC)", MACHINE_NOT_WORKING )
CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Dreamcast (Japan, NTSC)", MACHINE_NOT_WORKING )
CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (Europe, PAL)", MACHINE_NOT_WORKING )
-CONS( 1998, dcdev, dcjp, 0, dc, dc, dc_cons_state, dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING )
-CONS( 1998, dcprt, dcjp, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Katana Set 5 Prototype", MACHINE_NOT_WORKING )
+CONS( 1998, dcdev, 0, 0, dc, dc, dc_cons_state, dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp
index 519ed10af03..af2113dc8a4 100644
--- a/src/mame/drivers/ddenlovr.cpp
+++ b/src/mame/drivers/ddenlovr.cpp
@@ -168,7 +168,7 @@ public:
optional_shared_ptr<UINT16> m_protection2;
- UINT8 * m_ddenlovr_pixmap[8];
+ std::unique_ptr<UINT8[]> m_ddenlovr_pixmap[8];
/* blitter (TODO: merge with the dynax.h, where possible) */
int m_extra_layers;
@@ -461,7 +461,7 @@ VIDEO_START_MEMBER(ddenlovr_state,ddenlovr)
for (i = 0; i < 8; i++)
{
- m_ddenlovr_pixmap[i] = auto_alloc_array(machine(), UINT8, 512 * 512);
+ m_ddenlovr_pixmap[i] = std::make_unique<UINT8[]>(512 * 512);
m_ddenlovr_scroll[i * 2 + 0] = m_ddenlovr_scroll[i * 2 + 1] = 0;
}
@@ -542,14 +542,14 @@ VIDEO_START_MEMBER(ddenlovr_state,ddenlovr)
save_item(NAME(m_ddenlovr_blit_pen_mask));
save_item(NAME(m_ddenlovr_blit_regs));
- save_pointer(NAME(m_ddenlovr_pixmap[0]), 512 * 512);
- save_pointer(NAME(m_ddenlovr_pixmap[1]), 512 * 512);
- save_pointer(NAME(m_ddenlovr_pixmap[2]), 512 * 512);
- save_pointer(NAME(m_ddenlovr_pixmap[3]), 512 * 512);
- save_pointer(NAME(m_ddenlovr_pixmap[4]), 512 * 512);
- save_pointer(NAME(m_ddenlovr_pixmap[5]), 512 * 512);
- save_pointer(NAME(m_ddenlovr_pixmap[6]), 512 * 512);
- save_pointer(NAME(m_ddenlovr_pixmap[7]), 512 * 512);
+ save_pointer(NAME(m_ddenlovr_pixmap[0].get()), 512 * 512);
+ save_pointer(NAME(m_ddenlovr_pixmap[1].get()), 512 * 512);
+ save_pointer(NAME(m_ddenlovr_pixmap[2].get()), 512 * 512);
+ save_pointer(NAME(m_ddenlovr_pixmap[3].get()), 512 * 512);
+ save_pointer(NAME(m_ddenlovr_pixmap[4].get()), 512 * 512);
+ save_pointer(NAME(m_ddenlovr_pixmap[5].get()), 512 * 512);
+ save_pointer(NAME(m_ddenlovr_pixmap[6].get()), 512 * 512);
+ save_pointer(NAME(m_ddenlovr_pixmap[7].get()), 512 * 512);
}
VIDEO_START_MEMBER(ddenlovr_state,mmpanic)
@@ -872,17 +872,17 @@ void ddenlovr_state::blit_rect_yh()
if (start + length > 512 * 512)
length = 512 * 512 - start;
- if (m_ddenlovr_dest_layer & 0x0001) memset(m_ddenlovr_pixmap[0] + start, m_ddenlovr_blit_pen, length);
- if (m_ddenlovr_dest_layer & 0x0002) memset(m_ddenlovr_pixmap[1] + start, m_ddenlovr_blit_pen, length);
- if (m_ddenlovr_dest_layer & 0x0004) memset(m_ddenlovr_pixmap[2] + start, m_ddenlovr_blit_pen, length);
- if (m_ddenlovr_dest_layer & 0x0008) memset(m_ddenlovr_pixmap[3] + start, m_ddenlovr_blit_pen, length);
+ if (m_ddenlovr_dest_layer & 0x0001) memset(m_ddenlovr_pixmap[0].get() + start, m_ddenlovr_blit_pen, length);
+ if (m_ddenlovr_dest_layer & 0x0002) memset(m_ddenlovr_pixmap[1].get() + start, m_ddenlovr_blit_pen, length);
+ if (m_ddenlovr_dest_layer & 0x0004) memset(m_ddenlovr_pixmap[2].get() + start, m_ddenlovr_blit_pen, length);
+ if (m_ddenlovr_dest_layer & 0x0008) memset(m_ddenlovr_pixmap[3].get() + start, m_ddenlovr_blit_pen, length);
if (!m_extra_layers) return;
- if (m_ddenlovr_dest_layer & 0x0100) memset(m_ddenlovr_pixmap[4] + start, m_ddenlovr_blit_pen, length);
- if (m_ddenlovr_dest_layer & 0x0200) memset(m_ddenlovr_pixmap[5] + start, m_ddenlovr_blit_pen, length);
- if (m_ddenlovr_dest_layer & 0x0400) memset(m_ddenlovr_pixmap[6] + start, m_ddenlovr_blit_pen, length);
- if (m_ddenlovr_dest_layer & 0x0800) memset(m_ddenlovr_pixmap[7] + start, m_ddenlovr_blit_pen, length);
+ if (m_ddenlovr_dest_layer & 0x0100) memset(m_ddenlovr_pixmap[4].get() + start, m_ddenlovr_blit_pen, length);
+ if (m_ddenlovr_dest_layer & 0x0200) memset(m_ddenlovr_pixmap[5].get() + start, m_ddenlovr_blit_pen, length);
+ if (m_ddenlovr_dest_layer & 0x0400) memset(m_ddenlovr_pixmap[6].get() + start, m_ddenlovr_blit_pen, length);
+ if (m_ddenlovr_dest_layer & 0x0800) memset(m_ddenlovr_pixmap[7].get() + start, m_ddenlovr_blit_pen, length);
}
}
@@ -905,17 +905,17 @@ void ddenlovr_state::blit_fill_xy( int x, int y )
// popmessage("FILL command X %03x Y %03x", x, y);
#endif
- if (m_ddenlovr_dest_layer & 0x0001) memset(m_ddenlovr_pixmap[0] + start, m_ddenlovr_blit_pen, 512 * 512 - start);
- if (m_ddenlovr_dest_layer & 0x0002) memset(m_ddenlovr_pixmap[1] + start, m_ddenlovr_blit_pen, 512 * 512 - start);
- if (m_ddenlovr_dest_layer & 0x0004) memset(m_ddenlovr_pixmap[2] + start, m_ddenlovr_blit_pen, 512 * 512 - start);
- if (m_ddenlovr_dest_layer & 0x0008) memset(m_ddenlovr_pixmap[3] + start, m_ddenlovr_blit_pen, 512 * 512 - start);
+ if (m_ddenlovr_dest_layer & 0x0001) memset(m_ddenlovr_pixmap[0].get() + start, m_ddenlovr_blit_pen, 512 * 512 - start);
+ if (m_ddenlovr_dest_layer & 0x0002) memset(m_ddenlovr_pixmap[1].get() + start, m_ddenlovr_blit_pen, 512 * 512 - start);
+ if (m_ddenlovr_dest_layer & 0x0004) memset(m_ddenlovr_pixmap[2].get() + start, m_ddenlovr_blit_pen, 512 * 512 - start);
+ if (m_ddenlovr_dest_layer & 0x0008) memset(m_ddenlovr_pixmap[3].get() + start, m_ddenlovr_blit_pen, 512 * 512 - start);
if (!m_extra_layers) return;
- if (m_ddenlovr_dest_layer & 0x0100) memset(m_ddenlovr_pixmap[4] + start, m_ddenlovr_blit_pen, 512 * 512 - start);
- if (m_ddenlovr_dest_layer & 0x0200) memset(m_ddenlovr_pixmap[5] + start, m_ddenlovr_blit_pen, 512 * 512 - start);
- if (m_ddenlovr_dest_layer & 0x0400) memset(m_ddenlovr_pixmap[6] + start, m_ddenlovr_blit_pen, 512 * 512 - start);
- if (m_ddenlovr_dest_layer & 0x0800) memset(m_ddenlovr_pixmap[7] + start, m_ddenlovr_blit_pen, 512 * 512 - start);
+ if (m_ddenlovr_dest_layer & 0x0100) memset(m_ddenlovr_pixmap[4].get() + start, m_ddenlovr_blit_pen, 512 * 512 - start);
+ if (m_ddenlovr_dest_layer & 0x0200) memset(m_ddenlovr_pixmap[5].get() + start, m_ddenlovr_blit_pen, 512 * 512 - start);
+ if (m_ddenlovr_dest_layer & 0x0400) memset(m_ddenlovr_pixmap[6].get() + start, m_ddenlovr_blit_pen, 512 * 512 - start);
+ if (m_ddenlovr_dest_layer & 0x0800) memset(m_ddenlovr_pixmap[7].get() + start, m_ddenlovr_blit_pen, 512 * 512 - start);
}
@@ -1701,12 +1701,12 @@ CUSTOM_INPUT_MEMBER(ddenlovr_state::ddenlovr_blitter_irq_r)
WRITE16_MEMBER(ddenlovr_state::ddenlovr_coincounter_0_w)
{
if (ACCESSING_BITS_0_7)
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
WRITE16_MEMBER(ddenlovr_state::ddenlovr_coincounter_1_w)
{
if (ACCESSING_BITS_0_7)
- coin_counter_w(machine(), 1, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 1);
}
@@ -1936,8 +1936,8 @@ WRITE16_MEMBER(ddenlovr_state::quiz365_coincounter_w)
{
if (m_input_sel == 0x1c)
{
- coin_counter_w(machine(), 0, ~data & 1);
- coin_counter_w(machine(), 1, ~data & 4);
+ machine().bookkeeping().coin_counter_w(0, ~data & 1);
+ machine().bookkeeping().coin_counter_w(1, ~data & 4);
}
}
}
@@ -2012,8 +2012,8 @@ WRITE16_MEMBER(ddenlovr_state::ddenlovj_coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04);
// data & 0x80 ?
}
}
@@ -2186,8 +2186,8 @@ WRITE16_MEMBER(ddenlovr_state::nettoqc_coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04);
// data & 0x80 ?
}
}
@@ -2430,7 +2430,7 @@ WRITE8_MEMBER(ddenlovr_state::mmpanic_blitter2_w)
void ddenlovr_state::mmpanic_update_leds()
{
- set_led_status(machine(), 0, m_mmpanic_leds);
+ output().set_led_value(0, m_mmpanic_leds);
}
/* leds 1-8 */
@@ -2451,9 +2451,9 @@ WRITE8_MEMBER(ddenlovr_state::mmpanic_lockout_w)
{
if (m_dsw_sel == 0x0c)
{
- coin_counter_w(machine(), 0, (~data) & 0x01);
- coin_lockout_w(machine(), 0, (~data) & 0x02);
- set_led_status(machine(), 1, (~data) & 0x04);
+ machine().bookkeeping().coin_counter_w(0, (~data) & 0x01);
+ machine().bookkeeping().coin_lockout_w(0, (~data) & 0x02);
+ output().set_led_value(1, (~data) & 0x04);
}
}
@@ -2609,8 +2609,8 @@ WRITE8_MEMBER(ddenlovr_state::funkyfig_lockout_w)
{
case 0x2c:
m_funkyfig_lockout = data;
- coin_counter_w(machine(), 0, data & 0x01);
- coin_lockout_w(machine(), 0, (~data) & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(0, (~data) & 0x02);
if (data & ~0x03)
logerror("%06x: warning, unknown bits written, lockout = %02x\n", space.device().safe_pc(), data);
break;
@@ -2757,8 +2757,8 @@ WRITE8_MEMBER(ddenlovr_state::hanakanz_coincounter_w)
// bit 2 = hopper (if bet on)
// bit 3 = 1 if bet off
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
if (data & 0xf0)
logerror("%04x: warning, coin counter = %02x\n", space.device().safe_pc(), data);
@@ -3001,8 +3001,8 @@ WRITE8_MEMBER(ddenlovr_state::mjchuuka_coincounter_w)
// bit 3 = lockout
// bit 8?
- coin_counter_w(machine(), 0, data & 0x01);
- coin_lockout_w(machine(), 0, (~data) & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(0, (~data) & 0x08);
if (data & 0x74)
logerror("%04x: warning, coin counter = %02x\n", space.device().safe_pc(), data);
@@ -3180,8 +3180,8 @@ WRITE8_MEMBER(ddenlovr_state::mjmyster_coincounter_w)
switch (m_input_sel)
{
case 0x0c:
- coin_counter_w(machine(), 0, (~data) & 0x01); // coin in
- coin_counter_w(machine(), 0, (~data) & 0x02); // coin out actually
+ machine().bookkeeping().coin_counter_w(0, (~data) & 0x01); // coin in
+ machine().bookkeeping().coin_counter_w(0, (~data) & 0x02); // coin out actually
#ifdef MAME_DEBUG
// popmessage("cc: %02x",data);
#endif
@@ -3304,8 +3304,8 @@ WRITE8_MEMBER(ddenlovr_state::hginga_coins_w)
// bit 2 = hopper (if bet on)
// bit 3 = 1 if bet on
// bit 7?
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
#ifdef MAME_DEBUG
// popmessage("COINS %02x", data);
#endif
@@ -3439,8 +3439,8 @@ WRITE8_MEMBER(ddenlovr_state::hgokou_input_w)
// bit 1 = out counter
// bit 2 = hopper
// bit 7 = ?
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
m_hopper = data & 0x04;
#ifdef MAME_DEBUG
// popmessage("COINS %02x",data);
@@ -3607,7 +3607,7 @@ WRITE8_MEMBER(ddenlovr_state::hparadis_coin_w)
{
switch (m_input_sel)
{
- case 0x0c: coin_counter_w(machine(), 0, data & 1); break;
+ case 0x0c: machine().bookkeeping().coin_counter_w(0, data & 1); break;
case 0x0d: break;
default:
logerror("%04x: coins_w with select = %02x, data = %02x\n",space.device().safe_pc(), m_input_sel, data);
@@ -3836,7 +3836,7 @@ WRITE8_MEMBER(ddenlovr_state::mjflove_blitter_w)
WRITE8_MEMBER(ddenlovr_state::mjflove_coincounter_w)
{
// bit 0 = in counter
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
if (data & 0xfe)
{
@@ -3923,10 +3923,10 @@ WRITE8_MEMBER(ddenlovr_state::mjgnight_coincounter_w)
{
m_prot_val = data;
- set_led_status(machine(), 0, data & 0x01); // led? 1 in-game, 0 in service mode / while booting
+ output().set_led_value(0, data & 0x01); // led? 1 in-game, 0 in service mode / while booting
- coin_counter_w(machine(), 0, data & 0x04); // coin-out
- coin_counter_w(machine(), 1, data & 0x08); // coin-in
+ machine().bookkeeping().coin_counter_w(0, data & 0x04); // coin-out
+ machine().bookkeeping().coin_counter_w(1, data & 0x08); // coin-in
if (data & 0xf2)
logerror("%04x: warning, coin counter = %02x\n", space.device().safe_pc(), data);
@@ -4008,8 +4008,8 @@ WRITE8_MEMBER(ddenlovr_state::sryudens_coincounter_w)
// bit 4 = ? on except during boot or test mode
// bit 7 = ? mostly on
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
m_hopper = data & 0x04;
if (data & 0x68)
@@ -4069,8 +4069,8 @@ WRITE8_MEMBER(ddenlovr_state::janshinp_coincounter_w)
// bit 3 = ? on except during boot or test mode
// bit 7 = ? mostly on
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
if (data & ~0x8b)
logerror("%04x: warning, coin counter = %02x\n", space.device().safe_pc(), data);
@@ -4272,7 +4272,7 @@ WRITE8_MEMBER(ddenlovr_state::htengoku_coin_w)
// bit 0 = coin counter
// bit 1 = out counter
// bit 2 = hopper
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
m_hopper = data & 0x04;
#ifdef MAME_DEBUG
// popmessage("COINS %02x",data);
diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp
index f5b8b590e44..b422887971d 100644
--- a/src/mame/drivers/ddragon.cpp
+++ b/src/mame/drivers/ddragon.cpp
@@ -1750,6 +1750,51 @@ ROM_START( ddragon2u )
ROM_LOAD( "prom.16", 0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) ) /* sprite timing (same as ddragon) */
ROM_END
+ROM_START( ddragon2b )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "3", 0x08000, 0x8000, CRC(5cc38bad) SHA1(8ebbb998cce48b5baa4a738c2d4c2e481e2637fb) )
+ ROM_LOAD( "4", 0x10000, 0x8000, CRC(78750947) SHA1(6b8349c3cd27c37a4329cea213b6ff0167c4edee) )
+ ROM_LOAD( "5", 0x18000, 0x8000, CRC(49ddddcd) SHA1(91dc53718d04718b313f23d86e241027c89d1a03) )
+ ROM_LOAD( "6", 0x20000, 0x8000, CRC(097eaf26) SHA1(60504abd30fec44c45197cdf3832c87d05ef577d) )
+
+ ROM_REGION( 0x10000, "sub", 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */
+ ROM_LOAD( "2", 0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 ) /* music CPU, 64kb */
+ ROM_LOAD( "11", 0x00000, 0x8000, CRC(75e36cd6) SHA1(f24805f4f6925b3ac508e66a6fc25c275b05f3b9) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 )
+ ROM_LOAD( "1", 0x00000, 0x10000, CRC(3ad1049c) SHA1(11d9544a56f8e6a84beb307a5c8a9ff8afc55c66) ) /* chars */
+
+ ROM_REGION( 0xc0000, "gfx2", 0 )
+ ROM_LOAD( "27", 0x00000, 0x10000, CRC(fe42df5d) SHA1(aab801346c2db04263cb61c97c6e086387675586) ) /* sprites */
+ ROM_LOAD( "26", 0x10000, 0x10000, CRC(42f582c6) SHA1(bb269f677321f706043aa33a12bd3ddda4c32e55) )
+ ROM_LOAD( "23", 0x20000, 0x10000, CRC(e157319f) SHA1(8b898fa20329b12293e7cb7ffc2e1b17304f826f) )
+ ROM_LOAD( "22", 0x30000, 0x10000, CRC(82e952c9) SHA1(d340262c11f3c0ef3640c487e6a78745a2fe97d4) )
+ ROM_LOAD( "25", 0x40000, 0x10000, CRC(4a4a085d) SHA1(80786c6fda135af1f9e9d8191879ab27baf36167) )
+ ROM_LOAD( "24", 0x50000, 0x10000, CRC(c9d52536) SHA1(54f9236c4d22e3fd79d66c3f45b134f1fc9a1d32) )
+ ROM_LOAD( "21", 0x60000, 0x10000, CRC(32ab0897) SHA1(f992dc3876621896b6e1fd6518f576b48d54a631) )
+ ROM_LOAD( "20", 0x70000, 0x10000, CRC(a68e168f) SHA1(6ae596c097d7d435b767207012de1d23316d86d4) )
+ ROM_LOAD( "17", 0x80000, 0x10000, CRC(882f99b1) SHA1(2fbb9171a2c9ddab177efe1e89e96426643d382b) )
+ ROM_LOAD( "16", 0x90000, 0x10000, CRC(e2fe3eca) SHA1(bfd2e91261b9a002a99998486a2b606d4ee2e59b) )
+ ROM_LOAD( "18", 0xa0000, 0x10000, CRC(0e1c6c63) SHA1(506e43161992c41d9b77c1df11228117f0587cbd) )
+ ROM_LOAD( "19", 0xb0000, 0x10000, CRC(0e21eae0) SHA1(0cde9cdc6dbe2015e7f38b391c78cf3f16658e5c) )
+
+ ROM_REGION( 0x40000, "gfx3", 0 )
+ ROM_LOAD( "15", 0x00000, 0x10000, CRC(3c3f16f6) SHA1(2fccbf1dd072c59b5923631fc1c6d40f7ea63996))
+ ROM_LOAD( "13", 0x10000, 0x10000, CRC(7c21be72) SHA1(9935c983d0f7613ee192758ddcd8d8592e8bf78a) )
+ ROM_LOAD( "14", 0x20000, 0x10000, CRC(e92f91f4) SHA1(4351b2b117c1104dcdb6f48531ddad385691c945) )
+ ROM_LOAD( "12", 0x30000, 0x10000, CRC(6896e2f7) SHA1(d230d2406ae451f59d1d0783b1d670a0d3e28d8c) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* adpcm samples */
+ ROM_LOAD( "7", 0x00000, 0x10000, CRC(6d9e3f0f) SHA1(5c3e7fb2e46939dd3c540b9e1af9591dbfd15b19) )
+ ROM_LOAD( "9", 0x10000, 0x10000, CRC(0c15dec9) SHA1(b0a6bb13216f4321b5fc01a649ea84d2d1d51088) )
+ ROM_LOAD( "8", 0x20000, 0x10000, CRC(151b22b4) SHA1(3b0470df9b719dd76115d8c549010ec92e28d0d0) )
+ ROM_LOAD( "10", 0x30000, 0x10000, CRC(ae2fc028) SHA1(94fea9088b7b412706b6aaf7aac856709649fb63) )
+
+ ROM_REGION( 0x0200, "proms", 0 ) // wasn't in this set, is it still present?
+ ROM_LOAD( "prom.16", 0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) ) /* sprite timing (same as ddragon) */
+ROM_END
ROM_START( tstrike )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
@@ -2145,6 +2190,7 @@ GAME( 1987, ddragon6809a,ddragon, ddragon6809, ddragon, ddragon_state, ddragon
GAME( 1988, ddragon2, 0, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (World)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, ddragon2u, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, ddragon2j, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
+GAME( 1988, ddragon2b, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (US, bootleg)", MACHINE_SUPPORTS_SAVE )
/* these were conversions of double dragon */
GAME( 1991, tstrike, 0, darktowr, tstrike, ddragon_state, darktowr, ROT0, "East Coast Coin Company", "Thunder Strike (set 1)", MACHINE_SUPPORTS_SAVE ) // same manufacturer as The Game Room?
diff --git a/src/mame/drivers/ddribble.cpp b/src/mame/drivers/ddribble.cpp
index 40e2df29ee6..4000dd166af 100644
--- a/src/mame/drivers/ddribble.cpp
+++ b/src/mame/drivers/ddribble.cpp
@@ -63,8 +63,8 @@ WRITE8_MEMBER(ddribble_state::ddribble_coin_counter_w)
/* b2-b3: unknown */
/* b1: coin counter 2 */
/* b0: coin counter 1 */
- coin_counter_w(machine(), 0,(data) & 0x01);
- coin_counter_w(machine(), 1,(data >> 1) & 0x01);
+ machine().bookkeeping().coin_counter_w(0,(data) & 0x01);
+ machine().bookkeeping().coin_counter_w(1,(data >> 1) & 0x01);
}
READ8_MEMBER(ddribble_state::ddribble_vlm5030_busy_r)
diff --git a/src/mame/drivers/de_2.cpp b/src/mame/drivers/de_2.cpp
index 6f4ce3fb2ec..d51d3d5f4a3 100644
--- a/src/mame/drivers/de_2.cpp
+++ b/src/mame/drivers/de_2.cpp
@@ -77,13 +77,10 @@ public:
DECLARE_WRITE8_MEMBER(lamp1_w) { };
DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w);
DECLARE_WRITE_LINE_MEMBER(msm5205_irq_w);
- DECLARE_WRITE_LINE_MEMBER(pia_irq);
DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15
DECLARE_WRITE8_MEMBER(sol3_w);
DECLARE_WRITE8_MEMBER(sound_w);
DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
- DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
- DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
DECLARE_READ8_MEMBER(sound_latch_r);
DECLARE_WRITE8_MEMBER(sample_bank_w);
@@ -276,7 +273,7 @@ WRITE8_MEMBER( de_2_state::dig0_w )
data &= 0x7f;
m_strobe = data & 15;
m_diag = (data & 0x70) >> 4;
- output_set_digit_value(60, patterns[data>>4]); // diag digit
+ output().set_digit_value(60, patterns[data>>4]); // diag digit
m_segment1 = 0;
m_segment2 = 0;
}
@@ -287,7 +284,7 @@ WRITE8_MEMBER( de_2_state::dig1_w )
m_segment2 |= 0x30000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -298,7 +295,7 @@ WRITE8_MEMBER( de_2_state::type2alpha3_dig1_w )
m_segment2 |= 0x20000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -309,7 +306,7 @@ WRITE8_MEMBER( de_2_state::alpha3_dig1_w )
m_segment2 |= 0x20000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -331,7 +328,7 @@ WRITE8_MEMBER( de_2_state::pia2c_pa_w )
m_segment1 |= 0x10000;
if ((m_segment1 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment1 |= 0x40000;
}
}
@@ -342,7 +339,7 @@ WRITE8_MEMBER( de_2_state::pia2c_pb_w )
m_segment1 |= 0x20000;
if ((m_segment1 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment1 |= 0x40000;
}
}
@@ -382,7 +379,7 @@ WRITE8_MEMBER( de_2_state::type2alpha3_pia34_pa_w )
m_segment2 |= 0x10000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -393,7 +390,7 @@ WRITE8_MEMBER( de_2_state::alpha3_pia34_pa_w )
m_segment2 |= 0x10000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
diff --git a/src/mame/drivers/de_3.cpp b/src/mame/drivers/de_3.cpp
index 4110d423d49..24793a2058b 100644
--- a/src/mame/drivers/de_3.cpp
+++ b/src/mame/drivers/de_3.cpp
@@ -59,14 +59,11 @@ public:
DECLARE_WRITE8_MEMBER(lamp1_w) { };
//DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w);
//DECLARE_WRITE_LINE_MEMBER(msm5205_irq_w);
- DECLARE_WRITE_LINE_MEMBER(pia_irq);
DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15
DECLARE_WRITE8_MEMBER(sol3_w);
DECLARE_WRITE8_MEMBER(sound_w);
DECLARE_WRITE8_MEMBER(dac_w) { };
DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
- DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
- DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
DECLARE_READ8_MEMBER(dmd_status_r);
// DECLARE_READ8_MEMBER(sound_latch_r);
@@ -91,7 +88,6 @@ private:
UINT8 m_kbdrow;
UINT8 m_diag;
bool m_ca1;
- bool m_irq_active;
UINT8 m_sound_data;
public:
@@ -203,7 +199,7 @@ WRITE8_MEMBER( de_3_state::dig0_w )
// data &= 0x7f;
// m_strobe = data & 15;
// m_diag = (data & 0x70) >> 4;
-// output_set_digit_value(60, patterns[data>>4]); // diag digit
+// output().set_digit_value(60, patterns[data>>4]); // diag digit
// m_segment1 = 0;
// m_segment2 = 0;
}
@@ -215,9 +211,9 @@ WRITE8_MEMBER( de_3_state::dig1_w )
// if ((m_segment2 & 0x70000) == 0x30000)
// {
// if(m_is_alpha3) // Alphanumeric type 2 uses 7 segment LEDs on the bottom row, type 3 uses 14 segment LEDs
-// output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
// else
-// output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 11, 15, 12, 10, 8, 14, 13, 9, 7, 6, 5, 4, 3, 2, 1, 0));
// m_segment2 |= 0x40000;
// }
}
@@ -250,7 +246,7 @@ WRITE8_MEMBER( de_3_state::pia2c_pa_w )
// m_segment1 |= 0x10000;
// if ((m_segment1 & 0x70000) == 0x30000)
// {
-// output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
// m_segment1 |= 0x40000;
// }
}
@@ -282,7 +278,7 @@ WRITE8_MEMBER( de_3_state::pia2c_pb_w )
// m_segment1 |= 0x20000;
// if ((m_segment1 & 0x70000) == 0x30000)
// {
-// output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
// m_segment1 |= 0x40000;
// }
}
@@ -316,7 +312,7 @@ WRITE8_MEMBER( de_3_state::pia34_pa_w )
// m_segment2 |= 0x10000;
// if ((m_segment2 & 0x70000) == 0x30000)
// {
-// output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+// output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
// m_segment2 |= 0x40000;
// }
}
diff --git a/src/mame/drivers/dec0.cpp b/src/mame/drivers/dec0.cpp
index 98f7dee7861..0c8bba5ffb1 100644
--- a/src/mame/drivers/dec0.cpp
+++ b/src/mame/drivers/dec0.cpp
@@ -1887,6 +1887,103 @@ ROM_START( drgninjab )
ROM_LOAD( "eg08.2c", 0x0000, 0x10000, CRC(92f2c916) SHA1(38b4ed81edcc2069b096591bdc5baab8b9edfa9a) ) // different to baddudes
ROM_END
+
+
+/*
+
+ CPUs
+QTY Type clock position function
+1x SCN68000CAN64 main PCB 9h 16/32-bit Microprocessor - main
+1x UM6502 main PCB 7d 8-bit Microprocessor - sound
+1x MC3403 main PCB 14e Quad Operational Amplifier - sound
+1x GL358 main PCB 13b Dual Operational Amplifier - sound
+1x YM2203C main PCB 12a FM Operator Type-M (OPM) - sound
+2x YM3014B main PCB 13d, 13e D/A Converter (DAC) - sound
+1x YM3812 main PCB 9b FM Operator Type-L II (OPL II) - sound
+1x MC68705R3P ROMs PCB 1l 8-bit EPROM Microcomputer Unit - main (not dumped)
+1x M5205 ROMs PCB 12c ADPCM Speech Syntesis IC - sound
+1x oscillator 24.000MHz main PCB 2a
+1x oscillator 16.0000 main PCB 12n
+1x blu resonator CSB-400P ROMs PCB 12b
+ROMs
+QTY Type position status
+4x 27256 main PCB 1-4 dumped
+4x 27512 main PCB 5-8 dumped
+7x 27256 ROMs PCB 15,20-23,28,29 dumped
+9x 27512 ROMs PCB 9-14,27-30 dumped
+2x N82S129AN main PCB 2q,3p not dumped yet
+1x N82S131N main PCB 5q not dumped yet
+1x N82S137N main PCB 8u not dumped yet
+1x N82S129AN ROMs PCB 12c not dumped yet
+RAMs
+QTY Type position
+2x HY6264 main PCB 12c,12d
+14x TMM2018 main PCB 1e,2e,5k,5l,5m,5n,5o,5p,7m,7n,8b,11s,11t,11u
+2x TMM2064 ROMs PCB 8n,8o
+4x TMM2018 ROMs PCB 8f,8g,8j,8k
+PLDs
+QTY Type position status
+Others
+
+1x 28x2 edge connector
+3x 50 pins flat cable connector from main board to roms board
+1x trimmer (volume)
+1x 8x2 switches DIP
+
+*/
+
+ROM_START( drgninjab2 )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "a14.3e", 0x00000, 0x10000, CRC(c4b9f4e7) SHA1(4a8176cce8c7909aace8ece4f97b1a199617938e) ) // 99.978638%
+ ROM_LOAD16_BYTE( "a11.3b", 0x00001, 0x10000, CRC(e4cc7c60) SHA1(63aeab4e20420f28a947438f2d7079c92a43d2df) ) // 99.978638%
+ ROM_LOAD16_BYTE( "a12.2e", 0x40000, 0x10000, CRC(2b81faf7) SHA1(6d10c29f5ee06856843d83e77ba24c2b6e00a9cb) )
+ ROM_LOAD16_BYTE( "a9.2b", 0x40001, 0x10000, CRC(c52c2e9d) SHA1(399f2b7df9d558c8f33bf1a7c8048c62e0f54cec) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */
+ ROM_LOAD( "a15.7b", 0x8000, 0x8000, CRC(82007af2) SHA1(f0db1b1dab199df402a7590e56d4d5ab4baca803) ) // 99.612427%
+
+ ROM_REGION( 0x1000, "mcu", 0 ) /* 68705 microcontroller */
+ ROM_LOAD( "mc68705r3p", 0x0000, 0x1000, NO_DUMP )
+
+ ROM_REGION( 0x10000, "gfx1", 0 ) /* chars */
+ ROM_LOAD( "a22.9m", 0x00000, 0x08000, CRC(6791bc20) SHA1(7240b2688cda04ee9ea331472a84fbffc85b8e90) ) // 99.996948%
+ ROM_LOAD( "a23.9n", 0x08000, 0x08000, CRC(5d75fc8f) SHA1(92947dd78bfe8067fb5f645fa1ef212e48b69c70) )
+
+ ROM_REGION( 0x40000, "gfx2", 0 ) /* tiles */ // identical but split into 4 roms
+ ROM_LOAD( "a25.10f", 0x00000, 0x10000, CRC(05cfc3e5) SHA1(a0163921c77dc9706463a402c3dd45ec4341cd21) )
+ ROM_LOAD( "a27.10h", 0x10000, 0x10000, CRC(e11e988f) SHA1(0c59f0d8d1abe414c7e1ebd49d454179fed2cd00) )
+ ROM_LOAD( "a24.10e", 0x20000, 0x10000, CRC(b893d880) SHA1(99e228174677f2e3e96154f77bfa9bf0f1c0a6a5) )
+ ROM_LOAD( "a26.10g", 0x30000, 0x10000, CRC(6f226dda) SHA1(65ebb16a292c57d49c135fce7ed7537146226eb5) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 ) /* tiles */
+ ROM_LOAD( "a29.10k", 0x00000, 0x08000, CRC(4bf80966) SHA1(de4d83bac16f161a43678c2b2ae71f8fcac7212d) )
+ ROM_LOAD( "a21.9k", 0x08000, 0x08000, CRC(b2e989fc) SHA1(492c1f3b18a4059c87254e0cba01ad9848e8b553) )
+ ROM_LOAD( "a28.10j", 0x10000, 0x08000, CRC(2d38032d) SHA1(833ebff370825e5c8b8fc59fbe663b8998884353) )
+ ROM_LOAD( "a20.9j", 0x18000, 0x08000, CRC(e71c0793) SHA1(e42a8192c772da1d6c93f9f9e89c553d712e18f7) )
+
+ ROM_REGION( 0x80000, "gfx4", 0 ) /* sprites */
+ ROM_LOAD( "a6.4g", 0x00000, 0x10000, CRC(5617d67f) SHA1(8f684de27ae79c4d35720706cdd2733af0e0a9cc) )
+ ROM_LOAD( "a2.4c", 0x10000, 0x08000, CRC(17e42633) SHA1(405f5296a741901677cca978a1b287d894eb1e54) )
+ ROM_LOAD( "a8.5g", 0x20000, 0x10000, CRC(ba83e8d8) SHA1(63092a5d0da0c9228a72a83b43a67a47b1388724) )
+ ROM_LOAD( "a4.5c", 0x30000, 0x08000, CRC(fea2a134) SHA1(525dd5f48993db1fe1e3c095442884178f75e8e0) )
+ ROM_LOAD( "a5.3g", 0x40000, 0x10000, CRC(fd91e08e) SHA1(8998f020791c8830e963096dc7b8fcb430d041d4) )
+ ROM_LOAD( "a1.3c", 0x50000, 0x08000, CRC(e83c760a) SHA1(d08db381658b8b3288c5eaa9048a906126e0f712) )
+ ROM_LOAD( "a7.4-5g", 0x60000, 0x10000, CRC(601b7b23) SHA1(c1c665614f1377bc47720382b25c965266a2593f) )
+ ROM_LOAD( "a3.4-5c", 0x70000, 0x08000, CRC(eeee8a1a) SHA1(2bf8378ff38f6a7c7cbd4cbd489de25cb1f0fe71) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "a30.10b", 0x0000, 0x10000, CRC(f6806826) SHA1(e2c6a0682f34d30c63dab8715729151cc3657387) ) // 99.218750%
+
+ ROM_REGION( 0x40000, "proms", 0 ) /* proms */
+ ROM_LOAD( "n82s129an.12c", 0x0000, 0x100, CRC(78994fdb) SHA1(cd52bff11b81f19eeb2683ed94b236f1464a5ea9) )
+ ROM_LOAD( "n82s129an.2q", 0x0000, 0x100, CRC(af46d1ee) SHA1(281bcc61d9d67b007c1399e228ec6baf6ab5d4ff) )
+ ROM_LOAD( "n82s129an.3p", 0x0000, 0x100, CRC(9f6aa3e5) SHA1(518247d4581eee3a078269fcf0c86d182cf622cd) )
+ ROM_LOAD( "n82s131n.5q", 0x0000, 0x200, CRC(86e775f8) SHA1(e8dee3d56fb5ca0fd7f9ce05a84674abb139d008) )
+ ROM_LOAD( "n82s137n.8u", 0x0000, 0x400, CRC(a5cda23e) SHA1(d6c8534ae3c95b47a0701047fef67f15dd71f3fe) )
+ROM_END
+
+
+
ROM_START( birdtry )
ROM_REGION( 0x60000, "maincpu", 0 ) /* 6*64k for 68000 code */
ROM_LOAD16_BYTE( "ek-04.bin", 0x00000, 0x10000, CRC(5f0f4686) SHA1(5eea74f5626339ebd50e623029f21f1cd0f93135) )
@@ -2584,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) )
@@ -3127,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 )
@@ -3141,11 +3282,14 @@ GAME( 1990, bouldashj, bouldash, slyspy, bouldash, dec0_state, slyspy, ROT0
GAME( 1988, robocopb, robocop, robocopb, robocop, dec0_state, robocop, ROT0, "bootleg", "Robocop (World bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, drgninjab, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "bootleg", "Dragonninja (bootleg)", MACHINE_SUPPORTS_SAVE )
+
+
+
// this is a common bootleg board
GAME( 1989, midresb, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (bootleg with 68705)", MACHINE_SUPPORTS_SAVE ) // need to hook up 68705? (probably unused)
GAME( 1989, midresbj, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (Joystick bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, ffantasybl, hippodrm, ffantasybl, ffantasybl, dec0_state, ffantasybl, ROT0, "bootleg", "Fighting Fantasy (bootleg with 68705)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 68705 not dumped, might be the same as midresb
-/* A Bad Dudes bootleg with 68705 like the midres and ffantasy ones exists, but is not dumped */
+GAME( 1988, drgninjab2, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "bootleg", "Dragonninja (bootleg with 68705)", MACHINE_SUPPORTS_SAVE ) // is this the same board as above? (region warning hacked to World, but still shows Japanese text)
// these are different to the above but quite similar to each other
GAME( 1988, automat, robocop, automat, robocop, dec0_state, robocop, ROT0, "bootleg", "Automat (bootleg of Robocop)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sound rom / music from section z with mods for ADPCM?
diff --git a/src/mame/drivers/deco156.cpp b/src/mame/drivers/deco156.cpp
index 9200ac4d862..faa0f3bb6a5 100644
--- a/src/mame/drivers/deco156.cpp
+++ b/src/mame/drivers/deco156.cpp
@@ -51,7 +51,7 @@ public:
/* memory */
UINT16 m_pf1_rowscroll[0x800/2];
UINT16 m_pf2_rowscroll[0x800/2];
- UINT16* m_spriteram;
+ std::unique_ptr<UINT16[]> m_spriteram;
DECLARE_WRITE32_MEMBER(hvysmsh_eeprom_w);
DECLARE_WRITE32_MEMBER(wcvol95_nonbuffered_palette_w);
DECLARE_WRITE32_MEMBER(deco156_nonbuffered_palette_w);
@@ -75,12 +75,12 @@ public:
void deco156_state::video_start()
{
- m_spriteram = auto_alloc_array(machine(), UINT16, 0x2000/2);
+ m_spriteram = std::make_unique<UINT16[]>(0x2000/2);
/* and register the allocated ram so that save states still work */
save_item(NAME(m_pf1_rowscroll));
save_item(NAME(m_pf2_rowscroll));
- save_pointer(NAME(m_spriteram), 0x2000/2);
+ save_pointer(NAME(m_spriteram.get()), 0x2000/2);
}
@@ -95,7 +95,7 @@ UINT32 deco156_state::screen_update_wcvol95(screen_device &screen, bitmap_rgb32
m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll);
m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, 0x800);
+ m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram.get(), 0x800);
m_deco_tilegen1->tilemap_1_draw(screen, bitmap, cliprect, 0, 0);
return 0;
}
diff --git a/src/mame/drivers/deco_ld.cpp b/src/mame/drivers/deco_ld.cpp
index 9de5ee54313..13beeaf905c 100644
--- a/src/mame/drivers/deco_ld.cpp
+++ b/src/mame/drivers/deco_ld.cpp
@@ -144,11 +144,9 @@ public:
UINT8 m_laserdisc_data;
int m_nmimask;
- DECLARE_WRITE8_MEMBER(rblaster_sound_w);
DECLARE_READ8_MEMBER(laserdisc_r);
DECLARE_WRITE8_MEMBER(laserdisc_w);
DECLARE_READ8_MEMBER(sound_status_r);
- DECLARE_WRITE8_MEMBER(nmimask_w);
DECLARE_WRITE8_MEMBER(decold_sound_cmd_w);
DECLARE_WRITE8_MEMBER(decold_palette_w);
DECLARE_CUSTOM_INPUT_MEMBER(begas_vblank_r);
diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp
index d8b10793324..a92dcc55393 100644
--- a/src/mame/drivers/deco_mlc.cpp
+++ b/src/mame/drivers/deco_mlc.cpp
@@ -637,8 +637,8 @@ ROM_END
ROM_START( stadhr96 )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD32_WORD( "sh-eaj.2a", 0x000000, 0x80000, CRC(10d1496a) SHA1(1dc151547463a38d717159b3dfce7ffd78a943ad) )
- ROM_LOAD32_WORD( "sh-eaj.2b", 0x000002, 0x80000, CRC(608a9144) SHA1(15e2fa99dc96e8ebd9868713ae7708cb824fc6c5) )
+ ROM_LOAD32_WORD( "sh-eaj.2a", 0x000000, 0x80000, CRC(10d1496a) SHA1(1dc151547463a38d717159b3dfce7ffd78a943ad) ) /* FRI SEP 20 14:32:35 JST 1996 */
+ ROM_LOAD32_WORD( "sh-eaj.2b", 0x000002, 0x80000, CRC(608a9144) SHA1(15e2fa99dc96e8ebd9868713ae7708cb824fc6c5) ) /* EUROPE (DISTRIBUTED) */
ROM_REGION( 0x1800000, "gfx1", 0 )
ROM_LOAD16_BYTE( "mcm-00.2e", 0x0000001, 0x400000, CRC(c1919c3c) SHA1(168000ff1512a147d7029ee8878dd70de680fb08) )
@@ -658,10 +658,33 @@ ROM_START( stadhr96 )
ROM_LOAD( "eeprom-stadhr96.bin", 0x00, 0x80, CRC(77861793) SHA1(df43b3ee55b7eb840cd6d3e5c5e04c68ce64bb57) )
ROM_END
+ROM_START( stadhr96u )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_WORD( "eah00-0.2a", 0x000000, 0x80000, CRC(f45b2ca0) SHA1(442dbfea97abb98451b323986878504ac0370e85) ) /* FRI SEP 20 14:01:45 JST 1996 */
+ ROM_LOAD32_WORD( "eah01-0.2b", 0x000002, 0x80000, CRC(328a2bca) SHA1(7e398b48719e5d71b2212d5b65be667e20663589) ) /* U.S.A. */
+
+ ROM_REGION( 0x1800000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "mcm-00.2e", 0x0000001, 0x400000, CRC(c1919c3c) SHA1(168000ff1512a147d7029ee8878dd70de680fb08) )
+ ROM_LOAD16_BYTE( "mcm-01.8m", 0x0000000, 0x400000, CRC(2255d47d) SHA1(ba3298e781fce1c84f68290bc464f2bc991382c0) )
+ ROM_LOAD16_BYTE( "mcm-02.4e", 0x0800001, 0x400000, CRC(38c39822) SHA1(393d2c1c3c0bcb99df706d32ee3f8b681891dcac) )
+ ROM_LOAD16_BYTE( "mcm-03.10m",0x0800000, 0x400000, CRC(4bd84ca7) SHA1(43dad8ced344f8d629d36f30ab2332879ba067d2) )
+ ROM_LOAD16_BYTE( "mcm-04.6e", 0x1000001, 0x400000, CRC(7c0bd84c) SHA1(730b085a893d3c70592a8b4aecaeeaf4aceede56) )
+ ROM_LOAD16_BYTE( "mcm-05.11m",0x1000000, 0x400000, CRC(476f03d7) SHA1(5c58ab4fc0e29f76619827bc27fa64cce2627e48) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_LOAD( "eaf02-0.6h", 0x000000, 0x80000, CRC(f95ad7ce) SHA1(878dcc1d5f76c8523c788e66bb4a8c5740d515e5) )
+
+ ROM_REGION( 0x800000, "ymz", 0 )
+ ROM_LOAD( "mcm-06.6a", 0x000000, 0x400000, CRC(fbc178f3) SHA1(f44cb913177b6552b30c139505c3284bc445ba13) )
+
+ ROM_REGION16_BE( 0x80, "eeprom", ROMREGION_ERASE00 )
+ ROM_LOAD( "eeprom-stadhr96u.bin", 0x00, 0x80, CRC(71d796ba) SHA1(dc23117e24a8e79ca04f60a7cd23e22922ec9846) )
+ROM_END
+
ROM_START( stadhr96j )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD32_WORD( "ead00-4.2a", 0x000000, 0x80000, CRC(b0adfc39) SHA1(3094dfb7c7f8fa9d7e10d98dff8fb8aba285d710) )
- ROM_LOAD32_WORD( "ead01-4.2b", 0x000002, 0x80000, CRC(0b332820) SHA1(28b757fe529250711fcb82424ba63c222a9329b9) )
+ ROM_LOAD32_WORD( "ead00-4.2a", 0x000000, 0x80000, CRC(b0adfc39) SHA1(3094dfb7c7f8fa9d7e10d98dff8fb8aba285d710) ) /* WED SEP 5 00:00:00 JST 1996 (FINAL) */
+ ROM_LOAD32_WORD( "ead01-4.2b", 0x000002, 0x80000, CRC(0b332820) SHA1(28b757fe529250711fcb82424ba63c222a9329b9) ) /* JAPAN */
ROM_REGION( 0x1800000, "gfx1", 0 )
ROM_LOAD16_BYTE( "mcm-00.2e", 0x0000001, 0x400000, CRC(c1919c3c) SHA1(168000ff1512a147d7029ee8878dd70de680fb08) )
@@ -762,7 +785,7 @@ ROM_START( skullfng )
ROM_LOAD16_BYTE( "mch-05.11m",0x800000, 0x200000, CRC(ef0b54ba) SHA1(3be56c064ac81686096be5f31ad2aad948ba6701) )
ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "sh02-0.6h", 0x000000, 0x80000, CRC(0d3ae757) SHA1(480fc3855d330380b75a47a271f3571a59aee10c) ) /* Labeld SW 02-0, but same contents */
+ ROM_LOAD( "sw02-0.6h", 0x000000, 0x80000, CRC(0d3ae757) SHA1(480fc3855d330380b75a47a271f3571a59aee10c) )
ROM_REGION( 0x800000, "ymz", ROMREGION_ERASE00 )
ROM_LOAD( "mch-06.6a", 0x200000, 0x200000, CRC(b2efe4ae) SHA1(5a9dab74c2ba73a65e8f1419b897467804734fa2) )
@@ -869,6 +892,7 @@ DRIVER_INIT_MEMBER(deco_mlc_state,mlc)
GAME( 1995, avengrgs, 0, avengrgs, mlc, deco_mlc_state, avengrgs, ROT0, "Data East Corporation", "Avengers In Galactic Storm (US)", 0 )
GAME( 1995, avengrgsj,avengrgs, avengrgs, mlc, deco_mlc_state, avengrgs, ROT0, "Data East Corporation", "Avengers In Galactic Storm (Japan)", 0 )
GAME( 1996, stadhr96, 0, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT0, "Data East Corporation", "Stadium Hero '96 (World, EAJ)", MACHINE_IMPERFECT_GRAPHICS ) // Rom labels are EAJ ^^
+GAME( 1996, stadhr96u,stadhr96, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT0, "Data East Corporation", "Stadium Hero '96 (USA, EAH)", MACHINE_IMPERFECT_GRAPHICS ) // Rom labels are EAH ^^
GAME( 1996, stadhr96j,stadhr96, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT0, "Data East Corporation", "Stadium Hero '96 (Japan, EAD)", MACHINE_IMPERFECT_GRAPHICS ) // Rom labels are EAD (this isn't a Konami region code!)
GAME( 1996, skullfng, 0, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT270, "Data East Corporation", "Skull Fang (World)", 0 ) /* Version 1.13, Europe, Master 96.02.19 */
GAME( 1996, skullfngj,skullfng, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT270, "Data East Corporation", "Skull Fang (Japan)", 0 ) /* Version 1.09, Japan, Master 96.02.08 */
diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp
index 5c476bb9c1a..539b6768e03 100644
--- a/src/mame/drivers/decwritr.cpp
+++ b/src/mame/drivers/decwritr.cpp
@@ -291,15 +291,14 @@ 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);
- output_set_value("noscroll_led",1);
- output_set_value("basic_led", 1);
- output_set_value("hardcopy_led", 1);
- output_set_value("l1_led", 1);
- output_set_value("l2_led", 1);
+ output().set_value("online_led",1);
+ output().set_value("local_led", 0);
+ output().set_value("noscroll_led",1);
+ output().set_value("basic_led", 1);
+ output().set_value("hardcopy_led", 1);
+ output().set_value("l1_led", 1);
+ output().set_value("l2_led", 1);
#endif
char kbdcol[8];
// look up all 16 tags 'the slow way' but only once on reset
@@ -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 fc96684c779..b1884ab9265 100644
--- a/src/mame/drivers/deshoros.cpp
+++ b/src/mame/drivers/deshoros.cpp
@@ -135,7 +135,7 @@ WRITE8_MEMBER(destiny_state::display_w)
WRITE8_MEMBER(destiny_state::out_w)
{
// d0: coin blocker
- coin_lockout_w(machine(), 0, ~data & 1);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 1);
// d1: paper cutter 1
// d2: paper cutter 2
@@ -156,7 +156,7 @@ INPUT_CHANGED_MEMBER(destiny_state::coin_inserted)
// coincounter on coin insert
if (((int)(FPTR)param) == 0)
- coin_counter_w(machine(), 0, newval);
+ machine().bookkeeping().coin_counter_w(0, newval);
}
WRITE8_MEMBER(destiny_state::sound_w)
@@ -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/destroyr.cpp b/src/mame/drivers/destroyr.cpp
index 25e2d0367ca..026e057f14b 100644
--- a/src/mame/drivers/destroyr.cpp
+++ b/src/mame/drivers/destroyr.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -222,8 +222,8 @@ WRITE8_MEMBER(destroyr_state::misc_w)
m_wavemod = data & 0x10;
m_potmask[1] = data & 0x20;
- coin_lockout_w(machine(), 0, !m_attract);
- coin_lockout_w(machine(), 1, !m_attract);
+ machine().bookkeeping().coin_lockout_w(0, !m_attract);
+ machine().bookkeeping().coin_lockout_w(1, !m_attract);
}
@@ -247,10 +247,10 @@ WRITE8_MEMBER(destroyr_state::output_w)
else switch (offset & 7)
{
case 0:
- set_led_status(machine(), 0, data & 1);
+ output().set_led_value(0, data & 1);
break;
case 1:
- set_led_status(machine(), 1, data & 1); /* no second LED present on cab */
+ output().set_led_value(1, data & 1); /* no second LED present on cab */
break;
case 2:
/* bit 0 => songate */
diff --git a/src/mame/drivers/dgpix.cpp b/src/mame/drivers/dgpix.cpp
index c9bd8abe3e2..d3a3f8d270e 100644
--- a/src/mame/drivers/dgpix.cpp
+++ b/src/mame/drivers/dgpix.cpp
@@ -167,7 +167,7 @@ public:
required_device<cpu_device> m_maincpu;
required_ioport m_vblank;
- UINT32 *m_vram;
+ std::unique_ptr<UINT32[]> m_vram;
int m_vbuffer;
int m_flash_roms;
int m_old_vbuf;
@@ -309,8 +309,8 @@ WRITE32_MEMBER(dgpix_state::vbuffer_w)
WRITE32_MEMBER(dgpix_state::coin_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
READ32_MEMBER(dgpix_state::vblank_r)
@@ -376,9 +376,9 @@ INPUT_PORTS_END
void dgpix_state::video_start()
{
- m_vram = auto_alloc_array(machine(), UINT32, 0x40000*2/4);
+ m_vram = std::make_unique<UINT32[]>(0x40000*2/4);
- save_pointer(NAME(m_vram), 0x40000*2/4);
+ save_pointer(NAME(m_vram.get()), 0x40000*2/4);
}
UINT32 dgpix_state::screen_update_dgpix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp
new file mode 100644
index 00000000000..e5f74d458de
--- /dev/null
+++ b/src/mame/drivers/didact.cpp
@@ -0,0 +1,720 @@
+// license:BSD-3-Clause
+// copyright-holders:Joakim Larsson Edstrom
+/*
+ *__________________________________________________________________________________________________________
+ * The Didact Esselte 100 CPU board |
+ *__________________________________________________________________________________________________________|
+ *
+ * ___________________________________________________________________________________________________________ _____________________________________________________
+ * | 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 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
+ * was designed to be the big breakthough and was based on OS9 but lost the battle of the swedish schools to
+ * the Compis computer by TeleNova which was based on CP/M initially but later both lost to IBM PC.
+ *
+ * Misc links about the boards supported by this driver.
+ *-----------------------------------------------------
+ * 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, md6802v3, Esselte 100, Candela
+ * --------------------------------------------------------------------------
+ * - Add PCB layouts OK OK
+ * - Dump ROM:s, OK OK
+ * - Keyboard OK OK
+ * - Display/CRT OK OK
+ * - Clickable Artwork RQ RQ
+ * - Sound NA NA
+ * - Cassette i/f
+ * - Expansion bus
+ * - Expansion overlay
+ *
+ ****************************************************************************/
+
+#include "emu.h"
+#include "cpu/m6800/m6800.h"
+#include "machine/6821pia.h" // For all boards
+#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
+#define logerror printf
+#endif
+
+#ifdef _MSC_VER
+#define FUNCNAME __func__
+#else
+#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 didact_state
+{
+ 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 didact_state
+{
+ 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 didact_state
+{
+ 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")
+ ,m_digit3(*this, "digit3")
+ ,m_digit4(*this, "digit4")
+ ,m_digit5(*this, "digit5")
+ ,m_pia1(*this, "pia1")
+ ,m_pia2(*this, "pia2")
+ { }
+
+ required_device<m6800_cpu_device> m_maincpu;
+
+ // 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;
+ required_device<dm9368_device> m_digit3;
+ required_device<dm9368_device> m_digit4;
+ required_device<dm9368_device> m_digit5;
+
+ 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_READ_LINE_MEMBER( pia2_cb1_r );
+
+ virtual void machine_reset() override;
+ virtual void machine_start() override;
+protected:
+ required_device<pia6820_device> m_pia1;
+ required_device<pia6820_device> m_pia2;
+};
+
+READ8_MEMBER( mp68a_state::pia2_kbA_r )
+{
+ LOG(("--->%s\n", FUNCNAME));
+
+ return 0;
+}
+
+WRITE8_MEMBER( mp68a_state::pia2_kbA_w )
+{
+ UINT8 digit_nbr;
+
+#if VERBOSE > 1
+ static UINT8 display[] = {' ',' ',' ',' ',' ',' ',' ',' ','\0'};
+ const UINT8 hex[] = {' ','0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
+#endif
+
+ /* 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. */
+ digit_nbr = (data >> 4) & 0x07;
+
+ /* 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;
+ case 2: m_digit2->a_w(data & 0x0f); break;
+ case 3: m_digit3->a_w(data & 0x0f); break;
+ 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("Invalid digit index %d\n", digit_nbr);
+ }
+
+#if VERBOSE > 1
+ display[(data >> 4) & 0x07] = hex[data & 0x0f];
+ LOG(("--->%s(%02x) ==> %s\n", FUNCNAME, data, display));
+#endif
+}
+
+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;
+ if ((line = (m_line0 | m_line1)) != 0)
+ {
+ a012 = 8;
+ while (a012 > 0 && !(line & (1 << --a012)));
+ a012 += 8;
+ }
+ if ( a012 == 0 && (line = ((m_line2) | m_line3)) != 0)
+ {
+ a012 = 8;
+ while (a012 > 0 && !(line & (1 << --a012)));
+ }
+
+ pb = a012; // A0-A2 -> PB0-PB3
+
+ if (m_shift)
+ {
+ pb |= 0x80; // Set shift bit (PB7)
+ m_shift = 0; // Reset flip flop
+ output().set_led_value(m_led, m_shift);
+ LOG( ("SHIFT is released\n") );
+ }
+
+ LOG(("%02x\n", pb));
+
+ return pb;
+}
+
+WRITE8_MEMBER( mp68a_state::pia2_kbB_w )
+{
+ LOG(("--->%s(%02x)\n", FUNCNAME, data));
+}
+
+READ_LINE_MEMBER( mp68a_state::pia2_cb1_r )
+{
+ 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
+ if ((m_line0 | m_line1 | m_line2 | m_line3) != 0)
+ LOG(("%s()-->%02x %02x %02x %02x\n", FUNCNAME, m_line0, m_line1, m_line2, m_line3));
+#endif
+
+ 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"
+static ADDRESS_MAP_START( e100_map, AS_PROGRAM, 8, e100_state )
+ AM_RANGE(0x0000, 0x1fff) AM_RAM
+ 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", 0xd000)
+ADDRESS_MAP_END
+
+// This address map is traced from schema
+static ADDRESS_MAP_START( md6802_map, AS_PROGRAM, 8, md6802_state )
+ AM_RANGE(0x0000, 0x1fff) AM_RAM AM_MIRROR(0x1800)
+ AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("pia1", pia6821_device, read, write) AM_MIRROR(0x1ffc)
+ AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("pia2", pia6821_device, read, write) AM_MIRROR(0x1ffc)
+ AM_RANGE(0xe000, 0xffff) AM_ROM AM_MIRROR(0x1800) AM_REGION("maincpu", 0xe000)
+ADDRESS_MAP_END
+
+// This address map is traced from pcb
+static ADDRESS_MAP_START( mp68a_map, AS_PROGRAM, 8, mp68a_state )
+ AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0xf000)
+ AM_RANGE(0x0500, 0x0503) AM_DEVREADWRITE("pia1", pia6820_device, read, write) AM_MIRROR(0xf0fc)
+ AM_RANGE(0x0600, 0x0603) AM_DEVREADWRITE("pia2", pia6820_device, read, write) AM_MIRROR(0xf0fc)
+ AM_RANGE(0x0700, 0x07ff) AM_RAM AM_MIRROR(0xf000)
+ AM_RANGE(0x0800, 0x0bff) AM_ROM AM_MIRROR(0xf400) AM_REGION("maincpu", 0x0800)
+ADDRESS_MAP_END
+
+/* Input ports */
+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(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(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(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(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("LINE4") /* Special KEY ROW for reset and Shift/'*' keys */
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR('*')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F12)
+ PORT_BIT(0xf3, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+TIMER_DEVICE_CALLBACK_MEMBER(didact_state::scan_artwork)
+{
+ // 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(m_led, m_shift); // For mp68a only
+ if (m_reset == 0)
+ {
+ machine_reset();
+ }
+ m_reset = 1; // Inhibit multiple resets
+ }
+
+ // Poll the artwork SHIFT/* key
+ else if ( (m_io_line4->read() & 0x08) )
+ {
+ LOG( ("%s", !m_shift ? "SHIFT is set\n" : "") );
+ m_shift = 1;
+ 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)
+ MCFG_CPU_PROGRAM_MAP(e100_map)
+
+ /* devices */
+ MCFG_DEVICE_ADD("pia1", PIA6821, 0)
+ MCFG_DEVICE_ADD("pia2", PIA6821, 0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( md6802, md6802_state )
+ MCFG_CPU_ADD("maincpu", M6802, XTAL_4MHz)
+ MCFG_CPU_PROGRAM_MAP(md6802_map)
+ MCFG_DEFAULT_LAYOUT(layout_md6802)
+
+ /* 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 )
+ // 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 */
+ MCFG_DEVICE_ADD("pia1", PIA6820, 0)
+
+ /* PIA #2 Keyboard & Display 0x600-0x603 */
+ MCFG_DEVICE_ADD("pia2", PIA6820, 0)
+ /* --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 (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 */
+ /* --execution-wait for key loop-- */
+ /* 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))
+ MCFG_PIA_READPB_HANDLER(READ8(mp68a_state, pia2_kbB_r))
+ MCFG_PIA_READCB1_HANDLER(READLINE(mp68a_state, pia2_cb1_r))
+ MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line)) /* Not used by ROM. Combined trace to CPU IRQ with IRQB */
+ 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 */
+ MCFG_DEVICE_ADD("digit0", DM9368, 0)
+ MCFG_OUTPUT_INDEX(0)
+ MCFG_DEVICE_ADD("digit1", DM9368, 0)
+ MCFG_OUTPUT_INDEX(1)
+ MCFG_DEVICE_ADD("digit2", DM9368, 0)
+ MCFG_OUTPUT_INDEX(2)
+ MCFG_DEVICE_ADD("digit3", DM9368, 0)
+ MCFG_OUTPUT_INDEX(3)
+ MCFG_DEVICE_ADD("digit4", DM9368, 0)
+ MCFG_OUTPUT_INDEX(4)
+ MCFG_DEVICE_ADD("digit5", DM9368, 0)
+ 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
+ROM_START( e100 )
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD( "e100U201.bin", 0xd000, 0x0800, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
+ ROM_LOAD( "e100U202.bin", 0xd800, 0x0800, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
+ ROM_LOAD( "e100U203.bin", 0xe000, 0x0800, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
+ ROM_LOAD( "e100U204.bin", 0xe800, 0x0800, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
+ ROM_LOAD( "e100U205.bin", 0xf000, 0x0800, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
+ ROM_LOAD( "e100U206.bin", 0xf800, 0x0800, CRC(0ff53e1f) SHA1(52002ee22c032775dac383d408c44abe9244724f) )
+ROM_END
+
+// TODO split ROM image into proper ROM set
+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_END
+
+ROM_START( mp68a ) // ROM image from http://elektronikforumet.com/forum/viewtopic.php?f=2&t=79576&start=135#p1203640
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD( "didactA.bin", 0x0800, 0x0200, CRC(aa05e1ce) SHA1(9ce8223efd274045b43ceca3529e037e16e99fdf) )
+ ROM_LOAD( "didactB.bin", 0x0a00, 0x0200, CRC(592898dc) SHA1(2962f4817712cae97f3ab37b088fc73e66535ff8) )
+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_NO_SOUND_HW )
diff --git a/src/mame/drivers/digel804.cpp b/src/mame/drivers/digel804.cpp
index 9aeb5d4814d..8e56c443a0f 100644
--- a/src/mame/drivers/digel804.cpp
+++ b/src/mame/drivers/digel804.cpp
@@ -332,12 +332,12 @@ WRITE8_MEMBER( digel804_state::op46 )
//popmessage("LEDS: %s %s %s Func: %s%d\n", (data&0x80)?"INPUT":"-----", (data&0x40)?"BUSY":"----", (data&0x20)?"ERROR":"-----", (data&0x10)?"None":"", (data&0x10)?-1:(~data&0xF));
//fprintf("LEDS: %s %s %s Func: %s%d\n", (data&0x80)?"INPUT":"-----", (data&0x40)?"BUSY":"----", (data&0x20)?"ERROR":"-----", (data&0x10)?"None":"", (data&0x10)?-1:(~data&0xF));
- output_set_value("input_led", BIT(data,7));
- output_set_value("busy_led", BIT(data,6));
- output_set_value("error_led", BIT(data,5));
+ output().set_value("input_led", BIT(data,7));
+ output().set_value("busy_led", BIT(data,6));
+ output().set_value("error_led", BIT(data,5));
for(int i=0; i<16; i++)
- output_set_indexed_value("func_led", i, (!(data & 0x10) && ((~data & 0x0f) == i)) ? 1 : 0);
+ output().set_indexed_value("func_led", i, (!(data & 0x10) && ((~data & 0x0f) == i)) ? 1 : 0);
}
WRITE8_MEMBER( digel804_state::op47 ) // eprom timing/power and control write
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/discoboy.cpp b/src/mame/drivers/discoboy.cpp
index 41f7a720071..f127c4554e2 100644
--- a/src/mame/drivers/discoboy.cpp
+++ b/src/mame/drivers/discoboy.cpp
@@ -95,7 +95,6 @@ public:
virtual void video_start() override;
UINT32 screen_update_discoboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
- void discoboy_setrombank( UINT8 data );
DECLARE_WRITE_LINE_MEMBER(yunsung8_adpcm_int);
required_device<cpu_device> m_maincpu;
required_device<msm5205_device> m_msm;
diff --git a/src/mame/drivers/djboy.cpp b/src/mame/drivers/djboy.cpp
index 0b0fdfb7045..ae0efeed0ee 100644
--- a/src/mame/drivers/djboy.cpp
+++ b/src/mame/drivers/djboy.cpp
@@ -222,8 +222,8 @@ WRITE8_MEMBER(djboy_state::cpu1_bankswitch_w)
WRITE8_MEMBER(djboy_state::coin_count_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
/******************************************************************************/
diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp
index aa47b3e4f02..3037b06723c 100644
--- a/src/mame/drivers/djmain.cpp
+++ b/src/mame/drivers/djmain.cpp
@@ -291,10 +291,10 @@ WRITE32_MEMBER(djmain_state::light_ctrl_1_w)
{
if (ACCESSING_BITS_16_31)
{
- output_set_value("right-red-hlt", !(data & 0x08000000)); // Right red HIGHLIGHT
- output_set_value("left-red-hlt", !(data & 0x04000000)); // Left red HIGHLIGHT
- output_set_value("left-blue-hlt", !(data & 0x02000000)); // Left blue HIGHLIGHT
- output_set_value("right-blue-hlt", !(data & 0x00200000)); // Right blue HIGHLIGHT
+ output().set_value("right-red-hlt", !(data & 0x08000000)); // Right red HIGHLIGHT
+ output().set_value("left-red-hlt", !(data & 0x04000000)); // Left red HIGHLIGHT
+ output().set_value("left-blue-hlt", !(data & 0x02000000)); // Left blue HIGHLIGHT
+ output().set_value("right-blue-hlt", !(data & 0x00200000)); // Right blue HIGHLIGHT
}
}
@@ -302,11 +302,11 @@ WRITE32_MEMBER(djmain_state::light_ctrl_2_w)
{
if (ACCESSING_BITS_16_31)
{
- output_set_value("left-ssr", !!(data & 0x08000000)); // SSR
- output_set_value("right-ssr", !!(data & 0x08000000)); // SSR
- set_led_status(machine(), 0, data & 0x00010000); // 1P START
- set_led_status(machine(), 1, data & 0x00020000); // 2P START
- set_led_status(machine(), 2, data & 0x00040000); // EFFECT
+ output().set_value("left-ssr", !!(data & 0x08000000)); // SSR
+ output().set_value("right-ssr", !!(data & 0x08000000)); // SSR
+ output().set_led_value(0, data & 0x00010000); // 1P START
+ output().set_led_value(1, data & 0x00020000); // 2P START
+ output().set_led_value(2, data & 0x00040000); // EFFECT
}
}
@@ -1364,9 +1364,9 @@ void djmain_state::machine_reset()
sndram_set_bank();
/* reset LEDs */
- set_led_status(machine(), 0, 1);
- set_led_status(machine(), 1, 1);
- set_led_status(machine(), 2, 1);
+ output().set_led_value(0, 1);
+ output().set_led_value(1, 1);
+ output().set_led_value(2, 1);
}
diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp
index e6d81e7d2a6..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));
}
@@ -578,7 +576,7 @@ WRITE8_MEMBER(dkong_state::p8257_ctl_w)
WRITE8_MEMBER(dkong_state::dkong3_coin_counter_w)
{
- coin_counter_w(machine(), offset, data & 0x01);
+ machine().bookkeeping().coin_counter_w(offset, data & 0x01);
}
WRITE8_MEMBER(dkong_state::p8257_drq_w)
@@ -596,7 +594,7 @@ READ8_MEMBER(dkong_state::dkong_in2_r)
UINT8 r;
r = (ioport("IN2")->read() & 0xBF) | (mcustatus << 6);
- coin_counter_w(machine(), offset, r >> 7);
+ machine().bookkeeping().coin_counter_w(offset, r >> 7);
if (r & 0x10)
r = (r & ~0x10) | 0x80; /* service ==> coin */
return r;
@@ -609,7 +607,7 @@ READ8_MEMBER(dkong_state::dkongjr_in2_r)
UINT8 r;
r = (ioport("IN2")->read() & 0xBF) | 0x40;
- coin_counter_w(machine(), offset, r >> 7);
+ machine().bookkeeping().coin_counter_w(offset, r >> 7);
if (r & 0x10)
r = (r & ~0x10) | 0x80; /* service ==> coin */
return r;
@@ -1880,7 +1878,7 @@ MACHINE_CONFIG_END
*
*************************************/
-ROM_START( radarscp )
+ROM_START( radarscp ) /* unclear which boardset this comes from; there existed a 5 pcb stack with trs-03 (no voice) sound board on top, and a 4 board as well as a 2 board pcb stack */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "trs2c5fc", 0x0000, 0x1000, CRC(40949e0d) SHA1(94717b9d027600e25b863e89900df41325875961) )
ROM_LOAD( "trs2c5gc", 0x1000, 0x1000, CRC(afa8c49f) SHA1(25880e9dcf2dc8862f7f3c38687f01dfe2424293) )
@@ -1913,7 +1911,7 @@ ROM_START( radarscp )
ROM_LOAD( "rs2-v.1hc", 0x0200, 0x0100, CRC(1b828315) SHA1(00c9f8c5ae86b68d38c66f9071b5f1ef421c1005) ) /* character color codes on a per-column basis */
ROM_END
-ROM_START( radarscp1 )
+ROM_START( radarscp1 ) /* TRS01 5-pcb stack with TRS01 "Voice" pcb on top containing the sound cpu and the m58817 speech chip and the m58819 speech serial rom emulator chip */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "trs01_5f", 0x0000, 0x1000, CRC(40949e0d) SHA1(94717b9d027600e25b863e89900df41325875961) )
ROM_LOAD( "trs01_5g", 0x1000, 0x1000, CRC(afa8c49f) SHA1(25880e9dcf2dc8862f7f3c38687f01dfe2424293) )
@@ -1922,12 +1920,12 @@ ROM_START( radarscp1 )
/* space for diagnostic ROM */
ROM_REGION( 0x1800, "soundcpu", 0 ) /* sound */
- ROM_LOAD( "trs015aa.bin", 0x0000, 0x0800, CRC(5166554c) SHA1(00bf501ca448929f6187598da6fdbc1ea488745a) )
+ ROM_LOAD( "trs-s__5a.5a", 0x0000, 0x0800, CRC(5166554c) SHA1(00bf501ca448929f6187598da6fdbc1ea488745a) ) // 5A on the 'voice' board on top of the 5-pcb stack; eprom label is "TRS-S ['S' overstrikes a '1'] // 5A [stamped '8' or 'a' in red ink]"
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x0800, "m58819", 0 ) /* speech rom */
- ROM_LOAD( "trs014ha.bin", 0x0000, 0x0800, CRC(d1f1b48c) SHA1(ee5584368d2e9f7bde271f5004585b53f5ff5c3f) ) /* speech rom */
+ ROM_LOAD( "trs-s__4h.4h", 0x0000, 0x0800, CRC(d1f1b48c) SHA1(ee5584368d2e9f7bde271f5004585b53f5ff5c3f) ) // 4H on the 'voice' board on top of the 5-pcb stack; eprom label is "TRS-S ['S' overstrikes a '1'] // 4H [stamped '8' or 'a' in red ink]"
ROM_REGION( 0x1000, "gfx1", 0 )
ROM_LOAD( "trs01v3f", 0x0000, 0x0800, CRC(f095330e) SHA1(dd3de744f28ff108630d3336bd246d3323fa34af) )
@@ -3271,10 +3269,9 @@ DRIVER_INIT_MEMBER(dkong_state,strtheat)
DRIVER_INIT_MEMBER(dkong_state,dkongx)
{
- UINT8 *decrypted;
address_space &space = m_maincpu->space(AS_PROGRAM);
- decrypted = auto_alloc_array(machine(), UINT8, 0x10000);
+ m_decrypted = std::make_unique<UINT8[]>(0x10000);
m_maincpu->space(AS_PROGRAM).install_read_bank(0x0000, 0x5fff, "bank1" );
m_maincpu->space(AS_PROGRAM).install_read_bank(0x8000, 0xffff, "bank2" );
@@ -3284,11 +3281,11 @@ DRIVER_INIT_MEMBER(dkong_state,dkongx)
space.install_read_handler(0xc800, 0xc800, read8_delegate(FUNC(dkong_state::braze_eeprom_r),this));
space.install_write_handler(0xc800, 0xc800, write8_delegate(FUNC(dkong_state::braze_eeprom_w),this));
- braze_decrypt_rom(decrypted);
+ braze_decrypt_rom(m_decrypted.get());
- membank("bank1")->configure_entries(0, 2, &decrypted[0], 0x8000);
+ membank("bank1")->configure_entries(0, 2, m_decrypted.get(), 0x8000);
membank("bank1")->set_entry(0);
- membank("bank2")->configure_entries(0, 2, &decrypted[0], 0x8000);
+ membank("bank2")->configure_entries(0, 2, m_decrypted.get(), 0x8000);
membank("bank2")->set_entry(0);
}
diff --git a/src/mame/drivers/dlair.cpp b/src/mame/drivers/dlair.cpp
index 54d89029efb..016e71a5358 100644
--- a/src/mame/drivers/dlair.cpp
+++ b/src/mame/drivers/dlair.cpp
@@ -265,7 +265,7 @@ WRITE8_MEMBER(dlair_state::misc_w)
UINT8 diff = data ^ m_last_misc;
m_last_misc = data;
- coin_counter_w(machine(), 0, (~data >> 4) & 1);
+ machine().bookkeeping().coin_counter_w(0, (~data >> 4) & 1);
/* on bit 5 going low, push the data out to the laserdisc player */
if ((diff & 0x20) && !(data & 0x20))
@@ -291,8 +291,8 @@ WRITE8_MEMBER(dlair_state::dleuro_misc_w)
UINT8 diff = data ^ m_last_misc;
m_last_misc = data;
- coin_counter_w(machine(), 1, (~data >> 3) & 1);
- coin_counter_w(machine(), 0, (~data >> 4) & 1);
+ machine().bookkeeping().coin_counter_w(1, (~data >> 3) & 1);
+ machine().bookkeeping().coin_counter_w(0, (~data >> 4) & 1);
/* on bit 5 going low, push the data out to the laserdisc player */
if ((diff & 0x20) && !(data & 0x20))
@@ -305,13 +305,13 @@ WRITE8_MEMBER(dlair_state::dleuro_misc_w)
WRITE8_MEMBER(dlair_state::led_den1_w)
{
- output_set_digit_value(0 + (offset & 7), led_map[data & 0x0f]);
+ output().set_digit_value(0 + (offset & 7), led_map[data & 0x0f]);
}
WRITE8_MEMBER(dlair_state::led_den2_w)
{
- output_set_digit_value(8 + (offset & 7), led_map[data & 0x0f]);
+ output().set_digit_value(8 + (offset & 7), led_map[data & 0x0f]);
}
diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp
index cbe084fe0f4..8940c1263fa 100644
--- a/src/mame/drivers/dmv.cpp
+++ b/src/mame/drivers/dmv.cpp
@@ -202,7 +202,7 @@ WRITE8_MEMBER(dmv_state::leds_w)
*/
for(int i=0; i<8; i++)
- output_set_led_value(8-i, BIT(data, i));
+ output().set_led_value(8-i, BIT(data, i));
}
READ8_MEMBER(dmv_state::ramsel_r)
diff --git a/src/mame/drivers/dolphunk.cpp b/src/mame/drivers/dolphunk.cpp
index 8ee69d20042..329c14b446f 100644
--- a/src/mame/drivers/dolphunk.cpp
+++ b/src/mame/drivers/dolphunk.cpp
@@ -127,7 +127,7 @@ WRITE_LINE_MEMBER( dauphin_state::cass_w )
WRITE8_MEMBER( dauphin_state::port00_w )
{
- output_set_digit_value(offset, data);
+ output().set_digit_value(offset, data);
}
WRITE8_MEMBER( dauphin_state::port06_w )
diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp
index 11eac2c0f8e..9e439ded0a1 100644
--- a/src/mame/drivers/dooyong.cpp
+++ b/src/mame/drivers/dooyong.cpp
@@ -69,12 +69,7 @@ Pollux:
Many (all? at least pollux, primella and flying tiger) use some kind of
banked palette ram. Bit 1 at address 0xf008 controls banking (both palettes
are almost identical, except for much darker BG layer colors).
-There's also significant gfx problem on title screen - gfx over left pilot's
-shoulder (right part of the screen) should be - according to pics from flyer -
-blue with orange/red flame (palette 2 instead palette 1). Also some explosions
-and stars should be red instead blue (also pal 2 instead pal 1). I have no
-idea how to fix it without breaking other parts of game. Title screen should
-be verified on real PCB.
+
***************************************************************************/
@@ -95,7 +90,7 @@ WRITE8_MEMBER(dooyong_z80_state::bankswitch_w)
MACHINE_START_MEMBER(dooyong_z80_state, cpu_z80)
{
- membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
+ membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000);
}
WRITE8_MEMBER(dooyong_z80_state::flip_screen_w)
@@ -149,7 +144,7 @@ static ADDRESS_MAP_START( pollux_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state )
AM_RANGE(0xf010, 0xf010) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xf018, 0xf01f) AM_WRITE(bgscroll_w)
AM_RANGE(0xf020, 0xf027) AM_WRITE(fgscroll_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(paletteram_flytiger_w)
+ AM_RANGE(0xf800, 0xffff) AM_READWRITE(paletteram_flytiger_r, paletteram_flytiger_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( gulfstrm_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state )
@@ -206,7 +201,7 @@ static ADDRESS_MAP_START( flytiger_map, AS_PROGRAM, 8, dooyong_z80_state )
AM_RANGE(0xe020, 0xe020) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xe030, 0xe037) AM_WRITE(bgscroll_w)
AM_RANGE(0xe040, 0xe047) AM_WRITE(fgscroll_w)
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_flytiger_w)
+ AM_RANGE(0xe800, 0xefff) AM_READWRITE(paletteram_flytiger_r, paletteram_flytiger_w)
AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
ADDRESS_MAP_END
@@ -550,7 +545,7 @@ static INPUT_PORTS_START( pollux )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") // palette cycle effects need this to work (read near code that also writes to the output ports) - currently can't see them due to wrong palette selection tho
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -567,6 +562,9 @@ static INPUT_PORTS_START( flytiger )
PORT_DIPNAME( 0x40, 0x40, "Auto Fire" ) PORT_DIPLOCATION("SWB:7") /* Mainly (only?) for 3-way charge */
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+
+ PORT_MODIFY("SYSTEM")
+// PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") // allows title screen + ending screen colours to cycle (but I'm not sure they're meant to, reference shots suggest not, maybe a debug port?)
INPUT_PORTS_END
static INPUT_PORTS_START( sadari )
@@ -731,17 +729,17 @@ static const gfx_layout popbingo_tilelayout =
};
static GFXDECODE_START( lastday )
- GFXDECODE_ENTRY( "gfx1", 0, lastday_charlayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16 )
- GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 768, 16 )
- GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 512, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, lastday_charlayout, 0, 16+64 )
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16+64 )
+ GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 768, 16+64 )
+ GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 512, 16+64 )
GFXDECODE_END
static GFXDECODE_START( flytiger )
- GFXDECODE_ENTRY( "gfx1", 0, lastday_charlayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16 )
- GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 768, 16 )
- GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 512, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, lastday_charlayout, 0, 16+64 )
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16+64 )
+ GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 768, 16+64 )
+ GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 512, 32+64 )
GFXDECODE_END
static GFXDECODE_START( bluehawk )
@@ -855,7 +853,7 @@ static MACHINE_CONFIG_START( lastday, dooyong_z80_ym2203_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_ym2203_state, screen_update_lastday)
@@ -936,7 +934,7 @@ static MACHINE_CONFIG_START( pollux, dooyong_z80_ym2203_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_ym2203_state, screen_update_pollux)
@@ -970,7 +968,7 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_z80_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_state, screen_update_bluehawk)
@@ -1004,7 +1002,7 @@ static MACHINE_CONFIG_START( flytiger, dooyong_z80_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_state, screen_update_flytiger)
@@ -1036,7 +1034,7 @@ static MACHINE_CONFIG_START( primella, dooyong_z80_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 0*8, 32*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_z80_state, screen_update_primella)
@@ -1080,7 +1078,7 @@ static MACHINE_CONFIG_START( rshark, dooyong_68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_68k_state, screen_update_rshark)
@@ -1112,7 +1110,7 @@ static MACHINE_CONFIG_START( superx, dooyong_68k_state ) // dif mem map
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_68k_state, screen_update_rshark)
@@ -1144,7 +1142,7 @@ static MACHINE_CONFIG_START( popbingo, dooyong_68k_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 )
MCFG_SCREEN_UPDATE_DRIVER(dooyong_68k_state, screen_update_popbingo)
@@ -1168,10 +1166,9 @@ MACHINE_CONFIG_END
***************************************************************************/
ROM_START( lastday ) /* 90030003 PCB */
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "lday3.s5", 0x00000, 0x10000, CRC(a06dfb1e) SHA1(c6220eda8c01d55862700e369db7291dbbedc8c8) )
- ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
- ROM_LOAD( "4.u5", 0x20000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
+ ROM_LOAD( "4.u5", 0x10000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "1.d3", 0x0000, 0x8000, CRC(dd4316fd) SHA1(496e6657bb76d91f488a2464d1af1be095ab9105) ) /* empty */
@@ -1204,10 +1201,9 @@ ROM_START( lastday ) /* 90030003 PCB */
ROM_LOAD16_BYTE( "13.r14", 0x00001, 0x10000, CRC(6bdbd887) SHA1(a54f26f9ddd72b8b8f7a030610c1c4a5f94a3358) )ROM_END
ROM_START( lastdaya ) /* 90030003 PCB */
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "lday3.s5", 0x00000, 0x10000, CRC(a06dfb1e) SHA1(c6220eda8c01d55862700e369db7291dbbedc8c8) )
- ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
- ROM_LOAD( "4.u5", 0x20000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
+ ROM_LOAD( "4.u5", 0x10000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "e1.d3", 0x0000, 0x8000, CRC(ce96e106) SHA1(5ef1f221618abd757e02db79c3d7016100f30c07) ) /* empty */
@@ -1241,10 +1237,9 @@ ROM_START( lastdaya ) /* 90030003 PCB */
ROM_END
ROM_START( ddaydoo ) /* 90030003 PCB */
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "3.s5", 0x00000, 0x10000, CRC(7817d4f3) SHA1(b85db234c04f248fd2927a2224380783780673f5)) /* closest to 'lastday' set */
- ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
- ROM_LOAD( "4.u5", 0x20000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
+ ROM_LOAD( "4.u5", 0x10000, 0x10000, CRC(70961ea6) SHA1(245d3da67abb4a511a024f030de461b9a2b4804e) ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "1.d3", 0x0000, 0x8000, CRC(dd4316fd) SHA1(496e6657bb76d91f488a2464d1af1be095ab9105) ) /* empty */
@@ -1278,9 +1273,8 @@ ROM_START( ddaydoo ) /* 90030003 PCB */
ROM_END
ROM_START( gulfstrm )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "1.l4", 0x00000, 0x20000, CRC(59e0478b) SHA1(dd6e48c6e91ddb087d20336eab79bbadd968d4b1) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
@@ -1315,9 +1309,8 @@ ROM_START( gulfstrm )
ROM_END
ROM_START( gulfstrma )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "1.bin", 0x00000, 0x20000, CRC(d04fb06b) SHA1(bdf09ab692f90e3dea815605998f75b6478c8047) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
@@ -1352,9 +1345,8 @@ ROM_START( gulfstrma )
ROM_END
ROM_START( gulfstrmb )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "1.l4", 0x00000, 0x20000, CRC(aabd95a5) SHA1(f1d3ade952e96b288e2cd4b172931862b16b4af9) ) // sldh
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
@@ -1389,9 +1381,8 @@ ROM_START( gulfstrmb )
ROM_END
ROM_START( gulfstrmm )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "18.l4", 0x00000, 0x20000, CRC(d38e2667) SHA1(3690d708c7be85871d6bb32a774d711a30782126) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "3.c5", 0x00000, 0x10000, CRC(c029b015) SHA1(86f8d4f6560cb99e25e8e8baf72dde743a7b9c4c) )
@@ -1426,9 +1417,8 @@ ROM_START( gulfstrmm )
ROM_END
ROM_START( pollux )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "pollux2.bin", 0x00000, 0x10000, CRC(45e10d4e) SHA1(ece25fcc0acda9a8cfc00f3132a87469037b5a4e) )
- ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "pollux3.bin", 0x00000, 0x10000, CRC(85a9dc98) SHA1(a349bfb05d870ba920469066ce5c007363aca348) )
@@ -1458,9 +1448,8 @@ ROM_START( pollux )
ROM_END
ROM_START( polluxa )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "dooyong2.bin", 0x00000, 0x10000, CRC(e4ea8dbd) SHA1(19652261981672fae896e3065f1f5078f7ae93b6) )
- ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "pollux3.bin", 0x00000, 0x10000, CRC(85a9dc98) SHA1(a349bfb05d870ba920469066ce5c007363aca348) )
@@ -1490,9 +1479,8 @@ ROM_START( polluxa )
ROM_END
ROM_START( polluxa2 )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "dooyong16_tms27c512.bin", 0x00000, 0x10000, CRC(dffe5173) SHA1(fec9b8198ae8a1b7c9b798b9317ed6d986c11e35) )
- ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "pollux3.bin", 0x00000, 0x10000, CRC(85a9dc98) SHA1(a349bfb05d870ba920469066ce5c007363aca348) )
@@ -1522,9 +1510,8 @@ ROM_START( polluxa2 )
ROM_END
ROM_START( polluxn )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "polluxntc_2.3g", 0x00000, 0x10000, CRC(96d3e3af) SHA1(fc0e7a60bee0ed74c28d403a97a852eb677f8189) )
- ROM_RELOAD( 0x10000, 0x10000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "polluxntc_3.6t", 0x00000, 0x10000, CRC(85a9dc98) SHA1(a349bfb05d870ba920469066ce5c007363aca348) )
@@ -1555,9 +1542,8 @@ ROM_END
ROM_START( bluehawk )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "rom19", 0x00000, 0x20000, CRC(24149246) SHA1(458fd429a895353b8636c717dcd58d57b8723012) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "rom1", 0x00000, 0x10000, CRC(eef22920) SHA1(a3295ae7524df8c4d00ac3da422bbf66c959bf4f) )
@@ -1583,9 +1569,8 @@ ROM_START( bluehawk )
ROM_END
ROM_START( bluehawkn )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "rom19", 0x00000, 0x20000, CRC(24149246) SHA1(458fd429a895353b8636c717dcd58d57b8723012) ) // ROM2
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "rom1", 0x00000, 0x10000, CRC(eef22920) SHA1(a3295ae7524df8c4d00ac3da422bbf66c959bf4f) )
@@ -1680,9 +1665,8 @@ Top Board
*/
ROM_START( flytiger )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "1.3c", 0x00000, 0x20000, CRC(2d634c8e) SHA1(012ad31c0edc67d727d216e2ede321c1d1f27226) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "3.6p", 0x00000, 0x10000, CRC(d238df5e) SHA1(428fd7abd78238089c0c0fd73de57102f4f65a74))
@@ -1708,9 +1692,8 @@ ROM_START( flytiger )
ROM_END
ROM_START( flytigera ) // alt pcb type
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "ftiger_1.3c", 0x00000, 0x20000, CRC(02acd1ce) SHA1(48167a317d3785bfe688bdda01ff344e72d3b138) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "ftiger_11.6p", 0x00000, 0x10000, CRC(d238df5e) SHA1(428fd7abd78238089c0c0fd73de57102f4f65a74))
@@ -1742,9 +1725,8 @@ ROM_START( flytigera ) // alt pcb type
ROM_END
ROM_START( sadari )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "1.3d", 0x00000, 0x20000, CRC(bd953217) SHA1(6e230103ea01744761ab8a194d0dde6921bee92e) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "3.6r", 0x0000, 0x10000, CRC(4786fca6) SHA1(b2347e2f6bbe3dd9d1cc8d8a4af40e7997d5ab74) )
@@ -1771,9 +1753,8 @@ ROM_START( sadari )
ROM_END
ROM_START( gundl94 )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "gd94_001.d3", 0x00000, 0x20000, CRC(3a5cc045) SHA1(182743458c36bb6254a39cf9a371fd2b0d72d145) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "gd94_003.r6", 0x0000, 0x10000, CRC(ea41c4ad) SHA1(e39e0507f4f370432ef0ca11dbecef176716cec4) )
@@ -1804,9 +1785,8 @@ ROM_START( gundl94 )
ROM_END
ROM_START( primella )
- ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + 128k for banks */
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 128k for banks */
ROM_LOAD( "1_d3.bin", 0x00000, 0x20000, CRC(82fea4e0) SHA1(3603c0edda29868d5e282465880e1ad341365f6f) )
- ROM_RELOAD( 0x10000, 0x20000 ) /* banked at 0x8000-0xbfff */
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound */
ROM_LOAD( "gd94_003.r6", 0x0000, 0x10000, CRC(ea41c4ad) SHA1(e39e0507f4f370432ef0ca11dbecef176716cec4) )
@@ -2081,13 +2061,13 @@ GAME( 1991, gulfstrma,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "D
GAME( 1991, gulfstrmb,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, gulfstrmm,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong (Media Shoji license)", "Gulf Storm (Media Shoji)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, pollux, 0, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1991, polluxa, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1991, polluxa2, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) /* Original Dooyong Board distributed by TCH */
-GAME( 1991, polluxn, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong (NTC / Atlus license)", "Pollux (Japan, NTC license, distributed by Atlus)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, pollux, 0, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, polluxa, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, polluxa2, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 3)", MACHINE_SUPPORTS_SAVE ) /* Original Dooyong Board distributed by TCH */
+GAME( 1991, polluxn, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong (NTC / Atlus license)", "Pollux (Japan, NTC license, distributed by Atlus)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, flytiger, 0, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1992, flytigera,flytiger, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, flytiger, 0, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, flytigera,flytiger, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1993, bluehawk, 0, bluehawk, bluehawk, driver_device, 0, ROT270, "Dooyong", "Blue Hawk", MACHINE_SUPPORTS_SAVE )
GAME( 1993, bluehawkn,bluehawk, bluehawk, bluehawk, driver_device, 0, ROT270, "Dooyong (NTC license)", "Blue Hawk (NTC)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dragrace.cpp b/src/mame/drivers/dragrace.cpp
index fc5d0f6e5a7..5e53f685474 100644
--- a/src/mame/drivers/dragrace.cpp
+++ b/src/mame/drivers/dragrace.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -29,8 +29,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(dragrace_state::dragrace_frame_callback)
case 0x10: m_gear[i] = 0; break;
}
}
- output_set_value("P1gear", m_gear[0]);
- output_set_value("P2gear", m_gear[1]);
+ output().set_value("P1gear", m_gear[0]);
+ output().set_value("P2gear", m_gear[1]);
/* watchdog is disabled during service mode */
machine().watchdog_enable(ioport("IN0")->read() & 0x20);
@@ -70,8 +70,8 @@ void dragrace_state::dragrace_update_misc_flags( address_space &space )
* 0x091f = set Player 2 Start Lamp 0x80000000
* 0x0938 = clear 0x0918 - 0x091f
*/
- set_led_status(machine(), 0, m_misc_flags & 0x00008000);
- set_led_status(machine(), 1, m_misc_flags & 0x80000000);
+ output().set_led_value(0, m_misc_flags & 0x00008000);
+ output().set_led_value(1, m_misc_flags & 0x80000000);
m_discrete->write(space, DRAGRACE_MOTOR1_DATA, ~m_misc_flags & 0x0000001f); // Speed1 data*
m_discrete->write(space, DRAGRACE_EXPLODE1_EN, (m_misc_flags & 0x00000020) ? 1: 0); // Explosion1 enable
@@ -90,8 +90,8 @@ void dragrace_state::dragrace_update_misc_flags( address_space &space )
m_discrete->write(space, DRAGRACE_HITONE_EN, (m_misc_flags & 0x20000000) ? 1: 0); // HiTone enable
// the tachometers are driven from the same frequency generator that creates the engine sound
- output_set_value("tachometer", ~m_misc_flags & 0x0000001f);
- output_set_value("tachometer2", (~m_misc_flags & 0x001f0000) >> 0x10);
+ output().set_value("tachometer", ~m_misc_flags & 0x0000001f);
+ output().set_value("tachometer2", (~m_misc_flags & 0x001f0000) >> 0x10);
}
WRITE8_MEMBER(dragrace_state::dragrace_misc_w)
diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp
index 7f4d26beb9b..85725dd36ab 100644
--- a/src/mame/drivers/dreamwld.cpp
+++ b/src/mame/drivers/dreamwld.cpp
@@ -122,7 +122,7 @@ public:
required_shared_ptr<UINT32> m_vregs;
required_shared_ptr<UINT32> m_workram;
- UINT16* m_lineram16;
+ std::unique_ptr<UINT16[]> m_lineram16;
DECLARE_READ16_MEMBER(lineram16_r) { return m_lineram16[offset]; }
DECLARE_WRITE16_MEMBER(lineram16_w) { COMBINE_DATA(&m_lineram16[offset]); }
@@ -133,8 +133,8 @@ public:
int m_tilebank[2];
int m_tilebankold[2];
- UINT32* m_spritebuf1;
- UINT32* m_spritebuf2;
+ std::unique_ptr<UINT32[]> m_spritebuf1;
+ std::unique_ptr<UINT32[]> m_spritebuf2;
/* misc */
int m_protindex;
@@ -161,8 +161,8 @@ public:
void dreamwld_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
gfx_element *gfx = m_gfxdecode->gfx(0);
- UINT32 *source = m_spritebuf1;
- UINT32 *finish = m_spritebuf1 + 0x1000 / 4;
+ UINT32 *source = m_spritebuf1.get();
+ UINT32 *finish = m_spritebuf1.get() + 0x1000 / 4;
UINT16 *redirect = (UINT16 *)memregion("spritelut")->base();
int xoffset = 4;
@@ -271,11 +271,11 @@ void dreamwld_state::video_start()
m_bg2_tilemap->set_scroll_rows(64*16); // line scrolling
m_bg2_tilemap->set_scroll_cols(1);
- m_spritebuf1 = auto_alloc_array(machine(), UINT32, 0x2000 / 4);
- m_spritebuf2 = auto_alloc_array(machine(), UINT32, 0x2000 / 4);
+ m_spritebuf1 = std::make_unique<UINT32[]>(0x2000 / 4);
+ m_spritebuf2 = std::make_unique<UINT32[]>(0x2000 / 4);
- m_lineram16 = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x400 / 2);
- save_pointer(NAME(m_lineram16), 0x400/2);
+ m_lineram16 = make_unique_clear<UINT16[]>(0x400 / 2);
+ save_pointer(NAME(m_lineram16.get()), 0x400/2);
}
@@ -284,8 +284,8 @@ void dreamwld_state::screen_eof_dreamwld(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_spritebuf2, m_spritebuf1, 0x2000);
- memcpy(m_spritebuf1, m_spriteram, 0x2000);
+ memcpy(m_spritebuf2.get(), m_spritebuf1.get(), 0x2000);
+ memcpy(m_spritebuf1.get(), m_spriteram, 0x2000);
}
}
diff --git a/src/mame/drivers/drgnmst.cpp b/src/mame/drivers/drgnmst.cpp
index 357477e03c4..4ecbee712d5 100644
--- a/src/mame/drivers/drgnmst.cpp
+++ b/src/mame/drivers/drgnmst.cpp
@@ -45,9 +45,9 @@ Notes:
WRITE16_MEMBER(drgnmst_state::drgnmst_coin_w)
{
- coin_counter_w(machine(), 0, data & 0x100);
- coin_lockout_w(machine(), 0, ~data & 0x400);
- coin_lockout_w(machine(), 1, ~data & 0x800);
+ machine().bookkeeping().coin_counter_w(0, data & 0x100);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x400);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x800);
}
WRITE16_MEMBER(drgnmst_state::drgnmst_snd_command_w)
diff --git a/src/mame/drivers/dunhuang.cpp b/src/mame/drivers/dunhuang.cpp
index 438affcd623..44c44c38510 100644
--- a/src/mame/drivers/dunhuang.cpp
+++ b/src/mame/drivers/dunhuang.cpp
@@ -121,7 +121,6 @@ public:
DECLARE_READ8_MEMBER(dunhuang_service_r);
DECLARE_READ8_MEMBER(dunhuang_input_r);
DECLARE_WRITE8_MEMBER(dunhuang_rombank_w);
- DECLARE_WRITE8_MEMBER(dunhuang_82_w);
DECLARE_READ8_MEMBER(dunhuang_dsw_r);
TILE_GET_INFO_MEMBER(get_tile_info);
TILE_GET_INFO_MEMBER(get_tile_info2);
@@ -480,7 +479,7 @@ WRITE8_MEMBER(dunhuang_state::dunhuang_rombank_w)
membank("bank1")->set_entry(((data >> 2) & 0x7));
// COIN OUT: data & 0x20
- coin_counter_w(machine(), 0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x40);
m_hopper = data & 0x80;
}
diff --git a/src/mame/drivers/dvk_kcgd.cpp b/src/mame/drivers/dvk_kcgd.cpp
index a95755fac8a..eb2236cee5d 100644
--- a/src/mame/drivers/dvk_kcgd.cpp
+++ b/src/mame/drivers/dvk_kcgd.cpp
@@ -76,9 +76,6 @@ public:
};
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- DECLARE_WRITE_LINE_MEMBER(write_keyboard_clock);
- DECLARE_WRITE_LINE_MEMBER(write_line_clock);
-
DECLARE_READ16_MEMBER(vram_addr_r);
DECLARE_READ16_MEMBER(vram_data_r);
DECLARE_READ16_MEMBER(vram_mmap_r);
@@ -107,7 +104,7 @@ private:
int palette_index, vram_addr;
UINT8 palette[16];
} m_video;
- UINT32 *m_videoram;
+ std::unique_ptr<UINT32[]> m_videoram;
protected:
required_device<cpu_device> m_maincpu;
@@ -158,7 +155,7 @@ void kcgd_state::video_start()
// screen_device *screen = machine().device<screen_device>("screen");
// 64 kwords, word size is 17 bits
- m_videoram = auto_alloc_array(machine(), UINT32, 65536);
+ m_videoram = std::make_unique<UINT32[]>(65536);
m_tmpclip = rectangle(0, KCGD_DISP_HORZ-1, 0, KCGD_DISP_VERT-1);
m_tmpbmp.allocate(KCGD_DISP_HORZ, KCGD_DISP_VERT);
diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp
index 591a1530e7f..e09b4e22c24 100644
--- a/src/mame/drivers/dynax.cpp
+++ b/src/mame/drivers/dynax.cpp
@@ -211,12 +211,12 @@ WRITE_LINE_MEMBER(dynax_state::jantouki_sound_callback)
WRITE8_MEMBER(dynax_state::dynax_coincounter_0_w)
{
- coin_counter_w(machine(), 0, data);
+ machine().bookkeeping().coin_counter_w(0, data);
}
WRITE8_MEMBER(dynax_state::dynax_coincounter_1_w)
{
- coin_counter_w(machine(), 1, data);
+ machine().bookkeeping().coin_counter_w(1, data);
}
READ8_MEMBER(dynax_state::ret_ff)
@@ -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;
}
@@ -601,7 +600,7 @@ WRITE8_MEMBER(dynax_state::hjingi_bank_w)
WRITE8_MEMBER(dynax_state::hjingi_lockout_w)
{
- coin_lockout_w(machine(), 0, (~data) & 0x01);
+ machine().bookkeeping().coin_lockout_w(0, (~data) & 0x01);
}
WRITE8_MEMBER(dynax_state::hjingi_hopper_w)
@@ -968,7 +967,7 @@ READ8_MEMBER(dynax_state::jantouki_blitter_busy_r)
WRITE8_MEMBER(dynax_state::jantouki_rombank_w)
{
membank("bank1")->set_entry(data & 0x0f);
- set_led_status(machine(), 0, data & 0x10); // maybe
+ output().set_led_value(0, data & 0x10); // maybe
}
static ADDRESS_MAP_START( jantouki_io_map, AS_IO, 8, dynax_state )
@@ -1158,8 +1157,8 @@ WRITE8_MEMBER(dynax_state::tenkai_ip_w)
switch (m_input_sel)
{
case 0x0c:
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
// bit 2?
// bit 3?
// popmessage("%02x", data);
@@ -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/eacc.cpp b/src/mame/drivers/eacc.cpp
index ef0bc9830ae..38e7d29c3f3 100644
--- a/src/mame/drivers/eacc.cpp
+++ b/src/mame/drivers/eacc.cpp
@@ -210,14 +210,14 @@ WRITE8_MEMBER( eacc_state::eacc_segment_w )
for (i = 0; i < 8; i++)
{
sprintf(lednum,"led%d",i);
- output_set_value(lednum, BIT(data, i));
+ output().set_value(lednum, BIT(data, i));
}
}
else
{
for (i = 3; i < 7; i++)
if (BIT(m_digit, i))
- output_set_digit_value(i, BITSWAP8(data, 7, 0, 1, 4, 5, 6, 2, 3));
+ output().set_digit_value(i, BITSWAP8(data, 7, 0, 1, 4, 5, 6, 2, 3));
}
}
}
diff --git a/src/mame/drivers/ecoinf2.cpp b/src/mame/drivers/ecoinf2.cpp
index 73d90e6cf61..88509f164dc 100644
--- a/src/mame/drivers/ecoinf2.cpp
+++ b/src/mame/drivers/ecoinf2.cpp
@@ -28,6 +28,7 @@ public:
m_reel1(*this, "reel1"),
m_reel2(*this, "reel2"),
m_reel3(*this, "reel3"),
+ m_meters(*this, "meters"),
m_coins(*this, "COINS"),
m_key(*this, "PERKEY"),
m_panel(*this, "PANEL")
@@ -41,6 +42,7 @@ public:
required_device<stepper_device> m_reel1;
required_device<stepper_device> m_reel2;
required_device<stepper_device> m_reel3;
+ required_device<meters_device> m_meters;
required_ioport m_coins;
required_ioport m_key;
required_ioport m_panel;
@@ -68,7 +70,7 @@ public:
{
int data = ((m_lamps[i] << bit)&0x8000)>>15;
- output_set_indexed_value("lamp", (i*16)+bit, data );
+ output().set_indexed_value("lamp", (i*16)+bit, data );
}
}
}
@@ -80,7 +82,7 @@ public:
{
int data = ((m_leds[i] << bit)&0x8000)>>15;
- output_set_digit_value((i*16)+bit, data );
+ output().set_digit_value((i*16)+bit, data );
}
}
}
@@ -149,10 +151,10 @@ public:
}
DECLARE_READ8_MEMBER(ppi8255_ic22_read_c_misc)
{
- int combined_meter = MechMtr_GetActivity(0) | MechMtr_GetActivity(1) |
- MechMtr_GetActivity(2) | MechMtr_GetActivity(3) |
- MechMtr_GetActivity(4) | MechMtr_GetActivity(5) |
- MechMtr_GetActivity(6) | MechMtr_GetActivity(7);
+ int combined_meter = m_meters->GetActivity(0) | m_meters->GetActivity(1) |
+ m_meters->GetActivity(2) | m_meters->GetActivity(3) |
+ m_meters->GetActivity(4) | m_meters->GetActivity(5) |
+ m_meters->GetActivity(6) | m_meters->GetActivity(7);
if(combined_meter)
{
@@ -170,28 +172,26 @@ public:
DECLARE_WRITE8_MEMBER(ppi8255_ic24_write_a_meters)
{
- int meter;
- for (meter = 0; meter < 8; meter ++)
+ for (int meter = 0; meter < 8; meter ++)
{
- MechMtr_update(meter, (data & (1 << meter)));
+ m_meters->update(meter, (data & (1 << meter)));
}
-
}
DECLARE_WRITE8_MEMBER(ppi8255_ic24_write_b_payouts)
{
//TODO: Fix up payout enables - all available bits enable one slide each
- output_set_value("coinlamp0", data&0x40 );
- output_set_value("coinlamp1", data&0x80 );
+ output().set_value("coinlamp0", data&0x40 );
+ output().set_value("coinlamp1", data&0x80 );
}
DECLARE_WRITE8_MEMBER(ppi8255_ic24_write_c_inhibits)
{
- coin_lockout_w(machine(), 0, (data & 0x01) );
- coin_lockout_w(machine(), 1, (data & 0x02) );
- coin_lockout_w(machine(), 2, (data & 0x04) );
- coin_lockout_w(machine(), 3, (data & 0x08) );
- coin_lockout_w(machine(), 4, (data & 0x10) );
+ machine().bookkeeping().coin_lockout_w(0, (data & 0x01) );
+ machine().bookkeeping().coin_lockout_w(1, (data & 0x02) );
+ machine().bookkeeping().coin_lockout_w(2, (data & 0x04) );
+ machine().bookkeeping().coin_lockout_w(3, (data & 0x08) );
+ machine().bookkeeping().coin_lockout_w(4, (data & 0x10) );
//int wdog = (data& 0x80);
}
@@ -204,8 +204,8 @@ public:
m_reel0->update( data &0x0f);
m_reel1->update((data>>4)&0x0f);
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
}
DECLARE_WRITE8_MEMBER(ppi8255_ic23_write_b_reel23)
@@ -213,8 +213,8 @@ public:
m_reel2->update( data &0x0f);
m_reel3->update((data>>4)&0x0f);
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
}
DECLARE_READ8_MEMBER(ppi8255_ic23_read_c_key)
@@ -499,11 +499,6 @@ static INPUT_PORTS_START( ecoinf2 )
INPUT_PORTS_END
-MACHINE_START_MEMBER(ecoinf2_state,ecoinf2)
-{
- MechMtr_config(machine(),8);
-}
-
static MACHINE_CONFIG_START( ecoinf2_oxo, ecoinf2_state )
/* basic machine hardware */
@@ -513,8 +508,6 @@ static MACHINE_CONFIG_START( ecoinf2_oxo, ecoinf2_state )
MCFG_DEFAULT_LAYOUT(layout_ecoinf2)
- MCFG_MACHINE_START_OVERRIDE(ecoinf2_state, ecoinf2 )
-
MCFG_DEVICE_ADD("ic10_lamp", I8255, 0)
MCFG_I8255_OUT_PORTA_CB(WRITE8(ecoinf2_state, ppi8255_ic10_write_a_strobedat0))
MCFG_I8255_OUT_PORTB_CB(WRITE8(ecoinf2_state, ppi8255_ic10_write_b_strobedat1))
@@ -550,6 +543,9 @@ static MACHINE_CONFIG_START( ecoinf2_oxo, ecoinf2_state )
MCFG_ECOIN_200STEP_ADD("reel3")
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf2_state, reel3_optic_cb))
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
+
// MCFG_DEVICE_ADD("ic25_dips", I8255, 0)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ecoinf3.cpp b/src/mame/drivers/ecoinf3.cpp
index 2bf9fce48d3..a9d72e6fbc8 100644
--- a/src/mame/drivers/ecoinf3.cpp
+++ b/src/mame/drivers/ecoinf3.cpp
@@ -174,7 +174,7 @@ public:
{
int data = ((m_lamps[i] << bit)&0x8000)>>15;
- output_set_indexed_value("lamp", (i*16)+bit, data );
+ output().set_indexed_value("lamp", (i*16)+bit, data );
}
}
@@ -229,8 +229,8 @@ public:
m_reel0->update( data &0x0f);
m_reel1->update((data>>4)&0x0f);
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
}
DECLARE_WRITE8_MEMBER(ppi8255_intf_d_write_b_reel23)
@@ -240,8 +240,8 @@ public:
m_reel2->update( data &0x0f);
m_reel3->update((data>>4)&0x0f);
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
}
DECLARE_WRITE8_MEMBER(ppi8255_intf_d_write_c) { logerror("%04x - ppi8255_intf_d_(used)write_c %02x\n", m_maincpu->pcbase(), data);}
@@ -354,7 +354,7 @@ void ecoinf3_state::update_display()
{
for (int i =0; i<14; i++)
{
- output_set_indexed_value("vfd", i, set_display(m_chars[i]) );
+ output().set_indexed_value("vfd", i, set_display(m_chars[i]) );
}
}
@@ -833,7 +833,7 @@ DRIVER_INIT_MEMBER(ecoinf3_state,ecoinf3_swap)
0x06, 0x02, 0x07, 0x03, 0x0e, 0x0a, 0x0f, 0x0b, 0x31, 0x21, 0x39, 0x29, 0x33, 0x23, 0x3b, 0x2b,
};
- UINT8* buffer = auto_alloc_array(machine(), UINT8, 0x10000);
+ auto buffer = std::make_unique<UINT8[]>(0x10000);
UINT8 *rom = memregion( "maincpu" )->base();
@@ -842,7 +842,7 @@ DRIVER_INIT_MEMBER(ecoinf3_state,ecoinf3_swap)
buffer[i] = rom[(i&0xff80)|table[i&0x7f]];
}
- memcpy(rom,buffer,0x10000);
+ memcpy(rom,buffer.get(),0x10000);
}
diff --git a/src/mame/drivers/ecoinfr.cpp b/src/mame/drivers/ecoinfr.cpp
index 3d6a4a48373..030c23c0cde 100644
--- a/src/mame/drivers/ecoinfr.cpp
+++ b/src/mame/drivers/ecoinfr.cpp
@@ -167,7 +167,7 @@ WRITE8_MEMBER(ecoinfr_state::ec_port00_out_w)
m_reel0->update(data&0x0f);
- awp_draw_reel("reel1", m_reel0);
+ awp_draw_reel(machine(),"reel1", m_reel0);
}
WRITE8_MEMBER(ecoinfr_state::ec_port01_out_w)
@@ -179,7 +179,7 @@ WRITE8_MEMBER(ecoinfr_state::ec_port01_out_w)
m_reel1->update(data&0x0f);
- awp_draw_reel("reel2", m_reel1);
+ awp_draw_reel(machine(),"reel2", m_reel1);
}
WRITE8_MEMBER(ecoinfr_state::ec_port02_out_w)
@@ -191,7 +191,7 @@ WRITE8_MEMBER(ecoinfr_state::ec_port02_out_w)
m_reel2->update(data&0x0f);
- awp_draw_reel("reel3", m_reel2);
+ awp_draw_reel(machine(),"reel3", m_reel2);
}
@@ -323,7 +323,7 @@ WRITE8_MEMBER(ecoinfr_state::ec_port0d_out_cred_data_w)
if (m_credsel!=0xff)
{
UINT8 bf7segdata = BITSWAP8(data,7,0,1,2,3,4,5,6);
- output_set_digit_value(m_credsel+8, bf7segdata);
+ output().set_digit_value(m_credsel+8, bf7segdata);
}
}
@@ -336,7 +336,7 @@ WRITE8_MEMBER(ecoinfr_state::ec_port0f_out_bank_segdata_w)
if (m_banksel!=0xff)
{
UINT8 bf7segdata = BITSWAP8(data,7,0,1,2,3,4,5,6);
- output_set_digit_value(m_banksel, bf7segdata);
+ output().set_digit_value(m_banksel, bf7segdata);
}
}
diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp
index 41cd632f51f..c2fd45e06b8 100644
--- a/src/mame/drivers/einstein.cpp
+++ b/src/mame/drivers/einstein.cpp
@@ -437,8 +437,8 @@ MACHINE_RESET_MEMBER(einstein_state,einstein2)
MACHINE_START_MEMBER(einstein_state,einstein2)
{
- m_crtc_ram = auto_alloc_array(machine(), UINT8, 2048);
- memset(m_crtc_ram, 0, sizeof(UINT8) * 2048);
+ m_crtc_ram = std::make_unique<UINT8[]>(2048);
+ memset(m_crtc_ram.get(), 0, sizeof(UINT8) * 2048);
einstein_state::machine_start();
}
diff --git a/src/mame/drivers/elecbowl.cpp b/src/mame/drivers/elecbowl.cpp
index 934bdd1f719..65a2070bc5c 100644
--- a/src/mame/drivers/elecbowl.cpp
+++ b/src/mame/drivers/elecbowl.cpp
@@ -2,7 +2,7 @@
// copyright-holders:hap, Kevin Horton
/***************************************************************************
- ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.c) **
+ ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.cpp) **
Marx Series 300 Electronic Bowling Game
Main board:
@@ -192,8 +192,6 @@ static MACHINE_CONFIG_START( elecbowl, elecbowl_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_elecbowl)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
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/elekscmp.cpp b/src/mame/drivers/elekscmp.cpp
index 7783184917c..0eecbf9df4e 100644
--- a/src/mame/drivers/elekscmp.cpp
+++ b/src/mame/drivers/elekscmp.cpp
@@ -55,7 +55,7 @@ protected:
WRITE8_MEMBER(elekscmp_state::hex_display_w)
{
- output_set_digit_value(offset, data);
+ output().set_digit_value(offset, data);
}
UINT8 elekscmp_state::convert_key(UINT8 data)
diff --git a/src/mame/drivers/elf.cpp b/src/mame/drivers/elf.cpp
index 5fdfc47035b..f21896f9f69 100644
--- a/src/mame/drivers/elf.cpp
+++ b/src/mame/drivers/elf.cpp
@@ -151,7 +151,7 @@ READ_LINE_MEMBER( elf2_state::ef4_r )
WRITE_LINE_MEMBER( elf2_state::q_w )
{
- output_set_led_value(0, state);
+ output().set_led_value(0, state);
}
READ8_MEMBER( elf2_state::dma_r )
diff --git a/src/mame/drivers/embargo.cpp b/src/mame/drivers/embargo.cpp
index cc438d0deea..586b96e16af 100644
--- a/src/mame/drivers/embargo.cpp
+++ b/src/mame/drivers/embargo.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/drivers/enmirage.cpp b/src/mame/drivers/enmirage.cpp
index 64412391c75..cdea1be9d8a 100644
--- a/src/mame/drivers/enmirage.cpp
+++ b/src/mame/drivers/enmirage.cpp
@@ -161,7 +161,7 @@ WRITE8_MEMBER(mirage_state::mirage_via_write_porta)
}
m_l_hi = seg;
- output_set_digit_value(0, m_l_segs);
+ output().set_digit_value(0, m_l_segs);
// printf("L LED: seg %d (hi %d conv %02x, %02x)\n", seg, m_l_hi, segconv[seg], m_l_segs);
}
// right LED selected?
@@ -179,7 +179,7 @@ WRITE8_MEMBER(mirage_state::mirage_via_write_porta)
}
m_r_hi = seg;
- output_set_digit_value(1, m_r_segs);
+ output().set_digit_value(1, m_r_segs);
// printf("R LED: seg %d (hi %d conv %02x, %02x)\n", seg, m_r_hi, segconv[seg], m_r_segs);
}
}
diff --git a/src/mame/drivers/eolith.cpp b/src/mame/drivers/eolith.cpp
index df62012572c..101d6788365 100644
--- a/src/mame/drivers/eolith.cpp
+++ b/src/mame/drivers/eolith.cpp
@@ -131,8 +131,8 @@ READ32_MEMBER(eolith_state::eolith_custom_r)
WRITE32_MEMBER(eolith_state::systemcontrol_w)
{
m_buffer = (data & 0x80) >> 7;
- coin_counter_w(machine(), 0, data & m_coin_counter_bit);
- set_led_status(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & m_coin_counter_bit);
+ output().set_led_value(0, data & 1);
m_eepromoutport->write(data, 0xff);
diff --git a/src/mame/drivers/eolith16.cpp b/src/mame/drivers/eolith16.cpp
index 4cb68dd4875..6fe073c131c 100644
--- a/src/mame/drivers/eolith16.cpp
+++ b/src/mame/drivers/eolith16.cpp
@@ -25,7 +25,7 @@ public:
eolith16_state(const machine_config &mconfig, device_type type, const char *tag)
: eolith_state(mconfig, type, tag) { }
- UINT16 *m_vram;
+ std::unique_ptr<UINT16[]> m_vram;
int m_vbuffer;
DECLARE_WRITE16_MEMBER(eeprom_w);
@@ -45,7 +45,7 @@ public:
WRITE16_MEMBER(eolith16_state::eeprom_w)
{
m_vbuffer = (data & 0x80) >> 7;
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
m_eepromoutport->write(data, 0xff);
@@ -116,8 +116,8 @@ INPUT_PORTS_END
VIDEO_START_MEMBER(eolith16_state,eolith16)
{
- m_vram = auto_alloc_array(machine(), UINT16, 0x10000);
- save_pointer(NAME(m_vram), 0x10000);
+ m_vram = std::make_unique<UINT16[]>(0x10000);
+ save_pointer(NAME(m_vram.get()), 0x10000);
save_item(NAME(m_vbuffer));
}
diff --git a/src/mame/drivers/esqkt.cpp b/src/mame/drivers/esqkt.cpp
index 31883c70979..b1a40fbb732 100644
--- a/src/mame/drivers/esqkt.cpp
+++ b/src/mame/drivers/esqkt.cpp
@@ -123,12 +123,8 @@ public:
UINT8 m_duart_io;
bool m_bCalibSecondByte;
-private:
- UINT32 *m_rom, *m_ram;
-
public:
DECLARE_DRIVER_INIT(kt);
- DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq);
DECLARE_READ16_MEMBER(esq5506_read_adc);
};
diff --git a/src/mame/drivers/esripsys.cpp b/src/mame/drivers/esripsys.cpp
index 8119d2f60df..81683144df5 100644
--- a/src/mame/drivers/esripsys.cpp
+++ b/src/mame/drivers/esripsys.cpp
@@ -630,20 +630,20 @@ DRIVER_INIT_MEMBER(esripsys_state,esripsys)
{
UINT8 *rom = memregion("sound_data")->base();
- m_fdt_a = auto_alloc_array(machine(), UINT8, FDT_RAM_SIZE);
- m_fdt_b = auto_alloc_array(machine(), UINT8, FDT_RAM_SIZE);
- m_cmos_ram = auto_alloc_array(machine(), UINT8, CMOS_RAM_SIZE);
+ m_fdt_a = std::make_unique<UINT8[]>(FDT_RAM_SIZE);
+ m_fdt_b = std::make_unique<UINT8[]>(FDT_RAM_SIZE);
+ m_cmos_ram = std::make_unique<UINT8[]>(CMOS_RAM_SIZE);
- machine().device<nvram_device>("nvram")->set_base(m_cmos_ram, CMOS_RAM_SIZE);
+ machine().device<nvram_device>("nvram")->set_base(m_cmos_ram.get(), CMOS_RAM_SIZE);
membank("bank2")->set_base(&rom[0x0000]);
membank("bank3")->set_base(&rom[0x4000]);
membank("bank4")->set_base(&rom[0x8000]);
/* Register stuff for state saving */
- save_pointer(NAME(m_fdt_a), FDT_RAM_SIZE);
- save_pointer(NAME(m_fdt_b), FDT_RAM_SIZE);
- save_pointer(NAME(m_cmos_ram), CMOS_RAM_SIZE);
+ save_pointer(NAME(m_fdt_a.get()), FDT_RAM_SIZE);
+ save_pointer(NAME(m_fdt_b.get()), FDT_RAM_SIZE);
+ save_pointer(NAME(m_cmos_ram.get()), CMOS_RAM_SIZE);
save_item(NAME(m_g_iodata));
save_item(NAME(m_g_ioaddr));
diff --git a/src/mame/drivers/et3400.cpp b/src/mame/drivers/et3400.cpp
index bf9806787c0..aa02cf5e016 100644
--- a/src/mame/drivers/et3400.cpp
+++ b/src/mame/drivers/et3400.cpp
@@ -53,14 +53,14 @@ WRITE8_MEMBER( et3400_state::et3400_display_w )
static const UINT8 segments[8]={0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x80};
UINT8 digit = (offset >> 4) & 7;
UINT8 segment = segments[offset & 7];
- UINT8 segdata = output_get_digit_value(digit);
+ UINT8 segdata = output().get_digit_value(digit);
if (data & 1)
segdata |= segment;
else
segdata &= ~segment;
- output_set_digit_value(digit, segdata);
+ output().set_digit_value(digit, segdata);
}
diff --git a/src/mame/drivers/eti660.cpp b/src/mame/drivers/eti660.cpp
index d7d453b5823..40e37a017e5 100644
--- a/src/mame/drivers/eti660.cpp
+++ b/src/mame/drivers/eti660.cpp
@@ -173,7 +173,7 @@ WRITE_LINE_MEMBER( eti660_state::q_w )
m_cti->aoe_w(state);
/* PULSE led */
- set_led_status(machine(), LED_PULSE, state);
+ output().set_led_value(LED_PULSE, state);
/* tape output */
m_cassette->output(state ? 1.0 : -1.0);
diff --git a/src/mame/drivers/ettrivia.cpp b/src/mame/drivers/ettrivia.cpp
index f1aca240256..76b8c8b4d12 100644
--- a/src/mame/drivers/ettrivia.cpp
+++ b/src/mame/drivers/ettrivia.cpp
@@ -93,7 +93,7 @@ WRITE8_MEMBER(ettrivia_state::ettrivia_control_w)
m_question_bank = (data >> 3) & 3;
- coin_counter_w(machine(), 0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
flip_screen_set(data & 1);
}
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/exidy440.cpp b/src/mame/drivers/exidy440.cpp
index 7c4b1d9814b..d4f5f37d8e7 100644
--- a/src/mame/drivers/exidy440.cpp
+++ b/src/mame/drivers/exidy440.cpp
@@ -375,7 +375,7 @@ WRITE8_MEMBER(exidy440_state::exidy440_input_port_3_w)
WRITE8_MEMBER(exidy440_state::exidy440_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp
index b8865c1cdc5..79549bfa123 100644
--- a/src/mame/drivers/expro02.cpp
+++ b/src/mame/drivers/expro02.cpp
@@ -238,8 +238,6 @@ public:
UINT16 m_vram_1_bank_num;
DECLARE_WRITE16_MEMBER(expro02_6295_bankswitch_w);
DECLARE_WRITE16_MEMBER(expro02_paletteram_w);
- DECLARE_WRITE16_MEMBER(expro02_vram_0_bank_w);
- DECLARE_WRITE16_MEMBER(expro02_vram_1_bank_w);
DECLARE_DRIVER_INIT(expro02);
virtual void machine_reset() override;
virtual void video_start() override;
@@ -1528,6 +1526,27 @@ ROM_START( missw96b )
ROM_LOAD( "mw96_02.bin", 0xc0000, 0x80000, CRC(60fa0c00) SHA1(391aa31e61663cc083a8a2320ba48a9859f3fd4e) )
ROM_END
+ROM_START( missw96c )
+ ROM_REGION( 0x500000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "10_PROG2.UE17", 0x000000, 0x80000, CRC(36a7beb6) SHA1(11f6aef506a4e357442207fef760401757deaaeb) )
+ ROM_LOAD16_BYTE( "6_PROG1.UD17", 0x000001, 0x80000, CRC(e70b562f) SHA1(4affd40ab7f962824d1c7be22ea6819cf06d6347) )
+ ROM_LOAD16_BYTE( "9_IM1-B.UE16B", 0x100000, 0x80000, CRC(eedc24f8) SHA1(cef822c1e3f09c484d03964f02d761139aac9d76) )
+ ROM_LOAD16_BYTE( "5_IM1-A.UE16A", 0x100001, 0x80000, CRC(bb0eb7d7) SHA1(6952d153afa90924754c11872497ec83ae650220) )
+ ROM_LOAD16_BYTE( "8_IM2-B.UE15B", 0x200000, 0x80000, CRC(68dd67b2) SHA1(322f3eb84277568356ae0a09f71337bd525f379a) )
+ ROM_LOAD16_BYTE( "4_IM2-A.UE15A", 0x200001, 0x80000, CRC(2b39ec56) SHA1(8ea1483050287c68063e54c4de27bd82ad942c53) )
+ ROM_LOAD16_BYTE( "7_IM3_B.UE14B", 0x300000, 0x80000, CRC(7fd5ca2c) SHA1(7733bd0529953bdae718bf28053d173e5ec3ca92) )
+ ROM_LOAD16_BYTE( "3_IM3-A.UE14A", 0x300001, 0x80000, CRC(4ba5dab7) SHA1(81d7b6fde6d9405793f60ee7d15a15a511396332) )
+
+ ROM_REGION( 0x80000, "gfx1", 0 ) /* sprites */
+ ROM_LOAD( "20_OBJ1.U5", 0x00000, 0x80000, CRC(3983152f) SHA1(6308e936ba54e88b34253f1d4fbd44725e9d88ae) )
+
+ ROM_REGION( 0x140000, "oki", 0 ) /* OKIM6295 samples */
+ /* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */
+ ROM_LOAD( "1_MUSIC1.UB6", 0x00000, 0x80000, CRC(e78a659e) SHA1(d209184c70e0d7e6d17034c6f536535cda782d42) )
+ ROM_RELOAD( 0x40000, 0x80000 )
+ ROM_LOAD( "2_MUSIC2.UC6", 0xc0000, 0x80000, CRC(60fa0c00) SHA1(391aa31e61663cc083a8a2320ba48a9859f3fd4e) )
+ROM_END
+
ROM_START( missmw96 )
ROM_REGION( 0x500000, "maincpu", 0 ) /* 68000 code */
@@ -1848,9 +1867,12 @@ GAME( 1995, newfant, 0, fantasia, fantasiaa, driver_device, 0, ROT90, "C
GAME( 1994, newfanta, newfant, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "New Fantasia (1994 copyright)", MACHINE_NO_COCKTAIL )
GAME( 1995, fantsy95, newfant, fantasia, fantasiaa, driver_device, 0, ROT90, "Hi-max Technology Inc.", "Fantasy '95", MACHINE_NO_COCKTAIL )
-GAME( 1996, missw96, 0, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 1)", MACHINE_NO_COCKTAIL )
-GAME( 1996, missw96a, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 2)", MACHINE_NO_COCKTAIL )
-GAME( 1996, missw96b, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 3)", MACHINE_NO_COCKTAIL )
+// the PCB label (A/B) could be related to the 3 different levels of nudity Comad offered
+GAME( 1996, missw96, 0, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 1)", MACHINE_NO_COCKTAIL )
+GAME( 1996, missw96a, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 2)", MACHINE_NO_COCKTAIL )
+GAME( 1996, missw96b, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000A PCB, set 3)", MACHINE_NO_COCKTAIL )
+GAME( 1996, missw96c, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (C-3000B PCB)", MACHINE_NO_COCKTAIL )
+
GAME( 1996, missmw96, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss Mister World '96 (Nude)", MACHINE_NO_COCKTAIL )
GAME( 1996, smissw, 0, smissw, missw96, driver_device, 0, ROT0, "Comad", "Super Miss World", MACHINE_NO_COCKTAIL ) // 951127 PCB
diff --git a/src/mame/drivers/exterm.cpp b/src/mame/drivers/exterm.cpp
index e2072f8fa39..1b3d1f4c7e8 100644
--- a/src/mame/drivers/exterm.cpp
+++ b/src/mame/drivers/exterm.cpp
@@ -163,8 +163,8 @@ WRITE16_MEMBER(exterm_state::exterm_output_port_0_w)
m_slave->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
/* Bits 14-15 = Coin counters */
- coin_counter_w(machine(), 0, data & 0x8000);
- coin_counter_w(machine(), 1, data & 0x4000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x8000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x4000);
}
COMBINE_DATA(&m_last);
diff --git a/src/mame/drivers/exzisus.cpp b/src/mame/drivers/exzisus.cpp
index 7cd7f2d8c8b..2c0830798ea 100644
--- a/src/mame/drivers/exzisus.cpp
+++ b/src/mame/drivers/exzisus.cpp
@@ -63,10 +63,10 @@ WRITE8_MEMBER(exzisus_state::cpub_bankswitch_w)
WRITE8_MEMBER(exzisus_state::coincounter_w)
{
- coin_lockout_w(machine(), 0,~data & 0x01);
- coin_lockout_w(machine(), 1,~data & 0x02);
- coin_counter_w(machine(), 0,data & 0x04);
- coin_counter_w(machine(), 1,data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x04);
+ machine().bookkeeping().coin_counter_w(1,data & 0x08);
}
// is it ok that cpub_reset refers to cpuc?
diff --git a/src/mame/drivers/famibox.cpp b/src/mame/drivers/famibox.cpp
index 25e05e9ccdb..ee39a617359 100644
--- a/src/mame/drivers/famibox.cpp
+++ b/src/mame/drivers/famibox.cpp
@@ -78,7 +78,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<ppu2c0x_device> m_ppu;
- UINT8* m_nt_ram;
+ std::unique_ptr<UINT8[]> m_nt_ram;
UINT8* m_nt_page[4];
UINT32 m_in_0;
@@ -115,7 +115,6 @@ public:
UINT32 screen_update_famibox(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(famicombox_attract_timer_callback);
TIMER_CALLBACK_MEMBER(famicombox_gameplay_timer_callback);
- void set_mirroring(int mirroring);
void famicombox_bankswitch(UINT8 bank);
void famicombox_reset();
void ppu_irq(int *ppu_regs);
@@ -523,11 +522,11 @@ void famibox_state::machine_reset()
void famibox_state::machine_start()
{
- m_nt_ram = auto_alloc_array(machine(), UINT8, 0x1000);
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram + 0x800;
- m_nt_page[3] = m_nt_ram + 0xc00;
+ m_nt_ram = std::make_unique<UINT8[]>(0x1000);
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get() + 0x800;
+ m_nt_page[3] = m_nt_ram.get() + 0xc00;
m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(famibox_state::famibox_nt_r), this), write8_delegate(FUNC(famibox_state::famibox_nt_w), this));
m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x1fff, "ppubank1");
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/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp
index 3ad667665d4..88eb5836d87 100644
--- a/src/mame/drivers/fanucspmg.cpp
+++ b/src/mame/drivers/fanucspmg.cpp
@@ -494,6 +494,37 @@ The arrows denote direction of data flow.
8085 sets f8008 to keyboard row 0 AND 0xf3
" " f8009 to keyboard row 1
+
+Keyboard Matrix (preliminary)
+---------------
+Row select
+| Columns Key by bit
+| D0 D1 D2 D3 D4 D5 D6 D7
+V V V V V V V V V
+0x?? F0 F1 F2 F3 F4 F5 F6 F7
+0x?? F8 F9 F10 F11 F12 F13 F14 F15
+0x30 0 1 2 3 4 5 6 7
+0x38 8 9 : ; < - > ?
+0x40 @ A B C D E F G
+0x48 H I J K L M N O
+0x50 P Q R S T U V W
+0x58 X Y Z [ Yen ] ^ _
+0x?? KP0 KP1 KP2 KP3 KP4 KP5 KP6 KP7
+0x?? KP8 KP9 KP. KP, N/A N/A N/A SPACE
+0x?? K+ K- K* K/ N/A N/A N/A DEL
+0x?? BS (K)NL CAN N/A N/A N/A N/A N/A
+0x?? K0 K1 K2 K3 N/A N/A N/A N/A
+
+The following keys I have no idea where they map as they don't show a consistent column bit in the diagram:
+LOAD UC LC R0 R1 R2 R3
+Also any keys which are N/A may actually have something else mapped there.
+
+In short: this keyboard seems to follow some sort of ASCII-derived row/column pattern
+If this is a true ascii keyboard, then UC, LC probably do not connect to the matrix at all,
+but instead make it so rows 0x40, 0x48 0x50 and 0x58 produce characters from ascii rows 0x60, 0x68, 0x70 and 0x78 (uppercase becomes lowercase)
+likewise 0x30 and 0x38 will produce chars from 0x20 and 0x28 (numbers become symbols)
+the keypad symbols seem to use a different matrix pattern from the rest?
+
****************************************************************************/
#include "emu.h"
diff --git a/src/mame/drivers/fastinvaders.cpp b/src/mame/drivers/fastinvaders.cpp
new file mode 100644
index 00000000000..fad9c9eaf95
--- /dev/null
+++ b/src/mame/drivers/fastinvaders.cpp
@@ -0,0 +1,781 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+/***************************************************************************
+
+schematics can be found at
+http://www.citylan.it/wiki/index.php/Fast_Invaders_%286845_version%29
+and
+http://www.citylan.it/wiki/index.php/Fast_Invaders_%288275_version%29
+
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/i8085/i8085.h"
+
+#include "video/i8275.h"
+#include "video/mc6845.h"
+#include "machine/pic8259.h"
+#include "machine/i8257.h"
+
+
+class fastinvaders_state : public driver_device
+{
+public:
+ fastinvaders_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_videoram(*this, "videoram"),
+ m_crtc8275(*this, "8275"),
+ m_crtc6845(*this, "6845"),
+ m_pic8259(*this, "pic8259"),
+ m_dma8257(*this, "dma8257")
+ { }
+
+ 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;
+ required_device<i8257_device> m_dma8257;
+
+ UINT8 m_rest55;
+ UINT8 m_rest65;
+ UINT8 m_trap;
+ UINT8 m_ar;
+ UINT8 m_av;
+ UINT8 m_prom[256];
+ UINT8 m_riga_sup;
+ UINT8 m_scudi;
+ UINT8 m_cannone;
+ UINT8 m_riga_inf;
+
+ UINT8 m_irq0;
+ UINT8 m_irq1;
+ UINT8 m_irq2;
+ UINT8 m_irq3;
+ UINT8 m_irq4;
+ 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);
+ DECLARE_WRITE8_MEMBER(io_a0_w);
+ DECLARE_WRITE8_MEMBER(io_b0_w);
+ DECLARE_WRITE8_MEMBER(io_c0_w);
+ 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_READ_LINE_MEMBER(sid_read);
+
+
+ virtual void video_start() override;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer);
+ TIMER_DEVICE_CALLBACK_MEMBER(count_ar);
+ DECLARE_WRITE_LINE_MEMBER(vsync);
+ DECLARE_WRITE_LINE_MEMBER(hsync);
+ DECLARE_READ8_MEMBER(memory_read_byte);
+ DECLARE_WRITE8_MEMBER(memory_write_byte);
+ 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;
+
+
+
+
+ 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_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("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);
+ //m_pic8259->ir1_w(HOLD_LINE);
+ m_dma1=1;
+ }
+ }
+ 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");
+ m_dma8257->dreq2_w(0x01);
+ m_dma8257->hlda_w(1);
+ //m_pic8259->ir3_w(HOLD_LINE);
+ }
+
+ }
+ }
+}
+
+WRITE8_MEMBER(fastinvaders_state::dark_1_clr)
+{
+ //address_space& prog_space = m_maincpu->space(AS_PROGRAM);
+ if(data){
+ m_dma8257->dreq1_w(0x00);
+ }
+ 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);
+ //return prog_space.read_byte(offset);
+ //return 0x00;
+}
+
+WRITE8_MEMBER(fastinvaders_state::dark_2_clr)
+{
+ //address_space& prog_space = m_maincpu->space(AS_PROGRAM);
+ if(data){
+ m_dma8257->dreq2_w(0x00);
+ }
+/* if(!data){
+ m_dma1=0;
+ }
+ */
+}
+
+/***************************************************************************
+
+ Video
+
+***************************************************************************/
+
+void fastinvaders_state::video_start()
+{
+}
+
+UINT32 fastinvaders_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ gfx_element *gfx = m_gfxdecode->gfx(0);
+
+ bitmap.fill(0, cliprect);
+
+ int count = 0;
+
+ for (int y = 0;y < 19;y++)
+ {
+ for (int x = 0;x < 40;x++)
+ {
+ UINT8 tile = m_videoram[count];
+
+
+ gfx->transpen(
+ bitmap,
+ cliprect,
+ tile,
+ 0,
+ 0, 0,
+ x*16, y*14, 0
+ );
+
+ count++;
+
+ }
+
+ }
+
+ return 0;
+}
+
+WRITE8_MEMBER(fastinvaders_state::io_40_w)
+{
+ m_io_40=data;
+ logerror("av target= %02X\n",m_io_40);
+}
+
+
+WRITE8_MEMBER(fastinvaders_state::io_90_w)
+{
+logerror("Audio write &02X\n",data);
+}
+
+
+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
+
+ tmp=ioport("IN1")->read()&0x03;
+ tmp=tmp | (ioport("DSW1")->read()&0xfc);
+
+ //logerror("return %02X from 0x60\n",tmp);
+ return tmp;
+}
+
+
+WRITE8_MEMBER(fastinvaders_state::io_70_w)
+{
+//bit 0 rest55 clear
+//bit 1 rest65 clear
+//bit 2 trap clear
+//bit 3 coin counter
+
+//bit 4 irq0 clear
+//bit 5 8085 reset
+//bit 6 TODO
+//bit 7 both used TODO
+
+//IRQ clear
+ if (data&0x01){
+ m_rest55=0;
+ 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);
+// }
+
+}
+
+
+WRITE8_MEMBER(fastinvaders_state::io_a0_w)
+{
+ m_irq1=0;
+ m_pic8259->ir1_w(CLEAR_LINE);
+}
+
+WRITE8_MEMBER(fastinvaders_state::io_b0_w)
+{
+ m_irq2=0;
+ m_pic8259->ir2_w(CLEAR_LINE);
+}
+
+WRITE8_MEMBER(fastinvaders_state::io_c0_w)
+{
+ m_irq3=0;
+ m_pic8259->ir3_w(CLEAR_LINE);
+}
+
+WRITE8_MEMBER(fastinvaders_state::io_d0_w)
+{
+ m_irq5=0;
+ m_pic8259->ir5_w(CLEAR_LINE);
+}
+
+WRITE8_MEMBER(fastinvaders_state::io_e0_w)
+{
+ m_irq4=0;
+ m_pic8259->ir4_w(CLEAR_LINE);
+}
+
+WRITE8_MEMBER(fastinvaders_state::io_f0_w)
+{
+ m_irq6=0;
+ m_pic8259->ir6_w(CLEAR_LINE);
+}
+
+READ_LINE_MEMBER(fastinvaders_state::sid_read)
+{
+ UINT8 tmp= m_start2_value ? ASSERT_LINE : CLEAR_LINE;
+ m_start2_value=0;
+ return tmp;
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::tilt)
+{
+ m_trap=1;
+ if (newval)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, HOLD_LINE);
+}
+
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::coin_inserted)
+{
+ m_rest65=1;
+ if (newval)
+ m_maincpu->set_input_line(I8085_RST65_LINE, HOLD_LINE);
+}
+
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::start)
+{
+ m_rest55=1;
+ if (newval)
+ m_maincpu->set_input_line(I8085_RST55_LINE, HOLD_LINE);
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::start2)
+{
+ m_rest55=1;
+ m_start2_value=1;
+ if (newval)
+ m_maincpu->set_input_line(I8085_RST55_LINE, HOLD_LINE);
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::in0)
+{
+ m_irq0=1;
+ if (newval)
+ m_pic8259->ir0_w(HOLD_LINE);
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::in1)
+{
+ m_irq1=1;
+ if (newval)
+ m_pic8259->ir1_w(HOLD_LINE);
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::in2)
+{
+ m_irq2=1;
+ if (newval)
+ m_pic8259->ir2_w(HOLD_LINE);
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::in3)
+{
+ m_irq3=1;
+ if (newval)
+ m_pic8259->ir3_w(HOLD_LINE);
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::in4)
+{
+ m_irq4=1;
+ if (newval)
+ m_pic8259->ir4_w(HOLD_LINE);
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::in5)
+{
+ m_irq5=1;
+ if (newval)
+ m_pic8259->ir5_w(HOLD_LINE);
+}
+
+INPUT_CHANGED_MEMBER(fastinvaders_state::in6)
+{
+ m_irq6=1;
+ if (newval)
+ m_pic8259->ir6_w(HOLD_LINE);
+}
+
+
+
+
+DECLARE_WRITE_LINE_MEMBER( fastinvaders_state::vsync)
+{
+ //logerror("p8257_drq_w\n");
+ 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
+ //machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); // smooth things out a bit
+ m_av=0;
+ }
+
+ if (state){
+ }
+}
+
+DECLARE_WRITE_LINE_MEMBER( fastinvaders_state::hsync)
+{
+ //m_hsync=1;
+ if (!state){
+ m_hsync=0;
+ m_ar=0;
+ }
+
+ if (state){
+ m_hsync=1;
+ }
+}
+
+
+
+READ8_MEMBER(fastinvaders_state::memory_read_byte)
+{
+ address_space& prog_space = m_maincpu->space(AS_PROGRAM);
+logerror("dma read\n");
+ //m_maincpu->set_input_line(I8085_RST75_LINE, ASSERT_LINE);
+ //m_maincpu->set_input_line(I8085_RST75_LINE, CLEAR_LINE);
+ return prog_space.read_byte(offset);
+ //return 0x00;
+}
+
+WRITE8_MEMBER(fastinvaders_state::memory_write_byte)
+{
+ //address_space& prog_space = m_maincpu->space(AS_PROGRAM);
+logerror("dma write\n");
+ //m_maincpu->set_input_line(I8085_RST75_LINE, ASSERT_LINE);
+ //m_maincpu->set_input_line(I8085_RST75_LINE, CLEAR_LINE);
+ //return prog_space.read_byte(offset);
+ //return 0x00;
+}
+
+
+/***************************************************************************
+
+ I/O
+
+***************************************************************************/
+
+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(0x2800, 0x2fff) AM_RAM AM_MIRROR(0x8000) AM_SHARE("videoram")
+ AM_RANGE(0x3000, 0x33ff) AM_RAM AM_MIRROR(0x8000)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( fastinvaders_io_base, AS_IO, 8, fastinvaders_state )
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( fastinvaders_6845_io, AS_IO, 8, fastinvaders_state )
+ AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma8257", i8257_device, read, write)
+ 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(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_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(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(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_IMPORT_FROM(fastinvaders_io_base)
+ADDRESS_MAP_END
+
+
+
+/***************************************************************************
+
+ Inputs
+
+***************************************************************************/
+
+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("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_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_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( 0xf0, 0x80, "Ships/lives number" )
+ PORT_DIPSETTING( 0x10, "1 Ship" )
+ PORT_DIPSETTING( 0x20, "2 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" )
+
+
+
+INPUT_PORTS_END
+
+
+/***************************************************************************
+
+ Machine Config
+
+***************************************************************************/
+
+static const gfx_layout charlayout =
+{
+ 16,14,
+ RGN_FRAC(1,2),
+ 1,
+ { 0 },
+ { 0, 1, 2, 3, 4, 5, 6, 7, RGN_FRAC(1,2) + 0, RGN_FRAC(1,2) +1, RGN_FRAC(1,2) +2, RGN_FRAC(1,2) +3, RGN_FRAC(1,2) +4, RGN_FRAC(1,2) +5, RGN_FRAC(1,2) +6, RGN_FRAC(1,2) +7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8 /*, 14*8, 15*8*/ },
+ 16*8
+};
+
+static GFXDECODE_START( fastinvaders )
+ GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
+GFXDECODE_END
+
+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_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)
+ MCFG_I8257_IN_MEMR_CB(READ8(fastinvaders_state, memory_read_byte))
+ 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_UPDATE_DRIVER(fastinvaders_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", fastinvaders)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+
+ /* sound hardware */
+ // TODO
+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))
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( fastinvaders_6845, fastinvaders )
+ MCFG_CPU_MODIFY("maincpu" ) // guess
+ MCFG_CPU_IO_MAP(fastinvaders_6845_io)
+
+ MCFG_MC6845_ADD("6845", MC6845, "screen", 11500000/16) /* confirmed */
+ MCFG_MC6845_SHOW_BORDER_AREA(false)
+ MCFG_MC6845_CHAR_WIDTH(16)
+ MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(fastinvaders_state,vsync))
+ MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(fastinvaders_state,hsync))
+MACHINE_CONFIG_END
+
+
+
+
+DRIVER_INIT_MEMBER(fastinvaders_state, fi6845)
+{
+const UINT8 *prom = memregion("prom")->base();
+ int i;
+ for (i=0;i<256;i++){
+ m_prom[i]=prom[i];
+ }
+ m_dma1=0;
+ m_io_40=0;
+}
+
+
+/***************************************************************************
+
+ Game drivers
+
+***************************************************************************/
+
+// the last pair of gfx roms were mixed up in each set (each set contained 2 identical roms rather than one of each) hopefully nothing else was
+
+//ROM_START( fi6845 )
+ROM_START( fi8275 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "R2.1A", 0x0000, 0x0200, CRC(6180d652) SHA1(3aac67f52897059c8366f52c41464052ce860ae8) )
+ ROM_LOAD( "R2.1B", 0x0200, 0x0200, CRC(f10baf3e) SHA1(4a1702c24e949d9bef990033b5507a573abd7bc3) )
+ ROM_LOAD( "R2.2A", 0x0400, 0x0200, CRC(f446ef0d) SHA1(2be337c1197d14e5ffc33ea05b5262f1ea17d442) )
+ ROM_LOAD( "R2.2B", 0x0600, 0x0200, CRC(b97e35a3) SHA1(0878a83c7f9f0645749fdfb1ff372d0e04833c9e) )
+ ROM_LOAD( "R2.3A", 0x0800, 0x0200, CRC(988f36da) SHA1(7229f660a6a9cf9f66d0924c63772daabd09710e) )
+ ROM_LOAD( "R2.3B", 0x0a00, 0x0200, CRC(be7dc34d) SHA1(e4aa1617629869c9ff5f39b656001a43020f0cb8) )
+ ROM_LOAD( "R2.4A", 0x0c00, 0x0200, CRC(199cb227) SHA1(064f6005a3f1afe9ca04e93e6bc999735a12a05b) )
+ ROM_LOAD( "R2.4B", 0x0e00, 0x0200, CRC(ca41218a) SHA1(01529e21c44669dc96df4331e87d45098a263772) )
+ ROM_LOAD( "R2.5A", 0x1000, 0x0200, CRC(e8ecf0da) SHA1(723edaa6f069a21ab7496a24831f23b4b4d73629) )
+ ROM_LOAD( "R2.5B", 0x1200, 0x0200, CRC(cb2d8029) SHA1(cac067accddfcce6014d2a425b4291ed8226d169) )
+ ROM_LOAD( "R2.6A", 0x1400, 0x0200, CRC(e4d4cc96) SHA1(2dc3d7e4cbd93220285938aec31011b685563cf7) )
+ ROM_LOAD( "R2.6B", 0x1600, 0x0200, CRC(0c96ba4a) SHA1(0da104472c33523d4002cab0c77ca20fc2998a2c) )
+ ROM_LOAD( "R2.7A", 0x1800, 0x0200, CRC(c9207fbd) SHA1(bf388e26ee1e2073b8a641ba6fb551c24d471a70) )
+
+ ROM_LOAD( "R2.1A", 0x2000, 0x0200, CRC(6180d652) SHA1(3aac67f52897059c8366f52c41464052ce860ae8) )
+ ROM_LOAD( "R2.1B", 0x2200, 0x0200, CRC(f10baf3e) SHA1(4a1702c24e949d9bef990033b5507a573abd7bc3) )
+ 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) )
+ ROM_LOAD( "C2.1H", 0x0400, 0x0200, CRC(936171e4) SHA1(d0756b49bfd5d58a79f735d4a98a99cce7604b0e) )
+ 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
+
+//ROM_START( fi8275 )
+ROM_START( fi6845 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "R1.1A", 0x0000, 0x0200, CRC(fef96dfe) SHA1(f6df0cf6b5d90ea07ee890985c8cbf0f68e08550) )
+ ROM_LOAD( "R1.1B", 0x0200, 0x0200, CRC(c48c6ebc) SHA1(f1f86839819b6abce9ff55c1b02bbf2c4036c51a) )
+ ROM_LOAD( "R1.2A", 0x0400, 0x0200, CRC(626a740c) SHA1(3a1df1d71acc207b1b952ad5176804fce27ea97e) )
+ ROM_LOAD( "R1.2B", 0x0600, 0x0200, CRC(fbe9782e) SHA1(3661bd03e029e4d2092d259f38a7dec9e763761c) )
+ ROM_LOAD( "R1.3A", 0x0800, 0x0200, CRC(6e10de0d) SHA1(8d937f6f2fe1a79b62e6e75536889416ec0071e3) )
+ ROM_LOAD( "R1.3B", 0x0a00, 0x0200, CRC(ee1bac50) SHA1(f723b2d1c2a1194aa2df67d48f2b669f5076d857) )
+ ROM_LOAD( "R1.4A", 0x0c00, 0x0200, CRC(7faff8f1) SHA1(9275123d6513ab917506f6e9d929935ed1bef429) )
+ ROM_LOAD( "R1.4B", 0x0e00, 0x0200, CRC(205ca0c1) SHA1(edf68e9c75523e1b6a485b27af60592fdfb78e04) )
+ ROM_LOAD( "R1.5A", 0x1000, 0x0200, CRC(9ada6666) SHA1(f965a08c75fa87e8e3fd7595dcd98231e976e072) )
+ ROM_LOAD( "R1.5B", 0x1200, 0x0200, CRC(0f617215) SHA1(b342c783335ab26c036ae77f63a2e932a590c2fa) )
+ ROM_LOAD( "R1.6A", 0x1400, 0x0200, CRC(75ea69ae) SHA1(edd9bf686c169ca64373ea87ba92fab4e8c6ee4d) )
+ //ROM_LOAD( "R1.6B", 0x1600, 0x0200, CRC(11111111) SHA1(1111111111111111111111111111111111111111) ) // not populated
+ ROM_LOAD( "R1.7A", 0x1800, 0x0200, CRC(6e12538f) SHA1(aa08a2db2e5570b431afc967ea5fd749c4f82e33) )
+ ROM_LOAD( "R1.7B", 0x1a00, 0x0200, CRC(7270d194) SHA1(7cef9c420c3c3cbc5846bd22137213a78506a8d3) )
+
+ ROM_REGION( 0x0c00, "gfx1", 0 )
+ ROM_LOAD( "C1.1B", 0x0000, 0x0200, CRC(9feca88a) SHA1(14a8c46eb51eed01b7b537a9931cd092cec2019f) )
+ ROM_LOAD( "C1.2B", 0x0200, 0x0200, CRC(79fc3963) SHA1(25651d1031895a01a2a4751b355ff1200a899ac5) )
+ ROM_LOAD( "C1.3B", 0x0400, 0x0200, CRC(936171e4) SHA1(d0756b49bfd5d58a79f735d4a98a99cce7604b0e) )
+ 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*/
+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 )
diff --git a/src/mame/drivers/fastlane.cpp b/src/mame/drivers/fastlane.cpp
index 0eda767b887..6dea035e86c 100644
--- a/src/mame/drivers/fastlane.cpp
+++ b/src/mame/drivers/fastlane.cpp
@@ -39,8 +39,8 @@ WRITE8_MEMBER(fastlane_state::k007121_registers_w)
WRITE8_MEMBER(fastlane_state::fastlane_bankswitch_w)
{
/* bits 0 & 1 coin counters */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
/* bits 2 & 3 = bank number */
membank("bank1")->set_entry((data & 0x0c) >> 2);
diff --git a/src/mame/drivers/feversoc.cpp b/src/mame/drivers/feversoc.cpp
index 9767c83713e..eb810a83fc4 100644
--- a/src/mame/drivers/feversoc.cpp
+++ b/src/mame/drivers/feversoc.cpp
@@ -144,18 +144,18 @@ WRITE32_MEMBER(feversoc_state::output_w)
if(ACCESSING_BITS_16_31)
{
/* probably eeprom stuff too */
- coin_lockout_w(machine(), 0,~data>>16 & 0x40);
- coin_lockout_w(machine(), 1,~data>>16 & 0x40);
- coin_counter_w(machine(), 0,data>>16 & 1);
+ machine().bookkeeping().coin_lockout_w(0,~data>>16 & 0x40);
+ machine().bookkeeping().coin_lockout_w(1,~data>>16 & 0x40);
+ machine().bookkeeping().coin_counter_w(0,data>>16 & 1);
//data>>16 & 2 coin out
- coin_counter_w(machine(), 1,data>>16 & 4);
+ machine().bookkeeping().coin_counter_w(1,data>>16 & 4);
//data>>16 & 8 coin hopper
m_oki->set_bank_base(0x40000 * (((data>>16) & 0x20)>>5));
}
if(ACCESSING_BITS_0_15)
{
/* -xxx xxxx lamps*/
- coin_counter_w(machine(), 2,data & 0x2000); //key in
+ machine().bookkeeping().coin_counter_w(2,data & 0x2000); //key in
//data & 0x4000 key out
}
}
diff --git a/src/mame/drivers/fgoal.cpp b/src/mame/drivers/fgoal.cpp
index 6d4ee03f425..e8c366e4955 100644
--- a/src/mame/drivers/fgoal.cpp
+++ b/src/mame/drivers/fgoal.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp
new file mode 100644
index 00000000000..2a17baa6590
--- /dev/null
+++ b/src/mame/drivers/fidel6502.cpp
@@ -0,0 +1,601 @@
+// 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
+
+ TODO:
+ - x
+
+******************************************************************************/
+
+#include "emu.h"
+#include "cpu/m6502/m6502.h"
+#include "cpu/m6502/r65c02.h"
+#include "cpu/m6502/m65sc02.h"
+#include "machine/6821pia.h"
+#include "sound/speaker.h"
+
+#include "includes/fidelz80.h"
+
+// internal artwork
+#include "fidel_sc12.lh"
+#include "fidel_fev.lh"
+
+extern const char layout_fidel_vsc[]; // same layout as fidelz80/vsc
+
+
+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_speaker(*this, "speaker"),
+ m_irq_off(*this, "irq_off")
+ { }
+
+ // devices/pointers
+ optional_device<pia6821_device> m_6821pia;
+ optional_device<speaker_sound_device> m_speaker;
+ optional_device<timer_device> m_irq_off;
+
+ // model 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);
+
+ // model SC12
+ TIMER_DEVICE_CALLBACK_MEMBER(irq_off);
+ TIMER_DEVICE_CALLBACK_MEMBER(sc12_irq);
+ DECLARE_WRITE8_MEMBER(sc12_control_w);
+ DECLARE_READ8_MEMBER(sc12_input_r);
+};
+
+
+
+// Devices, I/O
+
+/******************************************************************************
+ CSC
+******************************************************************************/
+
+// misc handlers
+
+void fidel6502_state::csc_prepare_display()
+{
+ // 7442 output, also update input mux (9 is unused)
+ m_inp_mux = (1 << m_led_select) & 0x1ff;
+
+ // 4 7seg leds + H
+ for (int i = 0; i < 4; i++)
+ {
+ m_display_segmask[i] = 0x7f;
+ 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, 12);
+ 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: tone line
+ m_speaker->level_w(data >> 4 & 1);
+}
+
+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)
+ if (!(read_inputs(9) & 0x100))
+ data |= 0x20;
+
+ // d6,d7: language switches
+ data|=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
+******************************************************************************/
+
+// interrupt handling
+
+TIMER_DEVICE_CALLBACK_MEMBER(fidel6502_state::irq_off)
+{
+ m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(fidel6502_state::sc12_irq)
+{
+ m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
+ m_irq_off->adjust(attotime::from_nsec(15250)); // active low for 15.25us
+}
+
+
+// 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^7) & 0x80) ^ 0xff;
+}
+
+
+
+/******************************************************************************
+ 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
+
+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
+
+
+// FEV
+
+static ADDRESS_MAP_START( fev_map, AS_PROGRAM, 8, fidel6502_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x1fff) AM_RAM
+ AM_RANGE(0x8000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( csc )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Speak") PORT_CODE(KEYCODE_SPACE)
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RV") PORT_CODE(KEYCODE_V)
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TM") PORT_CODE(KEYCODE_T)
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L) // level
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_UNUSED)
+
+ PORT_START("IN.8")
+ 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) // clear
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) // reset
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_UNUSED) PORT_UNUSED
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( sc12 )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RV / Pawn") PORT_CODE(KEYCODE_1)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM / Knight") PORT_CODE(KEYCODE_2)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TB / Bishop") PORT_CODE(KEYCODE_3)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV / Rook") PORT_CODE(KEYCODE_4)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV / Queen") PORT_CODE(KEYCODE_5)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB / King") PORT_CODE(KEYCODE_6)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) // clear
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) // reset
+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_vsc)
+
+ /* 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("sc12_irq", fidel6502_state, sc12_irq, attotime::from_hz(780)) // from 556 timer
+ MCFG_TIMER_DRIVER_ADD("irq_off", fidel6502_state, irq_off)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_fidel_sc12)
+
+ /* 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( fev, fidel6502_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M65SC02, XTAL_3MHz) // M65SC102 (CMD)
+ MCFG_CPU_PROGRAM_MAP(fev_map)
+
+ 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("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)
+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( 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( fexcelv )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) )
+
+ ROM_REGION( 0x8000, "speech", 0 )
+ ROM_LOAD("101-1081a01.ic2", 0x0000, 0x8000, CRC(c8ae1607) SHA1(6491ce6be60ed77f3dd931c0ca17616f13af943e) )
+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", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
+
+COMP( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_NOT_WORKING )
+
+COMP( 1987, fexcelv, 0, 0, fev, csc, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp
index 2289cb0965b..6e3e5cb725e 100644
--- a/src/mame/drivers/fidelz80.cpp
+++ b/src/mame/drivers/fidelz80.cpp
@@ -1,32 +1,34 @@
// license:BSD-3-Clause
-// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco
+// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap
/******************************************************************************
-*
-* Fidelity Electronics Z80 based board driver
-* By Kevin 'kevtris' Horton, Jonathan Gevaryahu AKA Lord Nightmare and Sandro Ronco
-*
-* 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 7002/VBRC and 7014/bridgec3 speech so that the z80 is halted while words are being spoken
-*
+
+ Fidelity Electronics Z80 based board driver
+ for 6502 based boards, see drivers/fidel6502.cpp
+
+ Detailed RE work done by Kevin 'kevtris' Horton, except where noted
+
+ 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.
+ - 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)
+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).
@@ -74,7 +76,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)
@@ -113,10 +115,14 @@ This way, the game can then detect which secondary language is present, and then
automatically select the correct ROM(s). I have to test whether it will do automatic
determination and give you a language option on power up or something.
+
***********************************************************************
-Chess Challenger 3/10
-----------------------
+Chess Challenger 10
+-------------------
+
+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
@@ -135,6 +141,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 +151,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)
@@ -154,7 +163,9 @@ PC.5 - button column B (W)
PC.6 - button column C (W)
PC.7 - button column D (W)
+
******************************************************************************
+
Voice Bridge Challenger (Model VBRC, later reissued as Model 7002)
and Bridge Challenger 3 (Model 7014)
(which both share the same* hardware)
@@ -198,7 +209,6 @@ I/O Map:
00-FF: 8041 I/O ports (A0 selects between the two)
-
8041 pinout:
------------
@@ -225,7 +235,8 @@ 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:
--------------------
@@ -291,13 +302,15 @@ by the grids. hi = grid on, hi = segment on.
A detailed description of the hardware can be found also in the patent 4,373,719.
+
******************************************************************************
-Sensory Chess Challenger champion (6502 based, needs its own driver .c file)
----------------------------------
+Champion Sensory Chess Challenger (CSC) (6502 based -> fidel6502.cpp driver)
+---------------------------------------
Memory map:
-----------
+
0000-07FF: 2K of RAM
0800-0FFF: 1K of RAM (note: mirrored twice)
1000-17FF: PIA 0 (display, TSI speech chip)
@@ -310,7 +323,6 @@ C000-DFFF: 101-1025A02 ROM
E000-FDFF: 101-1025A01 ROM
FE00-FFFF: 512 byte 74S474 PROM
-
CPU is a 6502 running at 1.95MHz (3.9MHz resonator, divided by 2)
NMI is not used.
@@ -318,28 +330,24 @@ IRQ is connected to a 600Hz oscillator (38.4KHz divided by 64).
Reset is connected to a power-on reset circuit.
-PIA port lines:
----------------
-
-
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
PB2 - white wire
-PB3 - DONE line from S14001A
+PB3 - BUSY line from S14001A
PB4 - Tone line (toggle to make a tone in the speaker)
-PB5 - button column I
+PB5 - button row 9
PB6 - selection jumper (resistor to 5V)
PB7 - selection jumper (resistor to ground)
@@ -349,6 +357,7 @@ CA2 - violet wire
CB1 - NC
CB2 - NC (connects to pin 14 of soldered connector)
+
PIA 1:
------
@@ -376,6 +385,7 @@ CA2 - selector bit 3
CB1 - button row 8
CB2 - selector bit 2
+
Selector: (attached to PIA 1, outputs 1 of 10 pins low. 7442)
---------
@@ -393,7 +403,6 @@ output # (selected turns this column on, and all others off)
The rows/columns are indicated on the game board:
-
ABCDEFGH I
--------------
| | 8
@@ -420,6 +429,7 @@ column F - ST
these 6 buttons use row 9 (connects to PIA 0)
+
LED display:
------------
@@ -437,8 +447,9 @@ 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
@@ -468,7 +479,6 @@ NMI runs to a 555 oscillator that generates a 600Hz clock (measured: 598.9Hz. I
INT is pulled to 5V
RST connects to a power-on reset circuit
-
Memory map:
-----------
@@ -489,8 +499,8 @@ Decoding isn't performed using a selector, but instead address lines are used.
A2 connects to /CE on the 8255
A3 connects to /CE on the Z80A PIO
-A1 connects to control/data select on PIO & A0 of 8255
-A0 connects to port A/B select on PIO & A1 of 8255
+A0 connects to port A/B select on PIO & A0 of 8255
+A1 connects to control/data select on PIO & A1 of 8255
So to enable only the 8255, you'd write/read to 08-0Bh for example
To enable only the PIO, you'd write/read to 04-07h for example.
@@ -511,10 +521,10 @@ This sequence repeats every 16 addresses. So to recap:
10-FF: mirrors of 00-0F.
-
Refer to the Sensory Champ. Chess Chall. above for explanations of the below
I/O names and labels. It's the same.
+
8255:
-----
@@ -559,14 +569,15 @@ PA.6 - button row 7
PA.7 - button row 8
PB.0 - button column I
-PB.1 - button row 9
+PB.1 - button column J
PB.2 - Tone line (toggle to make tone in the speaker)
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
+
selection jumpers:
------------------
@@ -580,862 +591,1077 @@ 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) (6502 based -> fidel6502.cpp driver)
+---------------------------------
+
+RE information 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 of 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 (FEV, model 6092) (6502 based -> fidel6502.cpp driver)
+----------------------------------
+
+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 tablet
+
+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
+
+******************************************************************************/
-/* Core includes */
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/mcs48/mcs48.h"
#include "machine/i8255.h"
#include "machine/i8243.h"
#include "machine/z80pio.h"
+#include "sound/speaker.h"
#include "sound/beep.h"
-#include "sound/s14001a.h"
+
#include "includes/fidelz80.h"
-#include "fidelz80.lh"
-#include "vsc.lh"
-#include "bridgec3.lh"
-//#include "debugger.h"
+// internal artwork
+#include "fidel_cc.lh"
+#include "fidel_vcc.lh"
+#include "fidel_vsc.lh"
+#include "fidel_vbrc.lh"
-/* Devices */
-/******************************************************************************
- I8255 Device, for VCC/UVC
-******************************************************************************/
-
-void fidelz80_state::update_display()
+class fidelz80_state : public fidelz80base_state
{
- // data for the 4x 7seg leds, bits are 0bxABCDEFG
- UINT8 out_digit = BITSWAP8(m_digit_data,7,0,1,2,3,4,5,6) & 0x7f;
+public:
+ fidelz80_state(const machine_config &mconfig, device_type type, const char *tag)
+ : fidelz80base_state(mconfig, type, tag),
+ m_mcu(*this, "mcu"),
+ m_z80pio(*this, "z80pio"),
+ m_ppi8255(*this, "ppi8255"),
+ m_i8243(*this, "i8243"),
+ m_speaker(*this, "speaker"),
+ m_beeper_off(*this, "beeper_off"),
+ m_beeper(*this, "beeper")
+ { }
+
+ // devices/pointers
+ 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_device<speaker_sound_device> m_speaker;
+ optional_device<timer_device> m_beeper_off;
+ optional_device<beep_device> m_beeper;
+
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
+
+ // model VCC/UVC/CC10
+ 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);
+
+ // model VSC
+ void vsc_prepare_display();
+ DECLARE_READ8_MEMBER(vsc_io_trampoline_r);
+ DECLARE_WRITE8_MEMBER(vsc_io_trampoline_w);
+ DECLARE_WRITE8_MEMBER(vsc_ppi_porta_w);
+ DECLARE_WRITE8_MEMBER(vsc_ppi_portb_w);
+ DECLARE_WRITE8_MEMBER(vsc_ppi_portc_w);
+ DECLARE_READ8_MEMBER(vsc_pio_porta_r);
+ DECLARE_READ8_MEMBER(vsc_pio_portb_r);
+ DECLARE_WRITE8_MEMBER(vsc_pio_portb_w);
+
+ // model 7014 and VBC
+ 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 fidelz80base_state::machine_start()
+{
+ // zerofill
+ memset(m_display_state, 0, sizeof(m_display_state));
+ memset(m_display_cache, ~0, sizeof(m_display_cache));
+ memset(m_display_decay, 0, sizeof(m_display_decay));
+ memset(m_display_segmask, 0, sizeof(m_display_segmask));
- if (m_led_selected&0x04)
- {
- output_set_digit_value(0, out_digit);
+ m_inp_mux = 0;
+ m_led_select = 0;
+ m_led_data = 0;
+ m_7seg_data = 0;
+ m_speech_bank = 0;
- output_set_led_value(1, m_led_data);
- }
- if (m_led_selected&0x08)
- {
- output_set_digit_value(1, out_digit);
+ // register for savestates
+ save_item(NAME(m_display_maxy));
+ save_item(NAME(m_display_maxx));
+ save_item(NAME(m_display_wait));
- output_set_led_value(0, m_led_data);
- }
- if (m_led_selected&0x10)
- {
- output_set_digit_value(2, out_digit);
- }
- if (m_led_selected&0x20)
- {
- output_set_digit_value(3, out_digit);
- }
+ save_item(NAME(m_display_state));
+ /* save_item(NAME(m_display_cache)); */ // don't save!
+ save_item(NAME(m_display_decay));
+ save_item(NAME(m_display_segmask));
+
+ save_item(NAME(m_inp_mux));
+ save_item(NAME(m_led_select));
+ save_item(NAME(m_led_data));
+ save_item(NAME(m_7seg_data));
+ save_item(NAME(m_speech_bank));
}
-READ8_MEMBER(fidelz80_state::fidelz80_portc_r)
+void fidelz80base_state::machine_reset()
{
- UINT8 data = 0xff;
+}
- if (!(m_kp_matrix&0x10))
- {
- data &= ioport("LINE1")->read();
- }
- if (!(m_kp_matrix&0x20))
- {
- data &= ioport("LINE2")->read();
- }
- if (!(m_kp_matrix&0x40))
- {
- data &= ioport("LINE3")->read();
- }
- if (!(m_kp_matrix&0x80))
- {
- data &= ioport("LINE4")->read();
- }
- return data;
-}
-WRITE8_MEMBER(fidelz80_state::fidelz80_portb_w)
+/***************************************************************************
+
+ Helper Functions
+
+***************************************************************************/
+
+// 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 fidelz80base_state::display_update()
{
- if (!(data & 0x80))
+ UINT32 active_state[0x20];
+
+ for (int y = 0; y < m_display_maxy; y++)
{
- m_led_data = data & 1; // common for two leds
+ active_state[y] = 0;
+
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ // turn on powered segments
+ if (m_display_state[y] >> x & 1)
+ m_display_decay[y][x] = m_display_wait;
+
+ // determine active state
+ UINT32 ds = (m_display_decay[y][x] != 0) ? 1 : 0;
+ active_state[y] |= (ds << x);
+ }
+ }
- m_led_selected = data;
+ // on difference, send to output
+ for (int y = 0; y < m_display_maxy; y++)
+ if (m_display_cache[y] != active_state[y])
+ {
+ if (m_display_segmask[y] != 0)
+ output().set_digit_value(y, active_state[y] & m_display_segmask[y]);
+
+ const int mul = (m_display_maxx <= 10) ? 10 : 100;
+ for (int x = 0; x <= m_display_maxx; x++)
+ {
+ int state = active_state[y] >> x & 1;
+ char buf1[0x10]; // lampyx
+ char buf2[0x10]; // y.x
+
+ if (x == m_display_maxx)
+ {
+ // always-on if selected
+ sprintf(buf1, "lamp%da", y);
+ sprintf(buf2, "%d.a", y);
+ }
+ else
+ {
+ sprintf(buf1, "lamp%d", y * mul + x);
+ sprintf(buf2, "%d.%d", y, x);
+ }
+ output().set_value(buf1, state);
+ output().set_value(buf2, state);
+ }
+ }
+
+ memcpy(m_display_cache, active_state, sizeof(m_display_cache));
+}
- update_display();
- }
+TIMER_DEVICE_CALLBACK_MEMBER(fidelz80base_state::display_decay_tick)
+{
+ // slowly turn off unpowered segments
+ for (int y = 0; y < m_display_maxy; y++)
+ for (int x = 0; x <= m_display_maxx; x++)
+ if (m_display_decay[y][x] != 0)
+ m_display_decay[y][x]--;
- // ignoring the language switch enable for now, is bit 0x40
+ display_update();
}
-WRITE8_MEMBER(fidelz80_state::fidelz80_portc_w)
+void fidelz80base_state::set_display_size(int maxx, int maxy)
{
- m_kp_matrix = data;
+ m_display_maxx = maxx;
+ m_display_maxy = maxy;
}
-WRITE8_MEMBER(fidelz80_state::cc10_porta_w)
+void fidelz80base_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 sety)
{
- m_beep->set_state((data & 0x80) ? 0 : 1);
+ set_display_size(maxx, maxy);
- m_digit_data = data;
+ // update current state
+ UINT32 mask = (1 << maxx) - 1;
+ for (int y = 0; y < maxy; y++)
+ m_display_state[y] = (sety >> y & 1) ? ((setx & mask) | (1 << maxx)) : 0;
- update_display();
+ display_update();
}
-READ8_MEMBER(fidelz80_state::vcc_portb_r)
+
+// generic input handlers
+
+UINT16 fidelz80base_state::read_inputs(int columns)
{
- return (m_speech->bsy_r() != 0) ? 0x80 : 0x00;
+ UINT16 ret = 0;
+
+ // read selected input rows
+ for (int i = 0; i < columns; i++)
+ if (m_inp_mux >> i & 1)
+ ret |= m_inp_matrix[i]->read();
+
+ return ret;
}
-WRITE8_MEMBER(fidelz80_state::vcc_porta_w)
+INPUT_CHANGED_MEMBER(fidelz80_state::reset_button)
{
- 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));
+ // when RE button is directly wired to RESET pin(s)
+ m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
- m_digit_data = data;
-
- update_display();
+ if (m_mcu)
+ m_mcu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
}
+
+
+// Devices, I/O
+
/******************************************************************************
- I8255 Device, for VSC
+ CC10 and VCC/UVC
******************************************************************************/
-WRITE8_MEMBER(fidelz80_state::vsc_porta_w)
+// misc handlers
+
+void fidelz80_state::vcc_prepare_display()
{
- UINT8 out_digit = BITSWAP8(data,7,6,2,1,0,5,4,3);
+ // 4 7seg leds
+ for (int i = 0; i < 4; i++)
+ m_display_segmask[i] = 0x7f;
- if (m_kp_matrix & 0x01)
- {
- output_set_digit_value(0, out_digit & 0x7f);
- output_set_value("pm_led", BIT(out_digit, 7));
- }
- if (m_kp_matrix & 0x02)
- {
- output_set_digit_value(1, out_digit & 0x7f);
- }
- if (m_kp_matrix & 0x04)
- {
- output_set_digit_value(2, out_digit & 0x7f);
- output_set_value("up_dot", BIT(out_digit, 7));
- }
- if (m_kp_matrix & 0x08)
- {
- output_set_digit_value(3, out_digit & 0x7f);
- output_set_value("low_dot", BIT(out_digit, 7));
- }
+ // note: sel d0 for extra leds
+ UINT8 outdata = (m_7seg_data & 0x7f) | (m_led_select << 7 & 0x80);
+ display_matrix(8, 4, outdata, m_led_select >> 2 & 0xf);
+}
- m_speech->reg_w(data & 0x3f);
+READ8_MEMBER(fidelz80_state::vcc_speech_r)
+{
+ return m_speech_rom[m_speech_bank << 12 | offset];
}
-WRITE8_MEMBER(fidelz80_state::vsc_portb_w)
+
+// I8255 PPI
+
+WRITE8_MEMBER(fidelz80_state::vcc_ppi_porta_w)
{
- for (int row = 1; row <= 8; row++)
+ // 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 C0-C5
+ // d7: TSI START line
+ m_speech->data_w(space, 0, data & 0x3f);
+ m_speech->start_w(data >> 7 & 1);
+
+ // d6: language latch data
+ // d7: language latch clock (latch on high)
+ if (data & 0x80)
{
- if (m_kp_matrix & 0x01)
- output_set_indexed_value("led_a", row, BIT(data, 8-row));
- if (m_kp_matrix & 0x02)
- output_set_indexed_value("led_b", row, BIT(data, 8-row));
- if (m_kp_matrix & 0x04)
- output_set_indexed_value("led_c", row, BIT(data, 8-row));
- if (m_kp_matrix & 0x08)
- output_set_indexed_value("led_d", row, BIT(data, 8-row));
- if (m_kp_matrix & 0x10)
- output_set_indexed_value("led_e", row, BIT(data, 8-row));
- if (m_kp_matrix & 0x20)
- output_set_indexed_value("led_f", row, BIT(data, 8-row));
- if (m_kp_matrix & 0x40)
- output_set_indexed_value("led_g", row, BIT(data, 8-row));
- if (m_kp_matrix & 0x80)
- output_set_indexed_value("led_h", row, BIT(data, 8-row));
+ m_speech->force_update(); // update stream to now
+ m_speech_bank = data >> 6 & 1;
}
}
-WRITE8_MEMBER(fidelz80_state::vsc_portc_w)
+READ8_MEMBER(fidelz80_state::vcc_ppi_portb_r)
{
- m_kp_matrix = (m_kp_matrix & 0x300) | data;
+ // d7: TSI BUSY line
+ return (m_speech->busy_r()) ? 0x80 : 0x00;
}
-/******************************************************************************
- PIO Device, for VSC
-******************************************************************************/
+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();
+}
-READ8_MEMBER(fidelz80_state::vsc_pio_porta_r)
+READ8_MEMBER(fidelz80_state::vcc_ppi_portc_r)
{
- UINT8 data = 0;
-
- if (m_kp_matrix & 0x01)
- data |= (ioport("COL_A")->read());
- if (m_kp_matrix & 0x02)
- data |= (ioport("COL_B")->read());
- if (m_kp_matrix & 0x04)
- data |= (ioport("COL_C")->read());
- if (m_kp_matrix & 0x08)
- data |= (ioport("COL_D")->read());
- if (m_kp_matrix & 0x10)
- data |= (ioport("COL_E")->read());
- if (m_kp_matrix & 0x20)
- data |= (ioport("COL_F")->read());
- if (m_kp_matrix & 0x40)
- data |= (ioport("COL_G")->read());
- if (m_kp_matrix & 0x80)
- data |= (ioport("COL_H")->read());
- if (m_kp_matrix & 0x100)
- data |= (ioport("COL_I")->read());
- if (m_kp_matrix & 0x200)
- data |= (ioport("COL_L")->read());
-
- return data & 0xff;
+ // 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;
}
-READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
+WRITE8_MEMBER(fidelz80_state::vcc_ppi_portc_w)
{
- UINT8 data = 0x00;
+ // d4-d7: input mux (inverted)
+ m_inp_mux = ~data >> 4 & 0xf;
+}
- if (m_speech->bsy_r() == 0)
- data |= 0x10;
- return data;
+// 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::vsc_pio_portb_w)
+WRITE8_MEMBER(fidelz80_state::cc10_ppi_porta_w)
{
- m_kp_matrix = (m_kp_matrix & 0xff) | ((data & 0x03)<<8);
+ // 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
+ }
- m_speech->set_volume(15); // hack, s14001a core should assume a volume of 15 unless otherwise stated...
- m_speech->rst_w(BIT(data, 6));
+ // d0-d6: digit segment data (same as VCC)
+ m_7seg_data = BITSWAP8(data,7,0,1,2,3,4,5,6);
+ vcc_prepare_display();
}
+
+
/******************************************************************************
- I8041 MCU, for VBRC/7002 and bridgec3/7014
+ VSC
******************************************************************************/
-WRITE8_MEMBER(fidelz80_state::kp_matrix_w)
-{
- UINT16 out_data = BITSWAP16(m_digit_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_kp_matrix & 0x01)
- {
- output_set_digit_value(1, out_digit);
- output_set_led_value(8, out_led);
- }
- if (m_kp_matrix & 0x02)
- {
- output_set_digit_value(2, out_digit);
- output_set_led_value(7, out_led);
- }
- if (m_kp_matrix & 0x04)
- {
- output_set_digit_value(3, out_digit);
- output_set_led_value(6, out_led);
- }
- if (m_kp_matrix & 0x08)
- {
- output_set_digit_value(4, out_digit);
- output_set_led_value(5, out_led);
- }
- if (m_kp_matrix & 0x10)
- {
- output_set_digit_value(5, out_digit);
- output_set_led_value(4, out_led);
- }
- if (m_kp_matrix & 0x20)
- {
- output_set_digit_value(6, out_digit);
- output_set_led_value(3, out_led);
- }
- if (m_kp_matrix & 0x40)
- {
- output_set_digit_value(7, out_digit);
- output_set_led_value(2, out_led);
- }
- if (m_kp_matrix & 0x80)
+void fidelz80_state::vsc_prepare_display()
+{
+ // 4 7seg leds + H
+ for (int i = 0; i < 4; i++)
{
- output_set_digit_value(8, out_digit);
- output_set_led_value(1, out_led);
+ m_display_segmask[i] = 0x7f;
+ m_display_state[i] = (m_led_select >> i & 1) ? m_7seg_data : 0;
}
- memset(m_digit_line_status, 0, sizeof(m_digit_line_status));
+ // 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;
- m_kp_matrix = data;
+ set_display_size(8, 12);
+ display_update();
}
-READ8_MEMBER(fidelz80_state::exp_i8243_p2_r)
+
+// I8255 PPI
+
+WRITE8_MEMBER(fidelz80_state::vsc_ppi_porta_w)
{
- UINT8 data = 0xff;
-
- if (m_kp_matrix & 0x01)
- data &= ioport("LINE1")->read();
- if (m_kp_matrix & 0x02)
- data &= ioport("LINE2")->read();
- if (m_kp_matrix & 0x04)
- data &= ioport("LINE3")->read();
- if (m_kp_matrix & 0x08)
- data &= ioport("LINE4")->read();
- if (m_kp_matrix & 0x10)
- data &= ioport("LINE5")->read();
- if (m_kp_matrix & 0x20)
- data &= ioport("LINE6")->read();
- if (m_kp_matrix & 0x40)
- data &= ioport("LINE7")->read();
- if (m_kp_matrix & 0x80)
- data &= ioport("LINE8")->read();
-
- return (m_i8243->i8243_p2_r(space, offset)&0x0f) | (data&0xf0);
+ // 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);
+ vsc_prepare_display();
}
-WRITE8_MEMBER(fidelz80_state::exp_i8243_p2_w)
+WRITE8_MEMBER(fidelz80_state::vsc_ppi_portb_w)
{
- m_i8243->i8243_p2_w(space, offset, data&0x0f);
+ // d0-d7: led row data
+ m_led_data = data;
+ vsc_prepare_display();
}
-// probably related to the card scanner
-READ8_MEMBER(fidelz80_state::unknown_r)
+WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
{
- return 0;
+ // d0-d3: select digits
+ // d0-d7: select leds, input mux low bits
+ m_inp_mux = (m_inp_mux & 0x300) | data;
+ m_led_select = data;
+ vsc_prepare_display();
}
-READ8_MEMBER(fidelz80_state::unknown2_r)
+
+// Z80 PIO
+
+READ8_MEMBER(fidelz80_state::vsc_pio_porta_r)
{
- return machine().rand();
+ // d0-d7: multiplexed inputs
+ return read_inputs(10);
}
-/******************************************************************************
- I8243 expander
-******************************************************************************/
+READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
+{
+ UINT8 ret = 0;
-WRITE8_MEMBER(fidelz80_state::digit_w)
+ // d4: TSI BUSY line
+ ret |= (m_speech->busy_r()) ? 0 : 0x10;
+
+ return ret;
+}
+
+WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w)
{
- if (m_digit_line_status[offset])
- return;
+ // d0,d1: input mux highest bits
+ m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300);
- m_digit_line_status[offset&3] = 1;
+ // d2: tone line
+ m_speaker->level_w(data >> 2 & 1);
- switch (offset)
- {
- case 0:
- m_digit_data = (m_digit_data&(~0x000f)) | ((data<<0)&0x000f);
- break;
- case 1:
- m_digit_data = (m_digit_data&(~0x00f0)) | ((data<<4)&0x00f0);
- break;
- case 2:
- m_digit_data = (m_digit_data&(~0x0f00)) | ((data<<8)&0x0f00);
- break;
- case 3:
- m_digit_data = (m_digit_data&(~0xf000)) | ((data<<12)&0xf000);
- break;
- }
+ // d6: TSI START line
+ m_speech->start_w(data >> 6 & 1);
}
+
+
/******************************************************************************
- basic machine
+ VBRC
******************************************************************************/
-WRITE8_MEMBER(fidelz80_state::mcu_data_w)
-{
- m_i8041->upi41_master_w(space, 0, data);
-}
+// misc handlers
-WRITE8_MEMBER(fidelz80_state::mcu_command_w)
+void fidelz80_state::vbrc_prepare_display()
{
- m_i8041->upi41_master_w(space, 1, data);
+ // 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);
+ for (int i = 0; i < 8; i++)
+ m_display_segmask[i] = 0x3fff;
+
+ display_matrix(16, 8, outdata, m_led_select);
}
-READ8_MEMBER(fidelz80_state::mcu_data_r)
+
+// I8243 I/O expander
+
+WRITE8_MEMBER(fidelz80_state::vbrc_ioexp_port_w)
{
- return m_i8041->upi41_master_r(space, 0);
+ // P4-P7: digit segment data
+ m_7seg_data = (m_7seg_data & ~(0xf << (4*offset))) | ((data & 0xf) << (4*offset));
+ vbrc_prepare_display();
}
-READ8_MEMBER(fidelz80_state::mcu_status_r)
+
+// I8041 MCU
+
+WRITE8_MEMBER(fidelz80_state::vbrc_mcu_p1_w)
{
- return m_i8041->upi41_master_r(space, 1);
+ // d0-d7: select digits, input mux
+ m_inp_mux = m_led_select = data;
+ vbrc_prepare_display();
}
-WRITE8_MEMBER(fidelz80_state::bridgec_speech_w)
+READ8_MEMBER(fidelz80_state::vbrc_mcu_p2_r)
{
- // 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));
+ // d0-d3: I8243 P2
+ // d4-d7: multiplexed inputs (active low)
+ return (m_i8243->i8243_p2_r(space, offset) & 0x0f) | (read_inputs(8) << 4 ^ 0xf0);
}
-void fidelz80_state::machine_start()
+READ8_MEMBER(fidelz80_state::vbrc_mcu_t_r)
{
- // zerofill
- m_led_selected = 0;
- m_kp_matrix = 0;
- m_digit_data = 0;
- m_led_data = 0;
- memset(m_digit_line_status, 0, sizeof(m_digit_line_status));
+ // T0: card scanner?
+ if (offset == 0)
+ return 0;
- // register for savestates
- save_item(NAME(m_led_selected));
- save_item(NAME(m_kp_matrix));
- save_item(NAME(m_digit_data));
- save_item(NAME(m_led_data));
- save_item(NAME(m_digit_line_status));
+ // T1: ?
+ else
+ return rand() & 1;
}
-TIMER_DEVICE_CALLBACK_MEMBER(fidelz80_state::nmi_timer)
-{
- m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
-}
+
/******************************************************************************
Address Maps
******************************************************************************/
-static ADDRESS_MAP_START(cc10_z80_mem, AS_PROGRAM, 8, fidelz80_state)
+// CC10 and VCC/UVC
+
+static ADDRESS_MAP_START( cc10_map, AS_PROGRAM, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x3000, 0x31ff) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START(vcc_z80_mem, AS_PROGRAM, 8, fidelz80_state)
+static ADDRESS_MAP_START( vcc_map, AS_PROGRAM, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM // 4k rom
- AM_RANGE(0x1000, 0x1fff) AM_ROM // 4k rom
- AM_RANGE(0x2000, 0x2fff) AM_ROM // 4k rom
- AM_RANGE(0x4000, 0x43ff) AM_RAM AM_MIRROR(0x1c00) // 1k ram (2114*2) mirrored 8 times
+ AM_RANGE(0x0000, 0x2fff) AM_ROM
+ AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START(vsc_mem, AS_PROGRAM, 8, fidelz80_state)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM // 8k rom
- AM_RANGE(0x2000, 0x3fff) AM_ROM // 8k rom
- AM_RANGE(0x4000, 0x5fff) AM_ROM // 4k rom
- AM_RANGE(0x6000, 0x7fff) AM_RAM AM_MIRROR(0x1c00) // 1k ram (2114*2) mirrored 8 times
+static ADDRESS_MAP_START( vcc_io, AS_IO, 8, fidelz80_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x03)
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(bridgec_z80_mem, AS_PROGRAM, 8, fidelz80_state)
+
+// VSC
+
+static ADDRESS_MAP_START( vsc_map, AS_PROGRAM, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM // 8k rom
- AM_RANGE(0x2000, 0x3fff) AM_ROM // 8k rom
- AM_RANGE(0x4000, 0x5fff) AM_ROM // 8k rom
- AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00) // 1k ram (2114*2) mirrored 8 times
- AM_RANGE(0xe000, 0xe000) AM_WRITE(bridgec_speech_w) AM_MIRROR(0x1fff) // write to speech chip, halts cpu
+ 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
-static ADDRESS_MAP_START(fidel_z80_io, AS_IO, 8, fidelz80_state)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_MIRROR(0xFC) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // 8255 i/o chip
+// 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
+ if (~offset & 4)
+ ret &= m_ppi8255->read(space, offset & 3);
+ if (~offset & 8)
+ ret &= m_z80pio->read(space, offset & 3);
+
+ return ret;
+}
+
+WRITE8_MEMBER(fidelz80_state::vsc_io_trampoline_w)
+{
+ if (~offset & 4)
+ m_ppi8255->write(space, offset & 3, data);
+ if (~offset & 8)
+ m_z80pio->write(space, offset & 3, data);
+}
+
+static ADDRESS_MAP_START( vsc_io, AS_IO, 8, fidelz80_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x0f)
+ AM_RANGE(0x00, 0x0f) AM_READWRITE(vsc_io_trampoline_r, vsc_io_trampoline_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(vsc_io, AS_IO, 8, fidelz80_state)
+
+// VBRC
+
+WRITE8_MEMBER(fidelz80_state::vbrc_speech_w)
+{
+ //printf("%X ",data);
+
+ // todo: HALT THE z80 here, and set up a callback to poll the s14001a BUSY line to resume z80
+ m_speech->data_w(space, 0, data & 0x3f);
+ m_speech->start_w(1);
+ m_speech->start_w(0);
+
+ //m_speech->start_w(BIT(data, 7));
+}
+
+static ADDRESS_MAP_START( vbrc_main_map, AS_PROGRAM, 8, fidelz80_state )
ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x07) AM_MIRROR(0xf0) AM_DEVREADWRITE("z80pio", z80pio_device, read, write)
- AM_RANGE(0x08, 0x0b) AM_MIRROR(0xf0) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
+ AM_RANGE(0x0000, 0x5fff) AM_ROM
+ AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM
+ AM_RANGE(0xe000, 0xffff) AM_MIRROR(0x1fff) AM_WRITE(vbrc_speech_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(bridgec_z80_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)
+static ADDRESS_MAP_START( vbrc_main_io, AS_IO, 8, fidelz80_state )
+ 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(bridgec_mcu_io, AS_IO, 8, fidelz80_state)
+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
-/******************************************************************************
- Input Ports
-******************************************************************************/
-INPUT_CHANGED_MEMBER(fidelz80_state::fidelz80_trigger_reset)
-{
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
-}
-INPUT_CHANGED_MEMBER(fidelz80_state::bridgec_trigger_reset)
-{
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
- m_i8041->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE);
-}
+/******************************************************************************
+ Input Ports
+******************************************************************************/
static INPUT_PORTS_START( fidelz80 )
- PORT_START("LEVEL") // cc10 only
- PORT_CONFNAME( 0x80, 0x00, "Number of levels" )
- PORT_CONFSETTING( 0x00, "10" )
- PORT_CONFSETTING( 0x80, "3" )
-
- PORT_START("LINE1")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, fidelz80_state, fidelz80_trigger_reset, 0)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_A)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_E)
-
- PORT_START("LINE2")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_Z)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_B)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_F)
-
- PORT_START("LINE3")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_P)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_C)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_G)
-
- PORT_START("LINE4")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER)
- PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_O)
- PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_D)
- PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_H)
+ 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_L)
+ 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_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_Z)
+ 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_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_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_START("IN.4") // TODO: hardcode this
+ PORT_CONFNAME( 0x0f, 0x00, "Language" )
+ PORT_CONFSETTING( 0x00, "English" )
+ PORT_CONFSETTING( 0x01, "French" )
+ PORT_CONFSETTING( 0x02, "Spanish" )
+ PORT_CONFSETTING( 0x04, "German" )
+ PORT_CONFSETTING( 0x08, "Special" )
+
+ 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)
+
+ PORT_START("LEVEL") // cc10 only, TODO: hardcode this
+ PORT_CONFNAME( 0x80, 0x00, "Number of levels" )
+ PORT_CONFSETTING( 0x00, "10" )
+ PORT_CONFSETTING( 0x80, "3" )
INPUT_PORTS_END
static INPUT_PORTS_START( vsc )
- //chessboard buttons
- PORT_START("COL_A")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_START("COL_B")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_START("COL_C")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_START("COL_D")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_START("COL_E")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_START("COL_F")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_START("COL_G")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_START("COL_H")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
-
- //buttons on the right
- PORT_START("COL_I")
- 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)
-
- //buttons beside the display
- PORT_START("COL_L")
- 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_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ PORT_START("IN.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
+
+ 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_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)
INPUT_PORTS_END
-static INPUT_PORTS_START( bridgec )
- PORT_START("LINE1")
- PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("10") PORT_CODE(KEYCODE_0)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
-
- PORT_START("LINE2")
- PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
-
- PORT_START("LINE3")
- PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("P") PORT_CODE(KEYCODE_Z)
-
- PORT_START("LINE4")
- PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("J") PORT_CODE(KEYCODE_J)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("NT") PORT_CODE(KEYCODE_N)
-
- PORT_START("LINE5")
- PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_E)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("SC") PORT_CODE(KEYCODE_S)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("PL") PORT_CODE(KEYCODE_X)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Spades") PORT_CODE(KEYCODE_1_PAD)
-
- PORT_START("LINE6")
- PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_C)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("DB") PORT_CODE(KEYCODE_D)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("VL") PORT_CODE(KEYCODE_V)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Hearts") PORT_CODE(KEYCODE_2_PAD)
-
- PORT_START("LINE7")
- PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Beep on/off") PORT_CODE(KEYCODE_SPACE)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_B)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("CV") PORT_CODE(KEYCODE_G)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Diamonds") PORT_CODE(KEYCODE_3_PAD)
-
- PORT_START("LINE8")
- PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, fidelz80_state, bridgec_trigger_reset, 0)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("BR") PORT_CODE(KEYCODE_T)
- PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("DL") PORT_CODE(KEYCODE_L)
- PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clubs") PORT_CODE(KEYCODE_4_PAD)
+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_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_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_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_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_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_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_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_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)
INPUT_PORTS_END
+
+
/******************************************************************************
- Machine Drivers
+ Machine Drivers
******************************************************************************/
static MACHINE_CONFIG_START( cc10, fidelz80_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz)
- MCFG_CPU_PROGRAM_MAP(cc10_z80_mem)
- MCFG_CPU_IO_MAP(fidel_z80_io)
- MCFG_QUANTUM_TIME(attotime::from_hz(60))
-
- /* video hardware */
- MCFG_DEFAULT_LAYOUT(layout_fidelz80)
+ MCFG_CPU_PROGRAM_MAP(cc10_map)
+ MCFG_CPU_IO_MAP(vcc_io)
- /* other hardware */
MCFG_DEVICE_ADD("ppi8255", I8255, 0)
- MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, cc10_porta_w))
+ MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, cc10_ppi_porta_w))
MCFG_I8255_IN_PORTB_CB(IOPORT("LEVEL"))
- MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, fidelz80_portb_w))
- MCFG_I8255_IN_PORTC_CB(READ8(fidelz80_state, fidelz80_portc_r))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, fidelz80_portc_w))
+ MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, vcc_ppi_portb_w))
+ 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", 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("beeper", BEEP, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ 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 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz)
- MCFG_CPU_PROGRAM_MAP(vcc_z80_mem)
- MCFG_CPU_IO_MAP(fidel_z80_io)
- MCFG_QUANTUM_TIME(attotime::from_hz(60))
-
- /* video hardware */
- MCFG_DEFAULT_LAYOUT(layout_fidelz80)
+ MCFG_CPU_PROGRAM_MAP(vcc_map)
+ MCFG_CPU_IO_MAP(vcc_io)
- /* other hardware */
MCFG_DEVICE_ADD("ppi8255", I8255, 0)
- // Port A Read - NULL : only bit 6 is readable (and only sometimes) and I'm not emulating the language latch unless needed
- MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, vcc_porta_w)) // display segments and s14001a lines
- MCFG_I8255_IN_PORTB_CB(READ8(fidelz80_state, vcc_portb_r)) // bit 7 is readable and is the done line from the s14001a
- MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, fidelz80_portb_w)) // display digits and led dots
- MCFG_I8255_IN_PORTC_CB(READ8(fidelz80_state, fidelz80_portc_r)) // bits 0,1,2,3 are readable, have to do with input
- MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, fidelz80_portc_w)) // bits 4,5,6,7 are writable, have to do with input
+ MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, vcc_ppi_porta_w))
+ MCFG_I8255_IN_PORTB_CB(READ8(fidelz80_state, vcc_ppi_portb_r))
+ MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, vcc_ppi_portb_w))
+ 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", 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) // around 25khz
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
+ 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 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz)
- MCFG_CPU_PROGRAM_MAP(vsc_mem)
+ MCFG_CPU_PROGRAM_MAP(vsc_map)
MCFG_CPU_IO_MAP(vsc_io)
+ MCFG_CPU_PERIODIC_INT_DRIVER(fidelz80base_state, nmi_line_pulse, 600) // 555 timer, approx 600hz
- MCFG_DEFAULT_LAYOUT(layout_vsc)
-
- /* other hardware */
MCFG_DEVICE_ADD("ppi8255", I8255, 0)
- MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, vsc_porta_w))
- MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, vsc_portb_w))
- MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, vsc_portb_w))
+ MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, vsc_ppi_porta_w))
+ MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, vsc_ppi_portb_w))
+ MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, vsc_ppi_portc_w))
MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_4MHz)
MCFG_Z80PIO_IN_PA_CB(READ8(fidelz80_state, vsc_pio_porta_r))
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("nmi_timer", fidelz80_state, nmi_timer, attotime::from_hz(600))
- MCFG_TIMER_START_DELAY(attotime::from_hz(600))
+ 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) // around 25khz
+ MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
+ 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( 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_PROGRAM_MAP(bridgec_z80_mem)
- MCFG_CPU_IO_MAP(bridgec_z80_io)
- MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ 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")
- /* video hardware */
- MCFG_DEFAULT_LAYOUT(layout_bridgec3)
+ MCFG_CPU_ADD("mcu", I8041, XTAL_5MHz) // or XTAL_5MHz/4?
+ MCFG_CPU_IO_MAP(vbrc_mcu_map)
- /* other hardware */
- MCFG_CPU_ADD("mcu", I8041, XTAL_5MHz) // 5MHz
- MCFG_CPU_IO_MAP(bridgec_mcu_io)
+ MCFG_I8243_ADD("i8243", NOOP, WRITE8(fidelz80_state, vbrc_ioexp_port_w))
- MCFG_I8243_ADD("i8243", NOOP, WRITE8(fidelz80_state,digit_w))
+ 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) // around 25khz
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END
+
/******************************************************************************
- ROM Definitions
+ ROM Definitions
******************************************************************************/
ROM_START( cc10 )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "cc10.bin", 0x0000, 0x1000, CRC(bb9e6055) SHA1(18276e57cf56465a6352239781a828c5f3d5ba63))
+ ROM_LOAD( "cc10b", 0x0000, 0x1000, CRC(afd3ca99) SHA1(870d09b2b52ccb8572d69642c59b5215d5fb26ab) ) // 2332
+ROM_END
+
+
+ROM_START( vcc )
+ 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( 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
+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
ROM_END
-ROM_START(vcc)
- 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_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-engl.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d)) // at location c4?
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD("vcc-spanish.bin", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) )
ROM_END
-ROM_START(uvc)
- 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_START( uvc )
+ 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( 0x1000, "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_END
-ROM_START(vsc)
- 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("101-32107.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d))
+ROM_START( vsc )
+ 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( 0x1000, "speech", 0 )
+ ROM_LOAD("101-32107.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) )
ROM_END
-ROM_START(vbrc) // AKA model 7002
- ROM_REGION(0x10000, "maincpu", 0)
+
+ROM_START( vbrc ) // AKA model 7002
+ 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))
- ROM_LOAD("101-64110.e3", 0x4000, 0x2000, CRC(3040d0bd) SHA1(caa55fc8d9196e408fb41e7171a68e5099519813))
+ ROM_LOAD("101-64108.g3", 0x0000, 0x2000, CRC(08472223) SHA1(859865b13c908dbb474333263dc60f6a32461141) )
+ ROM_LOAD("101-64109.f3", 0x2000, 0x2000, CRC(320afa0f) SHA1(90edfe0ac19b108d232cda376b03a3a24befad4c) )
+ ROM_LOAD("101-64110.e3", 0x4000, 0x2000, CRC(3040d0bd) SHA1(caa55fc8d9196e408fb41e7171a68e5099519813) )
- ROM_REGION(0x1000, "mcu", 0)
- ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a))
+ ROM_REGION( 0x1000, "mcu", 0 )
+ ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a) )
- ROM_REGION(0x2000, "speech", 0)
- ROM_LOAD("101-32118.i2", 0x0000, 0x1000, CRC(a0b8bb8f) SHA1(f56852108928d5c6caccfc8166fa347d6760a740))
+ 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", 0)
+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", 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
- ROM_LOAD("7014_blue.e3", 0x4000, 0x2000, CRC(341d9ca6) SHA1(370876573bb9408e75f4fc797304b6c64af0590a)) // blue sticker
+ 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
+ ROM_LOAD("7014_blue.e3", 0x4000, 0x2000, CRC(341d9ca6) SHA1(370876573bb9408e75f4fc797304b6c64af0590a) ) // blue sticker
- 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( 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_LOAD("101-32118.i2", 0x0000, 0x1000, CRC(a0b8bb8f) SHA1(f56852108928d5c6caccfc8166fa347d6760a740)) // "ea 101-32118 || (C) 1980 || EA 8332A247-4 || 8034"
+ 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
+
+
/******************************************************************************
- Drivers
+ 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 (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( 1979, vbrc, 0, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger (model VBRC/7002)", MACHINE_NOT_WORKING )
-COMP( 1980, uvc, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Advanced Talking Chess Challenger (model UVC)", MACHINE_NOT_WORKING )
-COMP( 1980, bridgec3, vbrc, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger 3 (model 7014)", MACHINE_NOT_WORKING )
-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( 1978, cc10, 0, 0, cc10, fidelz80, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+COMP( 1979, vcc, 0, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+COMP( 1979, vccg, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+COMP( 1979, vccfr, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+COMP( 1979, vccsp, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Voice Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+COMP( 1980, uvc, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+
+COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
+
+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/finalizr.cpp b/src/mame/drivers/finalizr.cpp
index 98f09e6bf54..d962c81ebc7 100644
--- a/src/mame/drivers/finalizr.cpp
+++ b/src/mame/drivers/finalizr.cpp
@@ -42,8 +42,8 @@ WRITE8_MEMBER(finalizr_state::finalizr_videoctrl_w)
WRITE8_MEMBER(finalizr_state::finalizr_coin_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
WRITE8_MEMBER(finalizr_state::finalizr_flipscreen_w)
diff --git a/src/mame/drivers/fireball.cpp b/src/mame/drivers/fireball.cpp
index 5b88a5802de..eb73ab3ad37 100644
--- a/src/mame/drivers/fireball.cpp
+++ b/src/mame/drivers/fireball.cpp
@@ -109,13 +109,13 @@ WRITE8_MEMBER(fireball_state::io_00_w)
switch (data&0x0f)
{
- case 1: output_set_digit_value(2, m_display_data);
+ case 1: output().set_digit_value(2, m_display_data);
break;
- case 2: output_set_digit_value(1, m_display_data);
+ case 2: output().set_digit_value(1, m_display_data);
break;
- case 4: output_set_digit_value(4, m_display_data);
+ case 4: output().set_digit_value(4, m_display_data);
break;
- case 8: output_set_digit_value(3, m_display_data);
+ case 8: output().set_digit_value(3, m_display_data);
break;
}
@@ -123,9 +123,9 @@ WRITE8_MEMBER(fireball_state::io_00_w)
if (LOG_OUTPUT)
logerror("write to 0x00 IO (X11-X11A) %02X\n",data&0xf0);
- output_set_value("Hopper1", BIT(data, 4));
- output_set_value("Hopper2", BIT(data, 5));
- output_set_value("Hopper3", BIT(data, 6));
+ output().set_value("Hopper1", BIT(data, 4));
+ output().set_value("Hopper2", BIT(data, 5));
+ output().set_value("Hopper3", BIT(data, 6));
}
READ8_MEMBER(fireball_state::io_02_r)
@@ -144,14 +144,14 @@ WRITE8_MEMBER(fireball_state::io_02_w)
if (LOG_OUTPUT)
logerror("write to 0x00 IO (X7-X9) %02X\n",data);
- output_set_value("GameOver", BIT(data, 0));
- output_set_value("Title", BIT(data, 1));
- output_set_value("Credit", BIT(data, 2));
- output_set_value("SS", BIT(data, 3));
- output_set_value("C_LOCK", BIT(~data, 4));
- output_set_value("SV", BIT(data, 5));
- output_set_value("FBV", BIT(data, 6));
- output_set_value("RV", BIT(data, 7));
+ output().set_value("GameOver", BIT(data, 0));
+ output().set_value("Title", BIT(data, 1));
+ output().set_value("Credit", BIT(data, 2));
+ output().set_value("SS", BIT(data, 3));
+ output().set_value("C_LOCK", BIT(~data, 4));
+ output().set_value("SV", BIT(data, 5));
+ output().set_value("FBV", BIT(data, 6));
+ output().set_value("RV", BIT(data, 7));
}
READ8_MEMBER(fireball_state::io_04_r)
@@ -194,7 +194,7 @@ WRITE8_MEMBER(fireball_state::io_06_w)
if (LOG_DISPLAY2)
logerror("On board display write %02X\n",UINT8(~(data&0xff)));
- output_set_digit_value(7, UINT8(~(data&0xff)));
+ output().set_digit_value(7, UINT8(~(data&0xff)));
}
@@ -443,21 +443,21 @@ INPUT_PORTS_END
void fireball_state::machine_reset()
{
int_timing=1;
- output_set_digit_value(5, 0x3f);
- output_set_digit_value(6, 0x3f);
-
- output_set_value("Hopper1", 0);
- output_set_value("Hopper2", 0);
- output_set_value("Hopper3", 0);
-
- output_set_value("GameOver", 0);
- output_set_value("Title", 0);
- output_set_value("Credit", 0);
- output_set_value("SS", 0);
- output_set_value("C_LOCK", 0);
- output_set_value("SV", 0);
- output_set_value("FBV", 0);
- output_set_value("RV", 0);
+ output().set_digit_value(5, 0x3f);
+ output().set_digit_value(6, 0x3f);
+
+ output().set_value("Hopper1", 0);
+ output().set_value("Hopper2", 0);
+ output().set_value("Hopper3", 0);
+
+ output().set_value("GameOver", 0);
+ output().set_value("Title", 0);
+ output().set_value("Credit", 0);
+ output().set_value("SS", 0);
+ output().set_value("C_LOCK", 0);
+ output().set_value("SV", 0);
+ output().set_value("FBV", 0);
+ output().set_value("RV", 0);
}
/*************************
diff --git a/src/mame/drivers/firebeat.cpp b/src/mame/drivers/firebeat.cpp
index 132b0f03130..bdfaac9e1a6 100644
--- a/src/mame/drivers/firebeat.cpp
+++ b/src/mame/drivers/firebeat.cpp
@@ -736,14 +736,14 @@ WRITE32_MEMBER(firebeat_state::lamp_output_w )
// -------- -------- -------- xxxxxxxx Status LEDs (active low)
if (ACCESSING_BITS_0_7)
{
- output_set_value("status_led_0", (data & 0x01) ? 0 : 1);
- output_set_value("status_led_1", (data & 0x02) ? 0 : 1);
- output_set_value("status_led_2", (data & 0x04) ? 0 : 1);
- output_set_value("status_led_3", (data & 0x08) ? 0 : 1);
- output_set_value("status_led_4", (data & 0x10) ? 0 : 1);
- output_set_value("status_led_5", (data & 0x20) ? 0 : 1);
- output_set_value("status_led_6", (data & 0x40) ? 0 : 1);
- output_set_value("status_led_7", (data & 0x80) ? 0 : 1);
+ output().set_value("status_led_0", (data & 0x01) ? 0 : 1);
+ output().set_value("status_led_1", (data & 0x02) ? 0 : 1);
+ output().set_value("status_led_2", (data & 0x04) ? 0 : 1);
+ output().set_value("status_led_3", (data & 0x08) ? 0 : 1);
+ output().set_value("status_led_4", (data & 0x10) ? 0 : 1);
+ output().set_value("status_led_5", (data & 0x20) ? 0 : 1);
+ output().set_value("status_led_6", (data & 0x40) ? 0 : 1);
+ output().set_value("status_led_7", (data & 0x80) ? 0 : 1);
}
// printf("lamp_output_w: %08X, %08X, %08X\n", data, offset, mem_mask);
@@ -755,16 +755,16 @@ WRITE32_MEMBER(firebeat_state::lamp_output_kbm_w )
if (ACCESSING_BITS_24_31)
{
- output_set_value("door_lamp", (data & 0x10000000) ? 1 : 0);
- output_set_value("start1p", (data & 0x01000000) ? 1 : 0);
- output_set_value("start2p", (data & 0x02000000) ? 1 : 0);
+ output().set_value("door_lamp", (data & 0x10000000) ? 1 : 0);
+ output().set_value("start1p", (data & 0x01000000) ? 1 : 0);
+ output().set_value("start2p", (data & 0x02000000) ? 1 : 0);
}
if (ACCESSING_BITS_8_15)
{
- output_set_value("lamp1", (data & 0x00000100) ? 1 : 0);
- output_set_value("lamp2", (data & 0x00000200) ? 1 : 0);
- output_set_value("lamp3", (data & 0x00000400) ? 1 : 0);
- output_set_value("neon", (data & 0x00000800) ? 1 : 0);
+ output().set_value("lamp1", (data & 0x00000100) ? 1 : 0);
+ output().set_value("lamp2", (data & 0x00000200) ? 1 : 0);
+ output().set_value("lamp3", (data & 0x00000400) ? 1 : 0);
+ output().set_value("neon", (data & 0x00000800) ? 1 : 0);
}
}
@@ -788,25 +788,25 @@ WRITE32_MEMBER(firebeat_state::lamp_output_ppp_w )
// 0x00080000 Stage LED 7
if (ACCESSING_BITS_8_15)
{
- output_set_value("left", (data & 0x00000100) ? 1 : 0);
- output_set_value("right", (data & 0x00000200) ? 1 : 0);
- output_set_value("door_lamp", (data & 0x00000400) ? 1 : 0);
- output_set_value("ok", (data & 0x00000800) ? 1 : 0);
- output_set_value("slim", (data & 0x00008000) ? 1 : 0);
+ output().set_value("left", (data & 0x00000100) ? 1 : 0);
+ output().set_value("right", (data & 0x00000200) ? 1 : 0);
+ output().set_value("door_lamp", (data & 0x00000400) ? 1 : 0);
+ output().set_value("ok", (data & 0x00000800) ? 1 : 0);
+ output().set_value("slim", (data & 0x00008000) ? 1 : 0);
}
if (ACCESSING_BITS_24_31)
{
- output_set_value("stage_led_0", (data & 0x01000000) ? 1 : 0);
- output_set_value("stage_led_1", (data & 0x02000000) ? 1 : 0);
- output_set_value("stage_led_2", (data & 0x04000000) ? 1 : 0);
- output_set_value("stage_led_3", (data & 0x08000000) ? 1 : 0);
+ output().set_value("stage_led_0", (data & 0x01000000) ? 1 : 0);
+ output().set_value("stage_led_1", (data & 0x02000000) ? 1 : 0);
+ output().set_value("stage_led_2", (data & 0x04000000) ? 1 : 0);
+ output().set_value("stage_led_3", (data & 0x08000000) ? 1 : 0);
}
if (ACCESSING_BITS_16_23)
{
- output_set_value("stage_led_4", (data & 0x00010000) ? 1 : 0);
- output_set_value("stage_led_5", (data & 0x00020000) ? 1 : 0);
- output_set_value("stage_led_6", (data & 0x00040000) ? 1 : 0);
- output_set_value("stage_led_7", (data & 0x00080000) ? 1 : 0);
+ output().set_value("stage_led_4", (data & 0x00010000) ? 1 : 0);
+ output().set_value("stage_led_5", (data & 0x00020000) ? 1 : 0);
+ output().set_value("stage_led_6", (data & 0x00040000) ? 1 : 0);
+ output().set_value("stage_led_7", (data & 0x00080000) ? 1 : 0);
}
}
@@ -830,17 +830,17 @@ WRITE32_MEMBER(firebeat_state::lamp_output2_ppp_w )
// 0x00000008 Top LED 7
if (ACCESSING_BITS_16_23)
{
- output_set_value("top_led_0", (data & 0x00010000) ? 1 : 0);
- output_set_value("top_led_1", (data & 0x00020000) ? 1 : 0);
- output_set_value("top_led_2", (data & 0x00040000) ? 1 : 0);
- output_set_value("top_led_3", (data & 0x00080000) ? 1 : 0);
+ output().set_value("top_led_0", (data & 0x00010000) ? 1 : 0);
+ output().set_value("top_led_1", (data & 0x00020000) ? 1 : 0);
+ output().set_value("top_led_2", (data & 0x00040000) ? 1 : 0);
+ output().set_value("top_led_3", (data & 0x00080000) ? 1 : 0);
}
if (ACCESSING_BITS_0_7)
{
- output_set_value("top_led_4", (data & 0x00000001) ? 1 : 0);
- output_set_value("top_led_5", (data & 0x00000002) ? 1 : 0);
- output_set_value("top_led_6", (data & 0x00000004) ? 1 : 0);
- output_set_value("top_led_7", (data & 0x00000008) ? 1 : 0);
+ output().set_value("top_led_4", (data & 0x00000001) ? 1 : 0);
+ output().set_value("top_led_5", (data & 0x00000002) ? 1 : 0);
+ output().set_value("top_led_6", (data & 0x00000004) ? 1 : 0);
+ output().set_value("top_led_7", (data & 0x00000008) ? 1 : 0);
}
}
@@ -860,10 +860,10 @@ WRITE32_MEMBER(firebeat_state::lamp_output3_ppp_w )
// 0x00400000 Lamp 3
if (ACCESSING_BITS_16_23)
{
- output_set_value("lamp_0", (data & 0x00010000) ? 1 : 0);
- output_set_value("lamp_1", (data & 0x00040000) ? 1 : 0);
- output_set_value("lamp_2", (data & 0x00100000) ? 1 : 0);
- output_set_value("lamp_3", (data & 0x00400000) ? 1 : 0);
+ output().set_value("lamp_0", (data & 0x00010000) ? 1 : 0);
+ output().set_value("lamp_1", (data & 0x00040000) ? 1 : 0);
+ output().set_value("lamp_2", (data & 0x00100000) ? 1 : 0);
+ output().set_value("lamp_3", (data & 0x00400000) ? 1 : 0);
}
}
diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp
index c9c2eab54ae..6d52a64e925 100644
--- a/src/mame/drivers/firefox.cpp
+++ b/src/mame/drivers/firefox.cpp
@@ -483,12 +483,12 @@ WRITE8_MEMBER(firefox_state::self_reset_w)
WRITE8_MEMBER(firefox_state::led_w)
{
- set_led_status( machine(), offset, ( data & 0x80 ) == 0 );
+ output().set_led_value(offset, ( data & 0x80 ) == 0 );
}
WRITE8_MEMBER(firefox_state::firefox_coin_counter_w)
{
- coin_counter_w( machine(), offset, data & 0x80 );
+ machine().bookkeeping().coin_counter_w(offset, data & 0x80 );
}
diff --git a/src/mame/drivers/firetrk.cpp b/src/mame/drivers/firetrk.cpp
index 94deb2221d7..f53f50a5368 100644
--- a/src/mame/drivers/firetrk.cpp
+++ b/src/mame/drivers/firetrk.cpp
@@ -46,7 +46,7 @@ INPUT_CHANGED_MEMBER(firetrk_state::gear_changed)
if (newval)
{
m_gear = (FPTR)param;
- output_set_value("P1gear", m_gear+1);
+ output().set_value("P1gear", m_gear+1);
}
}
@@ -69,24 +69,24 @@ TIMER_DEVICE_CALLBACK_MEMBER(firetrk_state::firetrk_scanline)
WRITE8_MEMBER(firetrk_state::firetrk_output_w)
{
/* BIT0 => START1 LAMP */
- set_led_status(machine(), 0, !(data & 0x01));
+ output().set_led_value(0, !(data & 0x01));
/* BIT1 => START2 LAMP */
- set_led_status(machine(), 1, !(data & 0x02));
+ output().set_led_value(1, !(data & 0x02));
/* BIT2 => FLASH */
m_flash = data & 0x04;
/* BIT3 => TRACK LAMP */
- set_led_status(machine(), 3, !(data & 0x08));
+ output().set_led_value(3, !(data & 0x08));
/* BIT4 => ATTRACT */
m_discrete->write(space, FIRETRUCK_ATTRACT_EN, data & 0x10);
- coin_lockout_w(machine(), 0, !(data & 0x10));
- coin_lockout_w(machine(), 1, !(data & 0x10));
+ machine().bookkeeping().coin_lockout_w(0, !(data & 0x10));
+ machine().bookkeeping().coin_lockout_w(1, !(data & 0x10));
/* BIT5 => START3 LAMP */
- set_led_status(machine(), 2, !(data & 0x20));
+ output().set_led_value(2, !(data & 0x20));
/* BIT6 => UNUSED */
@@ -98,28 +98,28 @@ WRITE8_MEMBER(firetrk_state::firetrk_output_w)
WRITE8_MEMBER(firetrk_state::superbug_output_w)
{
/* BIT0 => START LAMP */
- set_led_status(machine(), 0, offset & 0x01);
+ output().set_led_value(0, offset & 0x01);
/* BIT1 => ATTRACT */
m_discrete->write(space, SUPERBUG_ATTRACT_EN, offset & 0x02);
- coin_lockout_w(machine(), 0, !(offset & 0x02));
- coin_lockout_w(machine(), 1, !(offset & 0x02));
+ machine().bookkeeping().coin_lockout_w(0, !(offset & 0x02));
+ machine().bookkeeping().coin_lockout_w(1, !(offset & 0x02));
/* BIT2 => FLASH */
m_flash = offset & 0x04;
/* BIT3 => TRACK LAMP */
- set_led_status(machine(), 1, offset & 0x08);
+ output().set_led_value(1, offset & 0x08);
}
WRITE8_MEMBER(firetrk_state::montecar_output_1_w)
{
/* BIT0 => START LAMP */
- set_led_status(machine(), 0, !(data & 0x01));
+ output().set_led_value(0, !(data & 0x01));
/* BIT1 => TRACK LAMP */
- set_led_status(machine(), 1, !(data & 0x02));
+ output().set_led_value(1, !(data & 0x02));
/* BIT2 => ATTRACT */
m_discrete->write(space, MONTECAR_ATTRACT_INV, data & 0x04);
@@ -128,13 +128,13 @@ WRITE8_MEMBER(firetrk_state::montecar_output_1_w)
/* BIT4 => UNUSED */
/* BIT5 => COIN3 COUNTER */
- coin_counter_w(machine(), 0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
/* BIT6 => COIN2 COUNTER */
- coin_counter_w(machine(), 1, data & 0x40);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
/* BIT7 => COIN1 COUNTER */
- coin_counter_w(machine(), 2, data & 0x20);
+ machine().bookkeeping().coin_counter_w(2, data & 0x20);
}
@@ -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/flicker.cpp b/src/mame/drivers/flicker.cpp
index b4222b25212..09947a0f2e6 100644
--- a/src/mame/drivers/flicker.cpp
+++ b/src/mame/drivers/flicker.cpp
@@ -127,7 +127,7 @@ WRITE8_MEMBER( flicker_state::port00_w )
{
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0, 0, 0, 0, 0, 0 };
offset = m_maincpu->state_int(I4004_RAM); // we need the full address
- output_set_digit_value(offset, patterns[data]);
+ output().set_digit_value(offset, patterns[data]);
}
WRITE8_MEMBER( flicker_state::port01_w )
diff --git a/src/mame/drivers/flkatck.cpp b/src/mame/drivers/flkatck.cpp
index 50fc26d94b8..e893d67a639 100644
--- a/src/mame/drivers/flkatck.cpp
+++ b/src/mame/drivers/flkatck.cpp
@@ -29,8 +29,8 @@ INTERRUPT_GEN_MEMBER(flkatck_state::flkatck_interrupt)
WRITE8_MEMBER(flkatck_state::flkatck_bankswitch_w)
{
/* bits 3-4: coin counters */
- coin_counter_w(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 1, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(1, data & 0x10);
/* bits 0-1: bank # */
if ((data & 0x03) != 0x03) /* for safety */
diff --git a/src/mame/drivers/flower.cpp b/src/mame/drivers/flower.cpp
index a790731185b..06891e9c4a2 100644
--- a/src/mame/drivers/flower.cpp
+++ b/src/mame/drivers/flower.cpp
@@ -94,12 +94,12 @@ WRITE8_MEMBER(flower_state::flower_soundcpu_irq_ack)
WRITE8_MEMBER(flower_state::flower_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
WRITE8_MEMBER(flower_state::flower_coin_lockout_w)
{
- coin_lockout_global_w(machine(), ~data & 1);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
}
WRITE8_MEMBER(flower_state::sound_command_w)
diff --git a/src/mame/drivers/flyball.cpp b/src/mame/drivers/flyball.cpp
index ee8125c0a2e..f2772125a32 100644
--- a/src/mame/drivers/flyball.cpp
+++ b/src/mame/drivers/flyball.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -276,7 +276,7 @@ WRITE8_MEMBER(flyball_state::misc_w)
switch (offset)
{
case 0:
- set_led_status(machine(), 0, bit);
+ output().set_led_value(0, bit);
break;
case 1:
/* crowd very loud */
diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp
index 4442882d215..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);
}
}
@@ -1892,8 +1891,8 @@ INPUT_PORTS_END
DRIVER_INIT_MEMBER(fm7_state,fm7)
{
-// m_shared_ram = auto_alloc_array(machine(),UINT8,0x80);
- m_video_ram = auto_alloc_array(machine(),UINT8,0x18000); // 2 pages on some systems
+// m_shared_ram = std::make_unique<UINT8[]>(0x80);
+ m_video_ram = std::make_unique<UINT8[]>(0x18000); // 2 pages on some systems
m_timer = timer_alloc(TIMER_FM7_IRQ);
m_subtimer = timer_alloc(TIMER_FM7_SUBTIMER_IRQ);
m_keyboard_timer = timer_alloc(TIMER_FM7_KEYBOARD_POLL);
@@ -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)
{
@@ -2038,7 +2032,7 @@ void fm7_state::machine_reset()
m_x86->set_input_line(INPUT_LINE_HALT,ASSERT_LINE);
}
- memset(m_video_ram, 0, sizeof(UINT8) * 0x18000);
+ memset(m_video_ram.get(), 0, sizeof(UINT8) * 0x18000);
}
@@ -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/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp
index d4ca82081ce..8667759d012 100644
--- a/src/mame/drivers/fmtowns.cpp
+++ b/src/mame/drivers/fmtowns.cpp
@@ -226,11 +226,11 @@ void towns_state::init_serial_rom()
if(m_serial)
srom = m_serial->base();
- memset(m_towns_serial_rom,0,256/8);
+ memset(m_towns_serial_rom.get(),0,256/8);
if(srom)
{
- memcpy(m_towns_serial_rom,srom,32);
+ memcpy(m_towns_serial_rom.get(),srom,32);
m_towns_machine_id = (m_towns_serial_rom[0x18] << 8) | m_towns_serial_rom[0x17];
logerror("Machine ID in serial ROM: %04x\n",m_towns_machine_id);
return;
@@ -2564,12 +2564,12 @@ INPUT_PORTS_END
void towns_state::driver_start()
{
- m_towns_vram = auto_alloc_array(machine(),UINT32,0x20000);
- m_towns_gfxvram = auto_alloc_array(machine(),UINT8,0x80000);
- m_towns_txtvram = auto_alloc_array(machine(),UINT8,0x20000);
- memset(m_towns_txtvram, 0, sizeof(UINT8)*0x20000);
- //towns_sprram = auto_alloc_array(machine(),UINT8,0x20000);
- m_towns_serial_rom = auto_alloc_array(machine(),UINT8,256/8);
+ m_towns_vram = std::make_unique<UINT32[]>(0x20000);
+ m_towns_gfxvram = std::make_unique<UINT8[]>(0x80000);
+ m_towns_txtvram = std::make_unique<UINT8[]>(0x20000);
+ memset(m_towns_txtvram.get(), 0, sizeof(UINT8)*0x20000);
+ //towns_sprram = std::make_unique<UINT8[]>(0x20000);
+ m_towns_serial_rom = std::make_unique<UINT8[]>(256/8);
init_serial_rom();
init_rtc();
m_towns_rtc_timer = timer_alloc(TIMER_RTC);
diff --git a/src/mame/drivers/foodf.cpp b/src/mame/drivers/foodf.cpp
index 878a1444250..f23669fb8a0 100644
--- a/src/mame/drivers/foodf.cpp
+++ b/src/mame/drivers/foodf.cpp
@@ -168,11 +168,11 @@ WRITE8_MEMBER(foodf_state::digital_w)
if (!(data & 0x08))
video_int_ack_w(space,0,0);
- output_set_led_value(0, (data >> 4) & 1);
- output_set_led_value(1, (data >> 5) & 1);
+ output().set_led_value(0, (data >> 4) & 1);
+ output().set_led_value(1, (data >> 5) & 1);
- coin_counter_w(machine(), 0, (data >> 6) & 1);
- coin_counter_w(machine(), 1, (data >> 7) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 6) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 7) & 1);
}
diff --git a/src/mame/drivers/fortecar.cpp b/src/mame/drivers/fortecar.cpp
index 979585829a3..59043194bfe 100644
--- a/src/mame/drivers/fortecar.cpp
+++ b/src/mame/drivers/fortecar.cpp
@@ -487,7 +487,7 @@ WRITE8_MEMBER(fortecar_state::ayporta_w)
int i;
for(i = 0; i < 8; i++)
- output_set_lamp_value(i, (data >> i) & 1);
+ output().set_lamp_value(i, (data >> i) & 1);
}
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/fp200.cpp b/src/mame/drivers/fp200.cpp
index 7dac2e3f148..0bf5c3a0239 100644
--- a/src/mame/drivers/fp200.cpp
+++ b/src/mame/drivers/fp200.cpp
@@ -43,8 +43,8 @@ public:
UINT8 x;
UINT8 y;
UINT8 status;
- UINT8 *vram;
- UINT8 *attr;
+ std::unique_ptr<UINT8[]> vram;
+ std::unique_ptr<UINT8[]> attr;
}m_lcd;
UINT8 read_lcd_attr(UINT16 X, UINT16 Y);
UINT8 read_lcd_vram(UINT16 X, UINT16 Y);
@@ -76,8 +76,8 @@ protected:
void fp200_state::video_start()
{
- m_lcd.vram = auto_alloc_array_clear(machine(), UINT8, 20*64);
- m_lcd.attr = auto_alloc_array_clear(machine(), UINT8, 20*64);
+ m_lcd.vram = make_unique_clear<UINT8[]>(20*64);
+ m_lcd.attr = make_unique_clear<UINT8[]>(20*64);
}
/* TODO: Very preliminary, I actually believe that the LCDC writes in a blitter fashion ... */
diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp
index a4f278bf972..935de91e019 100644
--- a/src/mame/drivers/freekick.cpp
+++ b/src/mame/drivers/freekick.cpp
@@ -66,7 +66,7 @@ WRITE8_MEMBER(freekick_state::flipscreen_w)
WRITE8_MEMBER(freekick_state::coin_w)
{
- coin_counter_w(machine(), offset, ~data & 1);
+ machine().bookkeeping().coin_counter_w(offset, ~data & 1);
}
WRITE8_MEMBER(freekick_state::spinner_select_w)
diff --git a/src/mame/drivers/fromanc2.cpp b/src/mame/drivers/fromanc2.cpp
index b0a7482afbb..5843d684dc8 100644
--- a/src/mame/drivers/fromanc2.cpp
+++ b/src/mame/drivers/fromanc2.cpp
@@ -490,17 +490,17 @@ MACHINE_START_MEMBER(fromanc2_state,fromanc4)
MACHINE_START_MEMBER(fromanc2_state,fromanc2)
{
- m_bankedram = auto_alloc_array(machine(), UINT8, 0x4000 * 3);
+ m_bankedram = std::make_unique<UINT8[]>(0x4000 * 3);
membank("bank1")->configure_entries(0, 4, memregion("sub")->base(), 0x4000);
membank("bank2")->configure_entry(0, memregion("sub")->base() + 0x08000);
- membank("bank2")->configure_entries(1, 3, m_bankedram, 0x4000);
+ membank("bank2")->configure_entries(1, 3, m_bankedram.get(), 0x4000);
MACHINE_START_CALL_MEMBER(fromanc4);
save_item(NAME(m_subcpu_int_flag));
save_item(NAME(m_subcpu_nmi_flag));
- save_pointer(NAME(m_bankedram), 0x4000 * 3);
+ save_pointer(NAME(m_bankedram.get()), 0x4000 * 3);
}
void fromanc2_state::machine_reset()
diff --git a/src/mame/drivers/funkball.cpp b/src/mame/drivers/funkball.cpp
index 758dab737f5..caa650705fe 100644
--- a/src/mame/drivers/funkball.cpp
+++ b/src/mame/drivers/funkball.cpp
@@ -94,7 +94,7 @@ public:
UINT8 m_funkball_config_reg_sel;
UINT8 m_funkball_config_regs[256];
UINT32 m_cx5510_regs[256/4];
- UINT8 *m_bios_ram;
+ std::unique_ptr<UINT8[]> m_bios_ram;
UINT32 m_biu_ctrl_reg[256/4];
@@ -107,7 +107,6 @@ public:
required_device<address_map_bank_device> m_flashbank;
required_ioport_array<16> m_inputs;
- DECLARE_READ8_MEMBER( get_slave_ack );
DECLARE_WRITE32_MEMBER( flash_w );
// DECLARE_WRITE8_MEMBER( bios_ram_w );
DECLARE_READ8_MEMBER( test_r );
@@ -131,8 +130,6 @@ public:
DECLARE_READ32_MEMBER(biu_ctrl_r);
DECLARE_WRITE32_MEMBER(biu_ctrl_w);
DECLARE_WRITE8_MEMBER(bios_ram_w);
- DECLARE_READ32_MEMBER(serial_r);
- DECLARE_WRITE32_MEMBER(serial_w);
DECLARE_READ8_MEMBER(io20_r);
DECLARE_WRITE8_MEMBER(io20_w);
virtual void machine_start() override;
@@ -308,7 +305,7 @@ WRITE32_MEMBER(funkball_state::biu_ctrl_w)
for(i=0;i<8;i++)
{
if (data & 0x1 << i*4) // enable RAM access to region 0xe0000 - 0xfffff
- membank(banknames[i])->set_base(m_bios_ram + (0x4000 * i));
+ membank(banknames[i])->set_base(m_bios_ram.get() + (0x4000 * i));
else // disable RAM access (reads go to BIOS ROM)
membank(banknames[i])->set_base(memregion("bios")->base() + (0x4000 * i));
}
@@ -781,7 +778,7 @@ INPUT_PORTS_END
void funkball_state::machine_start()
{
- m_bios_ram = auto_alloc_array(machine(), UINT8, 0x20000);
+ m_bios_ram = std::make_unique<UINT8[]>(0x20000);
/* defaults, otherwise it won't boot */
m_unk_ram[0x010/4] = 0x2f8d85ff;
diff --git a/src/mame/drivers/funkybee.cpp b/src/mame/drivers/funkybee.cpp
index a9bfb7d751b..9c059b052f9 100644
--- a/src/mame/drivers/funkybee.cpp
+++ b/src/mame/drivers/funkybee.cpp
@@ -87,7 +87,7 @@ READ8_MEMBER(funkybee_state::funkybee_input_port_0_r)
WRITE8_MEMBER(funkybee_state::funkybee_coin_counter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
static ADDRESS_MAP_START( funkybee_map, AS_PROGRAM, 8, funkybee_state )
diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp
index a890826f4d1..d45c615fd52 100644
--- a/src/mame/drivers/funworld.cpp
+++ b/src/mame/drivers/funworld.cpp
@@ -1015,17 +1015,17 @@ WRITE8_MEMBER(funworld_state::funworld_lamp_a_w)
-x-- ---- Hopper Motor (inverted).
x--- ---- HOLD4 lamp.
*/
- output_set_lamp_value(0, 1-((data >> 1) & 1)); /* Hold1 (inverted) */
- output_set_lamp_value(2, 1-((data >> 1) & 1)); /* Hold3 (inverted, see pinouts) */
+ output().set_lamp_value(0, 1-((data >> 1) & 1)); /* Hold1 (inverted) */
+ output().set_lamp_value(2, 1-((data >> 1) & 1)); /* Hold3 (inverted, see pinouts) */
- output_set_lamp_value(1, 1-((data >> 3) & 1)); /* Hold2 / Low (inverted) */
- output_set_lamp_value(3, (data >> 7) & 1); /* Hold4 / High */
- output_set_lamp_value(5, 1-((data >> 5) & 1)); /* Cancel / Collect (inverted) */
+ output().set_lamp_value(1, 1-((data >> 3) & 1)); /* Hold2 / Low (inverted) */
+ output().set_lamp_value(3, (data >> 7) & 1); /* Hold4 / High */
+ output().set_lamp_value(5, 1-((data >> 5) & 1)); /* Cancel / Collect (inverted) */
- coin_counter_w(machine(), 0, data & 0x01); /* Credit In counter */
- coin_counter_w(machine(), 7, data & 0x04); /* Credit Out counter, mapped as coin 8 */
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); /* Credit In counter */
+ machine().bookkeeping().coin_counter_w(7, data & 0x04); /* Credit Out counter, mapped as coin 8 */
- output_set_lamp_value(7, 1-((data >> 6) & 1)); /* Hopper Motor (inverted) */
+ output().set_lamp_value(7, 1-((data >> 6) & 1)); /* Hopper Motor (inverted) */
// popmessage("Lamps A: %02X", (data ^ 0xff));
}
@@ -1039,8 +1039,8 @@ WRITE8_MEMBER(funworld_state::funworld_lamp_b_w)
---- -x-- Unknown (inverted).
xxxx x--- Unknown.
*/
- output_set_lamp_value(4, (data >> 0) & 1); /* Hold5 / Bet */
- output_set_lamp_value(6, (data >> 1) & 1); /* Start / Deal / Draw */
+ output().set_lamp_value(4, (data >> 0) & 1); /* Hold5 / Bet */
+ output().set_lamp_value(6, (data >> 1) & 1); /* Start / Deal / Draw */
// popmessage("Lamps B: %02X", data);
}
@@ -5725,6 +5725,45 @@ ROM_START( chinatow )
ROM_END
+// http://www.citylan.it/wiki/images/6/69/1189_PCB_component_side.jpg
+ROM_START( royalcrd_nes )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "me2.bin", 0x0000, 0x10000, CRC(2144efab) SHA1(47fef8e0d2b05869e667731fdaf535722b9a8f19)) // this is one (or more?) Royal Card programs, with (c)1991 TAB Austria in them
+
+ ROM_REGION( 0x20000, "gfx1", 0 ) // these are (encrypted?) GFX ROMS
+ ROM_LOAD( "me3.bin", 0x00000, 0x10000, CRC(398a6f7c) SHA1(126048c75ab5df421f9dd2e39c6b68e15bf54f38) )
+ ROM_LOAD( "me4.bin", 0x10000, 0x10000, CRC(6f84222a) SHA1(eee8e46d464211914cb99d15fd9f7dd4aa009664) )
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "24c04.bin", 0x0000, 0x0200, CRC(e349687c) SHA1(1e6da87ba771baacc7687524158a1db8b789b673) )
+ ROM_REGION( 0x0200, "proms2", 0 )
+ 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_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_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
+
+// http://www.citylan.it/wiki/images/5/54/1188_PCB_component_side.jpg
+ROM_START( royalcrd_msx )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "me2.bin", 0x0000, 0x20000, CRC(4968fe51) SHA1(ae120f40c97e099c3f65b802c51838673958e87e) ) // this is one (or more?) Royal Card programs, with (c)1991 TAB Austria in them (2nd half is empty)
+
+ ROM_REGION( 0x20000, "gfx1", 0 ) // these are (encrypted?) GFX ROMS
+ ROM_LOAD( "me3.bin", 0x00000, 0x10000, CRC(398a6f7c) SHA1(126048c75ab5df421f9dd2e39c6b68e15bf54f38) )
+ ROM_LOAD( "me4.bin", 0x10000, 0x10000, CRC(b536d59c) SHA1(8050f87c3352d7501611c49e83e34e800f28c9a7) ) // BADADDR xxxxxx-xxxxxxxxx , should probably just match above set
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ ROM_LOAD( "24c04.bin", 0x0000, 0x0200, CRC(2a1e8abe) SHA1(639a704f25af02597ead2e69d15ac47953c27f09) )
+
+ // some kind of MSX multigame?
+ 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
+
/**************************
* Driver Initialization *
**************************/
@@ -6108,7 +6147,7 @@ DRIVER_INIT_MEMBER(funworld_state, ctunk)
int size = memregion("maincpu")->bytes();
int start = 0x8000;
- UINT8 *buffer;
+ //UINT8 *buffer;
int i;// a;
/*****************************
@@ -6122,8 +6161,8 @@ DRIVER_INIT_MEMBER(funworld_state, ctunk)
rom[i] = BITSWAP8(rom[i], 5, 6, 7, 3, 4, 0, 1, 2);
}
- buffer = auto_alloc_array(machine(), UINT8, size);
- memcpy(buffer, rom, size);
+ //buffer = std::make_unique<UINT8[]>(size);
+ //memcpy(buffer, rom, size);
/*****************************
@@ -6553,3 +6592,7 @@ GAME( 199?, soccernw, 0, royalcd1, royalcrd, funworld_state, soccernw,
// Other games...
GAME( 198?, funquiz, 0, funquiz, funquiz, driver_device, 0, ROT0, "Fun World / Oehlinger", "Fun World Quiz (Austrian)", 0 )
GAMEL( 1986, novoplay, 0, fw2ndpal, novoplay, driver_device, 0, ROT0, "Admiral/Novomatic", "Novo Play Multi Card / Club Card", 0, layout_novoplay )
+
+// These are 2-in-1 stealth boards, they can run the Poker game, or, using completely separate hardware on the same PCB, a NES / MSX Multigames!
+GAMEL( 1991, royalcrd_nes, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "bootleg", "Royal Card (stealth with NES multigame)", MACHINE_NOT_WORKING, layout_jollycrd )
+GAMEL( 1991, royalcrd_msx, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "bootleg", "Royal Card (stealth with MSX multigame)", MACHINE_NOT_WORKING, layout_jollycrd )
diff --git a/src/mame/drivers/g627.cpp b/src/mame/drivers/g627.cpp
index c3b19d87b6c..e96509a1703 100644
--- a/src/mame/drivers/g627.cpp
+++ b/src/mame/drivers/g627.cpp
@@ -205,22 +205,22 @@ WRITE8_MEMBER( g627_state::portc_w )
m_portc = data;
if ((m_type) && (data < 6))
{
- output_set_digit_value(data, m_seg[0]);
- output_set_digit_value(10 + data, m_seg[1]);
- output_set_digit_value(20 + data, m_seg[2]);
- output_set_digit_value(30 + data, m_seg[3]);
- output_set_digit_value(50 + data, m_seg[5]);
+ output().set_digit_value(data, m_seg[0]);
+ output().set_digit_value(10 + data, m_seg[1]);
+ output().set_digit_value(20 + data, m_seg[2]);
+ output().set_digit_value(30 + data, m_seg[3]);
+ output().set_digit_value(50 + data, m_seg[5]);
}
else
if ((!m_type) && (data))
{
data--;
- output_set_digit_value(data, m_seg[0]);
- output_set_digit_value(10 + data, m_seg[1]);
- output_set_digit_value(20 + data, m_seg[2]);
- output_set_digit_value(30 + data, m_seg[3]);
- output_set_digit_value(50 + data, m_seg[5]);
+ output().set_digit_value(data, m_seg[0]);
+ output().set_digit_value(10 + data, m_seg[1]);
+ output().set_digit_value(20 + data, m_seg[2]);
+ output().set_digit_value(30 + data, m_seg[3]);
+ output().set_digit_value(50 + data, m_seg[5]);
}
}
diff --git a/src/mame/drivers/gaelco.cpp b/src/mame/drivers/gaelco.cpp
index 0353c50542a..56063dc3bed 100644
--- a/src/mame/drivers/gaelco.cpp
+++ b/src/mame/drivers/gaelco.cpp
@@ -50,11 +50,11 @@ WRITE16_MEMBER(gaelco_state::bigkarnk_coin_w)
{
case 0x00: /* Coin Lockouts */
case 0x01:
- coin_lockout_w(machine(), (offset >> 3) & 0x01, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w((offset >> 3) & 0x01, ~data & 0x01);
break;
case 0x02: /* Coin Counters */
case 0x03:
- coin_counter_w(machine(), (offset >> 3) & 0x01, data & 0x01);
+ machine().bookkeeping().coin_counter_w((offset >> 3) & 0x01, data & 0x01);
break;
}
}
diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp
index a2432954643..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 */
@@ -1015,6 +1046,9 @@ ROM_START( snowboara )
ROM_LOAD( "sb44", 0x0000000, 0x0400000, CRC(1bbe88bc) SHA1(15bce9ada2b742ba4d537fa8efc0f29f661bff00) ) /* GFX only */
ROM_LOAD( "sb45", 0x0400000, 0x0400000, CRC(373983d9) SHA1(05e35a8b27cab469885f0ec2a5df200a366b50a1) ) /* Sound only */
ROM_LOAD( "sb46", 0x0800000, 0x0400000, CRC(22e7c648) SHA1(baddb9bc13accd83bea61533d7286cf61cd89279) ) /* GFX only */
+
+ DISK_REGION( "decrypt" )
+ DISK_IMAGE( "snowboar", 0, SHA1(fecf611bd9289d24a0b1cabaaf030e2cee322cfa) )
ROM_END
ROM_START( snowboar )
@@ -1052,6 +1086,9 @@ ROM_START( snowboar )
ROM_LOAD( "sb.e2", 0x1100000, 0x0080000, CRC(f5948c6c) SHA1(91bba817ced194b02885ce84b7a8132ef5ca631a) ) /* GFX only */
ROM_LOAD( "sb.e3", 0x1180000, 0x0080000, CRC(4baa678f) SHA1(a7fbbd687e2d8d7e96207c8ace0799a3cc9c3272) ) /* GFX only */
ROM_FILL( 0x1200000, 0x0200000, 0x00 ) /* Empty */
+
+ DISK_REGION( "decrypt" )
+ DISK_IMAGE( "snowboar", 0, SHA1(fecf611bd9289d24a0b1cabaaf030e2cee322cfa) )
ROM_END
@@ -1144,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 )
@@ -1319,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 */
@@ -1379,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) )
@@ -1395,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) )
@@ -1406,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 )
@@ -1413,9 +1502,11 @@ 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, snowboar, 0, snowboar, snowboar, driver_device, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
-GAME( 1996, snowboara,snowboar, snowboar, snowboar, gaelco2_state, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+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 )
GAME( 1998, bangj, bang, bang, bang, bang_state, bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 )
+// are these ACTUALLY Gaelco hardware, or do they just use the same Dallas?
GAME( 1999, grtesoro, 0, maniacsq, maniacsq, driver_device, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1999, grtesoro4, grtesoro,maniacsq, maniacsq, driver_device, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v4.0) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
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/galaga.cpp b/src/mame/drivers/galaga.cpp
index cb509ed4265..7d87ee71069 100644
--- a/src/mame/drivers/galaga.cpp
+++ b/src/mame/drivers/galaga.cpp
@@ -783,15 +783,15 @@ CUSTOM_INPUT_MEMBER(digdug_state::shifted_port_r){ return ioport((const char *)p
WRITE8_MEMBER(galaga_state::out_0)
{
- set_led_status(machine(), 1,data & 1);
- set_led_status(machine(), 0,data & 2);
- coin_counter_w(machine(), 1,~data & 4);
- coin_counter_w(machine(), 0,~data & 8);
+ output().set_led_value(1,data & 1);
+ output().set_led_value(0,data & 2);
+ machine().bookkeeping().coin_counter_w(1,~data & 4);
+ machine().bookkeeping().coin_counter_w(0,~data & 8);
}
WRITE8_MEMBER(galaga_state::out_1)
{
- coin_lockout_global_w(machine(), data & 1);
+ machine().bookkeeping().coin_lockout_global_w(data & 1);
}
READ8_MEMBER(galaga_state::namco_52xx_rom_r)
diff --git a/src/mame/drivers/galastrm.cpp b/src/mame/drivers/galastrm.cpp
index e6329108fe9..b3a303b083d 100644
--- a/src/mame/drivers/galastrm.cpp
+++ b/src/mame/drivers/galastrm.cpp
@@ -138,10 +138,10 @@ popmessage(t);
{
if (ACCESSING_BITS_24_31)
{
- coin_lockout_w(machine(), 0, ~data & 0x01000000);
- coin_lockout_w(machine(), 1, ~data & 0x02000000);
- coin_counter_w(machine(), 0, data & 0x04000000);
- coin_counter_w(machine(), 1, data & 0x04000000);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01000000);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02000000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04000000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04000000);
m_coin_word = (data >> 16) &0xffff;
}
//logerror("CPU #0 PC %06x: write input %06x\n",device->safe_pc(),offset);
diff --git a/src/mame/drivers/galaxi.cpp b/src/mame/drivers/galaxi.cpp
index cb2e04cb85f..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();
}
@@ -257,21 +266,21 @@ WRITE16_MEMBER(galaxi_state::galaxi_500004_w)
-x-- ---- Payout.
*/
- output_set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
- output_set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
- output_set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
- output_set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
- output_set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */
- output_set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */
+ output().set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
+ output().set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
+ output().set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
+ output().set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
+ output().set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */
+ output().set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */
}
if (ACCESSING_BITS_8_15)
{
m_ticket = data & 0x0100;
m_hopper = data & 0x1000;
- coin_counter_w(machine(), 0, data & 0x2000); // coins
+ 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/galaxia.cpp b/src/mame/drivers/galaxia.cpp
index d959db3662c..ce83a5e81d2 100644
--- a/src/mame/drivers/galaxia.cpp
+++ b/src/mame/drivers/galaxia.cpp
@@ -130,9 +130,9 @@ READ8_MEMBER(galaxia_state::galaxia_collision_clear)
static ADDRESS_MAP_START( galaxia_mem_map, AS_PROGRAM, 8, galaxia_state )
AM_RANGE(0x0000, 0x13ff) AM_ROM
AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("bullet_ram")
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read, write)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read, write)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_2", s2636_device, read, write)
+ AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data)
+ AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data)
+ AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_2", s2636_device, read_data, write_data)
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READ(cvs_video_or_color_ram_r) AM_WRITE(galaxia_video_w) AM_SHARE("video_ram")
AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x2000, 0x33ff) AM_ROM
@@ -142,7 +142,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( astrowar_mem_map, AS_PROGRAM, 8, galaxia_state )
AM_RANGE(0x0000, 0x13ff) AM_ROM
AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read, write)
+ AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data)
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READ(cvs_video_or_color_ram_r) AM_WRITE(galaxia_video_w) AM_SHARE("video_ram")
AM_RANGE(0x1c00, 0x1cff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("bullet_ram")
AM_RANGE(0x2000, 0x33ff) AM_ROM
diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp
index 87df9eaa810..9fb23df9be1 100644
--- a/src/mame/drivers/galaxian.cpp
+++ b/src/mame/drivers/galaxian.cpp
@@ -717,26 +717,26 @@ WRITE8_MEMBER(galaxian_state::start_lamp_w)
{
/* offset 0 = 1P START LAMP */
/* offset 1 = 2P START LAMP */
- set_led_status(machine(), offset, data & 1);
+ output().set_led_value(offset, data & 1);
}
WRITE8_MEMBER(galaxian_state::coin_lock_w)
{
/* many variants and bootlegs don't have this */
- coin_lockout_global_w(machine(), ~data & 1);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
}
WRITE8_MEMBER(galaxian_state::coin_count_0_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
WRITE8_MEMBER(galaxian_state::coin_count_1_w)
{
- coin_counter_w(machine(), 1, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 1);
}
@@ -883,7 +883,7 @@ WRITE8_MEMBER(galaxian_state::theend_ppi8255_w)
WRITE8_MEMBER(galaxian_state::theend_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
}
@@ -1750,10 +1750,10 @@ static ADDRESS_MAP_START( spactrai_map, AS_PROGRAM, 8, galaxian_state )
AM_RANGE(0x1600, 0x4fff) AM_ROM
// cleared on startup
-// AM_RANGE(0x6000, 0x60ff) AM_RAM
-// AM_RANGE(0x6800, 0x68ff) AM_RAM
-// AM_RANGE(0x7000, 0x70ff) AM_RAM
-
+// AM_RANGE(0x6000, 0x60ff) AM_RAM
+// AM_RANGE(0x6800, 0x68ff) AM_RAM
+// AM_RANGE(0x7000, 0x70ff) AM_RAM
+
// standard galaxian mapping?
AM_RANGE(0x6004, 0x6007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
@@ -1795,6 +1795,26 @@ static ADDRESS_MAP_START( anteaterg_map, AS_PROGRAM, 8, galaxian_state )
AM_RANGE(0xf600, 0xf603) AM_MIRROR(0x01fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( anteatergg_map, AS_PROGRAM, 8, galaxian_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x4fff) AM_RAM
+ AM_RANGE(0x5000, 0x53ff) AM_RAM AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x5800, 0x58ff) AM_RAM AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
+// AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM
+ AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
+// AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x07f8) AM_WRITE(start_lamp_w)
+// AM_RANGE(0x6002, 0x6002) AM_MIRROR(0x07f8) AM_WRITE(coin_lock_w)
+// AM_RANGE(0x6003, 0x6003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
+ AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
+ AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
+ AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
+ AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
+ AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
+ AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
+ AM_RANGE(0x7800, 0x7800) AM_READ(watchdog_reset_r)
+ AM_IMPORT_FROM(galaxian_map_discrete)
+ADDRESS_MAP_END
/* map derived from schematics */
static ADDRESS_MAP_START( frogger_map, AS_PROGRAM, 8, galaxian_state )
@@ -2502,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" )
@@ -4333,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 */
@@ -4786,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 )
@@ -5054,6 +5074,45 @@ static INPUT_PORTS_START( anteateruk )
PORT_BIT( 0xff, 0x00, IPT_UNUSED )
INPUT_PORTS_END
+static INPUT_PORTS_START( anteatergg )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
+
+ PORT_START("IN2")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "3" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPSETTING( 0x02, "5" )
+ PORT_DIPSETTING( 0x03, "6" )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x04, "A 2/1 B 1/3" )
+ PORT_DIPSETTING( 0x00, "A 1/1 B 1/5" )
+ PORT_DIPSETTING( 0x08, "A 1/5 B 1/1" )
+ PORT_DIPSETTING( 0x0c, "A 1/3 B 2/1" )
+ PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED ) // probably
+INPUT_PORTS_END
+
/* verified from Z80 code */
static INPUT_PORTS_START( calipso )
@@ -5836,6 +5895,13 @@ static MACHINE_CONFIG_DERIVED( scobra, konami_base )
MCFG_CPU_PROGRAM_MAP(scobra_map)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( anteatergg, galaxian )
+
+ /* alternate memory map */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(anteatergg_map)
+MACHINE_CONFIG_END
+
/*
Quaak (Frogger bootleg)
@@ -7662,7 +7728,7 @@ ROM_START( spactrai )
ROM_REGION( 0x1000, "gfx1", 0 )
ROM_LOAD( "6cen.bin", 0x0000, 0x0800, CRC(a59a9f3f) SHA1(9564f1d013d566dc0b19762aec66119e2ece0b49) ) // MK2716J
ROM_LOAD( "7cen.bin", 0x0800, 0x0800, CRC(9b75b40a) SHA1(4ad94db3f1d6b45a3de1ed9b51d361f20c6706e4) ) // marked MM2758Q (which is meant to be a 1Kx8 EPROM, but in reality is a 2Kx8 EPROM ?!)
-
+
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "stk.bin", 0x0000, 0x0020, CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
ROM_END
@@ -10996,6 +11062,26 @@ ROM_START( anteaterg )
ROM_END
+ROM_START( anteatergg )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "for1.bin", 0x0000, 0x0800, CRC(e28cd0be) SHA1(c7f648455a527077c6b8124628a2689e60222668) )
+ ROM_LOAD( "for2.bin", 0x0800, 0x0800, CRC(be8de95c) SHA1(1bee4eadf190e9967fd5c1eea0a3b9b1e7658088) )
+ ROM_LOAD( "for3.bin", 0x1000, 0x0800, CRC(5d79f4d0) SHA1(81a286469d08a5d9281f9f3c21ae479f5f62073e) )
+ ROM_LOAD( "for4.bin", 0x1800, 0x0800, CRC(b8d981a5) SHA1(16972d26df8cb1a0a0616d9d80d3d383be5e8b71) )
+ ROM_LOAD( "for5.bin", 0x2000, 0x0800, CRC(cdc89fda) SHA1(a3ceda7afccd4455fe627e1877797d5975ec92de) )
+ ROM_LOAD( "for6.bin", 0x2800, 0x0800, CRC(8a80f838) SHA1(9ab7848ffd279ba99fbcb43ef3719db37731a5dd) )
+ ROM_LOAD( "for7.bin", 0x3000, 0x0800, CRC(41966df4) SHA1(b9655fc257fe8d67861a737337fc0a185e68f602) )
+ ROM_LOAD( "for8.bin", 0x3800, 0x0800, CRC(dc58265c) SHA1(763460aec5627fde9d75b77ee4ec7cbcdb9cc337) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "forb.bin", 0x0000, 0x0800, CRC(1e2824b1) SHA1(9527937db618505181f4d5a22bc532977a767232) )
+ ROM_LOAD( "fora.bin", 0x0800, 0x0800, CRC(784319b3) SHA1(0c3612a428d0906b07b35782cc0f84fda13aab73) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "colr6f.cpu", 0x0000, 0x0020, CRC(fce333c7) SHA1(f63a214dc47c5e7c80db000b0b6a261ca8da6629) )
+ROM_END
+
+
ROM_START( calipso )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "calipso.2c", 0x0000, 0x1000, CRC(0fcb703c) SHA1(2bb096f114911973afdf3088c860c9566df06f60) )
@@ -11398,6 +11484,7 @@ GAME( 1982, tazmania, 0, scobra, tazmania, galaxian_state, scobr
GAME( 1982, anteater, 0, anteater, anteater, galaxian_state, anteater, ROT90, "Tago Electronics", "Anteater", MACHINE_SUPPORTS_SAVE )
GAME( 1982, anteateruk, anteater, anteateruk, anteateruk, galaxian_state, anteateruk, ROT90, "Tago Electronics (Free Enterprise Games license", "The Anteater (UK)", MACHINE_SUPPORTS_SAVE ) // distributed in 1983
GAME( 1982, anteaterg, anteater, anteaterg, anteateruk, galaxian_state, anteateruk, ROT90, "Tago Electronics (TV-Tuning license from Free Enterprise Games)", "Ameisenbaer (German)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, anteatergg, anteater, anteatergg, anteatergg, galaxian_state, galaxian, ROT90, "bootleg", "Ameisenbaer (German, Galaxian hardware)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, calipso, 0, scobra, calipso, galaxian_state, calipso, ROT90, "Tago Electronics", "Calipso", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/galpani2.cpp b/src/mame/drivers/galpani2.cpp
index c3f87db9680..a658e02409b 100644
--- a/src/mame/drivers/galpani2.cpp
+++ b/src/mame/drivers/galpani2.cpp
@@ -320,10 +320,10 @@ WRITE8_MEMBER(galpani2_state::galpani2_mcu_nmi2_w)//driven by CPU2's int5 ISR
WRITE8_MEMBER(galpani2_state::galpani2_coin_lockout_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_lockout_w(machine(), 0,~data & 0x04);
- coin_lockout_w(machine(), 1,~data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x08);
// & 0x10 CARD in lockout?
// & 0x20 CARD in lockout?
// & 0x40 CARD out
diff --git a/src/mame/drivers/galpani3.cpp b/src/mame/drivers/galpani3.cpp
index b3d12c6911d..c54af2de04d 100644
--- a/src/mame/drivers/galpani3.cpp
+++ b/src/mame/drivers/galpani3.cpp
@@ -214,9 +214,9 @@ UINT32 galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rgb3
int drawy, drawx;
for (drawy=0;drawy<512;drawy++)
{
- UINT16* srcline1 = m_grap2_0->m_framebuffer + ((drawy+m_grap2_0->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
- UINT16* srcline2 = m_grap2_1->m_framebuffer + ((drawy+m_grap2_1->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
- UINT16* srcline3 = m_grap2_2->m_framebuffer + ((drawy+m_grap2_2->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
+ UINT16* srcline1 = m_grap2_0->m_framebuffer.get() + ((drawy+m_grap2_0->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
+ UINT16* srcline2 = m_grap2_1->m_framebuffer.get() + ((drawy+m_grap2_1->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
+ UINT16* srcline3 = m_grap2_2->m_framebuffer.get() + ((drawy+m_grap2_2->m_framebuffer_scrolly+11)&0x1ff) * 0x200;
UINT16* priline = m_priority_buffer + ((drawy+m_priority_buffer_scrolly+11)&0x1ff) * 0x200;
diff --git a/src/mame/drivers/galpanic.cpp b/src/mame/drivers/galpanic.cpp
index ba02735d3ab..b47226747c1 100644
--- a/src/mame/drivers/galpanic.cpp
+++ b/src/mame/drivers/galpanic.cpp
@@ -117,11 +117,11 @@ WRITE16_MEMBER(galpanic_state::galpanic_coin_w)
{
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x100);
- coin_counter_w(machine(), 1, data & 0x200);
+ machine().bookkeeping().coin_counter_w(0, data & 0x100);
+ machine().bookkeeping().coin_counter_w(1, data & 0x200);
- coin_lockout_w(machine(), 0, ~data & 0x400);
- coin_lockout_w(machine(), 1, ~data & 0x800);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x400);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x800);
}
}
diff --git a/src/mame/drivers/gamate.cpp b/src/mame/drivers/gamate.cpp
index 5fd1a5a12b9..66959b13008 100644
--- a/src/mame/drivers/gamate.cpp
+++ b/src/mame/drivers/gamate.cpp
@@ -42,7 +42,6 @@ public:
DECLARE_READ8_MEMBER(gamate_video_r);
DECLARE_READ8_MEMBER(gamate_nmi_r);
DECLARE_WRITE8_MEMBER(gamate_video_w);
- DECLARE_WRITE8_MEMBER(gamate_bios_w);
DECLARE_DRIVER_INIT(gamate);
UINT32 screen_update_gamate(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(gamate_interrupt);
@@ -397,14 +396,34 @@ static MACHINE_CONFIG_START( gamate, gamate_state )
MACHINE_CONFIG_END
+/* ROM notes:
+gamate_bios_umc.bin is called UMC or NCR ICASC00002
+gamate_bios_bit.bin is called BIT ICASC00001
+So basically the UMC UA6588F and NCR 81489 CPU's contains the ICASC00002 bios
+while the BIT branded CPU contains the ICASC00001 bios.
+They're compatible, but for completeness its nice to have both.
+Note i have 8 gamate consoles (dated 1990 though 1993) which has the gamate_bios_umc.bin in it
+and only 1 dated 1994 which has the gamate_bios_bit.bin in it, so the former seems much more common.
+We dumped the BIOS from all our Gamate consoles, and all except one were
+identical (SHA1:ea449dc607601f9a68d855ad6ab53800d2e99297):
+Gamate_BIOS_9027__9002008__UMC_UA6588F_9027S_606700.bin
+Gamate_BIOS_9027__9142222__UMC_UA6588F_9027S_606700.bin
+Gamate_BIOS_9027__unknown__UMC_UA6588F_9027S_606690.bin
+Gamate_BIOS_9031__9009719__NCR_81489_BIT_WS39323F_ICASC00002_F841400_R9031.bin
+Gamate_BIOS_9038__9145157__NCR_81489_BIT_WS39323F_ICASC00002_F842247_N9038.bin
+One console, with an unknown serial number, has an updated BIOS
+(SHA1:4e9dfbfe916ca485530ef4221593ab68738e2217):
+This console appears to have been manufactured in 1994, based on the date markings on the RAM chips,
+as well as the PCB.
+*/
ROM_START(gamate)
ROM_REGION(0x10000,"maincpu", 0)
ROM_SYSTEM_BIOS(0, "default", "DEFAULT")
ROMX_LOAD("gamate_bios_umc.bin", 0xf000, 0x1000, CRC(07090415) SHA1(ea449dc607601f9a68d855ad6ab53800d2e99297), ROM_BIOS(1) )
ROM_SYSTEM_BIOS(1, "newer", "NEWER")
- ROMX_LOAD("gamate_bios_9130__unknown__bit_icasc00001_9130-bs_r32261.bin", 0xf000, 0x1000, CRC(03a5f3a7) SHA1(4e9dfbfe916ca485530ef4221593ab68738e2217), ROM_BIOS(2) )
+ ROMX_LOAD("gamate_bios_bit.bin", 0xf000, 0x1000, CRC(03a5f3a7) SHA1(4e9dfbfe916ca485530ef4221593ab68738e2217), ROM_BIOS(2) )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
-CONS( 19??, gamate, 0, 0, gamate, gamate, gamate_state, gamate, "Bit Corp", "Gamate", 0)
+CONS( 1990, gamate, 0, 0, gamate, gamate, gamate_state, gamate, "Bit Corp", "Gamate", 0)
diff --git a/src/mame/drivers/gambl186.cpp b/src/mame/drivers/gambl186.cpp
index 706190bb419..89e009743c5 100644
--- a/src/mame/drivers/gambl186.cpp
+++ b/src/mame/drivers/gambl186.cpp
@@ -77,7 +77,6 @@ public:
DECLARE_READ16_MEMBER(comms_r);
DECLARE_WRITE16_MEMBER(comms_w);
DECLARE_WRITE16_MEMBER(data_bank_w);
- DECLARE_READ16_MEMBER(upd_r);
DECLARE_WRITE16_MEMBER(upd_w);
};
diff --git a/src/mame/drivers/gamecstl.cpp b/src/mame/drivers/gamecstl.cpp
index bc17ba94522..97e2e248323 100644
--- a/src/mame/drivers/gamecstl.cpp
+++ b/src/mame/drivers/gamecstl.cpp
@@ -84,7 +84,7 @@ public:
required_shared_ptr<UINT32> m_cga_ram;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- UINT32 *m_bios_ram;
+ std::unique_ptr<UINT32[]> m_bios_ram;
UINT8 m_mtxc_config_reg[256];
UINT8 m_piix4_config_reg[4][256];
@@ -184,7 +184,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
{
if (data & 0x10) // enable RAM access to region 0xf0000 - 0xfffff
{
- state->membank("bank1")->set_base(state->m_bios_ram);
+ state->membank("bank1")->set_base(state->m_bios_ram.get());
}
else // disable RAM access (reads go to BIOS ROM)
{
@@ -330,7 +330,7 @@ WRITE32_MEMBER(gamecstl_state::bios_ram_w)
{
if (m_mtxc_config_reg[0x59] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ram + offset);
+ COMBINE_DATA(m_bios_ram.get() + offset);
}
}
@@ -460,7 +460,7 @@ MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(gamecstl_state,gamecstl)
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x10000/4);
intel82439tx_init();
}
diff --git a/src/mame/drivers/gameking.cpp b/src/mame/drivers/gameking.cpp
index e2913c93f5a..66ce023b10b 100644
--- a/src/mame/drivers/gameking.cpp
+++ b/src/mame/drivers/gameking.cpp
@@ -3,14 +3,14 @@
/* TimeTop - GameKing */
/*
PeT mess@utanet.at 2015
-
+
Thanks to Deathadder, Judge, Porchy, Klaus Sommer, James Brolly & Brian Provinciano
hopefully my work (reverse engineerung, cartridge+bios backup, emulation) will be honored in future
and my name will not be removed entirely, especially by simple code rewrites of working emulation
-
+
flashcard, handheld, programmer, assembler ready to do some test on real hardware
-
+
todo:
!back up gameking3 bios so emulation of gameking3 gets possible; my gameking bios backup solution should work
search for rockwell r65c02 variant (cb:wai instruction) and several more exceptions, and implement it
@@ -18,7 +18,7 @@
work out bankswitching and exceptions
(improove emulation)
(add audio)
-
+
use gameking3 cartridge to get illegal cartridge scroller
This system appears to be based on the GeneralPlus GPL133 system-on-chip or a close relative.
@@ -59,13 +59,13 @@ public:
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(gameking_cart);
struct Gkio {
- UINT8 input, input2;
- UINT8 timer;
- UINT8 res3[0x2f];
- UINT8 bank4000_address; // 32
- UINT8 bank4000_cart; //33 bit 0 only?
- UINT8 bank8000_cart; //34 bit 7; bits 0,1,.. a15,a16,..
- UINT8 res2[0x4c];
+ UINT8 input, input2;
+ UINT8 timer;
+ UINT8 res3[0x2f];
+ UINT8 bank4000_address; // 32
+ UINT8 bank4000_cart; //33 bit 0 only?
+ UINT8 bank8000_cart; //34 bit 7; bits 0,1,.. a15,a16,..
+ UINT8 res2[0x4c];
};
protected:
required_device<cpu_device> m_maincpu;
@@ -125,7 +125,7 @@ READ8_MEMBER(gameking_state::io_r)
if (offset != offsetof(Gkio, bank8000_cart))
logerror("%.6f io r %x %x\n", machine().time().as_double(), offset, data);
-
+
return data;
}
@@ -149,9 +149,9 @@ static ADDRESS_MAP_START( gameking_mem , AS_PROGRAM, 8, gameking_state )
AM_RANGE(0x0600, 0x077f) AM_READWRITE(lcd_r, lcd_w)
AM_RANGE(0x0d00, 0x0fff) AM_RAM // d00, e00, f00 prooved on handheld
-// AM_RANGE(0x1000, 0x1fff) AM_RAM // sthero writes to $19xx
+// AM_RANGE(0x1000, 0x1fff) AM_RAM // sthero writes to $19xx
-// AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("bank3000")
+// AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("bank3000")
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank4000")
AM_RANGE(0x8000, 0xffaf) AM_ROMBANK("bank8000")
AM_RANGE(0xffb0, 0xffff) AM_ROMBANK("bankboot") // cpu seems to read from 8000 bank, and for exceptions ignore bank
@@ -191,7 +191,7 @@ UINT32 gameking_state::screen_update_gameking(screen_device &screen, bitmap_ind1
{
for (int x=0, j=0;j<48/4;x+=4, j++)
{
- memory_region *maincpu_rom = memregion("maincpu");
+ memory_region *maincpu_rom = memregion("maincpu");
UINT8 data=maincpu_rom->base()[0x600+j+i*12];
bitmap.pix16(y, x+3)=data&3;
bitmap.pix16(y, x+2)=(data>>2)&3;
@@ -245,8 +245,8 @@ DEVICE_IMAGE_LOAD_MEMBER( gameking_state, gameking_cart )
void gameking_state::machine_start()
{
- std::string region_tag;
- m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
+ std::string region_tag;
+ m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
m_bank4000 = membank("bank4000");
m_bank8000 = membank("bank8000");
@@ -298,18 +298,18 @@ static MACHINE_CONFIG_START( gameking, gameking_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gameking1, gameking )
- MCFG_SOFTWARE_LIST_ADD("cart_list", "gameking")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gameking")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gameking3, gameking )
- MCFG_SOFTWARE_LIST_ADD("cart_list", "gameking")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gameking")
MCFG_SOFTWARE_LIST_ADD("cart_list_3", "gameking3")
MACHINE_CONFIG_END
ROM_START(gameking)
ROM_REGION(0x10000+0x80000, "maincpu", ROMREGION_ERASE00)
-// ROM_LOAD("gm218.bin", 0x10000, 0x80000, CRC(8f52a928) SHA1(2e791fc7b642440d36820d2c53e1bb732375eb6e) ) // a14 inversed
+// ROM_LOAD("gm218.bin", 0x10000, 0x80000, CRC(8f52a928) SHA1(2e791fc7b642440d36820d2c53e1bb732375eb6e) ) // a14 inversed
ROM_LOAD("gm218.bin", 0x10000, 0x80000, CRC(5a1ade3d) SHA1(e0d056f8ebfdf52ef6796d0375eba7fcc4a6a9d3) )
ROM_END
diff --git a/src/mame/drivers/gameplan.cpp b/src/mame/drivers/gameplan.cpp
index ad593e0e036..497d8b3e74a 100644
--- a/src/mame/drivers/gameplan.cpp
+++ b/src/mame/drivers/gameplan.cpp
@@ -115,7 +115,7 @@ READ8_MEMBER(gameplan_state::io_port_r)
WRITE_LINE_MEMBER(gameplan_state::coin_w)
{
- coin_counter_w(machine(), 0, ~state & 1);
+ machine().bookkeeping().coin_counter_w(0, ~state & 1);
}
diff --git a/src/mame/drivers/gaplus.cpp b/src/mame/drivers/gaplus.cpp
index 99f8c161ebc..f09e3a40d51 100644
--- a/src/mame/drivers/gaplus.cpp
+++ b/src/mame/drivers/gaplus.cpp
@@ -474,15 +474,15 @@ static const char *const gaplus_sample_names[] =
WRITE8_MEMBER(gaplus_state::out_lamps0)
{
- set_led_status(machine(), 0, data & 1);
- set_led_status(machine(), 1, data & 2);
- coin_lockout_global_w(machine(), data & 4);
- coin_counter_w(machine(), 0, ~data & 8);
+ output().set_led_value(0, data & 1);
+ output().set_led_value(1, data & 2);
+ machine().bookkeeping().coin_lockout_global_w(data & 4);
+ machine().bookkeeping().coin_counter_w(0, ~data & 8);
}
WRITE8_MEMBER(gaplus_state::out_lamps1)
{
- coin_counter_w(machine(), 1, ~data & 1);
+ machine().bookkeeping().coin_counter_w(1, ~data & 1);
}
void gaplus_state::machine_start()
diff --git a/src/mame/drivers/gatron.cpp b/src/mame/drivers/gatron.cpp
index 707bc13ce5c..b7e54dc6eb2 100644
--- a/src/mame/drivers/gatron.cpp
+++ b/src/mame/drivers/gatron.cpp
@@ -410,13 +410,13 @@ WRITE8_MEMBER(gatron_state::output_port_0_w)
.x.. .... --> Change Card / Take / Low.
*/
- output_set_lamp_value(0, (data) & 1); /* hold3 lamp */
- output_set_lamp_value(1, (data >> 1) & 1); /* hold4 lamp */
- output_set_lamp_value(2, (data >> 2) & 1); /* hold5 lamp */
- output_set_lamp_value(3, (data >> 3) & 1); /* ante/bet lamp */
- output_set_lamp_value(4, (data >> 4) & 1); /* start lamp */
- output_set_lamp_value(5, (data >> 5) & 1); /* deal/hit lamp */
- output_set_lamp_value(6, (data >> 6) & 1); /* stand/fbdraw lamp */
+ output().set_lamp_value(0, (data) & 1); /* hold3 lamp */
+ output().set_lamp_value(1, (data >> 1) & 1); /* hold4 lamp */
+ output().set_lamp_value(2, (data >> 2) & 1); /* hold5 lamp */
+ output().set_lamp_value(3, (data >> 3) & 1); /* ante/bet lamp */
+ output().set_lamp_value(4, (data >> 4) & 1); /* start lamp */
+ output().set_lamp_value(5, (data >> 5) & 1); /* deal/hit lamp */
+ output().set_lamp_value(6, (data >> 6) & 1); /* stand/fbdraw lamp */
}
@@ -435,8 +435,8 @@ WRITE8_MEMBER(gatron_state::output_port_1_w)
x... .... --> Inverted pulse. Related to counters.
*/
- output_set_lamp_value(7, (data) & 1); /* hold2 lamp */
- output_set_lamp_value(8, (data >> 1) & 1); /* hold1 lamp */
+ output().set_lamp_value(7, (data) & 1); /* hold2 lamp */
+ output().set_lamp_value(8, (data >> 1) & 1); /* hold1 lamp */
}
/*************************
diff --git a/src/mame/drivers/gberet.cpp b/src/mame/drivers/gberet.cpp
index 219bd0c7906..64496a345b6 100644
--- a/src/mame/drivers/gberet.cpp
+++ b/src/mame/drivers/gberet.cpp
@@ -112,15 +112,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(gberet_state::gberet_interrupt_tick)
WRITE8_MEMBER(gberet_state::gberet_coin_counter_w)
{
/* bits 0/1 = coin counters */
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
WRITE8_MEMBER(gberet_state::mrgoemon_coin_counter_w)
{
/* bits 0/1 = coin counters */
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
/* bits 5-7 = ROM bank select */
membank("bank1")->set_entry(((data & 0xe0) >> 5));
diff --git a/src/mame/drivers/gcpinbal.cpp b/src/mame/drivers/gcpinbal.cpp
index 99530342433..54ef2156486 100644
--- a/src/mame/drivers/gcpinbal.cpp
+++ b/src/mame/drivers/gcpinbal.cpp
@@ -155,8 +155,8 @@ WRITE16_MEMBER(gcpinbal_state::ioc_w)
// return;
//
// case 0x88/2: /* coin control (+ others) ??? */
-// coin_lockout_w(machine(), 0, ~data & 0x01);
-// coin_lockout_w(machine(), 1, ~data & 0x02);
+// machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+// machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
//popmessage(" address %04x value %04x", offset, data);
// }
diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp
index 2e15c346a96..351ff521f69 100644
--- a/src/mame/drivers/gei.cpp
+++ b/src/mame/drivers/gei.cpp
@@ -189,24 +189,24 @@ UINT32 gei_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, con
WRITE8_MEMBER(gei_state::lamps_w)
{
/* 5 button lamps */
- set_led_status(machine(), 0,data & 0x01);
- set_led_status(machine(), 1,data & 0x02);
- set_led_status(machine(), 2,data & 0x04);
- set_led_status(machine(), 3,data & 0x08);
- set_led_status(machine(), 4,data & 0x10);
+ output().set_led_value(0,data & 0x01);
+ output().set_led_value(1,data & 0x02);
+ output().set_led_value(2,data & 0x04);
+ output().set_led_value(3,data & 0x08);
+ output().set_led_value(4,data & 0x10);
/* 3 button lamps for deal, cancel, stand in poker games;
lamp order verified in poker and selection self tests */
- set_led_status(machine(), 7,data & 0x20);
- set_led_status(machine(), 5,data & 0x40);
- set_led_status(machine(), 6,data & 0x80);
+ output().set_led_value(7,data & 0x20);
+ output().set_led_value(5,data & 0x40);
+ output().set_led_value(6,data & 0x80);
}
WRITE8_MEMBER(gei_state::sound_w)
{
/* bit 3 - coin lockout, lamp10 in poker / lamp6 in trivia test modes */
- coin_lockout_global_w(machine(), ~data & 0x08);
- set_led_status(machine(), 9,data & 0x08);
+ machine().bookkeeping().coin_lockout_global_w(~data & 0x08);
+ output().set_led_value(9,data & 0x08);
/* bit 5 - ticket out in trivia games */
if (m_ticket != nullptr)
@@ -222,15 +222,15 @@ WRITE8_MEMBER(gei_state::sound_w)
WRITE8_MEMBER(gei_state::sound2_w)
{
/* bit 3,6 - coin lockout, lamp10+11 in selection test mode */
- coin_lockout_w(machine(), 0, ~data & 0x08);
- coin_lockout_w(machine(), 1, ~data & 0x40);
- set_led_status(machine(), 9,data & 0x08);
- set_led_status(machine(), 10,data & 0x40);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x08);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x40);
+ output().set_led_value(9,data & 0x08);
+ output().set_led_value(10,data & 0x40);
/* bit 4,5 - lamps 12, 13 in selection test mode;
12 lights up if dsw maximum bet = 30 an bet > 15 or if dsw maximum bet = 10 an bet = 10 */
- set_led_status(machine(), 11,data & 0x10);
- set_led_status(machine(), 12,data & 0x20);
+ output().set_led_value(11,data & 0x10);
+ output().set_led_value(12,data & 0x20);
/* bit 7 goes directly to the sound amplifier */
m_dac->write(((data & 0x80) >> 7) * 255);
@@ -239,13 +239,13 @@ WRITE8_MEMBER(gei_state::sound2_w)
WRITE8_MEMBER(gei_state::lamps2_w)
{
/* bit 4 - play/raise button lamp, lamp 9 in poker test mode */
- set_led_status(machine(), 8,data & 0x10);
+ output().set_led_value(8,data & 0x10);
}
WRITE8_MEMBER(gei_state::nmi_w)
{
/* bit 4 - play/raise button lamp, lamp 9 in selection test mode */
- set_led_status(machine(), 8,data & 0x10);
+ output().set_led_value(8,data & 0x10);
/* bit 6 enables NMI */
m_nmi_mask = data & 0x40;
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/ggconnie.cpp b/src/mame/drivers/ggconnie.cpp
index 0e466d19adb..236a5c1c21d 100644
--- a/src/mame/drivers/ggconnie.cpp
+++ b/src/mame/drivers/ggconnie.cpp
@@ -42,14 +42,12 @@ public:
required_device <okim6295_device> m_oki;
DECLARE_WRITE8_MEMBER(lamp_w);
DECLARE_WRITE8_MEMBER(output_w);
- DECLARE_READ8_MEMBER(rtc_r);
- DECLARE_WRITE8_MEMBER(rtc_w);
DECLARE_WRITE8_MEMBER(oki_bank_w);
};
WRITE8_MEMBER(ggconnie_state::lamp_w)
{
- output_set_value("lamp", !BIT(data,0));
+ output().set_value("lamp", !BIT(data,0));
}
WRITE8_MEMBER(ggconnie_state::output_w)
diff --git a/src/mame/drivers/gkigt.cpp b/src/mame/drivers/gkigt.cpp
new file mode 100644
index 00000000000..07bd4c982ea
--- /dev/null
+++ b/src/mame/drivers/gkigt.cpp
@@ -0,0 +1,379 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+/*
+
+Game King board types:
+
+
+Common name 038 or 3802
+
+P/N 757-038-0x
+
+EPROM sockets only
+ Chip locations
+ BASE - U8
+ GME1 - U21
+ GME2 - U5
+ PLX1 - U20
+ PLX2 - U4
+ CG1 - U48
+ CG2 - U47
+ SND1-SND3 EPROMs on optional sound board
+
+
+
+Common name 039 or 3902
+
+P/N 757-039-0x
+
+EPROM sockets and SIMM slots
+ Chip locations:
+ BASE - U39
+ GAME1 - U13
+ GAME2 - U36
+ PLX1 - U14
+ PLX2 - U37 (games may use PXLF SIMMs instead of EPROMs)
+ CG1 - U30
+ CG2 - U53 (games may use CGF SIMM instead of EPROMs)
+ PXLF Pixel Memory SIMM - SIMM slots J6, J7 & J8
+ CGF CG Memory SIMM - SIMM slot J3
+
+ J4 & J5 Two 120-pin sockets to connect MultiMedia Lite sound board
+ SND1-SND4 EPROMs on optional MULTIMEDIA LITE 1 board
+ SNDF SIMM on optional MULTIMEDIA LITE 2 board
+
+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
+ 32 I/O Pins
+ 5 Dedicated Inputs
+ labeled MML1 REV A (socketted) for EPROM type (4 32pin eprom sockets)
+ labeled MML2 REV A (surface mounted) for SIMM type (1 72pin SIMM socket)
+ 16.9344MHz OSC
+ Yamaha YMZ280-B sound chip
+ 1 3.5mm Audio out jack
+ P4 & P5 Two 120pin connectors
+
+
+
+Common name 044
+
+P/N 757044
+
+No EPROM or SIMM sockets
+
+ONLY J6 & J7 Two 120-pin sockets to connect classic legacy or enhanced
+ memory (flash) adapter boards.
+
+
+
+GAME KING DELUXE - MEMORY 1
+ASSY NO. 7682710
+
+PCB board that connects to 044 boards via J6 & J7
+ Adds the abillity to use legacy 038 EPROM based software
+ or 039 EPROM + SIMM software
+
+
+
+*/
+
+#include "emu.h"
+#include "cpu/i960/i960.h"
+#include "sound/ymz280b.h"
+
+class igt_gameking_state : public driver_device
+{
+public:
+ igt_gameking_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ { }
+
+ virtual void video_start() override;
+ UINT32 screen_update_igt_gameking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ DECLARE_READ32_MEMBER(igt_gk_28010008_r)
+ {
+ return rand();
+ };
+
+ DECLARE_READ32_MEMBER(igt_gk_28030000_r)
+ {
+ return rand();
+ };
+
+
+};
+
+static INPUT_PORTS_START( igt_gameking )
+INPUT_PORTS_END
+
+
+
+void igt_gameking_state::machine_start()
+{
+}
+
+void igt_gameking_state::machine_reset()
+{
+}
+
+void igt_gameking_state::video_start()
+{
+}
+
+UINT32 igt_gameking_state::screen_update_igt_gameking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+
+
+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(0x10000020, 0x1000021f) AM_RAM // strange range to test, correct or CPU issue?
+ 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
+
+static const gfx_layout igt_gameking_layout =
+{
+ 16,8,
+ RGN_FRAC(1,1),
+ 4,
+ { 0,1,2,3 },
+ { 0*4,1*4,2*4,3*4,4*4,5*4,6*4,7*4,8*4,9*4,10*4,11*4,12*4,13*4,14*4,15*4 },
+ { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
+ 8*64
+};
+
+
+static GFXDECODE_START( igt_gameking )
+ GFXDECODE_ENTRY( "cg", 0, igt_gameking_layout, 0x0, 1 )
+GFXDECODE_END
+
+
+
+static MACHINE_CONFIG_START( igt_gameking, igt_gameking_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", I960, 20000000) // ?? Mhz
+ MCFG_CPU_PROGRAM_MAP(igt_gameking_mem)
+
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", igt_gameking)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ 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")
+
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("ymz", YMZ280B, 16000000) // ?? Mhz
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+MACHINE_CONFIG_END
+
+
+
+ROM_START( gkigt4 )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ 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_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_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_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_END
+
+
+
+ROM_START( gkigt4ms )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ 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_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_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_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_END
+
+ROM_START( gkigt43 )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ 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_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_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_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_END
+
+ROM_START( gkigt43n )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ 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_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_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_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_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_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_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_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_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_END
+
+ROM_START( gkigt5p )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ 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_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_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_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_END
+
+
+ROM_START( igtsc )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ 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) )
+
+ // 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 )
+ // uses a SIMM
+ ROM_LOAD( "C0000464 CGF.bin", 0x000000, 0x07ff9a3, BAD_DUMP CRC(52fcc9fd) SHA1(98089dcf550bc3670d29b7ee78e014154e672120) ) // should be 0x800000
+
+ ROM_REGION( 0x1000000, "plx", 0 )
+ // uses a SIMM
+ ROM_LOAD( "C000464 PXL3.bin", 0x000000, 0xff73bb, BAD_DUMP CRC(c6acb3cf) SHA1(0ea2d2a506be43a2a8b9d05d80f765c8351494a2) ) // should be 0x1000000
+
+ ROM_REGION( 0x1000000, "snd", 0 )
+ // uses a SIMM
+ ROM_LOAD( "DSS00076.simm", 0x000000, 0xfd7f81, BAD_DUMP CRC(5dd889b4) SHA1(9a6cb7599d268d110645ac8fe5d41a733cbaadc5) ) // should be 0x1000000
+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_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?)
+ ROM_LOAD( "KEY00022 (1-4002).bin", 0x00000, 0x07feb9, BAD_DUMP CRC(c8149320) SHA1(bd0c62edb154e22949eba776d66c4c1a6c032d31) ) // should be 0x80000
+ ROM_LOAD( "KEY00016 (1-4002).bin", 0x00000, 0x07ff9a, BAD_DUMP CRC(80c0c2c4) SHA1(e8df4e516c058aeacf1492151c38b5e73f161c8c) ) // ^
+ ROM_LOAD( "KEY00040 (1-4002).bin", 0x00000, 0x07feb9, BAD_DUMP CRC(bdcb3694) SHA1(d7acf0e7620a388c10ceaec4a63b8411419a4f3f) ) // ^
+
+ ROM_REGION32_LE( 0x200000, "game", ROMREGION_ERASEFF )
+ ROM_REGION( 0x100000, "cg", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "plx", ROMREGION_ERASEFF )
+ ROM_REGION( 0x200000, "snd", ROMREGION_ERASEFF )
+ROM_END
+
+
+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 )
+GAME( 2003, gkigt43n, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (v4.3, NJ)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2003, gkigtez, gkigt4, igt_gameking, igt_gameking, driver_device, 0, ROT0, "IGT", "Game King (EZ Pay, v4.0, MS)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+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 d94a65ef70c..d34fb059961 100644
--- a/src/mame/drivers/glasgow.cpp
+++ b/src/mame/drivers/glasgow.cpp
@@ -1,5 +1,5 @@
-// license:LGPL-2.1+
-// copyright-holders:Dirk Verwiebe, Robbbert, Cowering
+// license:???
+// copyright-holders:Dirk Verwiebe, Robbbert, Cowering, Ralf Schaefer
/***************************************************************************
Mephisto Glasgow 3 S chess computer
Dirk V.
@@ -60,14 +60,17 @@ class glasgow_state : public mboard_state
public:
glasgow_state(const machine_config &mconfig, device_type type, const char *tag)
: mboard_state(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_beep(*this, "beeper"),
- m_line0(*this, "LINE0"),
- m_line1(*this, "LINE1")
+ m_maincpu(*this, "maincpu"),
+ m_beep(*this, "beeper"),
+ m_line0(*this, "LINE0"),
+ m_line1(*this, "LINE1")
{ }
required_device<cpu_device> m_maincpu;
required_device<beep_device> m_beep;
+ required_ioport m_line0;
+ required_ioport m_line1;
+
DECLARE_WRITE16_MEMBER(glasgow_lcd_w);
DECLARE_WRITE16_MEMBER(glasgow_lcd_flag_w);
DECLARE_READ16_MEMBER(glasgow_keys_r);
@@ -80,19 +83,18 @@ public:
DECLARE_WRITE32_MEMBER(write_lcd_flag32);
DECLARE_READ32_MEMBER(read_newkeys32);
DECLARE_WRITE32_MEMBER(write_beeper32);
+
UINT8 m_lcd_shift_counter;
UINT8 m_led7;
UINT8 m_irq_flag;
UINT16 m_beeper;
- DECLARE_READ16_MEMBER(read_test);
- DECLARE_READ16_MEMBER(read_board_amsterd);
- virtual void machine_start() override;
- virtual void machine_reset() override;
+
DECLARE_MACHINE_START(dallas32);
TIMER_DEVICE_CALLBACK_MEMBER(update_nmi);
TIMER_DEVICE_CALLBACK_MEMBER(update_nmi32);
- required_ioport m_line0;
- required_ioport m_line1;
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
};
@@ -102,7 +104,7 @@ WRITE16_MEMBER( glasgow_state::glasgow_lcd_w )
UINT8 lcd_data = data >> 8;
if (m_led7 == 0)
- output_set_digit_value(m_lcd_shift_counter, lcd_data);
+ output().set_digit_value(m_lcd_shift_counter, lcd_data);
m_lcd_shift_counter--;
m_lcd_shift_counter &= 3;
@@ -148,7 +150,7 @@ WRITE16_MEMBER( glasgow_state::write_lcd )
{
UINT8 lcd_data = data >> 8;
- output_set_digit_value(m_lcd_shift_counter, mboard_lcd_invert & 1 ? lcd_data^0xff : lcd_data);
+ output().set_digit_value(m_lcd_shift_counter, mboard_lcd_invert & 1 ? lcd_data^0xff : lcd_data);
m_lcd_shift_counter--;
m_lcd_shift_counter &= 3;
logerror("LCD Offset = %d Data low = %x \n", offset, lcd_data);
@@ -220,7 +222,7 @@ WRITE32_MEMBER( glasgow_state::write_lcd32 )
{
UINT8 lcd_data = data >> 8;
- output_set_digit_value(m_lcd_shift_counter, mboard_lcd_invert & 1 ? lcd_data^0xff : lcd_data);
+ output().set_digit_value(m_lcd_shift_counter, mboard_lcd_invert & 1 ? lcd_data^0xff : lcd_data);
m_lcd_shift_counter--;
m_lcd_shift_counter &= 3;
//logerror("LCD Offset = %d Data = %x \n ", offset, lcd_data);
@@ -296,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();
}
@@ -305,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();
}
@@ -420,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 e5d4a20a481..54304712b71 100644
--- a/src/mame/drivers/glass.cpp
+++ b/src/mame/drivers/glass.cpp
@@ -66,11 +66,11 @@ WRITE16_MEMBER(glass_state::glass_coin_w)
{
case 0x00: /* Coin Lockouts */
case 0x01:
- coin_lockout_w(machine(), (offset >> 3) & 0x01, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w((offset >> 3) & 0x01, ~data & 0x01);
break;
case 0x02: /* Coin Counters */
case 0x03:
- coin_counter_w(machine(), (offset >> 3) & 0x01, data & 0x01);
+ machine().bookkeeping().coin_counter_w((offset >> 3) & 0x01, data & 0x01);
break;
case 0x04: /* Sound Muting (if bit 0 == 1, sound output stream = 0) */
break;
@@ -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 */
@@ -260,11 +266,14 @@ ROM_START( glass10 ) /* Version 1.0 */
ROM_RELOAD( 0x040000, 0x100000 )
ROM_END
-ROM_START( glassbrk ) /* Title screen shows "GLASS" and under that "Break Edition" on a real PCB */
+ROM_START( glass10a ) /* Title screen shows "GLASS" and under that "Break Edition" on a real PCB */
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
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 */
@@ -281,7 +290,7 @@ ROM_START( glassbrk ) /* Title screen shows "GLASS" and under that "Break Editio
ROM_RELOAD( 0x040000, 0x100000 )
ROM_END
-ROM_START( glass94 )
+ROM_START( glasskr )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "glassk.c23", 0x000000, 0x080000, CRC(6ee19376) SHA1(8a8fdeebe094bd3e29c35cf59584e3cab708732d) )
ROM_LOAD16_BYTE( "glassk.c22", 0x000001, 0x080000, CRC(bd546568) SHA1(bcd5e7591f4e68c9470999b8a0ef1ee4392c907c) )
@@ -444,7 +453,12 @@ DRIVER_INIT_MEMBER(glass_state,glassp)
}
-GAME( 1993, glass, 0, glass, glass, glass_state, glassp, ROT0, "OMK / Gaelco", "Glass (Ver 1.1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1993, glass10, glass, glass, glass, glass_state, glassp, ROT0, "OMK / Gaelco", "Glass (Ver 1.0)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1993, glassbrk, glass, glass, glass, glass_state, glassp, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1993, glass94, glass, glass, glass, glass_state, glass, ROT0, "OMK / Gaelco (Promat license)", "Glass (Ver 1.1, Break Edition, Version 1994) (unprotected)", MACHINE_SUPPORTS_SAVE ) // promat stickers on program roms
+// ALL versions of Glass contain the 'Break Edition' string (it just seems to be part of the title?)
+// The 2 version 1.0 releases are very similar code, it was thought that one was a break edition and the other wasn't, but as both contain the string this seems unlikely.
+// Version 1.1 releases also show Version 1994 on the title screen. These versions do not have skulls in the playfield (at least not on early stages)
+// The unprotected version appears to be a Korean set, is censored, and has different girl pictures.
+
+GAME( 1994, glass, 0, glass, glass, glass_state, glassp, ROT0, "OMK / Gaelco", "Glass (Ver 1.1, Break Edition, Version 1994)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, glasskr, glass, glass, glass, glass_state, glass, ROT0, "OMK / Gaelco (Promat license)", "Glass (Ver 1.1, Break Edition, Version 1994) (censored, unprotected)", MACHINE_SUPPORTS_SAVE ) // promat stickers on program roms
+GAME( 1993, glass10, glass, glass, glass, glass_state, glassp, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition) (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, glass10a, glass, glass, glass, glass_state, glassp, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition) (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gluck2.cpp b/src/mame/drivers/gluck2.cpp
index 1676e11c1fc..5802238eddc 100644
--- a/src/mame/drivers/gluck2.cpp
+++ b/src/mame/drivers/gluck2.cpp
@@ -332,9 +332,9 @@ WRITE8_MEMBER(gluck2_state::counters_w)
*/
data = data ^ 0xff; // inverted
- coin_counter_w(machine(), 0, data & 0x10); /* coins */
- coin_counter_w(machine(), 1, data & 0x02); /* notes */
- coin_counter_w(machine(), 2, data & 0x04); /* payout */
+ machine().bookkeeping().coin_counter_w(0, data & 0x10); /* coins */
+ machine().bookkeeping().coin_counter_w(1, data & 0x02); /* notes */
+ machine().bookkeeping().coin_counter_w(2, data & 0x04); /* payout */
}
diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp
index bcb2af6418f..f6949d6ff96 100644
--- a/src/mame/drivers/gng.cpp
+++ b/src/mame/drivers/gng.cpp
@@ -39,7 +39,7 @@ WRITE8_MEMBER(gng_state::gng_bankswitch_w)
WRITE8_MEMBER(gng_state::gng_coin_counter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
static ADDRESS_MAP_START( gng_map, AS_PROGRAM, 8, gng_state )
diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp
index 44a10251ed2..5c691c5922b 100644
--- a/src/mame/drivers/goldnpkr.cpp
+++ b/src/mame/drivers/goldnpkr.cpp
@@ -1502,15 +1502,15 @@ WRITE8_MEMBER(goldnpkr_state::lamps_a_w)
*/
data = data ^ 0xff;
- output_set_lamp_value(0, (data) & 1); /* Lamp 0 */
- output_set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 */
- output_set_lamp_value(2, (data >> 2) & 1); /* Lamp 2 */
- output_set_lamp_value(3, (data >> 3) & 1); /* Lamp 3 */
- output_set_lamp_value(4, (data >> 4) & 1); /* Lamp 4 */
-
- coin_counter_w(machine(), 0, data & 0x40); /* counter1 */
- coin_counter_w(machine(), 1, data & 0x80); /* counter2 */
- coin_counter_w(machine(), 2, data & 0x20); /* counter3 */
+ output().set_lamp_value(0, (data) & 1); /* Lamp 0 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 */
+ output().set_lamp_value(2, (data >> 2) & 1); /* Lamp 2 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* Lamp 3 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* Lamp 4 */
+
+ machine().bookkeeping().coin_counter_w(0, data & 0x40); /* counter1 */
+ machine().bookkeeping().coin_counter_w(1, data & 0x80); /* counter2 */
+ machine().bookkeeping().coin_counter_w(2, data & 0x20); /* counter3 */
}
WRITE8_MEMBER(goldnpkr_state::sound_w)
@@ -4547,7 +4547,7 @@ ROM_START( potnpkrh )
ROM_LOAD( "unk_2716.8a", 0x1000, 0x0800, CRC(a138afa6) SHA1(80c6d11086f78e36dfc01c15b23e70667fcf17fc) ) /* char ROM */
/* Backplane at 5a has two bits different against the common cards gfx
- Offsets 0x380 and 0x400, bit0 is set to 0 */
+ Offsets 0x380 and 0x400, bit0 is set to 0 */
ROM_REGION( 0x1800, "gfx2", 0 )
ROM_LOAD( "unk_2716.4a", 0x0000, 0x0800, CRC(f2f94661) SHA1(f37f7c0dff680fd02897dae64e13e297d0fdb3e7) ) /* cards deck gfx, bitplane1 */
ROM_LOAD( "unk_2716.5a", 0x0800, 0x0800, CRC(daf38d03) SHA1(6b518494688756ad7b753fdec46b6392c4a9ebbe) ) /* cards deck gfx, bitplane2 */
@@ -10149,7 +10149,7 @@ ROM_END
---------------------------------------------------------------------------
* First game program:
-
+
NMI vector is OK ($29FD).
RES & IRQ/BRK vectors are pointing to 0x2EE3 and $3065 (JMP $2EE3)
$2EE3 --> JMP $FBBB (where is in middle of a routine. Not the real start)
@@ -10159,22 +10159,22 @@ ROM_END
* Second game program:
Expects the string '#2D' placed in offset FAh-FCh (NVRAM)
-
+
fill FAh = 0x23
FBh = 0x32
FCh = 0x44
- #2D
+ #2D
...to pass the checks at $638c: JSR $6760
-
+
Another odd thing:
bp 6394
-
+
639f: lda #$20
63a1: sta $a0
- 63a3: lda $a0 \
+ 63a3: lda $a0 \
63a5: bne $63a3 / ---> loop waiting for register $a0 cleared!
-------------------------------------------------------------------------*/
@@ -10215,7 +10215,7 @@ ROM_START( animpkra )
ROM_END
-
+
/*********************************************
* Driver Init *
*********************************************/
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index db0a65e5dd1..e4a1485a892 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -266,28 +266,28 @@ WRITE8_MEMBER(goldstar_state::p1_lamps_w)
skill98 is like schery97 but doesn't activate bit 0 for stop
nfb96, roypok96 and nc96 sets are like schery97 but they don't activate bit 2 for select
*/
- output_set_lamp_value(0, (data >> 0) & 1);
- output_set_lamp_value(1, (data >> 1) & 1);
- output_set_lamp_value(2, (data >> 2) & 1);
- output_set_lamp_value(3, (data >> 3) & 1);
- output_set_lamp_value(4, (data >> 4) & 1);
- output_set_lamp_value(5, (data >> 5) & 1);
- output_set_lamp_value(6, (data >> 6) & 1);
- output_set_lamp_value(7, (data >> 7) & 1);
+ output().set_lamp_value(0, (data >> 0) & 1);
+ output().set_lamp_value(1, (data >> 1) & 1);
+ output().set_lamp_value(2, (data >> 2) & 1);
+ output().set_lamp_value(3, (data >> 3) & 1);
+ output().set_lamp_value(4, (data >> 4) & 1);
+ output().set_lamp_value(5, (data >> 5) & 1);
+ output().set_lamp_value(6, (data >> 6) & 1);
+ output().set_lamp_value(7, (data >> 7) & 1);
// popmessage("p1 lamps: %02X", data);
}
WRITE8_MEMBER(goldstar_state::p2_lamps_w)
{
- output_set_lamp_value(8 + 0, (data >> 0) & 1);
- output_set_lamp_value(8 + 1, (data >> 1) & 1);
- output_set_lamp_value(8 + 2, (data >> 2) & 1);
- output_set_lamp_value(8 + 3, (data >> 3) & 1);
- output_set_lamp_value(8 + 4, (data >> 4) & 1);
- output_set_lamp_value(8 + 5, (data >> 5) & 1);
- output_set_lamp_value(8 + 6, (data >> 6) & 1);
- output_set_lamp_value(8 + 7, (data >> 7) & 1);
+ output().set_lamp_value(8 + 0, (data >> 0) & 1);
+ output().set_lamp_value(8 + 1, (data >> 1) & 1);
+ output().set_lamp_value(8 + 2, (data >> 2) & 1);
+ output().set_lamp_value(8 + 3, (data >> 3) & 1);
+ output().set_lamp_value(8 + 4, (data >> 4) & 1);
+ output().set_lamp_value(8 + 5, (data >> 5) & 1);
+ output().set_lamp_value(8 + 6, (data >> 6) & 1);
+ output().set_lamp_value(8 + 7, (data >> 7) & 1);
// popmessage("p2 lamps: %02X", data);
}
@@ -376,11 +376,11 @@ WRITE8_MEMBER(sanghopm_state::coincount_w)
x--- -xx- Unknown.
*/
- coin_counter_w(machine(), 0, data & 0x08); /* counter1 coin a */
- coin_counter_w(machine(), 1, data & 0x10); /* counter2 coin b */
- coin_counter_w(machine(), 2, data & 0x20); /* counter3 key in */
- coin_counter_w(machine(), 3, data & 0x40); /* counter4 coin c */
- coin_counter_w(machine(), 4, data & 0x01); /* counter5 payout */
+ machine().bookkeeping().coin_counter_w(0, data & 0x08); /* counter1 coin a */
+ machine().bookkeeping().coin_counter_w(1, data & 0x10); /* counter2 coin b */
+ machine().bookkeeping().coin_counter_w(2, data & 0x20); /* counter3 key in */
+ machine().bookkeeping().coin_counter_w(3, data & 0x40); /* counter4 coin c */
+ machine().bookkeeping().coin_counter_w(4, data & 0x01); /* counter5 payout */
}
WRITE8_MEMBER(sanghopm_state::enable_w)
@@ -749,11 +749,11 @@ WRITE8_MEMBER(goldstar_state::cm_coincount_w)
interestingly there is no counter for coin B in the cm/cmaster games
*/
- coin_counter_w(machine(), 0, data & 0x40); /* Counter 1 Coin A */
- coin_counter_w(machine(), 1, data & 0x20); /* Counter 2 Key In */
- coin_counter_w(machine(), 2, data & 0x10); /* Counter 3 Coin C */
- coin_counter_w(machine(), 3, data & 0x08); /* Counter 4 Coin D */
- coin_counter_w(machine(), 4, data & 0x01); /* Counter 5 Payout */
+ machine().bookkeeping().coin_counter_w(0, data & 0x40); /* Counter 1 Coin A */
+ machine().bookkeeping().coin_counter_w(1, data & 0x20); /* Counter 2 Key In */
+ machine().bookkeeping().coin_counter_w(2, data & 0x10); /* Counter 3 Coin C */
+ machine().bookkeeping().coin_counter_w(3, data & 0x08); /* Counter 4 Coin D */
+ machine().bookkeeping().coin_counter_w(4, data & 0x01); /* Counter 5 Payout */
if (data & 0x86)
popmessage("counters: %02X", data);
@@ -1026,9 +1026,9 @@ WRITE8_MEMBER(unkch_state::coincount_w)
m_ticket_dispenser->write(space, offset, data & 0x80);
- coin_counter_w(machine(), 0, data & 0x04); /* Credit counter */
- coin_counter_w(machine(), 1, data & 0x08); /* Key In counter */
- coin_counter_w(machine(), 2, data & 0x02); /* payout counter */
+ machine().bookkeeping().coin_counter_w(0, data & 0x04); /* Credit counter */
+ machine().bookkeeping().coin_counter_w(1, data & 0x08); /* Key In counter */
+ machine().bookkeeping().coin_counter_w(2, data & 0x02); /* payout counter */
//popmessage("coin counters: %02x", data);
}
@@ -1053,12 +1053,12 @@ WRITE8_MEMBER(unkch_state::unkcm_0x02_w)
m_vblank_irq_enable = data & 0x80;
- output_set_lamp_value(0, (data >> 0) & 1); /* Bet-A / Stop 2 */
- output_set_lamp_value(1, (data >> 1) & 1); /* Start / Stop All */
- output_set_lamp_value(2, (data >> 2) & 1); /* Info / Small / Stop 3 */
- output_set_lamp_value(3, (data >> 3) & 1); /* Big */
- output_set_lamp_value(4, (data >> 4) & 1); /* Bet-B / D-Up */
- output_set_lamp_value(5, (data >> 5) & 1); /* Take / Stop 1 */
+ output().set_lamp_value(0, (data >> 0) & 1); /* Bet-A / Stop 2 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* Start / Stop All */
+ output().set_lamp_value(2, (data >> 2) & 1); /* Info / Small / Stop 3 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* Big */
+ output().set_lamp_value(4, (data >> 4) & 1); /* Bet-B / D-Up */
+ output().set_lamp_value(5, (data >> 5) & 1); /* Take / Stop 1 */
}
WRITE8_MEMBER(unkch_state::unkcm_0x03_w)
diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp
index d9913f744d8..a3ec78e80e8 100644
--- a/src/mame/drivers/gottlieb.cpp
+++ b/src/mame/drivers/gottlieb.cpp
@@ -236,7 +236,7 @@ void gottlieb_state::machine_start()
m_laserdisc_philips_timer = timer_alloc(TIMER_LASERDISC_PHILIPS);
/* create some audio RAM */
- m_laserdisc_audio_buffer = auto_alloc_array(machine(), UINT8, AUDIORAM_SIZE);
+ m_laserdisc_audio_buffer = std::make_unique<UINT8[]>(AUDIORAM_SIZE);
m_laserdisc_status = 0x38;
/* more save state registration */
@@ -244,7 +244,7 @@ void gottlieb_state::machine_start()
save_item(NAME(m_laserdisc_status));
save_item(NAME(m_laserdisc_philips_code));
- save_pointer(NAME(m_laserdisc_audio_buffer), AUDIORAM_SIZE);
+ save_pointer(NAME(m_laserdisc_audio_buffer.get()), AUDIORAM_SIZE);
save_item(NAME(m_laserdisc_audio_address));
save_item(NAME(m_laserdisc_last_samples));
save_item(NAME(m_laserdisc_last_time));
@@ -311,7 +311,7 @@ WRITE8_MEMBER(gottlieb_state::general_output_w)
gottlieb_laserdisc_video_control_w(space, offset, data);
/* bit 4 normally controls the coin meter */
- coin_counter_w(machine(), 0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
/* bit 5 doesn't have a generic function */
/* bit 6 controls "COIN1"; it appears that no games used this */
@@ -323,9 +323,9 @@ WRITE8_MEMBER(gottlieb_state::reactor_output_w)
{
general_output_w(space, offset, data & ~0xe0);
- set_led_status(machine(), 0, data & 0x20);
- set_led_status(machine(), 1, data & 0x40);
- set_led_status(machine(), 2, data & 0x80);
+ output().set_led_value(0, data & 0x20);
+ output().set_led_value(1, data & 0x40);
+ output().set_led_value(2, data & 0x80);
}
WRITE8_MEMBER(gottlieb_state::qbert_output_w)
@@ -653,7 +653,7 @@ void gottlieb_state::laserdisc_audio_process(laserdisc_device &device, int sampl
void gottlieb_state::qbert_knocker(UINT8 knock)
{
- output_set_value("knocker0", knock);
+ output().set_value("knocker0", knock);
// start sound on rising edge
if (knock & ~m_knocker_prev)
diff --git a/src/mame/drivers/gp32.cpp b/src/mame/drivers/gp32.cpp
index 4512c3db20f..f7c4c1c2f4c 100644
--- a/src/mame/drivers/gp32.cpp
+++ b/src/mame/drivers/gp32.cpp
@@ -1614,8 +1614,8 @@ void gp32_state::s3c240x_machine_start()
m_s3c240x_iic_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gp32_state::s3c240x_iic_timer_exp),this), (void *)(FPTR)0);
m_s3c240x_iis_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gp32_state::s3c240x_iis_timer_exp),this), (void *)(FPTR)0);
m_s3c240x_lcd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gp32_state::s3c240x_lcd_timer_exp),this), (void *)(FPTR)0);
- m_eeprom_data = auto_alloc_array( machine(), UINT8, 0x2000);
- m_nvram->set_base(m_eeprom_data, 0x2000);
+ m_eeprom_data = std::make_unique<UINT8[]>(0x2000);
+ m_nvram->set_base(m_eeprom_data.get(), 0x2000);
smc_init();
i2s_init();
}
diff --git a/src/mame/drivers/gp_1.cpp b/src/mame/drivers/gp_1.cpp
index 3e0dabf219b..96d4e94cb78 100644
--- a/src/mame/drivers/gp_1.cpp
+++ b/src/mame/drivers/gp_1.cpp
@@ -349,10 +349,10 @@ WRITE8_MEMBER( gp_1_state::porta_w )
else
if (m_u14 == 8)
{
- output_set_digit_value(m_digit, patterns[m_segment[8]]);
- output_set_digit_value(m_digit+8, patterns[m_segment[9]]);
- output_set_digit_value(m_digit+16, patterns[m_segment[10]]);
- output_set_digit_value(m_digit+24, patterns[m_segment[11]]);
+ output().set_digit_value(m_digit, patterns[m_segment[8]]);
+ output().set_digit_value(m_digit+8, patterns[m_segment[9]]);
+ output().set_digit_value(m_digit+16, patterns[m_segment[10]]);
+ output().set_digit_value(m_digit+24, patterns[m_segment[11]]);
}
}
@@ -393,7 +393,7 @@ WRITE8_MEMBER( gp_1_state::portas_w )
WRITE8_MEMBER( gp_1_state::portc_w )
{
- output_set_value("led0", !BIT(data, 3));
+ output().set_value("led0", !BIT(data, 3));
m_digit = data & 7;
}
diff --git a/src/mame/drivers/gp_2.cpp b/src/mame/drivers/gp_2.cpp
index 11e2222720b..b829912b939 100644
--- a/src/mame/drivers/gp_2.cpp
+++ b/src/mame/drivers/gp_2.cpp
@@ -536,17 +536,17 @@ WRITE8_MEMBER( gp_2_state::porta_w )
else
if (m_u14 == 7)
{
- output_set_digit_value(m_digit, patterns[m_segment[7]]);
- output_set_digit_value(m_digit+8, patterns[m_segment[8]]);
- output_set_digit_value(m_digit+16, patterns[m_segment[9]]);
- output_set_digit_value(m_digit+24, patterns[m_segment[10]]);
- output_set_digit_value(m_digit+32, patterns[m_segment[11]]);
+ output().set_digit_value(m_digit, patterns[m_segment[7]]);
+ output().set_digit_value(m_digit+8, patterns[m_segment[8]]);
+ output().set_digit_value(m_digit+16, patterns[m_segment[9]]);
+ output().set_digit_value(m_digit+24, patterns[m_segment[10]]);
+ output().set_digit_value(m_digit+32, patterns[m_segment[11]]);
}
}
WRITE8_MEMBER( gp_2_state::portc_w )
{
- output_set_value("led0", !BIT(data, 3));
+ output().set_value("led0", !BIT(data, 3));
m_digit = data & 7;
}
diff --git a/src/mame/drivers/gradius3.cpp b/src/mame/drivers/gradius3.cpp
index 94b4e5f2ed5..cde1399e4bf 100644
--- a/src/mame/drivers/gradius3.cpp
+++ b/src/mame/drivers/gradius3.cpp
@@ -75,8 +75,8 @@ WRITE16_MEMBER(gradius3_state::cpuA_ctrl_w)
data >>= 8;
/* bits 0-1 are coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 selects layer priority */
m_priority = data & 0x04;
diff --git a/src/mame/drivers/grchamp.cpp b/src/mame/drivers/grchamp.cpp
index ebb65186a9a..583b6c09eb2 100644
--- a/src/mame/drivers/grchamp.cpp
+++ b/src/mame/drivers/grchamp.cpp
@@ -94,7 +94,7 @@ void grchamp_state::machine_start()
void grchamp_state::machine_reset()
{
/* if the coin system is 1 way, lock Coin B (Page 40) */
- coin_lockout_w(machine(), 1, (ioport("DSWB")->read() & 0x10) ? 1 : 0);
+ machine().bookkeeping().coin_lockout_w(1, (ioport("DSWB")->read() & 0x10) ? 1 : 0);
}
@@ -178,8 +178,8 @@ WRITE8_MEMBER(grchamp_state::cpu0_outputs_w)
/* bit 4: coin lockout */
/* bit 5: Game Over lamp */
/* bit 6-7: n/c */
- coin_lockout_global_w(machine(), (data >> 4) & 1);
- output_set_value("led0", (~data >> 5) & 1);
+ machine().bookkeeping().coin_lockout_global_w((data >> 4) & 1);
+ output().set_value("led0", (~data >> 5) & 1);
break;
case 0x0a: /* OUT10 */
@@ -228,7 +228,7 @@ WRITE8_MEMBER(grchamp_state::led_board_w)
case 0x0c:
m_ledram[m_ledaddr & 0x07] = m_ledlatch;
- output_set_digit_value(m_ledaddr & 0x07, ls247_map[m_ledram[m_ledaddr & 0x07] & 0x0f]);
+ output().set_digit_value(m_ledaddr & 0x07, ls247_map[m_ledram[m_ledaddr & 0x07] & 0x0f]);
/*
ledram[0] & 0x0f = score LSD
ledram[1] & 0x0f = score
diff --git a/src/mame/drivers/gridlee.cpp b/src/mame/drivers/gridlee.cpp
index 54f67139cbe..3e892cff691 100644
--- a/src/mame/drivers/gridlee.cpp
+++ b/src/mame/drivers/gridlee.cpp
@@ -223,8 +223,9 @@ void gridlee_state::poly17_init()
UINT8 *p, *r;
/* allocate memory */
- p = m_poly17 = auto_alloc_array(machine(), UINT8, 2 * (POLY17_SIZE + 1));
- r = m_rand17 = m_poly17 + POLY17_SIZE + 1;
+ m_poly17 = std::make_unique<UINT8[]>(2 * (POLY17_SIZE + 1));
+ p = m_poly17.get();
+ r = m_rand17 = m_poly17.get() + POLY17_SIZE + 1;
/* generate the polynomial */
for (i = 0; i < POLY17_SIZE; i++)
@@ -268,21 +269,21 @@ READ8_MEMBER(gridlee_state::random_num_r)
WRITE8_MEMBER(gridlee_state::led_0_w)
{
- set_led_status(machine(), 0, data & 1);
+ output().set_led_value(0, data & 1);
logerror("LED 0 %s\n", (data & 1) ? "on" : "off");
}
WRITE8_MEMBER(gridlee_state::led_1_w)
{
- set_led_status(machine(), 1, data & 1);
+ output().set_led_value(1, data & 1);
logerror("LED 1 %s\n", (data & 1) ? "on" : "off");
}
WRITE8_MEMBER(gridlee_state::gridlee_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
logerror("coin counter %s\n", (data & 1) ? "on" : "off");
}
diff --git a/src/mame/drivers/groundfx.cpp b/src/mame/drivers/groundfx.cpp
index b0284d8f662..b4649993cb2 100644
--- a/src/mame/drivers/groundfx.cpp
+++ b/src/mame/drivers/groundfx.cpp
@@ -123,10 +123,10 @@ WRITE32_MEMBER(groundfx_state::groundfx_input_w)
case 0x01:
if (ACCESSING_BITS_24_31)
{
- coin_lockout_w(machine(), 0,~data & 0x01000000);
- coin_lockout_w(machine(), 1,~data & 0x02000000);
- coin_counter_w(machine(), 0, data & 0x04000000);
- coin_counter_w(machine(), 1, data & 0x08000000);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x01000000);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x02000000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04000000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08000000);
m_coin_word = (data >> 16) &0xffff;
}
break;
diff --git a/src/mame/drivers/gticlub.cpp b/src/mame/drivers/gticlub.cpp
index e8c88a6981f..b751e7fc029 100644
--- a/src/mame/drivers/gticlub.cpp
+++ b/src/mame/drivers/gticlub.cpp
@@ -332,8 +332,8 @@ private:
UINT8 m_gticlub_led_reg[2];
emu_timer *m_sound_irq_timer;
- UINT32 *m_sharc_dataram_0;
- UINT32 *m_sharc_dataram_1;
+ std::unique_ptr<UINT32[]> m_sharc_dataram_0;
+ std::unique_ptr<UINT32[]> m_sharc_dataram_1;
};
@@ -1416,15 +1416,15 @@ ROM_END
DRIVER_INIT_MEMBER(gticlub_state,gticlub)
{
- m_sharc_dataram_0 = auto_alloc_array(machine(), UINT32, 0x100000/4);
+ m_sharc_dataram_0 = std::make_unique<UINT32[]>(0x100000/4);
}
void gticlub_state::init_hangplt_common()
{
m_konppc->set_cgboard_texture_bank(0, "bank5", memregion("user5")->base());
m_konppc->set_cgboard_texture_bank(1, "bank6", memregion("user5")->base());
- m_sharc_dataram_0 = auto_alloc_array(machine(), UINT32, 0x100000/4);
- m_sharc_dataram_1 = auto_alloc_array(machine(), UINT32, 0x100000/4);
+ m_sharc_dataram_0 = std::make_unique<UINT32[]>(0x100000/4);
+ m_sharc_dataram_1 = std::make_unique<UINT32[]>(0x100000/4);
}
DRIVER_INIT_MEMBER(gticlub_state,hangplt)
diff --git a/src/mame/drivers/gts1.cpp b/src/mame/drivers/gts1.cpp
index 7a0ebd6bbab..ffed197ba3c 100644
--- a/src/mame/drivers/gts1.cpp
+++ b/src/mame/drivers/gts1.cpp
@@ -461,8 +461,8 @@ WRITE8_MEMBER(gts1_state::gts1_display_w)
UINT8 b = ttl7448_mod[(data >> 4) & 15];
// LOG(("%s: offset:%d data:%02x a:%02x b:%02x\n", __FUNCTION__, offset, data, a, b));
if ((offset % 8) < 7) {
- output_set_indexed_value("digit8_", offset, a);
- output_set_indexed_value("digit8_", offset + 16, b);
+ output().set_indexed_value("digit8_", offset, a);
+ output().set_indexed_value("digit8_", offset + 16, b);
} else {
/*
* For the 4 7-seg displays the segment h is turned back into
@@ -472,9 +472,9 @@ WRITE8_MEMBER(gts1_state::gts1_display_w)
a = _b | _c;
if (b & _h)
b = _b | _c;
- output_set_indexed_value("digit7_", offset, a);
+ output().set_indexed_value("digit7_", offset, a);
// FIXME: there is nothing on outputs 22, 23, 30 and 31?
- output_set_indexed_value("digit7_", offset + 16, b);
+ output().set_indexed_value("digit7_", offset + 16, b);
}
#undef _a
#undef _b
diff --git a/src/mame/drivers/gts3.cpp b/src/mame/drivers/gts3.cpp
index 17fc7d7029a..151a286c212 100644
--- a/src/mame/drivers/gts3.cpp
+++ b/src/mame/drivers/gts3.cpp
@@ -220,7 +220,7 @@ WRITE8_MEMBER( gts3_state::segbank_w )
m_segment[offset] = data;
seg1 = m_segment[offset&2] | (m_segment[offset|1] << 8);
seg2 = BITSWAP32(seg1,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,14,9,7,13,11,10,6,8,12,5,4,3,3,2,1,0,0);
- output_set_digit_value(m_digit+(BIT(offset, 1) ? 0 : 20), seg2);
+ output().set_digit_value(m_digit+(BIT(offset, 1) ? 0 : 20), seg2);
}
WRITE8_MEMBER( gts3_state::u4b_w )
diff --git a/src/mame/drivers/gts3a.cpp b/src/mame/drivers/gts3a.cpp
index 69ec8f25ae9..a437c38300e 100644
--- a/src/mame/drivers/gts3a.cpp
+++ b/src/mame/drivers/gts3a.cpp
@@ -229,7 +229,7 @@ WRITE8_MEMBER( gts3a_state::segbank_w )
m_segment[offset] = data;
seg1 = m_segment[offset&2] | (m_segment[offset|1] << 8);
seg2 = BITSWAP32(seg1,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,14,9,7,13,11,10,6,8,12,5,4,3,3,2,1,0,0);
- output_set_digit_value(m_digit+(BIT(offset, 1) ? 0 : 20), seg2);
+ output().set_digit_value(m_digit+(BIT(offset, 1) ? 0 : 20), seg2);
}
WRITE8_MEMBER( gts3a_state::u4b_w )
diff --git a/src/mame/drivers/gts80.cpp b/src/mame/drivers/gts80.cpp
index ae48fffa0a6..f6ae1241425 100644
--- a/src/mame/drivers/gts80.cpp
+++ b/src/mame/drivers/gts80.cpp
@@ -298,15 +298,15 @@ WRITE8_MEMBER( gts80_state::port2a_w )
{
case 0x10: // player 1&2
if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle
- output_set_digit_value(data & 15, seg2);
+ output().set_digit_value(data & 15, seg2);
break;
case 0x20: // player 3&4
if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle
- output_set_digit_value((data & 15)+20, seg2);
+ output().set_digit_value((data & 15)+20, seg2);
break;
case 0x40: // credits & balls
if (!BIT(m_segment, 7)) m_segment = 1; // turn '1' back to normal
- output_set_digit_value((data & 15)+40, patterns[m_segment & 15]);
+ output().set_digit_value((data & 15)+40, patterns[m_segment & 15]);
break;
}
}
diff --git a/src/mame/drivers/gts80a.cpp b/src/mame/drivers/gts80a.cpp
index fe85091f904..4a399daf3e2 100644
--- a/src/mame/drivers/gts80a.cpp
+++ b/src/mame/drivers/gts80a.cpp
@@ -287,15 +287,15 @@ WRITE8_MEMBER( gts80a_state::port2a_w )
{
case 0x10: // player 1&2
if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle
- output_set_digit_value(data & 15, seg2);
+ output().set_digit_value(data & 15, seg2);
break;
case 0x20: // player 3&4
if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle
- output_set_digit_value((data & 15)+20, seg2);
+ output().set_digit_value((data & 15)+20, seg2);
break;
case 0x40: // credits & balls
if (!BIT(m_segment, 7)) m_segment = 1; // turn '1' back to normal
- output_set_digit_value((data & 15)+40, patterns[m_segment & 15]);
+ output().set_digit_value((data & 15)+40, patterns[m_segment & 15]);
break;
}
}
diff --git a/src/mame/drivers/gts80b.cpp b/src/mame/drivers/gts80b.cpp
index bc12e1aece7..28914a300c4 100644
--- a/src/mame/drivers/gts80b.cpp
+++ b/src/mame/drivers/gts80b.cpp
@@ -334,7 +334,7 @@ WRITE8_MEMBER( gts80b_state::port2b_w )
{ // display a character
segment = patterns[m_dispcmd & 0x7f]; // ignore blank/inverse bit
segment = BITSWAP16(segment, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 3, 2, 1, 0, 0);
- output_set_digit_value(m_digit[i]+i*20, segment);
+ output().set_digit_value(m_digit[i]+i*20, segment);
m_digit[i]++; // auto-increment pointer
if (m_digit[i] > 19) m_digit[i] = 0; // check for overflow
}
diff --git a/src/mame/drivers/gunbustr.cpp b/src/mame/drivers/gunbustr.cpp
index c17c60159fb..4fc53982509 100644
--- a/src/mame/drivers/gunbustr.cpp
+++ b/src/mame/drivers/gunbustr.cpp
@@ -103,13 +103,13 @@ WRITE32_MEMBER(gunbustr_state::gunbustr_input_w)
{
if (m_coin_lockout)
{
- coin_lockout_w(machine(), 0, ~data & 0x01000000);
- coin_lockout_w(machine(), 1, ~data & 0x02000000);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01000000);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02000000);
}
// game does not write a separate counter for coin 2! maybe in linked mode?
- coin_counter_w(machine(), 0, data & 0x04000000);
- coin_counter_w(machine(), 1, data & 0x04000000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04000000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04000000);
m_coin_word = (data >> 16) &0xffff;
}
//logerror("CPU #0 PC %06x: write input %06x\n",device->safe_pc(),offset);
@@ -122,9 +122,9 @@ WRITE32_MEMBER(gunbustr_state::motor_control_w)
{
// Standard value poked into MSW is 0x3c00
// (0x2000 and zero are written at startup)
- output_set_value("Player1_Gun_Recoil", (data & 0x1000000) ? 1 : 0);
- output_set_value("Player2_Gun_Recoil", (data & 0x10000) ? 1 : 0);
- output_set_value("Hit_lamp", (data & 0x40000) ? 1 : 0);
+ output().set_value("Player1_Gun_Recoil", (data & 0x1000000) ? 1 : 0);
+ output().set_value("Player2_Gun_Recoil", (data & 0x10000) ? 1 : 0);
+ output().set_value("Hit_lamp", (data & 0x40000) ? 1 : 0);
}
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/gunpey.cpp b/src/mame/drivers/gunpey.cpp
index 3f418dc133f..80285fe5c1f 100644
--- a/src/mame/drivers/gunpey.cpp
+++ b/src/mame/drivers/gunpey.cpp
@@ -210,7 +210,7 @@ public:
required_shared_ptr<UINT16> m_wram;
required_device<palette_device> m_palette;
- UINT16 *m_blit_buffer;
+ std::unique_ptr<UINT16[]> m_blit_buffer;
UINT16 m_blit_ram[0x10];
UINT8 m_irq_cause, m_irq_mask;
DECLARE_WRITE8_MEMBER(gunpey_status_w);
@@ -268,7 +268,7 @@ public:
void gunpey_state::video_start()
{
- m_blit_buffer = auto_alloc_array(machine(), UINT16, 512*512);
+ m_blit_buffer = std::make_unique<UINT16[]>(512*512);
}
UINT8 gunpey_state::draw_gfx(bitmap_ind16 &bitmap,const rectangle &cliprect,int count,UINT8 scene_gradient)
diff --git a/src/mame/drivers/gunsmoke.cpp b/src/mame/drivers/gunsmoke.cpp
index 0e184a18f2d..ea5550f3c89 100644
--- a/src/mame/drivers/gunsmoke.cpp
+++ b/src/mame/drivers/gunsmoke.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
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 8cd33b18201..f3fa1e15cbc 100644
--- a/src/mame/drivers/h8.cpp
+++ b/src/mame/drivers/h8.cpp
@@ -144,9 +144,9 @@ WRITE8_MEMBER( h8_state::portf0_w )
// d7 = beeper enable
m_digit = data & 15;
- if (m_digit) output_set_digit_value(m_digit, m_segment);
+ if (m_digit) output().set_digit_value(m_digit, m_segment);
- output_set_value("mon_led", !BIT(data, 5));
+ output().set_value("mon_led", !BIT(data, 5));
m_beep->set_state(!BIT(data, 7));
m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
@@ -167,7 +167,7 @@ WRITE8_MEMBER( h8_state::portf1_w )
//d0 segment g
m_segment = 0xff ^ BITSWAP8(data, 7, 0, 6, 5, 4, 3, 2, 1);
- if (m_digit) output_set_digit_value(m_digit, m_segment);
+ if (m_digit) output().set_digit_value(m_digit, m_segment);
}
static ADDRESS_MAP_START(h8_mem, AS_PROGRAM, 8, h8_state)
@@ -215,8 +215,7 @@ INPUT_PORTS_END
void h8_state::machine_reset()
{
- m_beep->set_frequency(H8_BEEP_FRQ);
- output_set_value("pwr_led", 0);
+ output().set_value("pwr_led", 0);
m_irq_ctl = 1;
m_cass_state = 1;
m_cass_data[0] = 0;
@@ -229,7 +228,7 @@ void h8_state::machine_reset()
WRITE_LINE_MEMBER( h8_state::h8_inte_callback )
{
// operate the ION LED
- output_set_value("ion_led", !state);
+ output().set_value("ion_led", !state);
m_irq_ctl &= 0x7f | ((state) ? 0 : 0x80);
}
@@ -261,7 +260,7 @@ But, all of this can only occur if bit 5 of port F0 is low. */
// operate the RUN LED
- output_set_value("run_led", state);
+ output().set_value("run_led", state);
}
WRITE_LINE_MEMBER( h8_state::txdata_callback )
@@ -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/halleys.cpp b/src/mame/drivers/halleys.cpp
index a1f7ab0723b..8a8737dc516 100644
--- a/src/mame/drivers/halleys.cpp
+++ b/src/mame/drivers/halleys.cpp
@@ -223,15 +223,15 @@ public:
UINT8 m_sound_fifo[MAX_SOUNDS];
UINT8 *m_gfx_plane02;
UINT8 *m_gfx_plane13;
- UINT8 *m_collision_list;
+ std::unique_ptr<UINT8[]> m_collision_list;
UINT8 *m_scrolly0;
UINT8 *m_scrollx0;
UINT8 *m_scrolly1;
UINT8 *m_scrollx1;
- UINT32 *m_internal_palette;
- UINT32 *m_alpha_table;
+ std::unique_ptr<UINT32[]> m_internal_palette;
+ std::unique_ptr<UINT32[]> m_alpha_table;
UINT8 *m_cpu1_base;
- UINT8 *m_gfx1_base;
+ std::unique_ptr<UINT8[]> m_gfx1_base;
required_shared_ptr<UINT8> m_blitter_ram;
required_shared_ptr<UINT8> m_io_ram;
int m_game_id;
@@ -257,8 +257,6 @@ public:
DECLARE_READ8_MEMBER(collision_id_r);
DECLARE_READ8_MEMBER(paletteram_r);
DECLARE_WRITE8_MEMBER(paletteram_w);
- DECLARE_READ8_MEMBER(zero_r);
- DECLARE_READ8_MEMBER(debug_r);
DECLARE_READ8_MEMBER(vector_r);
DECLARE_WRITE8_MEMBER(firq_ack_w);
DECLARE_WRITE8_MEMBER(soundcommand_w);
@@ -432,7 +430,7 @@ if (0) {
src1 &= 0x3fff;
src2 &= 0x3fff;
bank = ((code & BANKBIT0) | (color & BANKBIT1)) << 8;
- pal_ptr = m_internal_palette;
+ pal_ptr = m_internal_palette.get();
// the crossroad of fate
@@ -749,7 +747,7 @@ COMMAND_MODE:
if (flags & S1_IDLE) src_dx = 0; else src_dx = 1;
if (flags & S1_REV ) src_dx = -src_dx;
- src_base = m_gfx1_base + bank;
+ src_base = m_gfx1_base.get() + bank;
if (command == STARPASS1 || command == STARPASS2) layer = (layer & 1) + 4;
dst_base = m_render_layer[layer];
@@ -1133,8 +1131,8 @@ PALETTE_INIT_MEMBER(halleys_state, halleys)
{
UINT32 d, r, g, b, i, j, count;
// allocate memory for internal palette
- m_internal_palette = auto_alloc_array(machine(), UINT32, PALETTE_SIZE);
- UINT32 *pal_ptr = m_internal_palette;
+ m_internal_palette = std::make_unique<UINT32[]>(PALETTE_SIZE);
+ UINT32 *pal_ptr = m_internal_palette.get();
for (count=0; count<1024; count++)
{
@@ -1232,7 +1230,7 @@ READ8_MEMBER(halleys_state::paletteram_r)
WRITE8_MEMBER(halleys_state::paletteram_w)
{
UINT32 d, r, g, b, i, j;
- UINT32 *pal_ptr = m_internal_palette;
+ UINT32 *pal_ptr = m_internal_palette.get();
m_paletteram[offset] = data;
d = (UINT32)data;
@@ -1476,7 +1474,7 @@ void halleys_state::filter_bitmap(bitmap_ind16 &bitmap, int mask)
UINT32 *pal_ptr, *edi;
int esi, eax, ebx, ecx, edx;
- pal_ptr = m_internal_palette;
+ pal_ptr = m_internal_palette.get();
esi = mask | 0xffffff00;
edi = (UINT32*)&bitmap.pix16(VIS_MINY, VIS_MINX + CLIP_W);
dst_pitch = bitmap.rowpixels() >> 1;
@@ -2184,20 +2182,20 @@ void halleys_state::init_common()
// allocate memory for pre-processed ROMs
- m_gfx1_base = auto_alloc_array(machine(), UINT8, 0x20000);
+ m_gfx1_base = std::make_unique<UINT8[]>(0x20000);
// allocate memory for alpha table
- m_alpha_table = auto_alloc_array(machine(), UINT32, 0x10000);
+ m_alpha_table = std::make_unique<UINT32[]>(0x10000);
// allocate memory for hardware collision list
- m_collision_list = auto_alloc_array(machine(), UINT8, MAX_SPRITES);
+ m_collision_list = std::make_unique<UINT8[]>(MAX_SPRITES);
// decrypt main program ROM
rom = m_cpu1_base = memregion("maincpu")->base();
- buf = m_gfx1_base;
+ buf = m_gfx1_base.get();
for (i=0; i<0x10000; i++)
{
diff --git a/src/mame/drivers/hankin.cpp b/src/mame/drivers/hankin.cpp
index 80f1da77500..10cd8f17c14 100644
--- a/src/mame/drivers/hankin.cpp
+++ b/src/mame/drivers/hankin.cpp
@@ -283,7 +283,7 @@ WRITE8_MEMBER( hankin_state::ic10_a_w )
{
seg1 = patterns[m_segment[i]];
seg2 = BITSWAP16(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
- output_set_digit_value(i*10+m_digit, seg2);
+ output().set_digit_value(i*10+m_digit, seg2);
}
}
}
@@ -319,7 +319,7 @@ WRITE8_MEMBER( hankin_state::ic10_b_w )
WRITE_LINE_MEMBER( hankin_state::ic10_ca2_w )
{
- output_set_value("led0", !state);
+ output().set_value("led0", !state);
// also sound strobe
m_ic2->ca1_w(state);
}
diff --git a/src/mame/drivers/harddriv.cpp b/src/mame/drivers/harddriv.cpp
index 5f9dd079869..e6b881a60f4 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),
@@ -2005,8 +2005,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 )
@@ -2026,9 +2026,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);
}
/*************************************
@@ -4485,7 +4485,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) )
@@ -4707,9 +4707,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;
/*
diff --git a/src/mame/drivers/hcastle.cpp b/src/mame/drivers/hcastle.cpp
index 8e2ccb15ce1..8b12afc5b74 100644
--- a/src/mame/drivers/hcastle.cpp
+++ b/src/mame/drivers/hcastle.cpp
@@ -29,8 +29,8 @@ WRITE8_MEMBER(hcastle_state::hcastle_soundirq_w)
WRITE8_MEMBER(hcastle_state::hcastle_coin_w)
{
- coin_counter_w(machine(), 0, data & 0x40);
- coin_counter_w(machine(), 1, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(1, data & 0x80);
}
diff --git a/src/mame/drivers/hexion.cpp b/src/mame/drivers/hexion.cpp
index 08c9d911fb2..2eb38d0957c 100644
--- a/src/mame/drivers/hexion.cpp
+++ b/src/mame/drivers/hexion.cpp
@@ -91,8 +91,8 @@ WRITE8_MEMBER(hexion_state::coincntr_w)
//logerror("%04x: coincntr_w %02x\n",space.device().safe_pc(),data);
/* bits 0/1 = coin counters */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
/* bit 5 = flip screen */
flip_screen_set(data & 0x20);
diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp
index 603fefc98b7..486f6882b28 100644
--- a/src/mame/drivers/hh_cop400.cpp
+++ b/src/mame/drivers/hh_cop400.cpp
@@ -149,7 +149,7 @@ void hh_cop400_state::display_update()
if (m_display_cache[y] != active_state[y])
{
if (m_display_segmask[y] != 0)
- output_set_digit_value(y, active_state[y] & m_display_segmask[y]);
+ output().set_digit_value(y, active_state[y] & m_display_segmask[y]);
const int mul = (m_display_maxx <= 10) ? 10 : 100;
for (int x = 0; x <= m_display_maxx; x++)
@@ -169,8 +169,8 @@ void hh_cop400_state::display_update()
sprintf(buf1, "lamp%d", y * mul + x);
sprintf(buf2, "%d.%d", y, x);
}
- output_set_value(buf1, state);
- output_set_value(buf2, state);
+ output().set_value(buf1, state);
+ output().set_value(buf2, state);
}
}
@@ -263,8 +263,6 @@ static MACHINE_CONFIG_START( ctstein, ctstein_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_cop400_state, display_decay_tick, attotime::from_msec(1))
// MCFG_DEFAULT_LAYOUT(layout_ctstein)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -381,8 +379,6 @@ static MACHINE_CONFIG_START( einvaderc, einvaderc_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_cop400_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_einvaderc)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -490,8 +486,6 @@ static MACHINE_CONFIG_START( funjacks, funjacks_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_cop400_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_funjacks)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -524,7 +518,6 @@ public:
DECLARE_WRITE8_MEMBER(write_d);
DECLARE_WRITE8_MEMBER(write_l);
DECLARE_WRITE8_MEMBER(write_g);
- DECLARE_READ8_MEMBER(read_g);
DECLARE_INPUT_CHANGED_MEMBER(reset_button);
};
@@ -588,8 +581,6 @@ static MACHINE_CONFIG_START( funrlgl, funrlgl_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_cop400_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_funrlgl)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -632,10 +623,7 @@ static MACHINE_CONFIG_START( plus1, plus1_state )
MCFG_CPU_ADD("maincpu", COP410, 1000000) // approximation - RC osc. R=51K to +5V, C=100pf to GND
MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_16, COP400_CKO_OSCILLATOR_OUTPUT, COP400_MICROBUS_ENABLED) // guessed
- MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_cop400_state, display_decay_tick, attotime::from_msec(1))
-// MCFG_DEFAULT_LAYOUT(layout_plus1)
-
- /* no video! */
+ /* no visual feedback! */
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -774,8 +762,6 @@ static MACHINE_CONFIG_START( lightfgt, lightfgt_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_cop400_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_lightfgt)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mame/drivers/hh_hmcs40.cpp b/src/mame/drivers/hh_hmcs40.cpp
index 444a9df2ca6..b511780824a 100644
--- a/src/mame/drivers/hh_hmcs40.cpp
+++ b/src/mame/drivers/hh_hmcs40.cpp
@@ -222,7 +222,7 @@ void hh_hmcs40_state::display_update()
if (m_display_cache[y] != active_state[y])
{
if (m_display_segmask[y] != 0)
- output_set_digit_value(y, active_state[y] & m_display_segmask[y]);
+ output().set_digit_value(y, active_state[y] & m_display_segmask[y]);
const int mul = (m_display_maxx <= 10) ? 10 : 100;
for (int x = 0; x <= m_display_maxx; x++)
@@ -242,8 +242,8 @@ void hh_hmcs40_state::display_update()
sprintf(buf1, "lamp%d", y * mul + x);
sprintf(buf2, "%d.%d", y, x);
}
- output_set_value(buf1, state);
- output_set_value(buf2, state);
+ output().set_value(buf1, state);
+ output().set_value(buf2, state);
}
}
@@ -427,8 +427,6 @@ static MACHINE_CONFIG_START( bambball, bambball_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -563,8 +561,6 @@ static MACHINE_CONFIG_START( bmboxing, bmboxing_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -665,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)
@@ -687,8 +683,6 @@ static MACHINE_CONFIG_START( bfriskyt, bfriskyt_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -797,8 +791,6 @@ static MACHINE_CONFIG_START( packmon, packmon_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -931,8 +923,6 @@ static MACHINE_CONFIG_START( msthawk, msthawk_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1026,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 )
@@ -1053,8 +1043,6 @@ static MACHINE_CONFIG_START( bzaxxon, bzaxxon_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1171,8 +1159,6 @@ static MACHINE_CONFIG_START( zackman, zackman_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1299,8 +1285,6 @@ static MACHINE_CONFIG_START( bpengo, bpengo_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1423,8 +1407,6 @@ static MACHINE_CONFIG_START( bbtime, bbtime_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1488,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)
@@ -1521,8 +1503,6 @@ static MACHINE_CONFIG_START( bdoramon, bdoramon_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1586,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" )
@@ -1611,8 +1591,6 @@ static MACHINE_CONFIG_START( bultrman, bultrman_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1677,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 )
@@ -1700,8 +1678,6 @@ static MACHINE_CONFIG_START( machiman, machiman_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1855,8 +1831,6 @@ static MACHINE_CONFIG_START( pairmtch, pairmtch_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_pairmtch)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1968,8 +1942,6 @@ static MACHINE_CONFIG_START( alnattck, alnattck_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2058,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 )
@@ -2096,8 +2068,6 @@ static MACHINE_CONFIG_START( cdkong, cdkong_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2196,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)
@@ -2223,8 +2193,6 @@ static MACHINE_CONFIG_START( cgalaxn, cgalaxn_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2344,8 +2312,6 @@ static MACHINE_CONFIG_START( cpacman, cpacman_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2460,8 +2426,6 @@ static MACHINE_CONFIG_START( cmspacmn, cmspacmn_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2582,8 +2546,6 @@ static MACHINE_CONFIG_START( egalaxn2, egalaxn2_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2834,8 +2796,6 @@ static MACHINE_CONFIG_START( eturtles, eturtles_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2942,8 +2902,6 @@ static MACHINE_CONFIG_START( estargte, estargte_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3057,8 +3015,6 @@ static MACHINE_CONFIG_START( ghalien, ghalien_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3155,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" )
@@ -3184,8 +3140,6 @@ static MACHINE_CONFIG_START( gckong, gckong_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3280,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)
@@ -3305,8 +3259,6 @@ static MACHINE_CONFIG_START( gdigdug, gdigdug_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3466,8 +3418,6 @@ static MACHINE_CONFIG_START( mwcbaseb, mwcbaseb_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3555,8 +3505,6 @@ static MACHINE_CONFIG_START( pbqbert, pbqbert_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3676,8 +3624,6 @@ static MACHINE_CONFIG_START( kingman, kingman_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3775,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)
@@ -3797,8 +3743,6 @@ static MACHINE_CONFIG_START( tmtron, tmtron_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3891,8 +3835,6 @@ static MACHINE_CONFIG_START( vinvader, vinvader_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mame/drivers/hh_melps4.cpp b/src/mame/drivers/hh_melps4.cpp
index b7e79e1a91a..541352078d7 100644
--- a/src/mame/drivers/hh_melps4.cpp
+++ b/src/mame/drivers/hh_melps4.cpp
@@ -131,7 +131,7 @@ void hh_melps4_state::display_update()
if (m_display_cache[y] != active_state[y])
{
if (m_display_segmask[y] != 0)
- output_set_digit_value(y, active_state[y] & m_display_segmask[y]);
+ output().set_digit_value(y, active_state[y] & m_display_segmask[y]);
const int mul = (m_display_maxx <= 10) ? 10 : 100;
for (int x = 0; x <= m_display_maxx; x++)
@@ -151,8 +151,8 @@ void hh_melps4_state::display_update()
sprintf(buf1, "lamp%d", y * mul + x);
sprintf(buf2, "%d.%d", y, x);
}
- output_set_value(buf1, state);
- output_set_value(buf2, state);
+ output().set_value(buf1, state);
+ output().set_value(buf2, state);
}
}
@@ -320,8 +320,6 @@ static MACHINE_CONFIG_START( cfrogger, cfrogger_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_melps4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_melps4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -436,8 +434,6 @@ static MACHINE_CONFIG_START( gjungler, gjungler_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_melps4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_melps4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mame/drivers/hh_pic16.cpp b/src/mame/drivers/hh_pic16.cpp
index 375b5dcfcab..bb65a69265e 100644
--- a/src/mame/drivers/hh_pic16.cpp
+++ b/src/mame/drivers/hh_pic16.cpp
@@ -141,7 +141,7 @@ void hh_pic16_state::display_update()
if (m_display_cache[y] != active_state[y])
{
if (m_display_segmask[y] != 0)
- output_set_digit_value(y, active_state[y] & m_display_segmask[y]);
+ output().set_digit_value(y, active_state[y] & m_display_segmask[y]);
const int mul = (m_display_maxx <= 10) ? 10 : 100;
for (int x = 0; x <= m_display_maxx; x++)
@@ -161,8 +161,8 @@ void hh_pic16_state::display_update()
sprintf(buf1, "lamp%d", y * mul + x);
sprintf(buf2, "%d.%d", y, x);
}
- output_set_value(buf1, state);
- output_set_value(buf2, state);
+ output().set_value(buf1, state);
+ output().set_value(buf2, state);
}
}
@@ -272,8 +272,6 @@ static MACHINE_CONFIG_START( maniac, maniac_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_pic16_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_maniac)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mame/drivers/hh_sm510.cpp b/src/mame/drivers/hh_sm510.cpp
index f9420594aec..13c8b835fc4 100644
--- a/src/mame/drivers/hh_sm510.cpp
+++ b/src/mame/drivers/hh_sm510.cpp
@@ -92,7 +92,7 @@ WRITE16_MEMBER(hh_sm510_state::lcd_segment_w)
// output to x.y, where x = row a/b/bs/c*4 + H1-4, y = seg1-16
char buf[0x10];
sprintf(buf, "%d.%d", offset, seg);
- output_set_value(buf, state);
+ output().set_value(buf, state);
m_lcd_output_cache[index] = state;
}
@@ -209,8 +209,6 @@ static MACHINE_CONFIG_START( ktopgun, ktopgun_state )
MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -286,8 +284,6 @@ static MACHINE_CONFIG_START( ktmnt, ktmnt_state )
MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -355,8 +351,6 @@ static MACHINE_CONFIG_START( gnwmndon, gnwmndon_state )
MCFG_DEFAULT_LAYOUT(layout_hh_sm510_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index db182c54dcb..9670ab8be9f 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -7,18 +7,19 @@
part of a series is (or will be) in its own driver.
Let's use this driver for a list of known devices and their serials,
- excluding TI's own products (see ticalc1x.c, tispeak.c)
+ excluding TI's own products (see ticalc1x.cpp, tispeak.cpp, tispellb.cpp)
serial device etc.
--------------------------------------------------------------------
@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+?)
*MP0168 TMS1000? 1979, Conic Basketball
@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 Pinball
+ @MP1180 TMS1100 1980, Tomy Power House Pinball
@MP1204 TMS1100 1980, Entex Baseball 3 (6007)
@MP1211 TMS1100 1980, Entex Space Invader
@MP1218 TMS1100 1980, Entex Basketball 2 (6010)
@@ -39,7 +40,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
@@ -68,7 +69,7 @@
@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
+ 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 +78,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)
@@ -211,7 +213,7 @@ void hh_tms1k_state::display_update()
if (m_display_cache[y] != active_state[y])
{
if (m_display_segmask[y] != 0)
- output_set_digit_value(y, active_state[y] & m_display_segmask[y]);
+ output().set_digit_value(y, active_state[y] & m_display_segmask[y]);
const int mul = (m_display_maxx <= 10) ? 10 : 100;
for (int x = 0; x <= m_display_maxx; x++)
@@ -231,8 +233,8 @@ void hh_tms1k_state::display_update()
sprintf(buf1, "lamp%d", y * mul + x);
sprintf(buf2, "%d.%d", y, x);
}
- output_set_value(buf1, state);
- output_set_value(buf2, state);
+ output().set_value(buf1, state);
+ output().set_value(buf2, state);
}
}
@@ -242,7 +244,7 @@ void hh_tms1k_state::display_update()
if (m_power_led != m_power_on)
{
m_power_led = m_power_on;
- output_set_value("power_led", m_power_led ? 1 : 0);
+ output().set_value("power_led", m_power_led ? 1 : 0);
}
}
@@ -504,8 +506,6 @@ static MACHINE_CONFIG_START( mathmagi, mathmagi_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_mathmagi)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -644,8 +644,6 @@ static MACHINE_CONFIG_START( amaztron, amaztron_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_amaztron)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -786,8 +784,6 @@ static MACHINE_CONFIG_START( h2hbaseb, h2hbaseb_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_h2hbaseb)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -905,8 +901,6 @@ static MACHINE_CONFIG_START( h2hfootb, h2hfootb_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_h2hfootb)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1063,8 +1057,6 @@ static MACHINE_CONFIG_START( tc4, tc4_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tc4)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1200,8 +1192,6 @@ static MACHINE_CONFIG_START( ebball, ebball_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ebball)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1327,8 +1317,6 @@ static MACHINE_CONFIG_START( ebball2, ebball2_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ebball2)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1510,8 +1498,6 @@ static MACHINE_CONFIG_START( ebball3, ebball3_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ebball3)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1626,8 +1612,6 @@ static MACHINE_CONFIG_START( einvader, einvader_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_einvader)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1745,8 +1729,6 @@ static MACHINE_CONFIG_START( efootb4, efootb4_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_efootb4)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1870,8 +1852,6 @@ static MACHINE_CONFIG_START( ebaskb2, ebaskb2_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ebaskb2)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2014,8 +1994,6 @@ static MACHINE_CONFIG_START( raisedvl, raisedvl_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_tms1k_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2161,8 +2139,6 @@ static MACHINE_CONFIG_START( gpoker, gpoker_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_gpoker)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("beeper", BEEP, 2405) // astable multivibrator - C1 and C2 are 0.003uF, R1 and R4 are 1K, R2 and R3 are 100K
@@ -2276,8 +2252,6 @@ static MACHINE_CONFIG_START( gjackpot, gjackpot_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_gjackpot)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("beeper", BEEP, 2405) // see gpoker
@@ -2396,7 +2370,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( elecdet, elecdet_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation - unknown freq
+ MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(elecdet_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecdet_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(elecdet_state, write_o))
@@ -2405,8 +2379,6 @@ static MACHINE_CONFIG_START( elecdet, elecdet_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_elecdet)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2533,8 +2505,6 @@ static MACHINE_CONFIG_START( starwbc, starwbc_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_starwbc)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2605,43 +2575,43 @@ READ8_MEMBER(astro_state::read_k)
static INPUT_PORTS_START( astro )
PORT_START("IN.0") // R0
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE"/Sun")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE"/Sun")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // R1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY"/Mercury")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY"/Mercury")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.2") // R2
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-/Venus")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-/Venus")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.3") // R3
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+/Mars")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+/Mars")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.4") // R4
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=/Astro")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=/Astro")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.5") // R5
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_NAME("B1")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("B2")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("B1")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("B2")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.6") // R6
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("C")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("C")
PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.7") // R7
@@ -2662,8 +2632,6 @@ static MACHINE_CONFIG_START( astro, astro_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_astro)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -2673,14 +2641,207 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Mattel Dungeons & Dragons - Computer Labyrinth Game
+ * TMS1100 M34012-N2LL (die labeled M34012)
+ * 72 buttons, no LEDs, 1bit sound
+
+ This is an electronic board game. It requires markers and wall pieces to play.
+ Refer to the official manual for more information.
+
+***************************************************************************/
+
+class mdndclab_state : public hh_tms1k_state
+{
+public:
+ mdndclab_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ DECLARE_WRITE16_MEMBER(write_r);
+ DECLARE_WRITE16_MEMBER(write_o);
+ DECLARE_READ8_MEMBER(read_k);
+};
+
+// handlers
+
+WRITE16_MEMBER(mdndclab_state::write_r)
+{
+ // R10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // R0-R9: input mux part
+ m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x3ff00);
+}
+
+WRITE16_MEMBER(mdndclab_state::write_o)
+{
+ // O0-O7: input mux part
+ m_inp_mux = (m_inp_mux & ~0xff) | data;
+}
+
+READ8_MEMBER(mdndclab_state::read_k)
+{
+ // K: multiplexed inputs
+ return read_inputs(18);
+}
+
+
+// config
+
+/* physical button layout and labels is like this:
+
+ 8 buttons on the left, top-to-bottom: (lower 6 are just for sound-preview)
+ [Switch Key] [Next Turn / Level 1/2] [Dragon Flying / Defeat Tune] [Dragon Attacks / Dragon Wakes]
+ [Wall / Door] [Illegal Move / Warrior Moves] [Warrior 1 / Winner] [Warrior 2 / Treasure]
+
+ 8*8 buttons to the right of that, making the gameboard
+
+*/
+
+static INPUT_PORTS_START( mdndclab )
+ PORT_START("IN.0") // O0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid a4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid a3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid a2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid a1")
+
+ PORT_START("IN.1") // O1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid b4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid b3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid b2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid b1")
+
+ PORT_START("IN.2") // O2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid c4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid c3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid c2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid c1")
+
+ PORT_START("IN.3") // O3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid d4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid d3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid d2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid d1")
+
+ PORT_START("IN.4") // O4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid e4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid e3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid e2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid e1")
+
+ PORT_START("IN.5") // O5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid f4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid f3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid f2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid f1")
+
+ PORT_START("IN.6") // O6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid g4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid g3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid g2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid g1")
+
+ PORT_START("IN.7") // O7
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid h4")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid h3")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid h2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid h1")
+
+ PORT_START("IN.8") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Wall / Door")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Illegal Move / Warrior Moves")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Warrior 1 / Winner")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Warrior 2 / Treasure")
+
+ PORT_START("IN.9") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid a8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid a7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid a6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid a5")
+
+ PORT_START("IN.10") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid b8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid b7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid b6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid b5")
+
+ PORT_START("IN.11") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid c8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid c7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid c6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid c5")
+
+ PORT_START("IN.12") // R4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid d8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid d7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid d6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid d5")
+
+ PORT_START("IN.13") // R5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid e8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid e7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid e6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid e5")
+
+ PORT_START("IN.14") // R6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid f8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid f7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid f6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid f5")
+
+ PORT_START("IN.15") // R7
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid g8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid g7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid g6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid g5")
+
+ PORT_START("IN.16") // R8
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid h8")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid h7")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid h6")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Grid h5")
+
+ PORT_START("IN.17") // R9
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("Switch Key")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Next Turn / Level 1/2")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Dragon Flying / Defeat Tune")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Dragon Attacks / Dragon Wakes")
+INPUT_PORTS_END
+
+
+static MACHINE_CONFIG_START( mdndclab, mdndclab_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1100, 500000) // approximation - RC osc. R=27K, C=100pf, but unknown RC curve
+ MCFG_TMS1XXX_READ_K_CB(READ8(mdndclab_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(mdndclab_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(mdndclab_state, write_o))
+
+ /* no visual feedback! */
+
+ /* 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
+
+
+
+
+
+/***************************************************************************
+
Milton Bradley Comp IV
* TMC0904NL CP0904A (die labeled 4A0970D-04A)
* 10 LEDs behind bezel, no sound
+ known releases:
+ - USA: Comp IV (two versions, different casing)
+ - Europe: Logic 5
+ - Japan: Pythaligoras
+
This is small tabletop Mastermind game; a code-breaking game where the player
needs to find out the correct sequence of colours (numbers in our case).
- It is known as Logic 5 in Europe, and as Pythaligoras in Japan.
-
Press the R key to start, followed by a set of unique numbers and E.
Refer to the official manual for more information.
@@ -2755,7 +2916,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( comp4, comp4_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation - unknown freq
+ MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(comp4_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(comp4_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(comp4_state, write_o))
@@ -2763,8 +2924,6 @@ static MACHINE_CONFIG_START( comp4, comp4_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_comp4)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -2865,8 +3024,6 @@ static MACHINE_CONFIG_START( simon, simon_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_simon)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3009,8 +3166,6 @@ static MACHINE_CONFIG_START( ssimon, ssimon_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ssimon)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3094,11 +3249,11 @@ WRITE16_MEMBER(bigtrak_state::write_o)
// O4: right motor reverse
// O5: ext out
// O6: N/C
- output_set_value("left_motor_forward", data >> 1 & 1);
- output_set_value("left_motor_reverse", data >> 2 & 1);
- output_set_value("right_motor_forward", data >> 3 & 1);
- output_set_value("right_motor_reverse", data >> 4 & 1);
- output_set_value("ext_out", data >> 5 & 1);
+ output().set_value("left_motor_forward", data >> 1 & 1);
+ output().set_value("left_motor_reverse", data >> 2 & 1);
+ output().set_value("right_motor_forward", data >> 3 & 1);
+ output().set_value("right_motor_reverse", data >> 4 & 1);
+ output().set_value("ext_out", data >> 5 & 1);
// O0,O7(,R10)(tied together): speaker out
m_speaker->level_w((data & 1) | (data >> 6 & 2) | (m_r >> 8 & 4));
@@ -3194,8 +3349,6 @@ static MACHINE_CONFIG_START( bigtrak, bigtrak_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_bigtrak)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3315,7 +3468,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( cnsector, cnsector_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation - unknown freq
+ MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(cnsector_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(cnsector_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(cnsector_state, write_o))
@@ -3323,8 +3476,6 @@ static MACHINE_CONFIG_START( cnsector, cnsector_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_cnsector)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -3440,8 +3591,6 @@ static MACHINE_CONFIG_START( merlin, merlin_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_merlin)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3506,8 +3655,6 @@ static MACHINE_CONFIG_START( mmerlin, mmerlin_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_mmerlin)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3617,7 +3764,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( stopthief, stopthief_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation - unknown freq
+ MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(stopthief_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(stopthief_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(stopthief_state, write_o))
@@ -3626,8 +3773,6 @@ static MACHINE_CONFIG_START( stopthief, stopthief_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_stopthie)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3735,8 +3880,6 @@ static MACHINE_CONFIG_START( bankshot, bankshot_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_bankshot)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -3848,8 +3991,6 @@ static MACHINE_CONFIG_START( splitsec, splitsec_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_splitsec)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -4009,8 +4150,6 @@ static MACHINE_CONFIG_START( tandy12, tandy12_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tandy12)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -4213,8 +4352,6 @@ static MACHINE_CONFIG_START( tbreakup, tbreakup_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tbreakup)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -4227,24 +4364,37 @@ MACHINE_CONFIG_END
/***************************************************************************
- Tomy Pinball
+ Tomy Power House Pinball
* PCB label TOMY P-B
* TMS1100 MP1180 TOMY PINB (die labeled MP1180)
* 3 7seg LEDs, and other LEDs behind bezel, 1bit sound
known releases:
- - Japan: Pinball
- USA: Power House Pinball
- - Europe: Flipper Pinball
+ - Japan: Pinball
+ - Europe: Flipper
+
+ lamp translation table: led zz from game PCB = MAME lampyx:
+
+ 0 = - 10 = lamp50 20 = lamp64 A = lamp30
+ 1 = lamp33 11 = lamp55 21 = lamp65 B = lamp34
+ 2 = lamp31 12 = lamp51 22 = lamp70 C = lamp35
+ 3 = lamp32 13 = lamp52 23 = lamp71 D = lamp80
+ 4 = lamp40 14 = lamp53 24 = lamp72 E = lamp81
+ 5 = lamp41 15 = lamp60 25 = lamp73 F = lamp82
+ 6 = lamp42 16 = lamp54 26 = lamp74 G = lamp83
+ 7 = lamp43 17 = lamp61
+ 8 = lamp44 18 = lamp62
+ 9 = lamp45 19 = lamp63
NOTE!: MAME external artwork is required
***************************************************************************/
-class tpinball_state : public hh_tms1k_state
+class phpball_state : public hh_tms1k_state
{
public:
- tpinball_state(const machine_config &mconfig, device_type type, const char *tag)
+ phpball_state(const machine_config &mconfig, device_type type, const char *tag)
: hh_tms1k_state(mconfig, type, tag)
{ }
@@ -4258,7 +4408,7 @@ public:
// handlers
-void tpinball_state::prepare_display()
+void phpball_state::prepare_display()
{
// R0-R2 are 7segs
for (int y = 0; y < 3; y++)
@@ -4267,7 +4417,7 @@ void tpinball_state::prepare_display()
display_matrix(7, 9, m_o, m_r);
}
-WRITE16_MEMBER(tpinball_state::write_r)
+WRITE16_MEMBER(phpball_state::write_r)
{
// R10: speaker out
m_speaker->level_w(data >> 10 & 1);
@@ -4280,7 +4430,7 @@ WRITE16_MEMBER(tpinball_state::write_r)
prepare_display();
}
-WRITE16_MEMBER(tpinball_state::write_o)
+WRITE16_MEMBER(phpball_state::write_o)
{
// O0-O6: led state
// O7: N/C
@@ -4288,7 +4438,7 @@ WRITE16_MEMBER(tpinball_state::write_o)
prepare_display();
}
-READ8_MEMBER(tpinball_state::read_k)
+READ8_MEMBER(phpball_state::read_k)
{
// K: multiplexed inputs (note: the Vss row is always on)
return m_inp_matrix[1]->read() | read_inputs(1);
@@ -4297,38 +4447,36 @@ READ8_MEMBER(tpinball_state::read_k)
// config
-static INPUT_PORTS_START( tpinball )
+static INPUT_PORTS_START( phpball )
PORT_START("IN.0") // R9
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Plunger")
PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.1") // Vss!
PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Right Flipper") PORT_CHANGED_MEMBER(DEVICE_SELF, tpinball_state, flipper_button, (void *)1)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Left Flipper") PORT_CHANGED_MEMBER(DEVICE_SELF, tpinball_state, flipper_button, (void *)0)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Right Flipper") PORT_CHANGED_MEMBER(DEVICE_SELF, phpball_state, flipper_button, (void *)1)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Left Flipper") PORT_CHANGED_MEMBER(DEVICE_SELF, phpball_state, flipper_button, (void *)0)
INPUT_PORTS_END
-INPUT_CHANGED_MEMBER(tpinball_state::flipper_button)
+INPUT_CHANGED_MEMBER(phpball_state::flipper_button)
{
// rectangular LEDs under LEDs D,F and E,G are directly connected
// to the left and right flipper buttons - output them to lamp90 and 91
- output_set_lamp_value(90 + (int)(FPTR)param, newval);
+ output().set_lamp_value(90 + (int)(FPTR)param, newval);
}
-static MACHINE_CONFIG_START( tpinball, tpinball_state )
+static MACHINE_CONFIG_START( phpball, phpball_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS1100, 350000) // RC osc. R=47K, C=47pf -> ~350kHz
- MCFG_TMS1XXX_READ_K_CB(READ8(tpinball_state, read_k))
- MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tpinball_state, write_r))
- MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tpinball_state, write_o))
+ MCFG_CPU_ADD("maincpu", TMS1100, 375000) // RC osc. R=47K, C=47pf -> ~375kHz
+ MCFG_TMS1XXX_READ_K_CB(READ8(phpball_state, read_k))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(phpball_state, write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(phpball_state, write_o))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_tms1k_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -4346,8 +4494,8 @@ MACHINE_CONFIG_END
***************************************************************************/
ROM_START( mathmagi )
- ROM_REGION( 0x800, "maincpu", 0 )
- ROM_LOAD( "mp1030", 0x0000, 0x800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1030", 0x0000, 0x0800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
@@ -4508,7 +4656,7 @@ ROM_START( elecdet )
ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(652d19c3) SHA1(75550c2b293453b6b9efed88c8cc77195a53161f) )
+ ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(5d12c24a) SHA1(e486802151a704c6273d4a8682c9c374d27d1e6d) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
@@ -4546,6 +4694,17 @@ ROM_START( astro )
ROM_END
+ROM_START( mdndclab )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "m34012", 0x0000, 0x0800, CRC(e851fccd) SHA1(158362c2821678a51554e02dbb2f9ef5aaf5f59f) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_mdndclab_output.pla", 0, 365, CRC(592b40ba) SHA1(63a2531278a665ace54c541101e052eb84413511) )
+ROM_END
+
+
ROM_START( comp4 )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) )
@@ -4555,9 +4714,9 @@ ROM_START( comp4 )
ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_comp4_micro.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_comp4_output.pla", 0, 352, CRC(a0f887d1) SHA1(3c666663d484d5bed81e1014f8715aab8a3d489f) )
+ ROM_LOAD( "tms0980_comp4_output.pla", 0, 352, CRC(144ce2d5) SHA1(459b92ad62421932df61b7e3965f1821f9636a2c) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_comp4_segment.pla", 0, 157, CRC(e5bddd90) SHA1(4b1c6512c70e5bcd23c2dbf0c88cd8aa2c632a10) )
+ ROM_LOAD( "tms0980_comp4_segment.pla", 0, 157, CRC(73426b07) SHA1(311be3f95a97936b6d1a4dcfa7746da26318ce54) )
ROM_END
@@ -4573,8 +4732,8 @@ ROM_END
ROM_START( ssimon )
- ROM_REGION( 0x800, "maincpu", 0 )
- ROM_LOAD( "mp3476", 0x0000, 0x800, CRC(98200571) SHA1(cbd0bcfc11a534aa0be5d011584cdcac58ff437a) )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3476", 0x0000, 0x0800, CRC(98200571) SHA1(cbd0bcfc11a534aa0be5d011584cdcac58ff437a) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
@@ -4603,15 +4762,15 @@ ROM_START( cnsector )
ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_cnsector_micro.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_cnsector_output.pla", 0, 352, CRC(7c0bdcd6) SHA1(dade774097e8095dca5deac7b2367d0c701aca51) )
+ ROM_LOAD( "tms0980_cnsector_output.pla", 0, 352, CRC(c8bfb9d2) SHA1(30c3c73cec194debdcb1dd01b4adfefaeddf9516) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END
ROM_START( merlin )
- ROM_REGION( 0x800, "maincpu", 0 )
- ROM_LOAD( "mp3404", 0x0000, 0x800, CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp3404", 0x0000, 0x0800, CRC(7515a75d) SHA1(76ca3605d3fde1df62f79b9bb1f534c2a2ae0229) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common3_micro.pla", 0, 867, CRC(03574895) SHA1(04407cabfb3adee2ee5e4218612cb06c12c540f4) )
@@ -4640,7 +4799,7 @@ ROM_START( stopthie )
ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(50337a48) SHA1(4a9ea62ed797a9ac5190eec3bb6ebebb7814628c) )
+ ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
@@ -4654,7 +4813,7 @@ ROM_START( stopthiep )
ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(50337a48) SHA1(4a9ea62ed797a9ac5190eec3bb6ebebb7814628c) )
+ ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
@@ -4683,8 +4842,8 @@ ROM_END
ROM_START( tandy12 )
- ROM_REGION( 0x800, "maincpu", 0 )
- ROM_LOAD( "cd7282sl", 0x0000, 0x800, CRC(a10013dd) SHA1(42ebd3de3449f371b99937f9df39c240d15ac686) )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "cd7282sl", 0x0000, 0x0800, CRC(a10013dd) SHA1(42ebd3de3449f371b99937f9df39c240d15ac686) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common1_micro.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
@@ -4704,14 +4863,14 @@ ROM_START( tbreakup )
ROM_END
-ROM_START( tpinball )
- ROM_REGION( 0x800, "maincpu", 0 )
- ROM_LOAD( "mp1180_tomy_pinb", 0x0000, 0x800, CRC(2163b92d) SHA1(bc53d1911e88b4e89d951c6f769703105c13389c) )
+ROM_START( phpball )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1180", 0x0000, 0x0800, CRC(2163b92d) SHA1(bc53d1911e88b4e89d951c6f769703105c13389c) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
ROM_REGION( 365, "maincpu:opla", 0 )
- ROM_LOAD( "tms1100_tpinball_output.pla", 0, 365, CRC(87e67aaf) SHA1(ebc7bae1352f39173f1bf0dc10cdc6f635dedab4) )
+ ROM_LOAD( "tms1100_phpball_output.pla", 0, 365, CRC(87e67aaf) SHA1(ebc7bae1352f39173f1bf0dc10cdc6f635dedab4) )
ROM_END
@@ -4742,6 +4901,8 @@ CONS( 1979, starwbcp, starwbc, 0, starwbc, starwbc, driver_device, 0, "Ken
COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kosmos", "Astro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+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 )
@@ -4758,7 +4919,7 @@ CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Par
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( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE )
-CONS( 1980, tpinball, 0, 0, tpinball, tpinball, driver_device, 0, "Tomy", "Pinball (Tomy)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1980, phpball, 0, 0, phpball, phpball, driver_device, 0, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
// ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction
// with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc.
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp
index 2ed087b8e24..b78b15a40d3 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)
@@ -142,7 +142,7 @@ void hh_ucom4_state::display_update()
if (m_display_cache[y] != active_state[y])
{
if (m_display_segmask[y] != 0)
- output_set_digit_value(y, active_state[y] & m_display_segmask[y]);
+ output().set_digit_value(y, active_state[y] & m_display_segmask[y]);
const int mul = (m_display_maxx <= 10) ? 10 : 100;
for (int x = 0; x <= m_display_maxx; x++)
@@ -162,8 +162,8 @@ void hh_ucom4_state::display_update()
sprintf(buf1, "lamp%d", y * mul + x);
sprintf(buf2, "%d.%d", y, x);
}
- output_set_value(buf1, state);
- output_set_value(buf2, state);
+ output().set_value(buf1, state);
+ output().set_value(buf2, state);
}
}
@@ -323,8 +323,6 @@ static MACHINE_CONFIG_START( ufombs, ufombs_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -465,8 +463,6 @@ static MACHINE_CONFIG_START( ssfball, ssfball_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -592,8 +588,6 @@ static MACHINE_CONFIG_START( bmsoccer, bmsoccer_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -698,8 +692,6 @@ static MACHINE_CONFIG_START( bmsafari, bmsafari_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -849,8 +841,6 @@ static MACHINE_CONFIG_START( splasfgt, splasfgt_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -952,8 +942,6 @@ static MACHINE_CONFIG_START( bcclimbr, bcclimbr_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1071,8 +1059,6 @@ static MACHINE_CONFIG_START( tactix, tactix_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tactix)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1172,8 +1158,6 @@ static MACHINE_CONFIG_START( invspace, invspace_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1283,8 +1267,6 @@ static MACHINE_CONFIG_START( efball, efball_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_efball)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1386,8 +1368,6 @@ static MACHINE_CONFIG_START( galaxy2, galaxy2_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1495,8 +1475,6 @@ static MACHINE_CONFIG_START( astrocmd, astrocmd_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1590,8 +1568,6 @@ static MACHINE_CONFIG_START( edracula, edracula_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1697,8 +1673,6 @@ static MACHINE_CONFIG_START( mvbfree, mvbfree_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_mvbfree)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1794,8 +1768,6 @@ static MACHINE_CONFIG_START( tccombat, tccombat_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -1952,8 +1924,6 @@ static MACHINE_CONFIG_START( tmtennis, tmtennis_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2060,8 +2030,6 @@ static MACHINE_CONFIG_START( tmpacman, tmpacman_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2162,8 +2130,6 @@ static MACHINE_CONFIG_START( tmscramb, tmscramb_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2260,8 +2226,6 @@ static MACHINE_CONFIG_START( tcaveman, tcaveman_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
@@ -2392,8 +2356,6 @@ static MACHINE_CONFIG_START( alnchase, alnchase_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mame/drivers/highvdeo.cpp b/src/mame/drivers/highvdeo.cpp
index caf4022d786..aad4ce7df35 100644
--- a/src/mame/drivers/highvdeo.cpp
+++ b/src/mame/drivers/highvdeo.cpp
@@ -286,12 +286,12 @@ WRITE16_MEMBER(highvdeo_state::write1_w)
---x ---- Hold5 lamp.
--x- ---- Start lamp.
*/
- output_set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
- output_set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
- output_set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
- output_set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
- output_set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */
- output_set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */
+ output().set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
+ output().set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
+ output().set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
+ output().set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
+ output().set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */
+ output().set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */
// popmessage("%04x %04x",t1,t3);
}
@@ -403,8 +403,8 @@ WRITE16_MEMBER(highvdeo_state::nyj_write2_w)
xxx- ---- Unknown.
*/
// popmessage("%04x",data);
- coin_counter_w(machine(), 0, ~data & 0x0f); // Coins (all)
- coin_counter_w(machine(), 1, ~data & 0x10); // Notes (all)
+ machine().bookkeeping().coin_counter_w(0, ~data & 0x0f); // Coins (all)
+ machine().bookkeeping().coin_counter_w(1, ~data & 0x10); // Notes (all)
}
WRITE16_MEMBER(highvdeo_state::tv_tcf_bankselect_w)
@@ -470,8 +470,8 @@ WRITE16_MEMBER(highvdeo_state::write2_w)
for(i=0;i<4;i++)
{
- coin_counter_w(machine(), i,data & 0x20);
- coin_lockout_w(machine(), i,~data & 0x08);
+ machine().bookkeeping().coin_counter_w(i,data & 0x20);
+ machine().bookkeeping().coin_lockout_w(i,~data & 0x08);
}
}
@@ -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
@@ -1559,8 +1574,8 @@ WRITE16_MEMBER(highvdeo_state::fashion_output_w)
for(i=0;i<4;i++)
{
- coin_counter_w(machine(), i,data & 0x20);
- coin_lockout_w(machine(), i,~data & 0x01);
+ machine().bookkeeping().coin_counter_w(i,data & 0x20);
+ machine().bookkeeping().coin_lockout_w(i,~data & 0x01);
}
}
@@ -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/hitpoker.cpp b/src/mame/drivers/hitpoker.cpp
index ce73815b86d..5991792fb5a 100644
--- a/src/mame/drivers/hitpoker.cpp
+++ b/src/mame/drivers/hitpoker.cpp
@@ -64,9 +64,9 @@ public:
required_shared_ptr<UINT8> m_sys_regs;
UINT8 m_pic_data;
- UINT8 *m_videoram;
- UINT8 *m_paletteram;
- UINT8 *m_colorram;
+ std::unique_ptr<UINT8[]> m_videoram;
+ std::unique_ptr<UINT8[]> m_paletteram;
+ std::unique_ptr<UINT8[]> m_colorram;
UINT8 m_eeprom_data[0x1000];
UINT16 m_eeprom_index;
@@ -82,7 +82,6 @@ public:
DECLARE_READ8_MEMBER(eeprom_r);
DECLARE_READ8_MEMBER(hitpoker_pic_r);
DECLARE_WRITE8_MEMBER(hitpoker_pic_w);
- DECLARE_READ8_MEMBER(test_r);
DECLARE_DRIVER_INIT(hitpoker);
virtual void video_start() override;
UINT32 screen_update_hitpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -97,9 +96,9 @@ public:
void hitpoker_state::video_start()
{
- m_videoram = auto_alloc_array(machine(), UINT8, 0x35ff);
- m_paletteram = auto_alloc_array(machine(), UINT8, 0x1000);
- m_colorram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_videoram = std::make_unique<UINT8[]>(0x35ff);
+ m_paletteram = std::make_unique<UINT8[]>(0x1000);
+ m_colorram = std::make_unique<UINT8[]>(0x2000);
}
UINT32 hitpoker_state::screen_update_hitpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/hk68v10.cpp b/src/mame/drivers/hk68v10.cpp
index f0cd8b71397..a6b5a357595 100644
--- a/src/mame/drivers/hk68v10.cpp
+++ b/src/mame/drivers/hk68v10.cpp
@@ -201,10 +201,10 @@ hk68v10_state(const machine_config &mconfig, device_type type, const char *tag)
DECLARE_READ16_MEMBER (bootvect_r);
DECLARE_WRITE16_MEMBER (bootvect_w);
-DECLARE_READ16_MEMBER (vme_a24_r);
-DECLARE_WRITE16_MEMBER (vme_a24_w);
-DECLARE_READ16_MEMBER (vme_a16_r);
-DECLARE_WRITE16_MEMBER (vme_a16_w);
+//DECLARE_READ16_MEMBER (vme_a24_r);
+//DECLARE_WRITE16_MEMBER (vme_a24_w);
+//DECLARE_READ16_MEMBER (vme_a16_r);
+//DECLARE_WRITE16_MEMBER (vme_a16_w);
virtual void machine_start () override;
virtual void machine_reset () override;
DECLARE_WRITE_LINE_MEMBER (write_sccterm_clock);
diff --git a/src/mame/drivers/hng64.cpp b/src/mame/drivers/hng64.cpp
index 7a5d73d7b93..6bb798cb805 100644
--- a/src/mame/drivers/hng64.cpp
+++ b/src/mame/drivers/hng64.cpp
@@ -1392,11 +1392,11 @@ DRIVER_INIT_MEMBER(hng64_state,hng64_reorder_gfx)
DRIVER_INIT_MEMBER(hng64_state,hng64)
{
/* 1 meg of virtual address space for the com cpu */
- m_com_virtual_mem = auto_alloc_array(machine(), UINT8, 0x100000);
- m_com_op_base = auto_alloc_array(machine(), UINT8, 0x10000);
+ m_com_virtual_mem = std::make_unique<UINT8[]>(0x100000);
+ m_com_op_base = std::make_unique<UINT8[]>(0x10000);
- m_soundram = auto_alloc_array(machine(), UINT16, 0x200000/2);
- m_soundram2 = auto_alloc_array(machine(), UINT16, 0x200000/2);
+ m_soundram = std::make_unique<UINT16[]>(0x200000/2);
+ m_soundram2 = std::make_unique<UINT16[]>(0x200000/2);
DRIVER_INIT_CALL(hng64_reorder_gfx);
}
@@ -1508,7 +1508,7 @@ void hng64_state::machine_start()
m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, TRUE, m_rombase);
m_comm_rom = memregion("user2")->base();
- m_comm_ram = auto_alloc_array(machine(),UINT8,0x10000);
+ m_comm_ram = std::make_unique<UINT8[]>(0x10000);
for (int i = 0; i < 0x38 / 4; i++)
{
diff --git a/src/mame/drivers/homedata.cpp b/src/mame/drivers/homedata.cpp
index b10c744920f..ce48e62fc65 100644
--- a/src/mame/drivers/homedata.cpp
+++ b/src/mame/drivers/homedata.cpp
@@ -356,7 +356,7 @@ WRITE8_MEMBER(homedata_state::reikaids_upd7807_portc_w)
membank("bank2")->set_entry(data & 0x03);
- coin_counter_w(machine(), 0, ~data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, ~data & 0x80);
if (BIT(m_upd7807_portc, 5) && !BIT(data, 5)) /* write clock 1->0 */
m_ymsnd->write(space, BIT(data, 3), m_upd7807_porta);
@@ -495,7 +495,7 @@ WRITE8_MEMBER(homedata_state::pteacher_upd7807_portc_w)
membank("bank2")->set_entry((data & 0x0c) >> 2);
- coin_counter_w(machine(), 0, ~data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, ~data & 0x80);
if (BIT(m_upd7807_portc, 5) && !BIT(data, 5)) /* clock 1->0 */
m_sn->write(space, 0, m_upd7807_porta);
diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp
index c919134bc0c..49200920f36 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,11 +375,13 @@ 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;
UINT8 m_led_reg1;
- UINT8 *m_jvs_sdata;
+ std::unique_ptr<UINT8[]> m_jvs_sdata;
UINT32 m_jvs_sdata_ptr;
UINT16 m_gn680_latch;
UINT16 m_gn680_ret0;
@@ -928,7 +932,7 @@ INPUT_PORTS_END
void hornet_state::machine_start()
{
m_jvs_sdata_ptr = 0;
- m_jvs_sdata = auto_alloc_array_clear(machine(), UINT8, 1024);
+ m_jvs_sdata = make_unique_clear<UINT8[]>(1024);
/* set conservative DRC options */
m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
@@ -938,7 +942,7 @@ void hornet_state::machine_start()
save_item(NAME(m_led_reg0));
save_item(NAME(m_led_reg1));
- save_pointer(NAME(m_jvs_sdata), 1024);
+ save_pointer(NAME(m_jvs_sdata.get()), 1024);
save_item(NAME(m_jvs_sdata_ptr));
m_sound_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hornet_state::sound_irq), this));
@@ -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 22ef8533bab..2936cae3228 100644
--- a/src/mame/drivers/hp9845.cpp
+++ b/src/mame/drivers/hp9845.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Curt Coder
+// copyright-holders:Curt Coder, F. Ulivi
/*
HP 9845
@@ -7,10 +7,51 @@
http://www.hp9845.net/
*/
+// **************************
+// Driver for HP 9845B system
+// **************************
+//
+// What's in:
+// - Emulation of both 5061-3001 CPUs
+// - LPU & PPU ROMs
+// - LPU & PPU RAMs
+// - Text mode screen
+// - Keyboard (most of keys)
+// What's not yet in:
+// - Beeper
+// - Rest of keyboard
+// - Graphic screen
+// - Tape drive (this needs some heavy RE of the TACO chip)
+// - Better documentation of this file
+// - Software list to load optional ROMs
+// What's wrong:
+// - I'm using character generator from HP64K (another driver of mine): no known dump of the original one
+// - Speed, as usual
+// - There are a couple of undocumented opcodes that PPU executes at each keyboard interrupt: don't know if ignoring them is a Bad Thing (tm) or not
#include "emu.h"
#include "cpu/z80/z80.h"
#include "softlist.h"
+#include "cpu/hphybrid/hphybrid.h"
+
+#define BIT_MASK(n) (1U << (n))
+
+// Macros to clear/set single bits
+#define BIT_CLR(w , n) ((w) &= ~BIT_MASK(n))
+#define BIT_SET(w , n) ((w) |= BIT_MASK(n))
+
+// Base address of video buffer
+#define VIDEO_BUFFER_BASE 0x17000
+
+#define MAX_WORD_PER_ROW 600
+
+#define VIDEO_CHAR_WIDTH 9
+#define VIDEO_CHAR_HEIGHT 15
+#define VIDEO_CHAR_COLUMNS 80
+#define VIDEO_CHAR_ROWS 25
+#define VIDEO_ACTIVE_SCANLINES (VIDEO_CHAR_HEIGHT * VIDEO_CHAR_ROWS)
+
+#define KEY_SCAN_OSCILLATOR 327680
class hp9845_state : public driver_device
{
@@ -25,11 +66,530 @@ public:
static INPUT_PORTS_START( hp9845 )
INPUT_PORTS_END
+class hp9845b_state : public driver_device
+{
+public:
+ hp9845b_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_lpu(*this , "lpu"),
+ m_ppu(*this , "ppu"),
+ m_palette(*this , "palette"),
+ m_io_key0(*this , "KEY0"),
+ m_io_key1(*this , "KEY1"),
+ m_io_key2(*this , "KEY2"),
+ m_io_key3(*this , "KEY3")
+ { }
+
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline_timer);
+
+ void vblank_w(screen_device &screen, bool state);
+
+ IRQ_CALLBACK_MEMBER(irq_callback);
+ void update_irl(void);
+
+ TIMER_DEVICE_CALLBACK_MEMBER(kb_scan);
+ DECLARE_READ16_MEMBER(kb_scancode_r);
+ DECLARE_READ16_MEMBER(kb_status_r);
+ DECLARE_WRITE16_MEMBER(kb_irq_clear_w);
+
+ DECLARE_WRITE8_MEMBER(pa_w);
+
+private:
+ required_device<hp_5061_3001_cpu_device> m_lpu;
+ required_device<hp_5061_3001_cpu_device> m_ppu;
+ required_device<palette_device> m_palette;
+ required_ioport m_io_key0;
+ required_ioport m_io_key1;
+ required_ioport m_io_key2;
+ required_ioport m_io_key3;
+
+ void set_video_mar(UINT16 mar);
+ void video_fill_buff(bool buff_idx);
+ void video_render_buff(unsigned line_in_row, bool buff_idx);
+
+ // Character generator
+ const UINT8 *m_chargen;
+
+ // Text mode video I/F
+ typedef struct {
+ UINT8 chars[ 80 ];
+ UINT8 attrs[ 80 ];
+ bool full;
+ } video_buffer_t;
+
+ bitmap_rgb32 m_bitmap;
+ unsigned m_video_scanline;
+ offs_t m_video_mar;
+ UINT16 m_video_word;
+ bool m_video_load_mar;
+ bool m_video_byte_idx;
+ UINT8 m_video_attr;
+ bool m_video_buff_idx;
+ bool m_video_blanked;
+ UINT8 m_video_frame;
+ video_buffer_t m_video_buff[ 2 ];
+
+ // Interrupt handling
+ UINT8 m_irl_pending;
+
+ // State of keyboard
+ ioport_value m_kb_state[ 4 ];
+ UINT8 m_kb_scancode;
+ UINT16 m_kb_status;
+
+};
+
+static INPUT_PORTS_START(hp9845b)
+ // Keyboard is arranged in a 8 x 16 matrix. Of the 128 possible positions, 118 are used.
+ // Keys are mapped on bit b of KEYn
+ // where b = (row & 1) << 4 + column, n = row >> 1
+ // column = [0..15]
+ // row = [0..7]
+ PORT_START("KEY0")
+ PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Print All") // Print All
+ 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(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
+ PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') // Space
+ PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // /
+ PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') // <
+ PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') // N
+ PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') // V
+ PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') // X
+ PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // Shift
+ PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Auto start") // Auto Start
+ PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP-") // KP -
+ PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP3") // KP 3
+ PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP2") // KP 2
+ PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP1") // KP 1
+ PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // Left
+ PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_UNUSED) // Repeat
+ PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // Down
+ PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') // >
+ PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') // M
+ PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') // B
+ PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') // C
+ PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') // Z
+
+ PORT_START("KEY1")
+ PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("INSCHAR") // Ins Char
+ 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("KP6") // KP 6
+ PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP5") // KP 5
+ PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP4") // KP 4
+ PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP=") // KP =
+ PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("Pause") // Pause
+ PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // Up
+ PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) // Store
+ PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') // :
+ PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') // K
+ PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') // H
+ PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') // F
+ PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') // S
+ PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("INSLN") // Ins Ln
+ PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP/") // KP /
+ PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP9") // KP 9
+ PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP8") // KP 8
+ PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("KP7") // KP 7
+ PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Result") // Result
+ PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("Run") // Run
+ PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"') // "
+ PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') // L
+ PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') // J
+ PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') // G
+ PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') // D
+ PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') // A
+
+ PORT_START("KEY2")
+ PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_UNUSED) // N/U
+ PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("DELLN") // Del Ln
+ 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("KPE") // KP E
+ PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Clear line") // Clear Line
+ PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("Stop") // Stop
+ PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') // |
+ PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') // ]
+ PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') // P
+ PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') // I
+ PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') // Y
+ PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') // R
+ PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') // W
+ PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2) // Control
+ PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Typwtr") // Typwtr
+ PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("DELCHAR") // Del Char
+ PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_NAME("ROLLDOWN") // Roll down
+ PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_NAME("ROLLUP") // Roll up
+ PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_NAME("HOME") // Home
+ PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Clr to end") // Clr to end
+ PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Clear") // Clear
+ PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~') // ~
+ PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) // BS
+ PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') // +
+ PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') // [
+ PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') // O
+ PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') // U
+ PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') // T
+ PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') // E
+ PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') // Q
+
+ PORT_START("KEY3")
+ PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Tab set") // Tab set
+ PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("Recall") // Recall
+ PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K15") // K15
+ PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K14") // K14
+ PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("K13") // K13
+ 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(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
+ PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') // 6
+ PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') // 4
+ 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(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(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
+ PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') // _
+ PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') // 9
+ PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') // 7
+ PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') // 5
+ PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') // 3
+ PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') // 1
+
+INPUT_PORTS_END
+
UINT32 hp9845_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
return 0;
}
+UINT32 hp9845b_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
+
+ return 0;
+}
+
+void hp9845b_state::machine_start()
+{
+ machine().first_screen()->register_screen_bitmap(m_bitmap);
+
+ m_chargen = memregion("chargen")->base();
+}
+
+void hp9845b_state::machine_reset()
+{
+ m_lpu->halt_w(1);
+ m_ppu->halt_w(0);
+
+ // Some sensible defaults
+ m_video_mar = VIDEO_BUFFER_BASE;
+ m_video_load_mar = false;
+ m_video_byte_idx = false;
+ m_video_attr = 0;
+ m_video_buff_idx = false;
+ m_video_blanked = false;
+ m_video_frame = 0;
+
+ m_irl_pending = 0;
+
+ memset(&m_kb_state[ 0 ] , 0 , sizeof(m_kb_state));
+ m_kb_scancode = 0x7f;
+ m_kb_status = 0;
+}
+
+void hp9845b_state::set_video_mar(UINT16 mar)
+{
+ m_video_mar = (mar & 0xfff) | VIDEO_BUFFER_BASE;
+}
+
+void hp9845b_state::video_fill_buff(bool buff_idx)
+{
+ unsigned char_idx = 0;
+ unsigned iters = 0;
+ UINT8 byte;
+ address_space& prog_space = m_ppu->space(AS_PROGRAM);
+
+ m_video_buff[ buff_idx ].full = false;
+
+ while (1) {
+ if (!m_video_byte_idx) {
+ if (iters++ >= MAX_WORD_PER_ROW) {
+ // Limit on accesses per row reached
+ break;
+ }
+ m_video_word = prog_space.read_word(m_video_mar << 1);
+ if (m_video_load_mar) {
+ // Load new address into MAR after start of a new frame or NWA instruction
+ // TODO: decode graphic/alpha mode bit
+ set_video_mar(~m_video_word);
+ m_video_load_mar = false;
+ continue;
+ } else {
+ // Read normal word from frame buffer, start parsing at MSB
+ set_video_mar(m_video_mar + 1);
+ byte = (UINT8)(m_video_word >> 8);
+ m_video_byte_idx = true;
+ }
+ } else {
+ // Parse LSB
+ byte = (UINT8)(m_video_word & 0xff);
+ m_video_byte_idx = false;
+ }
+ if ((byte & 0xc0) == 0x80) {
+ // Attribute command
+ m_video_attr = byte & 0x1f;
+ } else if ((byte & 0xc1) == 0xc0) {
+ // New Word Address (NWA)
+ m_video_load_mar = true;
+ m_video_byte_idx = false;
+ } else if ((byte & 0xc1) == 0xc1) {
+ // End of line (EOL)
+ // Fill rest of buffer with spaces
+ memset(&m_video_buff[ buff_idx ].chars[ char_idx ] , 0x20 , 80 - char_idx);
+ memset(&m_video_buff[ buff_idx ].attrs[ char_idx ] , m_video_attr , 80 - char_idx);
+ m_video_buff[ buff_idx ].full = true;
+ break;
+ } else {
+ // Normal character
+ m_video_buff[ buff_idx ].chars[ char_idx ] = byte;
+ m_video_buff[ buff_idx ].attrs[ char_idx ] = m_video_attr;
+ char_idx++;
+ if (char_idx == 80) {
+ m_video_buff[ buff_idx ].full = true;
+ break;
+ }
+ }
+ }
+}
+
+void hp9845b_state::video_render_buff(unsigned line_in_row, bool buff_idx)
+{
+ if (!m_video_buff[ buff_idx ].full) {
+ m_video_blanked = true;
+ }
+
+ if (m_video_blanked) {
+ // TODO: blank scanline
+ } else {
+ const rgb_t *palette = m_palette->palette()->entry_list_raw();
+ bool cursor_line = line_in_row == 12;
+ bool ul_line = line_in_row == 14;
+ bool cursor_blink = BIT(m_video_frame , 3);
+ bool char_blink = BIT(m_video_frame , 4);
+
+ for (unsigned i = 0; i < 80; i++) {
+ UINT8 charcode = m_video_buff[ buff_idx ].chars[ i ];
+ UINT8 attrs = m_video_buff[ buff_idx ].attrs[ i ];
+ UINT8 chargen_byte = m_chargen[ line_in_row | ((unsigned)charcode << 4) ];
+ UINT16 pixels;
+
+ // TODO: Handle selection of 2nd chargen
+ // TODO: Check if order of bits in "pixels" is ok
+
+ if ((ul_line && BIT(attrs , 3)) ||
+ (cursor_line && cursor_blink && BIT(attrs , 0))) {
+ pixels = ~0;
+ } else if (char_blink && BIT(attrs , 2)) {
+ pixels = 0;
+ } else {
+ pixels = (UINT16)(chargen_byte & 0x7f) << 2;
+ }
+
+ if (BIT(attrs , 1)) {
+ pixels = ~pixels;
+ }
+
+ for (unsigned j = 0; j < 9; j++) {
+ bool pixel = (pixels & (1U << (8 - j))) != 0;
+
+ m_bitmap.pix32(m_video_scanline , i * 9 + j) = palette[ pixel ? 1 : 0 ];
+ }
+ }
+ }
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(hp9845b_state::scanline_timer)
+{
+ m_video_scanline = param;
+
+ if (m_video_scanline < VIDEO_ACTIVE_SCANLINES) {
+ unsigned row = m_video_scanline / 15;
+ unsigned line_in_row = m_video_scanline - row * 15;
+
+ if (line_in_row == 0) {
+ // Start of new row, swap buffers
+ m_video_buff_idx = !m_video_buff_idx;
+ video_fill_buff(!m_video_buff_idx);
+ }
+
+ video_render_buff(line_in_row , m_video_buff_idx);
+ }
+}
+
+void hp9845b_state::vblank_w(screen_device &screen, bool state)
+{
+ // VBlank signal is fed into HALT flag of PPU
+ m_ppu->halt_w(state);
+
+ if (state) {
+ // Start of V blank
+ set_video_mar(0);
+ m_video_load_mar = true;
+ m_video_byte_idx = false;
+ m_video_blanked = false;
+ m_video_frame++;
+ m_video_buff_idx = !m_video_buff_idx;
+ video_fill_buff(!m_video_buff_idx);
+ }
+}
+
+IRQ_CALLBACK_MEMBER(hp9845b_state::irq_callback)
+{
+ if (irqline == HPHYBRID_IRL) {
+ return m_irl_pending;
+ } else {
+ return 0;
+ }
+}
+
+void hp9845b_state::update_irl(void)
+{
+ m_ppu->set_input_line(HPHYBRID_IRL , m_irl_pending != 0);
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(hp9845b_state::kb_scan)
+{
+ ioport_value input[ 4 ];
+ input[ 0 ] = m_io_key0->read();
+ input[ 1 ] = m_io_key1->read();
+ input[ 2 ] = m_io_key2->read();
+ input[ 3 ] = m_io_key3->read();
+
+ // Set status bits for "shift", "control", "auto start" & "print all" keys
+ // ** Print all **
+ // (R,C) = (0,1)
+ // Bit 12 in kb status
+ if (BIT(input[ 0 ] , 1)) {
+ BIT_SET(m_kb_status , 12);
+ BIT_CLR(input[ 0 ] , 1);
+ } else {
+ BIT_CLR(m_kb_status, 12);
+ }
+ // ** Auto start **
+ // (R,C) = (1,1)
+ // Bit 13 in kb status
+ if (BIT(input[ 0 ] , 17)) {
+ BIT_SET(m_kb_status , 13);
+ BIT_CLR(input[ 0 ] , 17);
+ } else {
+ BIT_CLR(m_kb_status, 13);
+ }
+ // ** Control **
+ // (R,C) = (4,15)
+ // Bit 14 in kb status
+ if (BIT(input[ 2 ] , 15)) {
+ BIT_SET(m_kb_status , 14);
+ BIT_CLR(input[ 2 ] , 15);
+ } else {
+ BIT_CLR(m_kb_status, 14);
+ }
+ // ** Shift **
+ // (R,C) = (0,15)
+ // Bit 15 in kb status
+ if (BIT(input[ 0 ] , 15)) {
+ BIT_SET(m_kb_status , 15);
+ BIT_CLR(input[ 0 ] , 15);
+ } else {
+ BIT_CLR(m_kb_status, 15);
+ }
+
+ // TODO: handle repeat key
+ // TODO: handle ctrl+stop
+
+ for (unsigned i = 0; i < 128; i++) {
+ ioport_value mask = BIT_MASK(i & 0x1f);
+ unsigned idx = i >> 5;
+
+ if ((input[ idx ] & ~m_kb_state[ idx ]) & mask) {
+ // Key pressed, store scancode & generate IRL
+ m_kb_scancode = i;
+ BIT_SET(m_irl_pending , 0);
+ BIT_SET(m_kb_status, 0);
+ update_irl();
+
+ // Special case: pressing stop key sets LPU "status" flag
+ if (i == 0x47) {
+ m_lpu->status_w(1);
+ }
+ }
+ }
+
+ memcpy(&m_kb_state[ 0 ] , &input[ 0 ] , sizeof(m_kb_state));
+}
+
+READ16_MEMBER(hp9845b_state::kb_scancode_r)
+{
+ return ~m_kb_scancode & 0x7f;
+}
+
+READ16_MEMBER(hp9845b_state::kb_status_r)
+{
+ return m_kb_status;
+}
+
+WRITE16_MEMBER(hp9845b_state::kb_irq_clear_w)
+{
+ BIT_CLR(m_irl_pending , 0);
+ BIT_CLR(m_kb_status, 0);
+ update_irl();
+ m_lpu->status_w(0);
+ // TODO: beeper start
+}
+
+WRITE8_MEMBER(hp9845b_state::pa_w)
+{
+ // TODO: handle sts & flg
+ if (data == 0xf) {
+ // RHS tape drive (T15)
+ m_ppu->status_w(1);
+ m_ppu->flag_w(1);
+ } else {
+ m_ppu->status_w(0);
+ m_ppu->flag_w(0);
+ }
+}
+
static MACHINE_CONFIG_START( hp9845a, hp9845_state )
//MCFG_CPU_ADD("lpu", HP_5061_3010, XTAL_11_4MHz)
//MCFG_CPU_ADD("ppu", HP_5061_3011, XTAL_11_4MHz)
@@ -60,19 +620,50 @@ static MACHINE_CONFIG_START( hp9835a, hp9845_state )
MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9835a_rom")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( hp9845b, hp9845_state )
- //MCFG_CPU_ADD("lpu", HP_5061_3001, XTAL_11_4MHz)
- //MCFG_CPU_ADD("ppu", HP_5061_3001, XTAL_11_4MHz)
+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)
+//AM_RANGE(0x250000 , 0x251fff) AM_ROM AM_REGION("test_rom" , 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(ppu_io_map , AS_IO , 16 , hp9845b_state)
+ ADDRESS_MAP_UNMAP_LOW
+ // PA = 0, IC = 2
+ // Keyboard scancode input
+ AM_RANGE(HP_MAKE_IOADDR(0 , 2) , HP_MAKE_IOADDR(0 , 2)) AM_READ(kb_scancode_r)
+ // PA = 0, IC = 3
+ // Keyboard status input & keyboard interrupt clear
+ AM_RANGE(HP_MAKE_IOADDR(0 , 3) , HP_MAKE_IOADDR(0 , 3)) AM_READWRITE(kb_status_r , kb_irq_clear_w)
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_START( hp9845b, hp9845b_state )
+ MCFG_CPU_ADD("lpu", HP_5061_3001, 5700000)
+ MCFG_CPU_PROGRAM_MAP(global_mem_map)
+ MCFG_HPHYBRID_SET_9845_BOOT(true)
+ MCFG_CPU_ADD("ppu", HP_5061_3001, 5700000)
+ MCFG_CPU_PROGRAM_MAP(global_mem_map)
+ MCFG_CPU_IO_MAP(ppu_io_map)
+ MCFG_HPHYBRID_SET_9845_BOOT(true)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(hp9845b_state , irq_callback)
+ MCFG_HPHYBRID_PA_CHANGED(WRITE8(hp9845b_state , pa_w))
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_UPDATE_DRIVER(hp9845_state, screen_update)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_SIZE(560, 455)
- MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, 455-1)
+ MCFG_SCREEN_UPDATE_DRIVER(hp9845b_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(20849400 , 99 * 9 , 0 , 80 * 9 , 26 * 15 , 0 , 25 * 15)
+ MCFG_SCREEN_VBLANK_DRIVER(hp9845b_state, vblank_w)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hp9845b_state, scanline_timer, "screen", 0, 1)
- MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom")
+ // Actual keyboard refresh rate should be KEY_SCAN_OSCILLATOR / 128 (2560 Hz)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp9845b_state , kb_scan , attotime::from_hz(100))
+
+ MCFG_SOFTWARE_LIST_ADD("optrom_list", "hp9845b_rom")
MACHINE_CONFIG_END
ROM_START( hp9845a )
@@ -108,6 +699,21 @@ ROM_END
#define rom_hp9835b rom_hp9835a
ROM_START( hp9845b )
+ ROM_REGION(0x4000 , "test_rom" , ROMREGION_16BIT | ROMREGION_BE)
+ ROM_LOAD("09845-66520-45_00-Test_ROM.bin" , 0x0000 , 0x2000 , CRC(95a5b299))
+ ROM_LOAD("09845-66520-45_10-Test_ROM.bin" , 0x2000 , 0x2000 , CRC(257e4c66))
+
+ ROM_REGION(0x800 , "chargen" , 0)
+ // Don't have the real character generator from HP9845, use the one from HP64000 for now
+ ROM_LOAD("1818_2668.bin" , 0 , 0x800 , BAD_DUMP CRC(32a52664) SHA1(8b2a49a32510103ff424e8481d5ed9887f609f2f))
+
+ ROM_REGION(0x10000, "lpu", ROMREGION_16BIT | ROMREGION_BE)
+ ROM_LOAD("9845-LPU-Standard-Processor.bin", 0, 0x10000, CRC(dc266c1b) SHA1(1cf3267f13872fbbfc035b70f8b4ec6b5923f182))
+
+ ROM_REGION(0x10000, "ppu", ROMREGION_16BIT | ROMREGION_BE)
+ ROM_LOAD("9845-PPU-Standard-Graphics.bin", 0, 0x10000, CRC(f866510f) SHA1(3e22cd2072e3a5f3603a1eb8477b6b4a198d184d))
+
+#if 0
ROM_REGION( 0200000, "lpu", ROMREGION_16BIT | ROMREGION_BE )
ROM_LOAD( "1818-0823-0827-03_00-revb-system_lpu.bin", 0000000, 020000, CRC(7e49c781) SHA1(866c9ebd98d94bb6f99692e29d2d83f55b38c4b6) )
ROM_LOAD( "1818-0823-0827-03_10-revb-system_lpu.bin", 0020000, 020000, CRC(2f819e3d) SHA1(250886378c3ce2253229997007c7bf0be80a8d1d) )
@@ -159,6 +765,7 @@ ROM_START( hp9845b )
ROM_LOAD( "1818-0841-0846-05_20-revd-keyboard_german.bin", 0060000, 020000, CRC(3bf6268a) SHA1(65d7dfeaf34c74dbc86ebe5d3bb65c6bd10163cb) )
ROM_LOAD( "1818-0841-0846-05_30-revc-keyboard_german.bin", 0040000, 020000, CRC(2b83db22) SHA1(6eda714ce05d2d75f4c041e36b6b6df40697d94a) )
ROM_LOAD( "1818-0841-0846-05_30-revd-keyboard_german.bin", 0060000, 020000, CRC(b4006959) SHA1(584a85f746a3b0c262fdf9e4be8e696c80cfd429) )
+#endif
ROM_END
#define rom_hp9845t rom_hp9845b
@@ -168,6 +775,6 @@ COMP( 1978, hp9845a, 0, 0, hp9845a, hp9845, driver_device, 0,
COMP( 1978, hp9845s, hp9845a, 0, hp9845a, hp9845, driver_device, 0, "Hewlett-Packard", "9845S", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
COMP( 1979, hp9835a, 0, 0, hp9835a, hp9845, driver_device, 0, "Hewlett-Packard", "9835A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
COMP( 1979, hp9835b, hp9835a, 0, hp9835a, hp9845, driver_device, 0, "Hewlett-Packard", "9835B", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-COMP( 1980, hp9845b, 0, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845B", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-COMP( 1980, hp9845t, hp9845b, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845T", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-COMP( 1981, hp9845c, hp9845b, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845C", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1980, hp9845b, 0, 0, hp9845b, hp9845b,driver_device, 0, "Hewlett-Packard", "9845B", MACHINE_NO_SOUND )
+COMP( 1980, hp9845t, hp9845b, 0, hp9845b, hp9845b,driver_device, 0, "Hewlett-Packard", "9845T", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1981, hp9845c, hp9845b, 0, hp9845b, hp9845b,driver_device, 0, "Hewlett-Packard", "9845C", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/hvyunit.cpp b/src/mame/drivers/hvyunit.cpp
index 50a6d72ae95..21ec09dfe4b 100644
--- a/src/mame/drivers/hvyunit.cpp
+++ b/src/mame/drivers/hvyunit.cpp
@@ -303,8 +303,8 @@ WRITE8_MEMBER(hvyunit_state::hu_scrolly_w)
WRITE8_MEMBER(hvyunit_state::coin_count_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
diff --git a/src/mame/drivers/hyperspt.cpp b/src/mame/drivers/hyperspt.cpp
index 522b599ad35..1a052fc6e87 100644
--- a/src/mame/drivers/hyperspt.cpp
+++ b/src/mame/drivers/hyperspt.cpp
@@ -23,7 +23,7 @@ Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz)
WRITE8_MEMBER(hyperspt_state::hyperspt_coin_counter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
WRITE8_MEMBER(hyperspt_state::irq_mask_w)
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp
index 39564b2cbeb..f67bc071494 100644
--- a/src/mame/drivers/ibmpcjr.cpp
+++ b/src/mame/drivers/ibmpcjr.cpp
@@ -60,7 +60,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(pic8259_set_int_line);
DECLARE_WRITE8_MEMBER(pcjr_ppi_portb_w);
- DECLARE_READ8_MEMBER(pcjr_ppi_porta_r);
DECLARE_READ8_MEMBER(pcjr_ppi_portc_r);
DECLARE_WRITE8_MEMBER(pcjr_fdc_dor_w);
DECLARE_READ8_MEMBER(pcjx_port_1ff_r);
diff --git a/src/mame/drivers/ice_bozopail.cpp b/src/mame/drivers/ice_bozopail.cpp
index f690ec08a97..0fb674c3e0e 100644
--- a/src/mame/drivers/ice_bozopail.cpp
+++ b/src/mame/drivers/ice_bozopail.cpp
@@ -24,13 +24,13 @@ class ice_bozopail : public driver_device
public:
ice_bozopail(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- // ,m_maincpu(*this, "maincpu")
+ // ,m_maincpu(*this, "maincpu")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
-// required_device<mcs51_cpu_device> m_maincpu;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( ice_bozoice_bozo )
@@ -50,9 +50,9 @@ void ice_bozopail::machine_reset()
static MACHINE_CONFIG_START( ice_bozoice_bozo, ice_bozopail )
/* basic machine hardware */
-// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
-// MCFG_CPU_PROGRAM_MAP(ice_bozoice_bozo_map)
-// MCFG_CPU_IO_MAP(ice_bozoice_bozo_io)
+// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
+// MCFG_CPU_PROGRAM_MAP(ice_bozoice_bozo_map)
+// MCFG_CPU_IO_MAP(ice_bozoice_bozo_io)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -67,4 +67,3 @@ ROM_START( ice_bozo )
ROM_END
GAME( 1997?, ice_bozo, 0, ice_bozoice_bozo, ice_bozoice_bozo, driver_device, 0, ROT0, "Innovative Creations in Entertainment", "Bozo's Pail Toss (v2.07)", MACHINE_IS_SKELETON_MECHANICAL )
-
diff --git a/src/mame/drivers/icecold.cpp b/src/mame/drivers/icecold.cpp
index a3d83290bdb..a21cb19976b 100644
--- a/src/mame/drivers/icecold.cpp
+++ b/src/mame/drivers/icecold.cpp
@@ -201,7 +201,7 @@ WRITE8_MEMBER( icecold_state::scanlines_w )
WRITE8_MEMBER( icecold_state::digit_w )
{
- output_set_digit_value(m_digit, data & 0x7f);
+ output().set_digit_value(m_digit, data & 0x7f);
}
READ8_MEMBER( icecold_state::kbd_r )
@@ -248,25 +248,25 @@ READ8_MEMBER( icecold_state::ay_r )
WRITE8_MEMBER( icecold_state::ay8910_0_b_w )
{
- output_set_lamp_value(1, BIT(data, 0));
- output_set_lamp_value(2, BIT(data, 1));
- output_set_lamp_value(3, BIT(data, 2));
- output_set_lamp_value(4, BIT(data, 3));
- output_set_lamp_value(5, BIT(data, 4));
- output_set_value("in_play", BIT(data, 5));
- output_set_value("good_game", BIT(data, 6));
+ output().set_lamp_value(1, BIT(data, 0));
+ output().set_lamp_value(2, BIT(data, 1));
+ output().set_lamp_value(3, BIT(data, 2));
+ output().set_lamp_value(4, BIT(data, 3));
+ output().set_lamp_value(5, BIT(data, 4));
+ output().set_value("in_play", BIT(data, 5));
+ output().set_value("good_game", BIT(data, 6));
m_motenbl = BIT(data, 7);
}
WRITE8_MEMBER( icecold_state::ay8910_1_a_w )
{
- output_set_lamp_value(6, BIT(data, 0));
- output_set_lamp_value(7, BIT(data, 1));
- output_set_lamp_value(8, BIT(data, 2));
- output_set_lamp_value(9, BIT(data, 3));
- output_set_lamp_value(10, BIT(data, 4));
- output_set_value("game_over", BIT(data, 5));
- output_set_value("tilt", BIT(data, 6));
+ output().set_lamp_value(6, BIT(data, 0));
+ output().set_lamp_value(7, BIT(data, 1));
+ output().set_lamp_value(8, BIT(data, 2));
+ output().set_lamp_value(9, BIT(data, 3));
+ output().set_lamp_value(10, BIT(data, 4));
+ output().set_value("game_over", BIT(data, 5));
+ output().set_value("tilt", BIT(data, 6));
// BIT 7 watchdog reset
}
@@ -274,11 +274,11 @@ WRITE8_MEMBER( icecold_state::ay8910_1_b_w )
{
if (m_motenbl == 0)
{
- output_set_value("start", BIT(data, 0));
- coin_counter_w(machine(), 1, BIT(data, 1)); // hopper counter
- coin_counter_w(machine(), 2, BIT(data, 2)); // good game counter
- coin_lockout_w(machine(), 0, BIT(data, 3)); // not used ??
- coin_counter_w(machine(), 0, BIT(data, 4)); // coin counter
+ output().set_value("start", BIT(data, 0));
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // hopper counter
+ machine().bookkeeping().coin_counter_w(2, BIT(data, 2)); // good game counter
+ machine().bookkeeping().coin_lockout_w(0, BIT(data, 3)); // not used ??
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 4)); // coin counter
// BIT 5 errant ball solenoid
// BIT 7 hopper motor
}
@@ -317,8 +317,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(icecold_state::icecold_motors_timer)
if (lmotor_dir != 0 || rmotor_dir != 0)
{
- output_set_value("lmotor", m_lmotor);
- output_set_value("rmotor", m_rmotor);
+ output().set_value("lmotor", m_lmotor);
+ output().set_value("rmotor", m_rmotor);
popmessage("Left Motor Right Motor\n%-4s %-4s\n%02d\\100 %02d\\100",
(lmotor_dir > 0) ? " up" : ((lmotor_dir < 0) ? "down" : "off"),
diff --git a/src/mame/drivers/ichiban.cpp b/src/mame/drivers/ichiban.cpp
index 4a35b951b76..6ac2c0c0404 100644
--- a/src/mame/drivers/ichiban.cpp
+++ b/src/mame/drivers/ichiban.cpp
@@ -61,8 +61,6 @@ public:
virtual void video_start() override;
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
- DECLARE_WRITE8_MEMBER( bank_w );
};
void ichibanjyan_state::video_start()
diff --git a/src/mame/drivers/ie15.cpp b/src/mame/drivers/ie15.cpp
index c8e706a8705..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);
@@ -541,14 +540,14 @@ UINT32 ie15_state::draw_scanline(UINT16 *p, UINT16 offset, UINT8 scanline)
void ie15_state::update_leds()
{
UINT8 data = m_io_keyboard->read();
- output_set_value("lat_led", m_kb_ruslat ^ 1);
- output_set_value("nr_led", BIT(m_kb_control, IE_KB_NR_BIT) ^ 1);
- output_set_value("pch_led", BIT(data, IE_KB_PCH_BIT) ^ 1);
- output_set_value("dup_led", BIT(data, IE_KB_DUP_BIT) ^ 1);
- output_set_value("lin_led", BIT(data, IE_KB_LIN_BIT) ^ 1);
- output_set_value("red_led", BIT(data, IE_KB_RED_BIT) ^ 1);
- output_set_value("sdv_led", BIT(m_kb_control, IE_KB_SDV_BIT) ^ 1);
- output_set_value("prd_led", 1); // XXX
+ output().set_value("lat_led", m_kb_ruslat ^ 1);
+ output().set_value("nr_led", BIT(m_kb_control, IE_KB_NR_BIT) ^ 1);
+ output().set_value("pch_led", BIT(data, IE_KB_PCH_BIT) ^ 1);
+ output().set_value("dup_led", BIT(data, IE_KB_DUP_BIT) ^ 1);
+ output().set_value("lin_led", BIT(data, IE_KB_LIN_BIT) ^ 1);
+ output().set_value("red_led", BIT(data, IE_KB_RED_BIT) ^ 1);
+ output().set_value("sdv_led", BIT(m_kb_control, IE_KB_SDV_BIT) ^ 1);
+ output().set_value("prd_led", 1); // XXX
}
/*
@@ -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 e11dd69a961..7e0f44ad2d9 100644
--- a/src/mame/drivers/igs009.cpp
+++ b/src/mame/drivers/igs009.cpp
@@ -392,12 +392,12 @@ WRITE8_MEMBER(igs009_state::nmi_and_coins_w)
// popmessage("%02x",data);
}
- coin_counter_w(machine(), 0, data & 0x01); // coin_a
- coin_counter_w(machine(), 1, data & 0x04); // coin_c
- coin_counter_w(machine(), 2, data & 0x08); // key in
- coin_counter_w(machine(), 3, data & 0x10); // coin m_out mech
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); // coin_a
+ machine().bookkeeping().coin_counter_w(1, data & 0x04); // coin_c
+ machine().bookkeeping().coin_counter_w(2, data & 0x08); // key in
+ machine().bookkeeping().coin_counter_w(3, data & 0x10); // coin m_out mech
- set_led_status(machine(), 6, data & 0x40); // led for coin m_out / m_hopper active
+ output().set_led_value(6, data & 0x40); // led for coin m_out / m_hopper active
m_nmi_enable = data; // data & 0x80 // nmi enable?
@@ -407,8 +407,8 @@ WRITE8_MEMBER(igs009_state::nmi_and_coins_w)
WRITE8_MEMBER(igs009_state::video_and_leds_w)
{
- set_led_status(machine(), 4, data & 0x01); // start?
- set_led_status(machine(), 5, data & 0x04); // l_bet?
+ output().set_led_value(4, data & 0x01); // start?
+ output().set_led_value(5, data & 0x04); // l_bet?
m_video_enable = data & 0x40;
m_hopper = (~data)& 0x80;
@@ -419,10 +419,10 @@ WRITE8_MEMBER(igs009_state::video_and_leds_w)
WRITE8_MEMBER(igs009_state::leds_w)
{
- set_led_status(machine(), 0, data & 0x01); // stop_1
- set_led_status(machine(), 1, data & 0x02); // stop_2
- set_led_status(machine(), 2, data & 0x04); // stop_3
- set_led_status(machine(), 3, data & 0x08); // stop
+ output().set_led_value(0, data & 0x01); // stop_1
+ output().set_led_value(1, data & 0x02); // stop_2
+ output().set_led_value(2, data & 0x04); // stop_3
+ output().set_led_value(3, data & 0x08); // stop
// data & 0x10?
m_out[2] = data;
@@ -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 edc3fd3f6d1..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,7 +108,11 @@ public:
optional_shared_ptr<UINT16> m_vbowl_trackball;
required_shared_ptr<UINT16> m_generic_paletteram_16;
- UINT8 *m_layer[8];
+ /* 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;
UINT16 m_igs_dips_sel;
@@ -148,7 +156,6 @@ public:
DECLARE_WRITE16_MEMBER(igs011_prot1_w);
DECLARE_READ16_MEMBER(igs011_prot1_r);
DECLARE_WRITE16_MEMBER(igs011_prot_addr_w);
- DECLARE_READ16_MEMBER(igs011_prot_fake_r);
DECLARE_WRITE16_MEMBER(igs011_prot2_reset_w);
DECLARE_READ16_MEMBER(igs011_prot2_reset_r);
DECLARE_WRITE16_MEMBER(igs011_prot2_inc_w);
@@ -165,7 +172,6 @@ public:
DECLARE_READ16_MEMBER(lhb2_igs011_prot2_r);
DECLARE_READ16_MEMBER(vbowl_igs011_prot2_r);
DECLARE_WRITE16_MEMBER(igs012_prot_reset_w);
- DECLARE_READ16_MEMBER(igs012_prot_fake_r);
DECLARE_WRITE16_MEMBER(igs012_prot_mode_w);
DECLARE_WRITE16_MEMBER(igs012_prot_inc_w);
DECLARE_WRITE16_MEMBER(igs012_prot_dec_inc_w);
@@ -212,6 +218,7 @@ public:
DECLARE_DRIVER_INIT(xymg);
DECLARE_DRIVER_INIT(drgnwrldv10c);
DECLARE_DRIVER_INIT(drgnwrldv20j);
+ DECLARE_DRIVER_INIT(drgnwrldv40k);
DECLARE_DRIVER_INIT(vbowl);
DECLARE_DRIVER_INIT(vbowlj);
DECLARE_DRIVER_INIT(ryukobou);
@@ -275,8 +282,8 @@ void igs011_state::video_start()
{
for (int i = 0; i < 8; i++)
{
- m_layer[i] = auto_alloc_array(machine(), UINT8, 512 * 256);
- save_pointer(NAME(m_layer[i]), 512 * 256, i);
+ m_layer[i] = std::make_unique<UINT8[]>(512 * 256);
+ save_pointer(NAME(m_layer[i].get()), 512 * 256, i);
}
m_lhb2_pen_hi = 0;
@@ -374,8 +381,8 @@ READ16_MEMBER(igs011_state::igs011_layers_r)
{
int layer0 = ((offset & (0x80000/2)) ? 4 : 0) + ((offset & 1) ? 0 : 2);
- UINT8 *l0 = m_layer[layer0];
- UINT8 *l1 = m_layer[layer0+1];
+ UINT8 *l0 = m_layer[layer0].get();
+ UINT8 *l1 = m_layer[layer0+1].get();
offset >>= 1;
offset &= 0x1ffff;
@@ -389,8 +396,8 @@ WRITE16_MEMBER(igs011_state::igs011_layers_w)
int layer0 = ((offset & (0x80000/2)) ? 4 : 0) + ((offset & 1) ? 0 : 2);
- UINT8 *l0 = m_layer[layer0];
- UINT8 *l1 = m_layer[layer0+1];
+ UINT8 *l0 = m_layer[layer0].get();
+ UINT8 *l1 = m_layer[layer0+1].get();
offset >>= 1;
offset &= 0x1ffff;
@@ -485,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();
@@ -499,7 +507,7 @@ WRITE16_MEMBER(igs011_state::igs011_blit_flags_w)
blitter.x,blitter.y,blitter.w,blitter.h,blitter.gfx_hi,blitter.gfx_lo,blitter.depth,blitter.pen,blitter.flags);
#endif
- dest = m_layer[ blitter.flags & 0x0007 ];
+ dest = m_layer[ blitter.flags & 0x0007 ].get();
opaque = !(blitter.flags & 0x0008);
clear = blitter.flags & 0x0010;
flipx = blitter.flags & 0x0020;
@@ -1441,7 +1449,7 @@ WRITE16_MEMBER(igs011_state::drgnwrld_igs003_w)
{
case 0x00:
if (ACCESSING_BITS_0_7)
- coin_counter_w(machine(), 0,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 2);
if (data & ~0x2)
logerror("%06x: warning, unknown bits written in coin counter = %02x\n", space.device().safe_pc(), data);
@@ -1505,7 +1513,7 @@ WRITE16_MEMBER(igs011_state::lhb_inputs_w)
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x20 );
+ machine().bookkeeping().coin_counter_w(0, data & 0x20 );
// coin out data & 0x40
m_igs_hopper = data & 0x80;
}
@@ -1550,7 +1558,7 @@ WRITE16_MEMBER(igs011_state::lhb2_igs003_w)
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
// coin out data & 0x40
m_igs_hopper = data & 0x80;
}
@@ -1697,7 +1705,7 @@ WRITE16_MEMBER(igs011_state::wlcc_igs003_w)
case 0x02:
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
// coin out data & 0x02
m_oki->set_bank_base((data & 0x10) ? 0x40000 : 0);
@@ -1765,7 +1773,7 @@ WRITE16_MEMBER(igs011_state::xymg_igs003_w)
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
// coin out data & 0x40
m_igs_hopper = data & 0x80;
}
@@ -1838,8 +1846,8 @@ WRITE16_MEMBER(igs011_state::vbowl_igs003_w)
case 0x02:
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
if (data & ~0x3)
@@ -2092,6 +2100,14 @@ DRIVER_INIT_MEMBER(igs011_state,drgnwrldv20j)
*/
}
+DRIVER_INIT_MEMBER(igs011_state,drgnwrldv40k)
+{
+ //drgnwrld_type3_decrypt(); // wrong
+ drgnwrld_gfx_decrypt();
+
+ //m_maincpu->space(AS_PROGRAM).install_read_handler(0xd4c0, 0xd4ff, read16_delegate(FUNC(igs011_state::drgnwrldv21_igs011_prot2_r), this)); // wrong
+}
+
DRIVER_INIT_MEMBER(igs011_state,drgnwrldv11h)
{
drgnwrld_type1_decrypt();
@@ -3126,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 )
@@ -3256,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 )
@@ -3385,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 )
@@ -3514,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
@@ -3841,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
@@ -4372,6 +4388,25 @@ ROM_START( drgnwrldv10c )
ROM_LOAD( "ccdu45.u45", 0x000, 0x2e5, CRC(a15fce69) SHA1(3e38d75c7263bfb36aebdbbd55ebbdd7ca601633) )
ROM_END
+
+ROM_START( drgnwrldv40k )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "v-040k.u3", 0x00000, 0x80000, CRC(397404ef) SHA1(5228558760be7c103d4b9e2e2a31ca5619ca8055) )
+
+ ROM_REGION( 0x400000, "blitter", 0 )
+ ROM_LOAD( "igs-d0301.u39", 0x000000, 0x400000, CRC(78ab45d9) SHA1(c326ee9f150d766edd6886075c94dea3691b606d) )
+ // u44 unpopulated
+
+ ROM_REGION( 0x40000, "oki", 0 )
+ ROM_LOAD( "igs-s0302.u43", 0x00000, 0x40000, CRC(fde63ce1) SHA1(cc32d2cace319fe4d5d0aa96d7addb2d1def62f2) )
+
+ ROM_REGION( 0x40000, "plds", 0 )
+ ROM_LOAD( "ccdu15.u15", 0x000, 0x2e5, CRC(a15fce69) SHA1(3e38d75c7263bfb36aebdbbd55ebbdd7ca601633) )
+ //ROM_LOAD( "ccdu17.u17.bad.dump", 0x000, 0x104, CRC(e9cd78fb) SHA1(557d3e7ef3b25c1338b24722cac91bca788c02b8) )
+ //ROM_LOAD( "ccdu18.u18.bad.dump", 0x000, 0x104, CRC(e9cd78fb) SHA1(557d3e7ef3b25c1338b24722cac91bca788c02b8) )
+ ROM_LOAD( "ccdu45.u45", 0x000, 0x2e5, CRC(a15fce69) SHA1(3e38d75c7263bfb36aebdbbd55ebbdd7ca601633) )
+ROM_END
+
/***************************************************************************
Wan Li Chang Cheng (The Great Wall)
@@ -4803,6 +4838,7 @@ GAME( 1995, drgnwrldv21j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, dr
GAME( 1995, drgnwrldv20j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, drgnwrldv20j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V020J)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, drgnwrldv10c, drgnwrld, drgnwrld, drgnwrldc, igs011_state, drgnwrldv10c, ROT0, "IGS", "Zhong Guo Long (China, V010C)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, drgnwrldv11h, drgnwrld, drgnwrld, drgnwrldc, igs011_state, drgnwrldv11h, ROT0, "IGS", "Dong Fang Zhi Zhu (Hong Kong, V011H)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, drgnwrldv40k, drgnwrld, drgnwrld_igs012, drgnwrldc, igs011_state, drgnwrldv40k, ROT0, "IGS", "Dragon World (Korea, V040K)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
GAME( 1995, lhb, 0, lhb, lhb, igs011_state, lhb, ROT0, "IGS", "Long Hu Bang (China, V035C)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, lhbv33c, lhb, lhb, lhb, igs011_state, lhbv33c, ROT0, "IGS", "Long Hu Bang (China, V033C)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, dbc, lhb, lhb, lhb, igs011_state, dbc, ROT0, "IGS", "Da Ban Cheng (Hong Kong, V027H)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp
index bc90f39bfb3..1d1d439b3fc 100644
--- a/src/mame/drivers/igs017.cpp
+++ b/src/mame/drivers/igs017.cpp
@@ -247,7 +247,7 @@ void igs017_state::decrypt_program_rom(int mask, int a7, int a6, int a5, int a4,
{
int length = memregion("maincpu")->bytes();
UINT8 *rom = memregion("maincpu")->base();
- UINT8 *tmp = auto_alloc_array(machine(), UINT8, length);
+ std::unique_ptr<UINT8[]> tmp = std::make_unique<UINT8[]>(length);
int i;
// decrypt the program ROM
@@ -283,7 +283,7 @@ void igs017_state::decrypt_program_rom(int mask, int a7, int a6, int a5, int a4,
}
}
- memcpy(tmp,rom,length);
+ memcpy(tmp.get(),rom,length);
// address lines swap
for (i = 0;i < length;i++)
@@ -347,11 +347,11 @@ void igs017_state::tjsb_decrypt_sprites()
{
int length = memregion("sprites")->bytes();
UINT8 *rom = memregion("sprites")->base();
- UINT8 *tmp = auto_alloc_array(machine(), UINT8, length);
+ std::unique_ptr<UINT8[]> tmp = std::make_unique<UINT8[]>(length);
int i, addr;
// address lines swap
- memcpy(tmp, rom, length);
+ memcpy(tmp.get(), rom, length);
for (i = 0; i < length; i++)
{
addr = (i & ~0xff) | BITSWAP8(i,7,6,5,2,1,4,3,0);
@@ -739,11 +739,11 @@ void igs017_state::lhzb2_decrypt_sprites()
{
int length = memregion("sprites")->bytes();
UINT8 *rom = memregion("sprites")->base();
- UINT8 *tmp = auto_alloc_array(machine(), UINT8, length);
+ std::unique_ptr<UINT8[]> tmp = std::make_unique<UINT8[]>(length);
int i, addr;
// address lines swap
- memcpy(tmp, rom, length);
+ memcpy(tmp.get(), rom, length);
for (i = 0; i < length; i++)
{
addr = (i & ~0xffff) | BITSWAP16(i,15,14,13,6,7,10,9,8,11,12,5,4,3,2,1,0);
@@ -1053,11 +1053,11 @@ void igs017_state::spkrform_decrypt_sprites()
{
int length = memregion("sprites")->bytes();
UINT8 *rom = memregion("sprites")->base();
- UINT8 *tmp = auto_alloc_array(machine(), UINT8, length);
+ std::unique_ptr<UINT8[]> tmp = std::make_unique<UINT8[]>(length);
int i, addr;
// address lines swap
- memcpy(tmp, rom, length);
+ memcpy(tmp.get(), rom, length);
for (i = 0; i < length; i++)
{
if (i & 0x80000)
@@ -1177,8 +1177,8 @@ void igs017_state::mgcs_igs029_run()
{
case 0x01:
m_oki->set_bank_base((data & 0x10) ? 0x40000 : 0);
- coin_counter_w(machine(), 0, (~data) & 0x20); // coin in
- coin_counter_w(machine(), 1, (~data) & 0x40); // coin out
+ machine().bookkeeping().coin_counter_w(0, (~data) & 0x20); // coin in
+ machine().bookkeeping().coin_counter_w(1, (~data) & 0x40); // coin out
// popmessage("PORT1 %02X", data);
@@ -1456,7 +1456,7 @@ WRITE16_MEMBER(igs017_state::sdmg2_magic_w)
if (ACCESSING_BITS_0_7)
{
m_input_select = data & 0x1f;
- coin_counter_w(machine(), 0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
// coin out data & 0x40
m_hopper = data & 0x80;
}
@@ -1537,7 +1537,7 @@ WRITE16_MEMBER(igs017_state::mgdha_magic_w)
if (ACCESSING_BITS_0_7)
{
// coin out data & 0x40
- coin_counter_w(machine(), 0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
}
if ( data & ~0xc0 )
@@ -1628,13 +1628,13 @@ WRITE8_MEMBER(igs017_state::tjsb_output_w)
switch(m_input_select)
{
case 0x00:
- coin_counter_w(machine(), 0, data & 0x80); // coin in
+ machine().bookkeeping().coin_counter_w(0, data & 0x80); // coin in
if (!(data & ~0x80))
return;
break;
case 0x01:
- coin_counter_w(machine(), 1, data & 0x01); // coin out
+ machine().bookkeeping().coin_counter_w(1, data & 0x01); // coin out
if (!(data & ~0x01))
return;
break;
@@ -2101,8 +2101,8 @@ WRITE16_MEMBER(igs017_state::lhzb2a_input_select_w)
{
m_input_select = data & 0x1f; // keys
m_hopper = data & 0x20; // hopper motor
- coin_counter_w(machine(), 1, data & 0x40); // coin out counter
- coin_counter_w(machine(), 0, data & 0x80); // coin in counter
+ machine().bookkeeping().coin_counter_w(1, data & 0x40); // coin out counter
+ machine().bookkeeping().coin_counter_w(0, data & 0x80); // coin in counter
}
if (ACCESSING_BITS_8_15)
{
@@ -2150,8 +2150,8 @@ WRITE16_MEMBER(igs017_state::slqz2_magic_w)
m_oki->set_bank_base((data & 0x01) ? 0x40000 : 0);
// m_hopper = data & 0x20; // hopper motor
-// coin_counter_w(machine(), 1, data & 0x40); // coin out counter
- coin_counter_w(machine(), 0, data & 0x80); // coin in counter
+// machine().bookkeeping().coin_counter_w(1, data & 0x40); // coin out counter
+ machine().bookkeeping().coin_counter_w(0, data & 0x80); // coin in counter
if ( data & 0x7e )
logerror("%s: warning, unknown bits written in oki bank = %04x\n", machine().describe_context(), data);
diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp
index d5a0d2e5e3e..4a1ed126384 100644
--- a/src/mame/drivers/igspoker.cpp
+++ b/src/mame/drivers/igspoker.cpp
@@ -242,12 +242,12 @@ void igspoker_state::show_out()
WRITE8_MEMBER(igspoker_state::igs_nmi_and_coins_w)
{
- coin_counter_w(machine(), 0, data & 0x01); // coin_a
- coin_counter_w(machine(), 1, data & 0x04); // coin_c
- coin_counter_w(machine(), 2, data & 0x08); // key in
- coin_counter_w(machine(), 3, data & 0x10); // coin m_out mech
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); // coin_a
+ machine().bookkeeping().coin_counter_w(1, data & 0x04); // coin_c
+ machine().bookkeeping().coin_counter_w(2, data & 0x08); // key in
+ machine().bookkeeping().coin_counter_w(3, data & 0x10); // coin m_out mech
- set_led_status(machine(), 6, data & 0x20); // led for coin m_out / m_hopper active
+ output().set_led_value(6, data & 0x20); // led for coin m_out / m_hopper active
m_nmi_enable = data & 0x80; // nmi enable?
#if VERBOSE
@@ -285,12 +285,12 @@ WRITE8_MEMBER(igspoker_state::igs_lamps_w)
---x ---- Hold5 lamp.
xx-- ---- one pulse once bet amount allows start.
*/
- output_set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 - HOLD 1 */
- output_set_lamp_value(2, (data >> 5) & 1); /* Lamp 2 - HOLD 2 */
- output_set_lamp_value(3, (data >> 4) & 1); /* Lamp 3 - HOLD 3 */
- output_set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
- output_set_lamp_value(5, (data >> 2) & 1); /* Lamp 5 - HOLD 5 */
- output_set_lamp_value(6, (data & 1)); /* Lamp 6 - START */
+ output().set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 - HOLD 1 */
+ output().set_lamp_value(2, (data >> 5) & 1); /* Lamp 2 - HOLD 2 */
+ output().set_lamp_value(3, (data >> 4) & 1); /* Lamp 3 - HOLD 3 */
+ output().set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
+ output().set_lamp_value(5, (data >> 2) & 1); /* Lamp 5 - HOLD 5 */
+ output().set_lamp_value(6, (data & 1)); /* Lamp 6 - START */
m_hopper = (~data)& 0x80;
@@ -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/ikki.cpp b/src/mame/drivers/ikki.cpp
index 8b64a62f80f..3b289da1a2f 100644
--- a/src/mame/drivers/ikki.cpp
+++ b/src/mame/drivers/ikki.cpp
@@ -35,8 +35,8 @@ READ8_MEMBER(ikki_state::ikki_e000_r)
WRITE8_MEMBER(ikki_state::ikki_coin_counters)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
/*************************************
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/imolagp.cpp b/src/mame/drivers/imolagp.cpp
index 49ae5f3d8b4..5de4ed28812 100644
--- a/src/mame/drivers/imolagp.cpp
+++ b/src/mame/drivers/imolagp.cpp
@@ -262,7 +262,7 @@ WRITE8_MEMBER(imolagp_state::imola_led_board_w)
static const UINT8 ls48_map[16] =
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 };
- output_set_digit_value(offset, ls48_map[data & 0x0f]);
+ output().set_digit_value(offset, ls48_map[data & 0x0f]);
/*
score: 0, 1, 2, 3
time: 4, 5
diff --git a/src/mame/drivers/inder.cpp b/src/mame/drivers/inder.cpp
index aab3d2e7eb4..f0dea109f11 100644
--- a/src/mame/drivers/inder.cpp
+++ b/src/mame/drivers/inder.cpp
@@ -1187,7 +1187,7 @@ WRITE8_MEMBER( inder_state::disp_w )
{
offset = (offset >> 3) & 7;
for (i = 0; i < 5; i++)
- output_set_digit_value(i*10+offset, m_segment[i]);
+ output().set_digit_value(i*10+offset, m_segment[i]);
}
}
@@ -1219,7 +1219,7 @@ WRITE8_MEMBER( inder_state::ppi64c_w )
{
if ((m_game==1) && (i == 4)) // mundial,clown,250cc,atleta have credit and ball displays swapped
data ^= 4;
- output_set_digit_value(i*10+data, m_segment[i]);
+ output().set_digit_value(i*10+data, m_segment[i]);
}
}
}
diff --git a/src/mame/drivers/ip20.cpp b/src/mame/drivers/indigo.cpp
index f7f727e51ea..64a3a1c1c01 100644
--- a/src/mame/drivers/ip20.cpp
+++ b/src/mame/drivers/indigo.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Ryan Holtz
/*********************************************************************\
*
-* SGI IP20 IRIS Indigo workstation
+* SGI Indigo workstation
*
* Skeleton Driver
*
@@ -20,6 +20,7 @@
#include "emu.h"
#include "cpu/mips/mips3.h"
+#include "cpu/mips/r3000.h"
#include "machine/8530scc.h"
#include "machine/sgi.h"
#include "machine/eepromser.h"
@@ -27,25 +28,7 @@
#include "bus/scsi/scsicd.h"
#include "machine/wd33c93.h"
-struct HPC_t
-{
- UINT8 nMiscStatus;
- UINT32 nParBufPtr;
- UINT32 nLocalIOReg0Mask;
- UINT32 nLocalIOReg1Mask;
- UINT32 nVMEIntMask0;
- UINT32 nVMEIntMask1;
- UINT32 nSCSI0Descriptor;
- UINT32 nSCSI0DMACtrl;
-};
-
-struct ip20_RTC_t
-{
- UINT8 nRAM[32];
- UINT8 nTemp;
-};
-
-class ip20_state : public driver_device
+class indigo_state : public driver_device
{
public:
enum
@@ -53,32 +36,55 @@ public:
TIMER_RTC
};
- ip20_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_wd33c93(*this, "wd33c93"),
- m_scc(*this, "scc"),
- m_eeprom(*this, "eeprom"),
- m_maincpu(*this, "maincpu")
+ indigo_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_wd33c93(*this, "wd33c93")
+ , m_scc(*this, "scc")
+ , m_eeprom(*this, "eeprom")
{
}
- HPC_t m_HPC;
- ip20_RTC_t m_RTC;
DECLARE_READ32_MEMBER(hpc_r);
DECLARE_WRITE32_MEMBER(hpc_w);
DECLARE_READ32_MEMBER(int_r);
DECLARE_WRITE32_MEMBER(int_w);
DECLARE_WRITE_LINE_MEMBER(scsi_irq);
- DECLARE_DRIVER_INIT(ip204415);
+
virtual void machine_start() override;
virtual void video_start() override;
- UINT32 screen_update_ip204415(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_CALLBACK_MEMBER(ip20_timer_rtc);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+private:
+ struct hpc_t
+ {
+ UINT8 m_misc_status;
+ UINT32 m_parbuf_ptr;
+ UINT32 m_local_ioreg0_mask;
+ UINT32 m_local_ioreg1_mask;
+ UINT32 m_vme_intmask0;
+ UINT32 m_vme_intmask1;
+ UINT32 m_scsi0_descriptor;
+ UINT32 m_scsi0_dma_ctrl;
+ };
+
+ struct rtc_t
+ {
+ UINT8 nRAM[32];
+ };
+
+ required_device<cpu_device> m_maincpu;
required_device<wd33c93_device> m_wd33c93;
required_device<scc8530_t> m_scc;
required_device<eeprom_serial_93cxx_device> m_eeprom;
+
+ hpc_t m_hpc;
+ rtc_t m_rtc;
+
+ void indigo_timer_rtc();
+
inline void ATTR_PRINTF(3,4) verboselog(int n_level, const char *s_fmt, ... );
- required_device<cpu_device> m_maincpu;
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
@@ -87,7 +93,7 @@ protected:
#define VERBOSE_LEVEL ( 2 )
-inline void ATTR_PRINTF(3,4) ip20_state::verboselog(int n_level, const char *s_fmt, ... )
+inline void ATTR_PRINTF(3,4) indigo_state::verboselog(int n_level, const char *s_fmt, ... )
{
if( VERBOSE_LEVEL >= n_level )
{
@@ -100,33 +106,33 @@ inline void ATTR_PRINTF(3,4) ip20_state::verboselog(int n_level, const char *s_f
}
}
-void ip20_state::video_start()
+void indigo_state::video_start()
{
}
-UINT32 ip20_state::screen_update_ip204415(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 indigo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
-#define RTC_DAYOFWEEK m_RTC.nRAM[0x0e]
-#define RTC_YEAR m_RTC.nRAM[0x0b]
-#define RTC_MONTH m_RTC.nRAM[0x0a]
-#define RTC_DAY m_RTC.nRAM[0x09]
-#define RTC_HOUR m_RTC.nRAM[0x08]
-#define RTC_MINUTE m_RTC.nRAM[0x07]
-#define RTC_SECOND m_RTC.nRAM[0x06]
-#define RTC_HUNDREDTH m_RTC.nRAM[0x05]
+#define RTC_DAYOFWEEK m_rtc.nRAM[0x0e]
+#define RTC_YEAR m_rtc.nRAM[0x0b]
+#define RTC_MONTH m_rtc.nRAM[0x0a]
+#define RTC_DAY m_rtc.nRAM[0x09]
+#define RTC_HOUR m_rtc.nRAM[0x08]
+#define RTC_MINUTE m_rtc.nRAM[0x07]
+#define RTC_SECOND m_rtc.nRAM[0x06]
+#define RTC_HUNDREDTH m_rtc.nRAM[0x05]
-READ32_MEMBER(ip20_state::hpc_r)
+READ32_MEMBER(indigo_state::hpc_r)
{
offset <<= 2;
if( offset >= 0x0e00 && offset <= 0x0e7c )
{
- verboselog(2, "RTC RAM[0x%02x] Read: %02x\n", ( offset - 0xe00 ) >> 2, m_RTC.nRAM[ ( offset - 0xe00 ) >> 2 ] );
- return m_RTC.nRAM[ ( offset - 0xe00 ) >> 2 ];
+ verboselog(2, "RTC RAM[0x%02x] Read: %02x\n", ( offset - 0xe00 ) >> 2, m_rtc.nRAM[ ( offset - 0xe00 ) >> 2 ] );
+ return m_rtc.nRAM[ ( offset - 0xe00 ) >> 2 ];
}
switch( offset )
{
@@ -134,8 +140,8 @@ READ32_MEMBER(ip20_state::hpc_r)
verboselog(2, "HPC Unknown Read: %08x (%08x) (returning 0x000000a5 as kludge)\n", 0x1fb80000 + offset, mem_mask );
return 0x0000a500;
case 0x00ac:
- verboselog(2, "HPC Parallel Buffer Pointer Read: %08x (%08x)\n", m_HPC.nParBufPtr, mem_mask );
- return m_HPC.nParBufPtr;
+ verboselog(2, "HPC Parallel Buffer Pointer Read: %08x (%08x)\n", m_hpc.m_parbuf_ptr, mem_mask );
+ return m_hpc.m_parbuf_ptr;
case 0x00c0:
verboselog(2, "HPC Endianness Read: %08x (%08x)\n", 0x0000001f, mem_mask );
return 0x0000001f;
@@ -158,23 +164,23 @@ READ32_MEMBER(ip20_state::hpc_r)
return 0;
}
case 0x01b0:
- verboselog(2, "HPC Misc. Status Read: %08x (%08x)\n", m_HPC.nMiscStatus, mem_mask );
- return m_HPC.nMiscStatus;
+ verboselog(2, "HPC Misc. Status Read: %08x (%08x)\n", m_hpc.m_misc_status, mem_mask );
+ return m_hpc.m_misc_status;
case 0x01bc:
// verboselog(machine, 2, "HPC CPU Serial EEPROM Read\n" );
return m_eeprom->do_read() << 4;
case 0x01c4:
- verboselog(2, "HPC Local IO Register 0 Mask Read: %08x (%08x)\n", m_HPC.nLocalIOReg0Mask, mem_mask );
- return m_HPC.nLocalIOReg0Mask;
+ verboselog(2, "HPC Local IO Register 0 Mask Read: %08x (%08x)\n", m_hpc.m_local_ioreg0_mask, mem_mask );
+ return m_hpc.m_local_ioreg0_mask;
case 0x01cc:
- verboselog(2, "HPC Local IO Register 1 Mask Read: %08x (%08x)\n", m_HPC.nLocalIOReg0Mask, mem_mask );
- return m_HPC.nLocalIOReg1Mask;
+ verboselog(2, "HPC Local IO Register 1 Mask Read: %08x (%08x)\n", m_hpc.m_local_ioreg1_mask, mem_mask );
+ return m_hpc.m_local_ioreg1_mask;
case 0x01d4:
- verboselog(2, "HPC VME Interrupt Mask 0 Read: %08x (%08x)\n", m_HPC.nLocalIOReg0Mask, mem_mask );
- return m_HPC.nVMEIntMask0;
+ verboselog(2, "HPC VME Interrupt Mask 0 Read: %08x (%08x)\n", m_hpc.m_vme_intmask0, mem_mask );
+ return m_hpc.m_vme_intmask0;
case 0x01d8:
- verboselog(2, "HPC VME Interrupt Mask 1 Read: %08x (%08x)\n", m_HPC.nLocalIOReg0Mask, mem_mask );
- return m_HPC.nVMEIntMask1;
+ verboselog(2, "HPC VME Interrupt Mask 1 Read: %08x (%08x)\n", m_hpc.m_vme_intmask1, mem_mask );
+ return m_hpc.m_vme_intmask1;
case 0x0d00:
verboselog(2, "HPC DUART0 Channel B Control Read\n" );
// return 0x00000004;
@@ -232,27 +238,27 @@ READ32_MEMBER(ip20_state::hpc_r)
return 0;
}
-WRITE32_MEMBER(ip20_state::hpc_w)
+WRITE32_MEMBER(indigo_state::hpc_w)
{
offset <<= 2;
if( offset >= 0x0e00 && offset <= 0x0e7c )
{
verboselog(2, "RTC RAM[0x%02x] Write: %02x\n", ( offset - 0xe00 ) >> 2, data & 0x000000ff );
- m_RTC.nRAM[ ( offset - 0xe00 ) >> 2 ] = data & 0x000000ff;
+ m_rtc.nRAM[ ( offset - 0xe00 ) >> 2 ] = data & 0x000000ff;
switch( ( offset - 0xe00 ) >> 2 )
{
case 0:
break;
case 4:
- if( !( m_RTC.nRAM[0x00] & 0x80 ) )
+ if( !( m_rtc.nRAM[0x00] & 0x80 ) )
{
if( data & 0x80 )
{
- m_RTC.nRAM[0x19] = m_RTC.nRAM[0x06]; //RTC_SECOND;
- m_RTC.nRAM[0x1a] = m_RTC.nRAM[0x07]; //RTC_MINUTE;
- m_RTC.nRAM[0x1b] = m_RTC.nRAM[0x08]; //RTC_HOUR;
- m_RTC.nRAM[0x1c] = m_RTC.nRAM[0x09]; //RTC_DAY;
- m_RTC.nRAM[0x1d] = m_RTC.nRAM[0x0a]; //RTC_MONTH;
+ m_rtc.nRAM[0x19] = m_rtc.nRAM[0x06]; //RTC_SECOND;
+ m_rtc.nRAM[0x1a] = m_rtc.nRAM[0x07]; //RTC_MINUTE;
+ m_rtc.nRAM[0x1b] = m_rtc.nRAM[0x08]; //RTC_HOUR;
+ m_rtc.nRAM[0x1c] = m_rtc.nRAM[0x09]; //RTC_DAY;
+ m_rtc.nRAM[0x1d] = m_rtc.nRAM[0x0a]; //RTC_MONTH;
}
}
break;
@@ -262,11 +268,11 @@ WRITE32_MEMBER(ip20_state::hpc_w)
switch( offset )
{
case 0x0090: // SCSI0 next descriptor pointer
- m_HPC.nSCSI0Descriptor = data;
+ m_hpc.m_scsi0_descriptor = data;
break;
case 0x0094: // SCSI0 control flags
- m_HPC.nSCSI0DMACtrl = data;
+ m_hpc.m_scsi0_dma_ctrl = data;
#if 0
if (data & 0x80)
{
@@ -275,10 +281,10 @@ WRITE32_MEMBER(ip20_state::hpc_w)
osd_printf_info("DMA activated for SCSI0\n");
osd_printf_info("Descriptor block:\n");
osd_printf_info("CTL: %08x BUFPTR: %08x DESCPTR %08x\n",
- program_read_dword(m_HPC.nSCSI0Descriptor), program_read_dword(m_HPC.nSCSI0Descriptor+4),
- program_read_dword(m_HPC.nSCSI0Descriptor+8));
+ program_read_dword(m_hpc.m_scsi0_descriptor), program_read_dword(m_hpc.m_scsi0_descriptor+4),
+ program_read_dword(m_hpc.m_scsi0_descriptor+8));
- next = program_read_dword(m_HPC.nSCSI0Descriptor+8);
+ next = program_read_dword(m_hpc.m_scsi0_descriptor+8);
osd_printf_info("CTL: %08x BUFPTR: %08x DESCPTR %08x\n",
program_read_dword(next), program_read_dword(next+4),
program_read_dword(next+8));
@@ -288,7 +294,7 @@ WRITE32_MEMBER(ip20_state::hpc_w)
case 0x00ac:
verboselog(2, "HPC Parallel Buffer Pointer Write: %08x (%08x)\n", data, mem_mask );
- m_HPC.nParBufPtr = data;
+ m_hpc.m_parbuf_ptr = data;
break;
case 0x0120:
if (ACCESSING_BITS_8_15)
@@ -338,7 +344,7 @@ WRITE32_MEMBER(ip20_state::hpc_w)
{
verboselog(2, " SRAM size: 8K\n" );
}
- m_HPC.nMiscStatus = data;
+ m_hpc.m_misc_status = data;
break;
case 0x01bc:
// verboselog(machine, 2, "HPC CPU Serial EEPROM Write: %08x (%08x)\n", data, mem_mask );
@@ -352,19 +358,19 @@ WRITE32_MEMBER(ip20_state::hpc_w)
break;
case 0x01c4:
verboselog(2, "HPC Local IO Register 0 Mask Write: %08x (%08x)\n", data, mem_mask );
- m_HPC.nLocalIOReg0Mask = data;
+ m_hpc.m_local_ioreg0_mask = data;
break;
case 0x01cc:
verboselog(2, "HPC Local IO Register 1 Mask Write: %08x (%08x)\n", data, mem_mask );
- m_HPC.nLocalIOReg1Mask = data;
+ m_hpc.m_local_ioreg1_mask = data;
break;
case 0x01d4:
verboselog(2, "HPC VME Interrupt Mask 0 Write: %08x (%08x)\n", data, mem_mask );
- m_HPC.nVMEIntMask0 = data;
+ m_hpc.m_vme_intmask0 = data;
break;
case 0x01d8:
verboselog(2, "HPC VME Interrupt Mask 1 Write: %08x (%08x)\n", data, mem_mask );
- m_HPC.nVMEIntMask1 = data;
+ m_hpc.m_vme_intmask1 = data;
break;
case 0x0d00:
verboselog(2, "HPC DUART0 Channel B Control Write: %08x (%08x)\n", data, mem_mask );
@@ -441,18 +447,18 @@ WRITE32_MEMBER(ip20_state::hpc_w)
}
// INT/INT2/INT3 interrupt controllers
-READ32_MEMBER(ip20_state::int_r)
+READ32_MEMBER(indigo_state::int_r)
{
osd_printf_info("INT: read @ ofs %x (mask %x) (PC=%x)\n", offset, mem_mask, space.device().safe_pc());
return 0;
}
-WRITE32_MEMBER(ip20_state::int_w)
+WRITE32_MEMBER(indigo_state::int_w)
{
osd_printf_info("INT: write %x to ofs %x (mask %x) (PC=%x)\n", data, offset, mem_mask, space.device().safe_pc());
}
-static ADDRESS_MAP_START( ip204415_map, AS_PROGRAM, 32, ip20_state )
+static ADDRESS_MAP_START( indigo_map, AS_PROGRAM, 32, indigo_state )
AM_RANGE( 0x00000000, 0x001fffff ) AM_RAM AM_SHARE("share10")
AM_RANGE( 0x08000000, 0x08ffffff ) AM_RAM AM_SHARE("share5")
AM_RANGE( 0x09000000, 0x097fffff ) AM_RAM AM_SHARE("share6")
@@ -460,10 +466,8 @@ static ADDRESS_MAP_START( ip204415_map, AS_PROGRAM, 32, ip20_state )
AM_RANGE( 0x0c000000, 0x0c7fffff ) AM_RAM AM_SHARE("share8")
AM_RANGE( 0x10000000, 0x107fffff ) AM_RAM AM_SHARE("share9")
AM_RANGE( 0x18000000, 0x187fffff ) AM_RAM AM_SHARE("share1")
- AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
AM_RANGE( 0x1fb80000, 0x1fb8ffff ) AM_READWRITE(hpc_r, hpc_w )
AM_RANGE( 0x1fbd9000, 0x1fbd903f ) AM_READWRITE(int_r, int_w )
- AM_RANGE( 0x1fc00000, 0x1fc7ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
AM_RANGE( 0x80000000, 0x801fffff ) AM_RAM AM_SHARE("share10")
AM_RANGE( 0x88000000, 0x88ffffff ) AM_RAM AM_SHARE("share5")
AM_RANGE( 0xa0000000, 0xa01fffff ) AM_RAM AM_SHARE("share10")
@@ -473,77 +477,80 @@ static ADDRESS_MAP_START( ip204415_map, AS_PROGRAM, 32, ip20_state )
AM_RANGE( 0xac000000, 0xac7fffff ) AM_RAM AM_SHARE("share8")
AM_RANGE( 0xb0000000, 0xb07fffff ) AM_RAM AM_SHARE("share9")
AM_RANGE( 0xb8000000, 0xb87fffff ) AM_RAM AM_SHARE("share1")
- AM_RANGE( 0xbfa00000, 0xbfa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
AM_RANGE( 0xbfb80000, 0xbfb8ffff ) AM_READWRITE(hpc_r, hpc_w )
AM_RANGE( 0xbfbd9000, 0xbfbd903f ) AM_READWRITE(int_r, int_w )
- AM_RANGE( 0xbfc00000, 0xbfc7ffff ) AM_ROM AM_SHARE("share2") /* BIOS Mirror */
ADDRESS_MAP_END
-WRITE_LINE_MEMBER(ip20_state::scsi_irq)
-{
-}
+static ADDRESS_MAP_START( indigo3k_map, AS_PROGRAM, 32, indigo_state )
+ AM_IMPORT_FROM( indigo_map )
+ AM_RANGE( 0x1fc00000, 0x1fc3ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
+ AM_RANGE( 0xbfc00000, 0xbfc3ffff ) AM_ROM AM_SHARE("share2") /* BIOS Mirror */
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( indigo4k_map, AS_PROGRAM, 32, indigo_state )
+ AM_IMPORT_FROM( indigo_map )
+ AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
+ AM_RANGE( 0x1fc00000, 0x1fc7ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 )
+ AM_RANGE( 0xbfa00000, 0xbfa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write )
+ AM_RANGE( 0xbfc00000, 0xbfc7ffff ) AM_ROM AM_SHARE("share2") /* BIOS Mirror */
+ADDRESS_MAP_END
-DRIVER_INIT_MEMBER(ip20_state,ip204415)
+WRITE_LINE_MEMBER(indigo_state::scsi_irq)
{
}
-void ip20_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void indigo_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
switch (id)
{
case TIMER_RTC:
- ip20_timer_rtc(ptr, param);
+ indigo_timer_rtc();
break;
default:
- assert_always(FALSE, "Unknown id in ip20_state::device_timer");
+ assert_always(FALSE, "Unknown id in indigo_state::device_timer");
}
}
-TIMER_CALLBACK_MEMBER(ip20_state::ip20_timer_rtc)
+void indigo_state::indigo_timer_rtc()
{
// update RTC every 10 milliseconds
- m_RTC.nTemp++;
- if (m_RTC.nTemp >= 10)
- {
- m_RTC.nTemp = 0;
- RTC_HUNDREDTH++;
+ RTC_HUNDREDTH++;
- if( ( RTC_HUNDREDTH & 0x0f ) == 0x0a )
+ if( ( RTC_HUNDREDTH & 0x0f ) == 0x0a )
+ {
+ RTC_HUNDREDTH -= 0x0a;
+ RTC_HUNDREDTH += 0x10;
+ if( ( RTC_HUNDREDTH & 0xa0 ) == 0xa0 )
{
- RTC_HUNDREDTH -= 0x0a;
- RTC_HUNDREDTH += 0x10;
- if( ( RTC_HUNDREDTH & 0xa0 ) == 0xa0 )
- {
- RTC_HUNDREDTH = 0;
- RTC_SECOND++;
+ RTC_HUNDREDTH = 0;
+ RTC_SECOND++;
- if( ( RTC_SECOND & 0x0f ) == 0x0a )
+ if( ( RTC_SECOND & 0x0f ) == 0x0a )
+ {
+ RTC_SECOND -= 0x0a;
+ RTC_SECOND += 0x10;
+ if( RTC_SECOND == 0x60 )
{
- RTC_SECOND -= 0x0a;
- RTC_SECOND += 0x10;
- if( RTC_SECOND == 0x60 )
- {
- RTC_SECOND = 0;
- RTC_MINUTE++;
+ RTC_SECOND = 0;
+ RTC_MINUTE++;
- if( ( RTC_MINUTE & 0x0f ) == 0x0a )
+ if( ( RTC_MINUTE & 0x0f ) == 0x0a )
+ {
+ RTC_MINUTE -= 0x0a;
+ RTC_MINUTE += 0x10;
+ if( RTC_MINUTE == 0x60 )
{
- RTC_MINUTE -= 0x0a;
- RTC_MINUTE += 0x10;
- if( RTC_MINUTE == 0x60 )
- {
- RTC_MINUTE = 0;
- RTC_HOUR++;
+ RTC_MINUTE = 0;
+ RTC_HOUR++;
- if( ( RTC_HOUR & 0x0f ) == 0x0a )
+ if( ( RTC_HOUR & 0x0f ) == 0x0a )
+ {
+ RTC_HOUR -= 0x0a;
+ RTC_HOUR += 0x10;
+ if( RTC_HOUR == 0x24 )
{
- RTC_HOUR -= 0x0a;
- RTC_HOUR += 0x10;
- if( RTC_HOUR == 0x24 )
- {
- RTC_HOUR = 0;
- RTC_DAY++;
- }
+ RTC_HOUR = 0;
+ RTC_DAY++;
}
}
}
@@ -553,46 +560,35 @@ TIMER_CALLBACK_MEMBER(ip20_state::ip20_timer_rtc)
}
}
- timer_set(attotime::from_msec(1), TIMER_RTC);
+ timer_set(attotime::from_msec(10), TIMER_RTC);
}
-void ip20_state::machine_start()
+void indigo_state::machine_start()
{
- m_HPC.nMiscStatus = 0;
- m_HPC.nParBufPtr = 0;
- m_HPC.nLocalIOReg0Mask = 0;
- m_HPC.nLocalIOReg1Mask = 0;
- m_HPC.nVMEIntMask0 = 0;
- m_HPC.nVMEIntMask1 = 0;
-
- m_RTC.nTemp = 0;
-
- timer_set(attotime::from_msec(1), TIMER_RTC);
+ m_hpc.m_misc_status = 0;
+ m_hpc.m_parbuf_ptr = 0;
+ m_hpc.m_local_ioreg0_mask = 0;
+ m_hpc.m_local_ioreg1_mask = 0;
+ m_hpc.m_vme_intmask0 = 0;
+ m_hpc.m_vme_intmask1 = 0;
+
+ timer_set(attotime::from_msec(10), TIMER_RTC);
}
-static INPUT_PORTS_START( ip204415 )
+static INPUT_PORTS_START( indigo )
PORT_START("unused")
PORT_BIT ( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-#if 0
-static const mips3_config config =
-{
- 32768, /* code cache size */
- 32768 /* data cache size */
-};
-#endif
-
static MACHINE_CONFIG_FRAGMENT( cdrom_config )
MCFG_DEVICE_MODIFY( "cdda" )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "^^^^mono", 1.0)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( ip204415, ip20_state )
- MCFG_CPU_ADD( "maincpu", R4600BE, 50000000*3 )
- MCFG_CPU_CONFIG( config )
- MCFG_CPU_PROGRAM_MAP( ip204415_map)
-
+static MACHINE_CONFIG_START( indigo3k, indigo_state )
+ MCFG_CPU_ADD("maincpu", R3041, 33000000)
+ MCFG_R3000_ENDIANNESS(ENDIANNESS_BIG)
+ MCFG_CPU_PROGRAM_MAP(indigo3k_map)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -600,33 +596,48 @@ static MACHINE_CONFIG_START( ip204415, ip20_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(800, 600)
MCFG_SCREEN_VISIBLE_AREA(0, 799, 0, 599)
- MCFG_SCREEN_UPDATE_DRIVER(ip20_state, screen_update_ip204415)
+ MCFG_SCREEN_UPDATE_DRIVER(indigo_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 65536)
-
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DEVICE_ADD("scc", SCC8530, 7000000)
- MCFG_DEVICE_ADD("sgi_mc", SGI_MC, 0)
-
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_6)
MCFG_SLOT_OPTION_MACHINE_CONFIG("cdrom", cdrom_config)
MCFG_DEVICE_ADD("wd33c93", WD33C93, 0)
MCFG_LEGACY_SCSI_PORT("scsi")
- MCFG_WD33C93_IRQ_CB(WRITELINE(ip20_state, scsi_irq)) /* command completion IRQ */
+ MCFG_WD33C93_IRQ_CB(WRITELINE(indigo_state, scsi_irq)) /* command completion IRQ */
MCFG_EEPROM_SERIAL_93C56_ADD("eeprom")
MACHINE_CONFIG_END
-ROM_START( ip204415 )
+static MACHINE_CONFIG_DERIVED( indigo4k, indigo3k )
+ MCFG_CPU_REPLACE("maincpu", R4600BE, 150000000) // Should be R4400
+ MCFG_MIPS3_ICACHE_SIZE(32768)
+ MCFG_MIPS3_DCACHE_SIZE(32768)
+ MCFG_CPU_PROGRAM_MAP(indigo4k_map)
+
+ MCFG_DEVICE_ADD("sgi_mc", SGI_MC, 0)
+MACHINE_CONFIG_END
+
+ROM_START( indigo3k )
+ ROM_REGION( 0x40000, "user1", 0 )
+ ROM_SYSTEM_BIOS( 0, "401RevC", "SGI Version 4.0.1 Rev C LG1/GR2, Jul 9, 1992" ) // dumped over serial connection from boot monitor and swapped
+ ROMX_LOAD( "ip12prom.070-8088-xxx.u56", 0x000000, 0x040000, CRC(25ca912f) SHA1(94b3753d659bfe50b914445cef41290122f43880), ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(1) )
+ ROM_SYSTEM_BIOS( 1, "401RevD", "SGI Version 4.0.1 Rev D LG1/GR2, Mar 24, 1992" ) // dumped with EPROM programmer
+ ROMX_LOAD( "ip12prom.070-8088-002.u56", 0x000000, 0x040000, CRC(ea4329ef) SHA1(b7d67d0e30ae8836892f7170dd4757732a0a3fd6), ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(2) )
+ROM_END
+
+ROM_START( indigo4k )
ROM_REGION( 0x80000, "user1", 0 )
- ROM_LOAD( "ip204415.bin", 0x000000, 0x080000, CRC(940d960e) SHA1(596aba530b53a147985ff3f6f853471ce48c866c) )
+ ROM_LOAD( "ip20prom.070-8116-004.bin", 0x000000, 0x080000, CRC(940d960e) SHA1(596aba530b53a147985ff3f6f853471ce48c866c) )
ROM_END
-/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1993, ip204415, 0, 0, ip204415, ip204415, ip20_state, ip204415, "Silicon Graphics Inc", "IRIS Indigo (R4400, 150MHz)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
+COMP( 1991, indigo3k, 0, 0, indigo3k, indigo, driver_device, 0, "Silicon Graphics Inc", "IRIS Indigo (R3000, 33MHz)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1993, indigo4k, 0, 0, indigo4k, indigo, driver_device, 0, "Silicon Graphics Inc", "IRIS Indigo (R4400, 150MHz, Ver. 4.0.5D Rev A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/ip22.cpp b/src/mame/drivers/indy_indigo2.cpp
index 0dd2401dd54..9d76f45c753 100644
--- a/src/mame/drivers/ip22.cpp
+++ b/src/mame/drivers/indy_indigo2.cpp
@@ -161,8 +161,6 @@ public:
inline void ATTR_PRINTF(3,4) verboselog(int n_level, const char *s_fmt, ... );
void int3_raise_local0_irq(UINT8 source_mask);
void int3_lower_local0_irq(UINT8 source_mask);
- void int3_raise_local1_irq(UINT8 source_mask);
- void int3_lower_local1_irq(UINT8 source_mask);
void dump_chain(address_space &space, UINT32 ch_base);
void rtc_update();
diff --git a/src/mame/drivers/instruct.cpp b/src/mame/drivers/instruct.cpp
index d7ce729fa42..469203c59cc 100644
--- a/src/mame/drivers/instruct.cpp
+++ b/src/mame/drivers/instruct.cpp
@@ -90,7 +90,7 @@ private:
// flag led
WRITE_LINE_MEMBER( instruct_state::flag_w )
{
- output_set_value("led8", !state);
+ output().set_value("led8", !state);
}
// user port
@@ -100,7 +100,7 @@ WRITE8_MEMBER( instruct_state::port_w )
for (int i = 0; i < 8; i++)
{
sprintf(ledname,"led%d",i);
- output_set_value(ledname, !BIT(data, i));
+ output().set_value(ledname, !BIT(data, i));
}
}
@@ -119,7 +119,7 @@ WRITE8_MEMBER( instruct_state::portf8_w )
WRITE8_MEMBER( instruct_state::portf9_w )
{
if (m_valid_digit)
- output_set_digit_value(m_digit, data);
+ output().set_digit_value(m_digit, data);
m_valid_digit = false;
}
diff --git a/src/mame/drivers/iqblock.cpp b/src/mame/drivers/iqblock.cpp
index 0eca3938257..d5afe07ed01 100644
--- a/src/mame/drivers/iqblock.cpp
+++ b/src/mame/drivers/iqblock.cpp
@@ -103,7 +103,7 @@ WRITE8_MEMBER(iqblock_state::port_C_w)
m_videoenable = data & 0x20;
/* bit 6 is coin counter */
- coin_counter_w(machine(), 0,data & 0x40);
+ machine().bookkeeping().coin_counter_w(0,data & 0x40);
/* bit 7 could be a second coin counter, but coin 2 doesn't seem to work... */
}
diff --git a/src/mame/drivers/sgi_ip2.cpp b/src/mame/drivers/iris3130.cpp
index 4fd9aed5866..47d8c0fb9b1 100644
--- a/src/mame/drivers/sgi_ip2.cpp
+++ b/src/mame/drivers/iris3130.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Ryan Holtz
/****************************************************************************
- drivers/sgi_ip2.c
+ drivers/sgi_ip2.cpp
SGI IRIS 3130 skeleton driver with some meat on its bones
by Ryan Holtz
diff --git a/src/mame/drivers/iteagle.cpp b/src/mame/drivers/iteagle.cpp
index cf78f9966f1..2ff0a30f1bb 100644
--- a/src/mame/drivers/iteagle.cpp
+++ b/src/mame/drivers/iteagle.cpp
@@ -556,7 +556,7 @@ 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( 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, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", MACHINE_NOT_WORKING )
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 )
@@ -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, iteagle, 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, bbhcotw, 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/itech32.cpp b/src/mame/drivers/itech32.cpp
index f484f36f101..9e03b52af02 100644
--- a/src/mame/drivers/itech32.cpp
+++ b/src/mame/drivers/itech32.cpp
@@ -712,17 +712,17 @@ WRITE8_MEMBER(itech32_state::drivedge_portb_out)
/* bit 4 controls the ticket dispenser */
/* bit 5 controls the coin counter */
/* bit 6 controls the diagnostic sound LED */
- set_led_status(machine(), 1, data & 0x01);
- set_led_status(machine(), 2, data & 0x02);
- set_led_status(machine(), 3, data & 0x04);
+ output().set_led_value(1, data & 0x01);
+ output().set_led_value(2, data & 0x02);
+ output().set_led_value(3, data & 0x04);
machine().device<ticket_dispenser_device>("ticket")->write(machine().driver_data()->generic_space(), 0, (data & 0x10) << 3);
- coin_counter_w(machine(), 0, (data & 0x20) >> 5);
+ machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5);
}
WRITE_LINE_MEMBER(itech32_state::drivedge_turbo_light)
{
- set_led_status(machine(), 0, state);
+ output().set_led_value(0, state);
}
@@ -734,7 +734,7 @@ WRITE8_MEMBER(itech32_state::pia_portb_out)
/* bit 5 controls the coin counter */
/* bit 6 controls the diagnostic sound LED */
machine().device<ticket_dispenser_device>("ticket")->write(machine().driver_data()->generic_space(), 0, (data & 0x10) << 3);
- coin_counter_w(machine(), 0, (data & 0x20) >> 5);
+ machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5);
}
diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp
index f49d848514c..f18b3729752 100644
--- a/src/mame/drivers/itech8.cpp
+++ b/src/mame/drivers/itech8.cpp
@@ -749,7 +749,7 @@ WRITE8_MEMBER(itech8_state::pia_portb_out)
/* bit 6 controls the diagnostic sound LED */
m_pia_portb_data = data;
m_ticket->write(space, 0, (data & 0x10) << 3);
- coin_counter_w(machine(), 0, (data & 0x20) >> 5);
+ machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5);
}
@@ -763,7 +763,7 @@ WRITE8_MEMBER(itech8_state::ym2203_portb_out)
/* bit 7 controls the ticket dispenser */
m_pia_portb_data = data;
m_ticket->write(machine().driver_data()->generic_space(), 0, data & 0x80);
- coin_counter_w(machine(), 0, (data & 0x20) >> 5);
+ machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5);
}
@@ -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 58e42c5c4c1..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
@@ -121,8 +120,8 @@ WRITE8_MEMBER(jackal_state::jackal_rambank_w)
if (data & 0x04)
popmessage("jackal_rambank_w %02x", data);
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
m_spritebank = &rgn[((data & 0x08) << 13)];
m_rambank = &rgn[((data & 0x10) << 12)];
diff --git a/src/mame/drivers/jackie.cpp b/src/mame/drivers/jackie.cpp
index 71d5b4dd436..b1909466a64 100644
--- a/src/mame/drivers/jackie.cpp
+++ b/src/mame/drivers/jackie.cpp
@@ -318,12 +318,12 @@ WRITE8_MEMBER(jackie_state::unk_reg3_hi_w){ unk_reg_hi_w( offset, data, 2 ); }
WRITE8_MEMBER(jackie_state::nmi_and_coins_w)
{
- coin_counter_w(machine(), 0, data & 0x01); // coin_a
- coin_counter_w(machine(), 1, data & 0x04); // coin_c
- coin_counter_w(machine(), 2, data & 0x08); // key in
- coin_counter_w(machine(), 3, data & 0x10); // coin m_out mech
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); // coin_a
+ machine().bookkeeping().coin_counter_w(1, data & 0x04); // coin_c
+ machine().bookkeeping().coin_counter_w(2, data & 0x08); // key in
+ machine().bookkeeping().coin_counter_w(3, data & 0x10); // coin m_out mech
- set_led_status(machine(), 6, data & 0x20); // led for coin m_out / m_hopper active
+ output().set_led_value(6, data & 0x20); // led for coin m_out / m_hopper active
m_exp_bank = (data & 0x02) ? 1 : 0; // expram bank number
m_nmi_enable = data & 0x80; // nmi enable?
@@ -345,12 +345,12 @@ WRITE8_MEMBER(jackie_state::lamps_w)
---- -x-- Hold5 lamp.
---- ---x Start lamp.
*/
- output_set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 - HOLD 1 */
- output_set_lamp_value(2, (data >> 5) & 1); /* Lamp 2 - HOLD 2 */
- output_set_lamp_value(3, (data >> 4) & 1); /* Lamp 3 - HOLD 3 */
- output_set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
- output_set_lamp_value(5, (data >> 2) & 1); /* Lamp 5 - HOLD 5 */
- output_set_lamp_value(6, (data & 1)); /* Lamp 6 - START */
+ output().set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 - HOLD 1 */
+ output().set_lamp_value(2, (data >> 5) & 1); /* Lamp 2 - HOLD 2 */
+ output().set_lamp_value(3, (data >> 4) & 1); /* Lamp 3 - HOLD 3 */
+ output().set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
+ output().set_lamp_value(5, (data >> 2) & 1); /* Lamp 5 - HOLD 5 */
+ output().set_lamp_value(6, (data & 1)); /* Lamp 6 - START */
m_hopper = (~data)& 0x80;
@@ -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/jade.cpp b/src/mame/drivers/jade.cpp
index 0273972ef9a..38710c20bd8 100644
--- a/src/mame/drivers/jade.cpp
+++ b/src/mame/drivers/jade.cpp
@@ -34,7 +34,6 @@ public:
DECLARE_WRITE8_MEMBER(kbd_put);
DECLARE_READ8_MEMBER(keyin_r);
DECLARE_READ8_MEMBER(status_r);
- DECLARE_READ8_MEMBER(data_r);
private:
UINT8 m_term_data;
virtual void machine_reset() override;
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/jalmah.cpp b/src/mame/drivers/jalmah.cpp
index f088374501c..426aab1e010 100644
--- a/src/mame/drivers/jalmah.cpp
+++ b/src/mame/drivers/jalmah.cpp
@@ -37,7 +37,7 @@ TODO:
a match in particular circumstances because there's a write in the 94000-9bfff region;
-Massive clean-ups needed for the MCU snippet programs and the input-ports, also check if
the programs are actually into the m68k program itself (like hachamf/tdragon/ddealer);
--Video code could be optimized too (for example by calling the priority function only when
+-Video code could be optimized too (for example by calling the priority function only when
priority number is updated), might also need a merging with Jaleco Mega System 1/NMK16 drivers;
Notes (1st MCU ver.):
@@ -152,8 +152,8 @@ public:
optional_shared_ptr<UINT16> m_sc1_vram;
optional_shared_ptr<UINT16> m_sc2_vram;
required_shared_ptr<UINT16> m_sc3_vram;
- UINT16 *m_jm_scrollram;
- UINT16 *m_jm_vregs;
+ std::unique_ptr<UINT16[]>m_jm_scrollram;
+ std::unique_ptr<UINT16[]> m_jm_vregs;
UINT16 m_sc0bank;
UINT16 m_pri;
UINT8 m_sc0_prin;
@@ -336,8 +336,8 @@ void jalmah_state::video_start()
m_sc3_tilemap_2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jalmah_state::get_sc3_tile_info),this),tilemap_mapper_delegate(FUNC(jalmah_state::range2_8x8),this),8,8,128,64);
m_sc3_tilemap_3 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jalmah_state::get_sc3_tile_info),this),tilemap_mapper_delegate(FUNC(jalmah_state::range3_8x8),this),8,8,64,128);
- m_jm_scrollram = auto_alloc_array(machine(), UINT16, 0x80/2);
- m_jm_vregs = auto_alloc_array(machine(), UINT16, 0x40/2);
+ m_jm_scrollram = std::make_unique<UINT16[]>(0x80/2);
+ m_jm_vregs = std::make_unique<UINT16[]>(0x40/2);
m_sc0_tilemap_0->set_transparent_pen(15);
m_sc0_tilemap_1->set_transparent_pen(15);
@@ -365,8 +365,8 @@ VIDEO_START_MEMBER(jalmah_state,urashima)
m_sc0_tilemap_0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jalmah_state::get_sc0_tile_info),this),tilemap_mapper_delegate(FUNC(jalmah_state::range0_16x16),this),16,16,256,32);
m_sc3_tilemap_0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jalmah_state::get_sc3_tile_info),this),tilemap_mapper_delegate(FUNC(jalmah_state::range2_8x8),this),8,8,128,64);
- m_jm_scrollram = auto_alloc_array(machine(), UINT16, 0x80/2);
- m_jm_vregs = auto_alloc_array(machine(), UINT16, 0x40/2);
+ m_jm_scrollram = std::make_unique<UINT16[]>(0x80/2);
+ m_jm_vregs = std::make_unique<UINT16[]>(0x40/2);
m_sc0_tilemap_0->set_transparent_pen(15);
m_sc3_tilemap_0->set_transparent_pen(15);
@@ -452,7 +452,7 @@ void jalmah_state::draw_sc3_layer(screen_device &screen, bitmap_ind16 &bitmap, c
UINT32 jalmah_state::screen_update_jalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT16 *jm_scrollram = m_jm_scrollram;
+ UINT16 *jm_scrollram = m_jm_scrollram.get();
UINT8 cur_prin;
jalmah_priority_system();
@@ -512,7 +512,7 @@ UINT32 jalmah_state::screen_update_jalmah(screen_device &screen, bitmap_ind16 &b
UINT32 jalmah_state::screen_update_urashima(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT16 *jm_scrollram = m_jm_scrollram;
+ UINT16 *jm_scrollram = m_jm_scrollram.get();
/*this game doesn't use the RANGE register at all.*/
m_sc0_tilemap_0->set_scrollx(0, jm_scrollram[0]);
m_sc3_tilemap_0->set_scrollx(0, jm_scrollram[3]);
@@ -599,8 +599,8 @@ WRITE16_MEMBER(jalmah_state::jalmah_tilebank_w)
WRITE16_MEMBER(jalmah_state::jalmah_scroll_w)
{
- UINT16 *jm_scrollram = m_jm_scrollram;
- UINT16 *jm_vregs = m_jm_vregs;
+ UINT16 *jm_scrollram = m_jm_scrollram.get();
+ UINT16 *jm_vregs = m_jm_vregs.get();
//logerror("[%04x]<-%04x\n",(offset+0x10)*2,data);
switch(offset+(0x10))
{
@@ -655,8 +655,8 @@ WRITE16_MEMBER(jalmah_state::urashima_sc3_vram_w)
/*Urashima Mahjong uses a bigger (and mostly unused/wasted) video register ram.*/
WRITE16_MEMBER(jalmah_state::urashima_vregs_w)
{
- UINT16 *jm_scrollram = m_jm_scrollram;
- UINT16 *jm_vregs = m_jm_vregs;
+ UINT16 *jm_scrollram = m_jm_scrollram.get();
+ UINT16 *jm_vregs = m_jm_vregs.get();
//logerror("[%04x]<-%04x\n",(offset)*2,data);
switch(offset)
{
diff --git a/src/mame/drivers/jangou.cpp b/src/mame/drivers/jangou.cpp
index 7139164808b..a72c7c1a9b6 100644
--- a/src/mame/drivers/jangou.cpp
+++ b/src/mame/drivers/jangou.cpp
@@ -290,9 +290,9 @@ WRITE8_MEMBER(jangou_state::output_w)
---- ---x coin counter
*/
// printf("%02x\n", data);
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
// flip_screen_set(data & 0x04);
-// coin_lockout_w(machine(), 0, ~data & 0x20);
+// machine().bookkeeping().coin_lockout_w(0, ~data & 0x20);
}
READ8_MEMBER(jangou_state::input_mux_r)
diff --git a/src/mame/drivers/jankenmn.cpp b/src/mame/drivers/jankenmn.cpp
index fcdaee24841..f6182842d14 100644
--- a/src/mame/drivers/jankenmn.cpp
+++ b/src/mame/drivers/jankenmn.cpp
@@ -184,15 +184,15 @@ static const UINT8 led_map[16] = // 7748 IC?
WRITE8_MEMBER(jankenmn_state::lamps1_w)
{
// hand state: d0: rock, d1: scissors, d2: paper
- output_set_lamp_value(8, (data & 7) != 0);
- output_set_lamp_value(11, data & 1);
- output_set_lamp_value(12, data >> 1 & 1);
- output_set_lamp_value(9, data >> 2 & 1);
- output_set_lamp_value(10, (data & 6) != 0);
- output_set_lamp_value(13, (data & 3) != 0);
+ output().set_lamp_value(8, (data & 7) != 0);
+ output().set_lamp_value(11, data & 1);
+ output().set_lamp_value(12, data >> 1 & 1);
+ output().set_lamp_value(9, data >> 2 & 1);
+ output().set_lamp_value(10, (data & 6) != 0);
+ output().set_lamp_value(13, (data & 3) != 0);
// d4-d7: led7seg (remaining credits) right digit
- output_set_digit_value(1, led_map[data >> 4 & 0x0f]);
+ output().set_digit_value(1, led_map[data >> 4 & 0x0f]);
// d3: ? (only set if game is over)
}
@@ -200,36 +200,36 @@ WRITE8_MEMBER(jankenmn_state::lamps1_w)
WRITE8_MEMBER(jankenmn_state::lamps2_w)
{
// button LEDs: d1: paper, d2: scissors, d3: rock
- output_set_lamp_value(2, data >> 3 & 1);
- output_set_lamp_value(3, data >> 2 & 1);
- output_set_lamp_value(4, data >> 1 & 1);
+ output().set_lamp_value(2, data >> 3 & 1);
+ output().set_lamp_value(3, data >> 2 & 1);
+ output().set_lamp_value(4, data >> 1 & 1);
// lamps: d5: draw, d6: lose, d7: win
- output_set_lamp_value(5, data >> 6 & 1);
- output_set_lamp_value(6, data >> 5 & 1);
- output_set_lamp_value(7, data >> 7 & 1);
+ output().set_lamp_value(5, data >> 6 & 1);
+ output().set_lamp_value(6, data >> 5 & 1);
+ output().set_lamp_value(7, data >> 7 & 1);
// d4: payout error LED
- output_set_lamp_value(14, data >> 4 & 1);
+ output().set_lamp_value(14, data >> 4 & 1);
// d0: led7seg (remaining credits) left digit
- output_set_digit_value(0, led_map[data & 1]);
+ output().set_digit_value(0, led_map[data & 1]);
}
WRITE8_MEMBER(jankenmn_state::lamps3_w)
{
// d1: blue rotating lamp on top of cab
- output_set_lamp_value(15, data >> 1 & 1);
+ output().set_lamp_value(15, data >> 1 & 1);
// d2: payout (waits for hopper status)
- coin_counter_w(machine(), 2, data & 0x04);
+ machine().bookkeeping().coin_counter_w(2, data & 0x04);
// d3: right multiplier lamp(2), d4: left multiplier lamp(1)
- output_set_lamp_value(0, data >> 4 & 1);
- output_set_lamp_value(1, data >> 3 & 1);
+ output().set_lamp_value(0, data >> 4 & 1);
+ output().set_lamp_value(1, data >> 3 & 1);
// d5: assume coin lockout
- coin_lockout_global_w(machine(), ~data & 0x20);
+ machine().bookkeeping().coin_lockout_global_w(~data & 0x20);
// d0, d6, d7: N/C?
if (data & 0x04)
diff --git a/src/mame/drivers/jchan.cpp b/src/mame/drivers/jchan.cpp
index 01576892c93..a5eb0ba0699 100644
--- a/src/mame/drivers/jchan.cpp
+++ b/src/mame/drivers/jchan.cpp
@@ -195,12 +195,12 @@ public:
required_shared_ptr<UINT16> m_mainsub_shared_ram;
required_shared_ptr<UINT16> m_ctrl;
- bitmap_ind16 *m_sprite_bitmap_1;
- bitmap_ind16 *m_sprite_bitmap_2;
- UINT32* m_sprite_ram32_1;
- UINT32* m_sprite_ram32_2;
- UINT32* m_sprite_regs32_1;
- UINT32* m_sprite_regs32_2;
+ std::unique_ptr<bitmap_ind16> m_sprite_bitmap_1;
+ std::unique_ptr<bitmap_ind16> m_sprite_bitmap_2;
+ std::unique_ptr<UINT32[]> m_sprite_ram32_1;
+ std::unique_ptr<UINT32[]> m_sprite_ram32_2;
+ std::unique_ptr<UINT32[]> m_sprite_regs32_1;
+ std::unique_ptr<UINT32[]> m_sprite_regs32_2;
int m_irq_sub_enable;
DECLARE_WRITE16_MEMBER(ctrl_w);
@@ -265,23 +265,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(jchan_state::vblank)
void jchan_state::video_start()
{
/* so we can use sknsspr.c */
- m_sprite_ram32_1 = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_sprite_ram32_2 = auto_alloc_array(machine(), UINT32, 0x4000/4);
+ m_sprite_ram32_1 = std::make_unique<UINT32[]>(0x4000/4);
+ m_sprite_ram32_2 = std::make_unique<UINT32[]>(0x4000/4);
- m_sprite_regs32_1 = auto_alloc_array(machine(), UINT32, 0x40/4);
- m_sprite_regs32_2 = auto_alloc_array(machine(), UINT32, 0x40/4);
+ m_sprite_regs32_1 = std::make_unique<UINT32[]>(0x40/4);
+ m_sprite_regs32_2 = std::make_unique<UINT32[]>(0x40/4);
- m_sprite_bitmap_1 = auto_bitmap_ind16_alloc(machine(),1024,1024);
- m_sprite_bitmap_2 = auto_bitmap_ind16_alloc(machine(),1024,1024);
+ m_sprite_bitmap_1 = std::make_unique<bitmap_ind16>(1024,1024);
+ m_sprite_bitmap_2 = std::make_unique<bitmap_ind16>(1024,1024);
m_spritegen1->skns_sprite_kludge(0,0);
m_spritegen2->skns_sprite_kludge(0,0);
save_item(NAME(m_irq_sub_enable));
- save_pointer(NAME(m_sprite_ram32_1), 0x4000/4);
- save_pointer(NAME(m_sprite_ram32_2), 0x4000/4);
- save_pointer(NAME(m_sprite_regs32_1), 0x40/4);
- save_pointer(NAME(m_sprite_regs32_2), 0x40/4);
+ save_pointer(NAME(m_sprite_ram32_1.get()), 0x4000/4);
+ save_pointer(NAME(m_sprite_ram32_2.get()), 0x4000/4);
+ save_pointer(NAME(m_sprite_regs32_1.get()), 0x40/4);
+ save_pointer(NAME(m_sprite_regs32_2.get()), 0x40/4);
}
@@ -313,8 +313,8 @@ UINT32 jchan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
m_sprite_bitmap_1->fill(0x0000, cliprect);
m_sprite_bitmap_2->fill(0x0000, cliprect);
- m_spritegen1->skns_draw_sprites(*m_sprite_bitmap_1, cliprect, m_sprite_ram32_1, 0x4000, memregion("gfx1")->base(), memregion ("gfx1")->bytes(), m_sprite_regs32_1 );
- m_spritegen2->skns_draw_sprites(*m_sprite_bitmap_2, cliprect, m_sprite_ram32_2, 0x4000, memregion("gfx2")->base(), memregion ("gfx2")->bytes(), m_sprite_regs32_2 );
+ m_spritegen1->skns_draw_sprites(*m_sprite_bitmap_1, cliprect, m_sprite_ram32_1.get(), 0x4000, memregion("gfx1")->base(), memregion ("gfx1")->bytes(), m_sprite_regs32_1.get() );
+ m_spritegen2->skns_draw_sprites(*m_sprite_bitmap_2, cliprect, m_sprite_ram32_2.get(), 0x4000, memregion("gfx2")->base(), memregion ("gfx2")->bytes(), m_sprite_regs32_2.get() );
// ignoring priority bits for now - might use alpha too, check 0x8000 of palette writes
for (y=0;y<240;y++)
diff --git a/src/mame/drivers/jclub2.cpp b/src/mame/drivers/jclub2.cpp
index 7c719ae343e..e3135dcbc6e 100644
--- a/src/mame/drivers/jclub2.cpp
+++ b/src/mame/drivers/jclub2.cpp
@@ -139,9 +139,7 @@ public:
DECLARE_WRITE32_MEMBER(darkhors_input_sel_w);
DECLARE_READ32_MEMBER(darkhors_input_sel_r);
DECLARE_READ32_MEMBER(p_4e0000);
- DECLARE_READ32_MEMBER(p_580000);
DECLARE_READ32_MEMBER(p_580004);
- DECLARE_READ32_MEMBER(p_580008);
DECLARE_WRITE32_MEMBER(jclub2_input_sel_w_p2);
DECLARE_WRITE32_MEMBER(jclub2_input_sel_w_p1);
DECLARE_WRITE32_MEMBER(darkhors_unk1_w);
diff --git a/src/mame/drivers/jedi.cpp b/src/mame/drivers/jedi.cpp
index 4f012bac5bd..9d97f299716 100644
--- a/src/mame/drivers/jedi.cpp
+++ b/src/mame/drivers/jedi.cpp
@@ -227,7 +227,7 @@ WRITE8_MEMBER(jedi_state::a2d_select_w)
WRITE8_MEMBER(jedi_state::jedi_coin_counter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
diff --git a/src/mame/drivers/jeutel.cpp b/src/mame/drivers/jeutel.cpp
index a4a79305948..c86dc4821e5 100644
--- a/src/mame/drivers/jeutel.cpp
+++ b/src/mame/drivers/jeutel.cpp
@@ -119,7 +119,7 @@ WRITE8_MEMBER( jeutel_state::ppi0a_w )
if BIT(data, 6)
{
- output_set_digit_value(40+m_digit, 0x3f); //patterns[data&15];
+ output().set_digit_value(40+m_digit, 0x3f); //patterns[data&15];
return;
}
switch (data & 0x0f)
@@ -144,12 +144,12 @@ WRITE8_MEMBER( jeutel_state::ppi0a_w )
}
if BIT(data, 4)
{
- output_set_digit_value(m_digit, (blank) ? 0 : segment);
+ output().set_digit_value(m_digit, (blank) ? 0 : segment);
}
else
if BIT(data, 5)
{
- output_set_digit_value(20+m_digit, (blank) ? 0 : segment);
+ output().set_digit_value(20+m_digit, (blank) ? 0 : segment);
}
}
diff --git a/src/mame/drivers/jollyjgr.cpp b/src/mame/drivers/jollyjgr.cpp
index dbcbf32d460..8026d553914 100644
--- a/src/mame/drivers/jollyjgr.cpp
+++ b/src/mame/drivers/jollyjgr.cpp
@@ -205,7 +205,7 @@ WRITE8_MEMBER(jollyjgr_state::jollyjgr_misc_w)
WRITE8_MEMBER(jollyjgr_state::jollyjgr_coin_lookout_w)
{
- coin_lockout_global_w(machine(), data & 1);
+ machine().bookkeeping().coin_lockout_global_w(data & 1);
/* bits 4, 5, 6 and 7 are used too */
}
diff --git a/src/mame/drivers/jongkyo.cpp b/src/mame/drivers/jongkyo.cpp
index c15ed4bcc22..46e762a799f 100644
--- a/src/mame/drivers/jongkyo.cpp
+++ b/src/mame/drivers/jongkyo.cpp
@@ -153,7 +153,7 @@ WRITE8_MEMBER(jongkyo_state::jongkyo_coin_counter_w)
/* bit 0 = hopper out? */
/* bit 1 = coin counter */
- coin_counter_w(machine(), 0, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 2);
/* bit 2 always set? */
m_flip_screen = (data & 4) >> 2;
diff --git a/src/mame/drivers/joystand.cpp b/src/mame/drivers/joystand.cpp
index de3162b20f0..a17aacc787a 100644
--- a/src/mame/drivers/joystand.cpp
+++ b/src/mame/drivers/joystand.cpp
@@ -394,17 +394,17 @@ WRITE16_MEMBER(joystand_state::outputs_w)
COMBINE_DATA(&m_outputs[0]);
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, BIT(data, 0)); // coin counter 1
- coin_counter_w(machine(), 1, BIT(data, 1)); // coin counter 2
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); // coin counter 1
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // coin counter 2
- output_set_value("blocker", BIT(data, 2));
- output_set_value("error_lamp", BIT(data, 3)); // counter error
- output_set_value("photo_lamp", BIT(data, 4)); // during photo
+ output().set_value("blocker", BIT(data, 2));
+ output().set_value("error_lamp", BIT(data, 3)); // counter error
+ output().set_value("photo_lamp", BIT(data, 4)); // during photo
}
if (ACCESSING_BITS_8_15)
{
- output_set_value("ok_button_led", BIT(data, 8));
- output_set_value("cancel_button_led", BIT(data, 9));
+ output().set_value("ok_button_led", BIT(data, 8));
+ output().set_value("cancel_button_led", BIT(data, 9));
}
}
diff --git a/src/mame/drivers/jp.cpp b/src/mame/drivers/jp.cpp
index 872afed4974..4e25800686a 100644
--- a/src/mame/drivers/jp.cpp
+++ b/src/mame/drivers/jp.cpp
@@ -198,7 +198,7 @@ WRITE8_MEMBER( jp_state::disp_w )
if (t == 8)
{ // ball number
segment = m_disp_data >> 6;
- output_set_digit_value(94, BITSWAP8(segment, 0, 1, 2, 3, 4, 5, 6, 7) ^ 0xff);
+ output().set_digit_value(94, BITSWAP8(segment, 0, 1, 2, 3, 4, 5, 6, 7) ^ 0xff);
}
else
if (t < 8)
@@ -210,9 +210,9 @@ WRITE8_MEMBER( jp_state::disp_w )
for (i = 0; i < 32; i++)
if BIT(m_disp_data, i)
- output_set_digit_value(i, (output_get_digit_value(i) & ~segment));
+ output().set_digit_value(i, (output().get_digit_value(i) & ~segment));
else
- output_set_digit_value(i, (output_get_digit_value(i) | segment));
+ output().set_digit_value(i, (output().get_digit_value(i) | segment));
}
}
}
@@ -258,10 +258,10 @@ void jp_state::machine_reset()
m_row = 0;
m_clock_bit = 0;
//m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
- output_set_digit_value(96, 0x3f);
- output_set_digit_value(97, 0x3f);
- output_set_digit_value(98, 0x3f);
- output_set_digit_value(99, 0x3f);
+ output().set_digit_value(96, 0x3f);
+ output().set_digit_value(97, 0x3f);
+ output().set_digit_value(98, 0x3f);
+ output().set_digit_value(99, 0x3f);
}
DRIVER_INIT_MEMBER( jp_state, jp )
diff --git a/src/mame/drivers/jpmimpct.cpp b/src/mame/drivers/jpmimpct.cpp
index 4a68c1990b2..0b789445235 100644
--- a/src/mame/drivers/jpmimpct.cpp
+++ b/src/mame/drivers/jpmimpct.cpp
@@ -106,12 +106,9 @@ Thanks to Tony Friery and JPeMU for I/O routines and documentation.
#include "cpu/m68000/m68000.h"
#include "includes/jpmimpct.h"
-#include "machine/meters.h"
#include "machine/nvram.h"
#include "jpmimpct.lh"
#include "video/awpvid.h"
-#include "machine/steppers.h"
-#include "machine/roc10937.h"
#include "machine/i8255.h"
/*************************************
@@ -513,7 +510,7 @@ void jpmimpct_state::jpm_draw_lamps(int data, int lamp_strobe)
for (i=0; i<16; i++)
{
m_Lamps[16*(m_lamp_strobe+i)] = data & 1;
- output_set_lamp_value((16*lamp_strobe)+i, (m_Lamps[(16*lamp_strobe)+i]));
+ output().set_lamp_value((16*lamp_strobe)+i, (m_Lamps[(16*lamp_strobe)+i]));
data = data >> 1;
}
}
@@ -552,7 +549,7 @@ WRITE16_MEMBER(jpmimpct_state::jpmio_w)
}
else
// slide = 0;
- MechMtr_update(0, data >> 10);
+ m_meters->update(0, data >> 10);
m_duart_1.IP &= ~0x10;
break;
}
@@ -565,7 +562,7 @@ WRITE16_MEMBER(jpmimpct_state::jpmio_w)
case 0x0b:
{
- output_set_digit_value(m_lamp_strobe,data);
+ output().set_digit_value(m_lamp_strobe,data);
break;
}
case 0x0f:
@@ -865,6 +862,9 @@ 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
@@ -1076,8 +1076,8 @@ WRITE16_MEMBER(jpmimpct_state::jpmioawp_w)
{
case 0x00:
{
- output_set_value("PWRLED",!(data&0x100));
- output_set_value("STATLED",!(data&0x200));
+ output().set_value("PWRLED",!(data&0x100));
+ output().set_value("STATLED",!(data&0x200));
break;
}
@@ -1088,18 +1088,18 @@ WRITE16_MEMBER(jpmimpct_state::jpmioawp_w)
m_reel1->update((data >> 1)& 0x0F);
m_reel2->update((data >> 2)& 0x0F);
m_reel3->update((data >> 3)& 0x0F);
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
break;
}
case 0x04:
{
m_reel4->update((data >> 4)& 0x0F);
m_reel5->update((data >> 5)& 0x0F);
- awp_draw_reel("reel5", m_reel4);
- awp_draw_reel("reel6", m_reel5);
+ awp_draw_reel(machine(),"reel5", m_reel4);
+ awp_draw_reel(machine(),"reel6", m_reel5);
break;
}
case 0x06:
@@ -1122,20 +1122,20 @@ WRITE16_MEMBER(jpmimpct_state::jpmioawp_w)
{
for (i=0; i<5; i++)
{
- MechMtr_update(i, 0);
+ m_meters->update(i, 0);
}
break;
}
default:
{
- MechMtr_update(((metno <<2) - 1), 1);
+ m_meters->update(((metno <<2) - 1), 1);
}
break;
}
}
- int combined_meter = MechMtr_GetActivity(0) | MechMtr_GetActivity(1) |
- MechMtr_GetActivity(2) | MechMtr_GetActivity(3) |
- MechMtr_GetActivity(4);
+ int combined_meter = m_meters->GetActivity(0) | m_meters->GetActivity(1) |
+ m_meters->GetActivity(2) | m_meters->GetActivity(3) |
+ m_meters->GetActivity(4);
if(combined_meter)
{
@@ -1156,7 +1156,7 @@ WRITE16_MEMBER(jpmimpct_state::jpmioawp_w)
case 0x0b:
{
- output_set_digit_value(m_lamp_strobe,data);
+ output().set_digit_value(m_lamp_strobe,data);
break;
}
case 0x0f:
@@ -1340,6 +1340,9 @@ MACHINE_CONFIG_START( impctawp, jpmimpct_state )
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)
+
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jpmmps.cpp b/src/mame/drivers/jpmmps.cpp
index d24c788ce85..21711756088 100644
--- a/src/mame/drivers/jpmmps.cpp
+++ b/src/mame/drivers/jpmmps.cpp
@@ -43,7 +43,8 @@ public:
jpmmps_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_psg(*this, "sn")
+ m_psg(*this, "sn"),
+ m_meters(*this, "meters")
{ }
UINT8 m_sound_buffer;
UINT8 m_psg_latch;
@@ -53,13 +54,12 @@ protected:
// devices
required_device<cpu_device> m_maincpu;
- optional_device<sn76489_device> m_psg;
+ required_device<sn76489_device> m_psg;
+ required_device<meters_device> m_meters;
public:
- DECLARE_DRIVER_INIT(jpmmps);
DECLARE_WRITE8_MEMBER(jpmmps_meters_w);
DECLARE_WRITE8_MEMBER(jpmmps_psg_buf_w);
DECLARE_WRITE8_MEMBER(jpmmps_ic22_portc_w);
- DECLARE_MACHINE_START(jpmmps);
};
static ADDRESS_MAP_START( jpmmps_map, AS_PROGRAM, 8, jpmmps_state )
@@ -103,10 +103,9 @@ INPUT_PORTS_END
WRITE8_MEMBER(jpmmps_state::jpmmps_meters_w)
{
- int meter=0;
- for (meter = 0; meter < 8; meter ++)
+ for (int meter = 0; meter < 8; meter ++)
{
- MechMtr_update(meter, (data & (1 << meter)));
+ m_meters->update(meter, (data & (1 << meter)));
}
}
@@ -129,7 +128,7 @@ WRITE8_MEMBER(jpmmps_state::jpmmps_ic22_portc_w)
}
m_psg_latch = (data & 0x04);
- MechMtr_update(8, (data & 0x08));
+ m_meters->update(8, (data & 0x08));
}
@@ -140,13 +139,6 @@ WRITE8_MEMBER(jpmmps_state::jpmmps_ic22_portc_w)
#define DUART_CLOCK 2000000
-MACHINE_START_MEMBER(jpmmps_state,jpmmps)
-{
- /* setup 9 mechanical meters */
- MechMtr_config(machine(),9);
-
-}
-
void jpmmps_state::machine_reset()
{
// Disable auto wait state generation by raising the READY line on reset
@@ -173,19 +165,17 @@ static MACHINE_CONFIG_START( jpmmps, jpmmps_state )
MCFG_DEVICE_ADD("tms9902_ic10", TMS9902, DUART_CLOCK) // Communication with Reel MCU
MCFG_DEVICE_ADD("tms9902_ic5", TMS9902, DUART_CLOCK) // Communication with Security / Printer
- MCFG_MACHINE_START_OVERRIDE(jpmmps_state,jpmmps)
-
MCFG_SPEAKER_STANDARD_MONO("mono")
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_DEFAULT_LAYOUT(layout_jpmmps)
MACHINE_CONFIG_END
-DRIVER_INIT_MEMBER(jpmmps_state,jpmmps)
-{
-}
ROM_START( j2adnote )
@@ -2022,211 +2012,211 @@ ROM_END
-GAME(198?, j2adnote ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 1)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnotea,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 2)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnoteb,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 3)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnotec,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 4)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnoted,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 5)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnotee,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 6)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnotef,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 7)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnoteg,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 8)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnoteh,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 9)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2adnotei,j2adnote ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Add A Note (JPM) (MPS, set 10)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2bankch ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Bank Chase (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2bankrd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Bank Raid (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2bigbnk ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Big Banker (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2bigbox ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Big Box (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2bigbuk ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Big Buck$ (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2bigdl ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Big Deal (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2blkchy ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Black Cherry (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashbn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cash Bonus Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashfl ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cash Falls (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashrl ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cash Reels (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashrv ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cash Reserve (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashro ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cash Rolls (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashtk ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cash Track (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashtd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cash Track Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2coppot ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Copper Pot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2coprun ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Copper Run (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cprndx ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Copper Run Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2crkbnk ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Crack The Bank (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2droplt ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Drop The Lot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2dropld ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Drop The Lot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2ewn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Each Way Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2ews ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Each Way Shuffle (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2exec ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Executive Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2fasttk ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Fast Trak (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2fqueen ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Find The Queen (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2fiveal ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Five Alive (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2fiveln ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Five Liner (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2fws ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Five Way Shuffle (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2fwsa ,j2fws ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Five Way Shuffle (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2frmtch ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Fruit Match (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2fullhs ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Full House Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2ghostb ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Ghostbuster (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2goldrn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Gold Run (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2goldbr ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Golden Bars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2gldchy ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Golden Cherry (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2gldwin ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Golden Win (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2hinote ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Hi Note (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2hiroll ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Hi Roller (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2hotpot ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Hot Pot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2hotptd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Hot Pot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2hotsht ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Hot Shot Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2hypnot ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Hypernote (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2jackbr ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Jackpot Bars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2jackdc ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Jackpot Dice (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2jokers ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Jokers (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2kingcl ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","King Of Clubs (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2litean ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Lite A Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2lovsht ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Loot Shoot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2lovshd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Loot Shoot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2luckar ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Lucky Arrows (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2lucky2 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Lucky 2s (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2monblt ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Money Belt (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2mongam ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Money Game (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2mongmd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Money Game Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2multwn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Multi Win (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2notexc ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Note Exchange (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2notexca,j2notexc ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Note Exchange (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2notexcb,j2notexc ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Note Exchange (Set 3) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2notesh ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Note Shoot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nudbnz ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Nudge Bonanza Deluxe (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nudbnza,j2nudbnz ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Nudge Bonanza Deluxe (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nuddup ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Nudge Double Up (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nuddud ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Nudge Double Up Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nudup3 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Nudge Double Up MkIII (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nudshf ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Nudge Shuffler (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2plsmon ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Plus Money (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2plsmnd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Plus Money Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2plsnud ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Plus Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2potlck ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Pot Luck (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2pndrsh ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Pound Rush (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2pyramd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Pyramid (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reelbn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Bingo Club (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reelbna,j2reelbn ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Bingo Club (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reelbo ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Bonus (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reelmg ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Magic (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reelmgd,j2reelmg ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Magic (JPM) [Dutch] (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reelmc ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Magic Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reelmo ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Money (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2rotnot ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Rota Note (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2roulcl ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Roulette Club (JPM) [Mps] (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2rdclb ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Royal Deal Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2slvrgh ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Silver Ghost (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2sldgld ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Solid Gold (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2spcrsv ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Special Reserve (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2stahed ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Streets Ahead (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2supfrt ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Supa Fruit (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2supfrc ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Supa Fruit Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(1987, j2supsft ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Supashifta (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2supstp ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Supa Steppa (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2suptrk ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Supa Track (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2suprft ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Super Fruit (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2supln ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Super Line (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2suppot ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Super Pots (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2suprl ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Super Reel (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2suprsh ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Supershot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2supstr ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Superstars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2swbank ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Switch Back (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2take2 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Take 2 (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2topsht ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Top Shot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2westrn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Western (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-
-GAME(198?, j2blustr ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Blue Streak (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cshalm ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Cash Alarm (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cshcrd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Cash Cards (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cshfil ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Cash-Filla (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cshsmh ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Cash Smash (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2criscr ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Criss Cross Jackpot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2frucnx ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Fruit Connexion (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2hitmon ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Hit Money (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2penny ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","In For A Penny In For A Pound (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2maxima ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Maxima (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2montrp ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Money Trapper (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nudmon ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Nudge Money (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2paypkt ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Pay Packet (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2silvcl ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Silver Classic (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2silvsh ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Silver Shot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2sstrea ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Supa Streak (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2tstplt ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Test Pilot (Set 1) (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2tstplta,j2tstplt ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Test Pilot (Set 2) (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2bonanz ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Eurocoin","Bonanza (Eurocoin) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2supchy ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Eurocoin","Super Cherry (Eurocoin) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2hilocl ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Crystal","Hi Lo Climber Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2litnot ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Crystal","Lite A Note Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2missis ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Crystal","Mississippi Gambler Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2always ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","Always Eight (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2coinsh ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","Coin Shoot (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nudfev ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","Nudge Fever (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2trail ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","Trailblazer (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2wag ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","Win-A-Gain (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2cshnud ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Mdm","Cash Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2fivepn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Mdm","Fivepenny Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nolimt ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Mdm","No Limit Nudge (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2strk10 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Ace?","Strike Ten (Ace) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) // there was another (68k based) game in this set, which makes me wonder if this one is by Ace at all
-
-
-
-
-GAME(198?, j2bkroll ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Bank Roll (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2bodym ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Body Match (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cvault ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cash Vault (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashab ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Cashablanca (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2cashry ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Cashino Royale (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2casino ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Casino Classic (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2coinct ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Coin Count (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2loots ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","Loot Shoot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2match ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Match It (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2monbnd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Money Bands (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2monmtx ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","Money Matrix (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2tst ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","MPS 1 Test Rom (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nudnud ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Nudge Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2pinac ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Pinnacle (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2pinclb ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Pinnacle Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reelcz ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Crazy (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2reeldc ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Reel Deal Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2topcd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","Top Card (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2xxx ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","Triple X (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2tupnud ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Tuppenny Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2wrb ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Wild Reel Bingo (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2ncsp ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","unknown 'ncsp0pp' (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nrrp ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Bwb","unknown 'nprpopp' (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nsc15 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","unknown 'nsc15' (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nsw12 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Pcp","unknown 'nsw12' (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2club77 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Club 77 (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2contnd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Mdm","Continuous Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2crown ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Crown Dealer (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2hirola ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Hi Roll (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2monmin ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Money Mine (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2notspn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Note Spinner (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2super7 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Super 7's (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2sex ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Super Exchanger (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2sng ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Cotswold Microsystems","Super Nudge Gambler (Cotswold Microsystems) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2tupnd ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Mdm","Tuppenny Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2008 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","unknown '008' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2chsn ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","unknown 'chsnsn05' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2lhs ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","unknown 'lhs' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nn2 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","unknown 'nn_2' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2rm941 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","unknown 'rm941' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2pharo ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Pharoah (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2nud5p ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","5p Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2b7 ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Bar 7? (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2ss ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Supa Stepper (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2nbz ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Nudge Bonanza (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2clbbin ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "Crystal?","Club Bingo (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-
-GAME(198?, j2sirich ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Strike It Rich (JPM) (MPS) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // I don't think this is MayGay, it was just in a MayGay set with some actual MayGay roms
-GAME(198?, j2siricha,j2sirich ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "JPM","Strike It Rich (JPM) (MPS) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // I don't think this is MayGay, it was just in a MayGay set with some actual MayGay roms
-
-GAME(198?, j2hcash ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Hot Cash (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME(198?, j2sset ,0 ,jpmmps,jpmmps, jpmmps_state,jpmmps,ROT0, "<unknown>","Sunset Strip (v2.0) (Unk) (MPS?)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnote ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnotea,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnoteb,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnotec,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnoted,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnotee,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnotef,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnoteg,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnoteh,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2adnotei,j2adnote ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Add A Note (JPM) (MPS, set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2bankch ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Bank Chase (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2bankrd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Bank Raid (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2bigbnk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Big Banker (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2bigbox ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Big Box (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2bigbuk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Big Buck$ (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2bigdl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Big Deal (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2blkchy ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Black Cherry (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashbn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Bonus Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashfl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Falls (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashrl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Reels (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashrv ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Reserve (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashro ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Rolls (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashtk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Track (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashtd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Track Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2coppot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Copper Pot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2coprun ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Copper Run (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cprndx ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Copper Run Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2crkbnk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Crack The Bank (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2droplt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Drop The Lot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2dropld ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Drop The Lot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2ewn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Each Way Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2ews ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Each Way Shuffle (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2exec ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Executive Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2fasttk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Fast Trak (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2fqueen ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Find The Queen (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2fiveal ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Five Alive (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2fiveln ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Five Liner (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2fws ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Five Way Shuffle (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2fwsa ,j2fws ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Five Way Shuffle (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2frmtch ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Fruit Match (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2fullhs ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Full House Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2ghostb ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Ghostbuster (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2goldrn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Gold Run (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2goldbr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Golden Bars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2gldchy ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Golden Cherry (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2gldwin ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Golden Win (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2hinote ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hi Note (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2hiroll ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hi Roller (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2hotpot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hot Pot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2hotptd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hot Pot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2hotsht ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hot Shot Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2hypnot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Hypernote (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2jackbr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Jackpot Bars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2jackdc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Jackpot Dice (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2jokers ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Jokers (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2kingcl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","King Of Clubs (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2litean ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Lite A Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2lovsht ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Loot Shoot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2lovshd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Loot Shoot Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2luckar ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Lucky Arrows (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2lucky2 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Lucky 2s (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2monblt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Money Belt (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2mongam ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Money Game (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2mongmd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Money Game Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2multwn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Multi Win (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2notexc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Note Exchange (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2notexca,j2notexc ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Note Exchange (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2notexcb,j2notexc ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Note Exchange (Set 3) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2notesh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Note Shoot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nudbnz ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Bonanza Deluxe (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nudbnza,j2nudbnz ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Bonanza Deluxe (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nuddup ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Double Up (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nuddud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Double Up Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nudup3 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Double Up MkIII (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nudshf ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Shuffler (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2plsmon ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Plus Money (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2plsmnd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Plus Money Deluxe (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2plsnud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Plus Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2potlck ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pot Luck (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2pndrsh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pound Rush (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2pyramd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pyramid (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reelbn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Bingo Club (Set 1) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reelbna,j2reelbn ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Bingo Club (Set 2) (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reelbo ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Bonus (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reelmg ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Magic (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reelmgd,j2reelmg ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Magic (JPM) [Dutch] (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reelmc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Magic Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reelmo ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Money (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2rotnot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Rota Note (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2roulcl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Roulette Club (JPM) [Mps] (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2rdclb ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Royal Deal Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2slvrgh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Silver Ghost (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2sldgld ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Solid Gold (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2spcrsv ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Special Reserve (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2stahed ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Streets Ahead (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2supfrt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Fruit (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2supfrc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Fruit Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(1987, j2supsft ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supashifta (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2supstp ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Steppa (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2suptrk ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Track (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2suprft ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Super Fruit (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2supln ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Super Line (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2suppot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Super Pots (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2suprl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Super Reel (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2suprsh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supershot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2supstr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Superstars (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2swbank ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Switch Back (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2take2 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Take 2 (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2topsht ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Top Shot (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2westrn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Western (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+
+GAME(198?, j2blustr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Blue Streak (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cshalm ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cash Alarm (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cshcrd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cash Cards (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cshfil ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cash-Filla (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cshsmh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cash Smash (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2criscr ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Criss Cross Jackpot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2frucnx ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Fruit Connexion (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2hitmon ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Hit Money (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2penny ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","In For A Penny In For A Pound (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2maxima ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Maxima (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2montrp ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Money Trapper (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nudmon ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Nudge Money (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2paypkt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Pay Packet (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2silvcl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Silver Classic (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2silvsh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Silver Shot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2sstrea ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Supa Streak (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2tstplt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Test Pilot (Set 1) (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2tstplta,j2tstplt ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Test Pilot (Set 2) (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2bonanz ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Eurocoin","Bonanza (Eurocoin) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2supchy ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Eurocoin","Super Cherry (Eurocoin) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2hilocl ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Crystal","Hi Lo Climber Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2litnot ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Crystal","Lite A Note Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2missis ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Crystal","Mississippi Gambler Club (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2always ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Always Eight (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2coinsh ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Coin Shoot (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nudfev ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Nudge Fever (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2trail ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Trailblazer (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2wag ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Win-A-Gain (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2cshnud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","Cash Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2fivepn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","Fivepenny Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nolimt ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","No Limit Nudge (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2strk10 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Ace?","Strike Ten (Ace) (MPS)", MACHINE_IS_SKELETON_MECHANICAL ) // there was another (68k based) game in this set, which makes me wonder if this one is by Ace at all
+
+
+
+
+GAME(198?, j2bkroll ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Bank Roll (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2bodym ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Body Match (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cvault ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cash Vault (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashab ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Cashablanca (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2cashry ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Cashino Royale (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2casino ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Casino Classic (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2coinct ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Coin Count (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2loots ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","Loot Shoot (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2match ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Match It (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2monbnd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Money Bands (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2monmtx ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Money Matrix (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2tst ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","MPS 1 Test Rom (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nudnud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Nudge (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2pinac ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pinnacle (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2pinclb ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Pinnacle Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reelcz ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Crazy (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2reeldc ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Reel Deal Club (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2topcd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Top Card (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2xxx ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","Triple X (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2tupnud ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Tuppenny Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2wrb ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Wild Reel Bingo (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2ncsp ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","unknown 'ncsp0pp' (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nrrp ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Bwb","unknown 'nprpopp' (Bwb) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nsc15 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","unknown 'nsc15' (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nsw12 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Pcp","unknown 'nsw12' (Pcp) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2club77 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Club 77 (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2contnd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","Continuous Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2crown ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Crown Dealer (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2hirola ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Hi Roll (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2monmin ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Money Mine (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2notspn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Note Spinner (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2super7 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Super 7's (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2sex ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Super Exchanger (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2sng ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Cotswold Microsystems","Super Nudge Gambler (Cotswold Microsystems) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2tupnd ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Mdm","Tuppenny Nudger (Mdm) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2008 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","unknown '008' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2chsn ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","unknown 'chsnsn05' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2lhs ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","unknown 'lhs' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nn2 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","unknown 'nn_2' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2rm941 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","unknown 'rm941' (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2pharo ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Pharoah (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2nud5p ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","5p Nudger (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2b7 ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Bar 7? (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2ss ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Supa Stepper (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2nbz ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Nudge Bonanza (JPM) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2clbbin ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "Crystal?","Club Bingo (Crystal) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME(198?, j2sirich ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Strike It Rich (JPM) (MPS) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // I don't think this is MayGay, it was just in a MayGay set with some actual MayGay roms
+GAME(198?, j2siricha,j2sirich ,jpmmps,jpmmps, driver_device, 0,ROT0, "JPM","Strike It Rich (JPM) (MPS) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // I don't think this is MayGay, it was just in a MayGay set with some actual MayGay roms
+
+GAME(198?, j2hcash ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Hot Cash (Unk) (MPS)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(198?, j2sset ,0 ,jpmmps,jpmmps, driver_device, 0,ROT0, "<unknown>","Sunset Strip (v2.0) (Unk) (MPS?)", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/jpmsru.cpp b/src/mame/drivers/jpmsru.cpp
index 5e75986cb62..98a3a895991 100644
--- a/src/mame/drivers/jpmsru.cpp
+++ b/src/mame/drivers/jpmsru.cpp
@@ -36,7 +36,6 @@ protected:
required_device<cpu_device> m_maincpu;
public:
DECLARE_DRIVER_INIT(jpmsru);
- DECLARE_READ8_MEMBER( interrupt_level );
};
// blind guess
diff --git a/src/mame/drivers/jpmsys5.cpp b/src/mame/drivers/jpmsys5.cpp
index 300a317c629..30ba6c0479b 100644
--- a/src/mame/drivers/jpmsys5.cpp
+++ b/src/mame/drivers/jpmsys5.cpp
@@ -177,9 +177,9 @@ void jpmsys5_state::sys5_draw_lamps()
int i;
for (i = 0; i <8; i++)
{
- output_set_lamp_value( (16*m_lamp_strobe)+i, (m_muxram[(4*m_lamp_strobe)] & (1 << i)) !=0);
- output_set_lamp_value((16*m_lamp_strobe)+i+8, (m_muxram[(4*m_lamp_strobe) +1 ] & (1 << i)) !=0);
- output_set_indexed_value("sys5led",(8*m_lamp_strobe)+i,(m_muxram[(4*m_lamp_strobe) +2 ] & (1 << i)) !=0);
+ output().set_lamp_value( (16*m_lamp_strobe)+i, (m_muxram[(4*m_lamp_strobe)] & (1 << i)) !=0);
+ output().set_lamp_value((16*m_lamp_strobe)+i+8, (m_muxram[(4*m_lamp_strobe) +1 ] & (1 << i)) !=0);
+ output().set_indexed_value("sys5led",(8*m_lamp_strobe)+i,(m_muxram[(4*m_lamp_strobe) +2 ] & (1 << i)) !=0);
}
}
@@ -472,30 +472,39 @@ WRITE_LINE_MEMBER(jpmsys5_state::pia_irq)
READ8_MEMBER(jpmsys5_state::u29_porta_r)
{
- int combined_meter = MechMtr_GetActivity(0) | MechMtr_GetActivity(1) |
- MechMtr_GetActivity(2) | MechMtr_GetActivity(3) |
- MechMtr_GetActivity(4) | MechMtr_GetActivity(5) |
- MechMtr_GetActivity(6) | MechMtr_GetActivity(7);
-
int meter_bit =0;
- if(combined_meter)
- {
- meter_bit = 0x80;
- }
- else
+
+ if (m_meters != nullptr)
{
- meter_bit = 0x00;
+ int combined_meter = m_meters->GetActivity(0) | m_meters->GetActivity(1) |
+ m_meters->GetActivity(2) | m_meters->GetActivity(3) |
+ m_meters->GetActivity(4) | m_meters->GetActivity(5) |
+ m_meters->GetActivity(6) | m_meters->GetActivity(7);
+
+ if(combined_meter)
+ {
+ meter_bit = 0x80;
+ }
+ else
+ {
+ meter_bit = 0x00;
+ }
+
+ return m_direct_port->read() | meter_bit;
}
- return m_direct_port->read() | meter_bit;
+ else
+ return m_direct_port->read() | meter_bit;
}
WRITE8_MEMBER(jpmsys5_state::u29_portb_w)
{
- int meter =0;
- for (meter = 0; meter < 8; meter ++)
+ if (m_meters != nullptr)
{
- MechMtr_update(meter, (data & (1 << meter)));
+ for (int meter = 0; meter < 8; meter ++)
+ {
+ m_meters->update(meter, (data & (1 << meter)));
+ }
}
}
@@ -805,10 +814,6 @@ INPUT_PORTS_END
MACHINE_START_MEMBER(jpmsys5_state,jpmsys5)
{
// membank("bank1")->set_base(memregion("maincpu")->base()+0x20000);
-
- /* setup 8 mechanical meters */
- MechMtr_config(machine(),8);
-
}
MACHINE_RESET_MEMBER(jpmsys5_state,jpmsys5)
@@ -875,6 +880,9 @@ 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
// the first rev PCB used an SAA1099
@@ -925,6 +933,9 @@ 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/jtc.cpp b/src/mame/drivers/jtc.cpp
index c626909c7e1..07114be0ac1 100644
--- a/src/mame/drivers/jtc.cpp
+++ b/src/mame/drivers/jtc.cpp
@@ -90,9 +90,9 @@ public:
DECLARE_WRITE8_MEMBER( banksel_w );
UINT8 m_video_bank;
- UINT8 *m_color_ram_r;
- UINT8 *m_color_ram_g;
- UINT8 *m_color_ram_b;
+ std::unique_ptr<UINT8[]> m_color_ram_r;
+ std::unique_ptr<UINT8[]> m_color_ram_g;
+ std::unique_ptr<UINT8[]> m_color_ram_b;
};
@@ -636,16 +636,16 @@ void jtces40_state::video_start()
{
/* allocate memory */
m_video_ram.allocate(JTC_ES40_VIDEORAM_SIZE);
- m_color_ram_r = auto_alloc_array(machine(), UINT8, JTC_ES40_VIDEORAM_SIZE);
- m_color_ram_g = auto_alloc_array(machine(), UINT8, JTC_ES40_VIDEORAM_SIZE);
- m_color_ram_b = auto_alloc_array(machine(), UINT8, JTC_ES40_VIDEORAM_SIZE);
+ m_color_ram_r = std::make_unique<UINT8[]>(JTC_ES40_VIDEORAM_SIZE);
+ m_color_ram_g = std::make_unique<UINT8[]>(JTC_ES40_VIDEORAM_SIZE);
+ m_color_ram_b = std::make_unique<UINT8[]>(JTC_ES40_VIDEORAM_SIZE);
/* register for state saving */
save_item(NAME(m_video_bank));
save_pointer(NAME(m_video_ram.target()), JTC_ES40_VIDEORAM_SIZE);
- save_pointer(NAME(m_color_ram_r), JTC_ES40_VIDEORAM_SIZE);
- save_pointer(NAME(m_color_ram_g), JTC_ES40_VIDEORAM_SIZE);
- save_pointer(NAME(m_color_ram_b), JTC_ES40_VIDEORAM_SIZE);
+ save_pointer(NAME(m_color_ram_r.get()), JTC_ES40_VIDEORAM_SIZE);
+ save_pointer(NAME(m_color_ram_g.get()), JTC_ES40_VIDEORAM_SIZE);
+ save_pointer(NAME(m_color_ram_b.get()), JTC_ES40_VIDEORAM_SIZE);
save_item(NAME(m_centronics_busy));
}
diff --git a/src/mame/drivers/jubilee.cpp b/src/mame/drivers/jubilee.cpp
index c53a1e411e4..cee308786cd 100644
--- a/src/mame/drivers/jubilee.cpp
+++ b/src/mame/drivers/jubilee.cpp
@@ -221,7 +221,6 @@ public:
tilemap_t *m_bg_tilemap;
DECLARE_WRITE8_MEMBER(jubileep_videoram_w);
DECLARE_WRITE8_MEMBER(jubileep_colorram_w);
- DECLARE_READ8_MEMBER(unk_r);
DECLARE_WRITE8_MEMBER(unk_w);
DECLARE_READ8_MEMBER(mux_port_r);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
@@ -407,19 +406,19 @@ WRITE8_MEMBER(jubilee_state::unk_w)
{
if (muxlamps == 1)
{
- output_set_lamp_value(0, (data & 1)); /* lamp */
+ output().set_lamp_value(0, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 0 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 0");
}
if (muxlamps == 2)
{
- output_set_lamp_value(3, (data & 1)); /* lamp */
+ output().set_lamp_value(3, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 3 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 3");
}
if (muxlamps == 3)
{
- output_set_lamp_value(6, (data & 1)); /* lamp */
+ output().set_lamp_value(6, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 6 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 6");
}
@@ -429,19 +428,19 @@ WRITE8_MEMBER(jubilee_state::unk_w)
{
if (muxlamps == 1)
{
- output_set_lamp_value(1, (data & 1)); /* lamp */
+ output().set_lamp_value(1, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 1 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 1");
}
if (muxlamps == 2)
{
- output_set_lamp_value(4, (data & 1)); /* lamp */
+ output().set_lamp_value(4, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 4 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 4");
}
if (muxlamps == 3)
{
- output_set_lamp_value(7, (data & 1)); /* lamp */
+ output().set_lamp_value(7, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 7 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 7");
}
@@ -451,19 +450,19 @@ WRITE8_MEMBER(jubilee_state::unk_w)
{
if (muxlamps == 1)
{
- output_set_lamp_value(2, (data & 1)); /* lamp */
+ output().set_lamp_value(2, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 2 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 2");
}
if (muxlamps == 2)
{
- output_set_lamp_value(5, (data & 1)); /* lamp */
+ output().set_lamp_value(5, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 5 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 5");
}
if (muxlamps == 3)
{
- output_set_lamp_value(8, (data & 1)); /* lamp */
+ output().set_lamp_value(8, (data & 1)); /* lamp */
logerror("CRU: LAAAAAAMP 8 write to address %04x: %d\n", offset<<1, data & 1);
// popmessage("LAMP 8");
}
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/junior.cpp b/src/mame/drivers/junior.cpp
index 9744712c9cc..6a3f4c3928c 100644
--- a/src/mame/drivers/junior.cpp
+++ b/src/mame/drivers/junior.cpp
@@ -162,7 +162,7 @@ WRITE8_MEMBER( junior_state::junior_riot_a_w )
if ((idx >= 4 && idx < 10) & ( m_port_a != 0xff ))
{
- output_set_digit_value( idx-4, m_port_a ^ 0x7f );
+ output().set_digit_value( idx-4, m_port_a ^ 0x7f );
m_led_time[idx - 4] = 10;
}
}
@@ -176,7 +176,7 @@ WRITE8_MEMBER( junior_state::junior_riot_b_w )
if ((idx >= 4 && idx < 10) & ( m_port_a != 0xff ))
{
- output_set_digit_value( idx-4, m_port_a ^ 0x7f );
+ output().set_digit_value( idx-4, m_port_a ^ 0x7f );
m_led_time[idx - 4] = 10;
}
}
@@ -197,7 +197,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(junior_state::junior_update_leds)
if ( m_led_time[i] )
m_led_time[i]--;
else
- output_set_digit_value( i, 0 );
+ output().set_digit_value( i, 0 );
}
}
diff --git a/src/mame/drivers/junofrst.cpp b/src/mame/drivers/junofrst.cpp
index b83d1d1770b..f8a5b55b9d8 100644
--- a/src/mame/drivers/junofrst.cpp
+++ b/src/mame/drivers/junofrst.cpp
@@ -279,7 +279,7 @@ WRITE8_MEMBER(junofrst_state::flip_screen_w)
WRITE8_MEMBER(junofrst_state::coincounter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
WRITE8_MEMBER(junofrst_state::irq_enable_w)
diff --git a/src/mame/drivers/jupace.cpp b/src/mame/drivers/jupace.cpp
index 062dad383aa..86ba95a41c6 100644
--- a/src/mame/drivers/jupace.cpp
+++ b/src/mame/drivers/jupace.cpp
@@ -108,7 +108,6 @@ public:
DECLARE_READ8_MEMBER( pio_pa_r );
DECLARE_WRITE8_MEMBER( pio_pa_w );
- UINT32 screen_update_ace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(set_irq);
TIMER_DEVICE_CALLBACK_MEMBER(clear_irq);
DECLARE_READ8_MEMBER(pio_ad_r);
diff --git a/src/mame/drivers/k1003.cpp b/src/mame/drivers/k1003.cpp
index bd78e42b474..fd95cf461d3 100644
--- a/src/mame/drivers/k1003.cpp
+++ b/src/mame/drivers/k1003.cpp
@@ -111,8 +111,8 @@ UINT8 k1003_state::bit_to_dec(UINT8 val)
WRITE8_MEMBER( k1003_state::disp_w )
{
- output_set_digit_value(bit_to_dec(data)*2, m_disp_1);
- output_set_digit_value(bit_to_dec(data)*2+1, m_disp_2);
+ output().set_digit_value(bit_to_dec(data)*2, m_disp_1);
+ output().set_digit_value(bit_to_dec(data)*2+1, m_disp_2);
}
static ADDRESS_MAP_START( k1003_io, AS_IO, 8, k1003_state )
diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp
index c69811cd7e5..494b5db608e 100644
--- a/src/mame/drivers/kaneko16.cpp
+++ b/src/mame/drivers/kaneko16.cpp
@@ -30,9 +30,10 @@ Year + Game PCB Notes
91 The Berlin Wall BW-002 3 x VU-003 (encrypted high colour background)
Magical Crystals Z00FC-02
92 Bakuretsu Breaker ZOOFC-02
- Blaze On Z02AT-002 2 VU-002 Sprites Chips (Atlus PCB ID: ATL-67140)
+ Blaze On Z02AT-002 2 x VU-002 Sprites Chips (Atlus PCB ID: ATL-67140)
Shogun Warriors ZO1DK-002 CALC3 MCU protection (EEPROM handling, 68k code snippet, data - palettes, tilemaps, fighters)
B.Rap Boys ZO1DK-002 CALC3 MCU protection (EEPROM handling, 68k code snippet, data - palettes, tilemaps, fighters)
+93 Wing Force (prototype) Z08AT-001 2 x VU-002 Sprites Chips, OKI sound
94 Great 1000 Miles Rally Z09AF-005 TBSOP01 MCU protection (EEPROM handling etc.)
Bonk's Adventure Z09AF-003 TBSOP01 MCU protection (EEPROM handling, 68k code snippet, data)
Blood Warrior Z09AF-005 TBSOP01 MCU protection (EEPROM handling etc.)
@@ -138,10 +139,10 @@ WRITE16_MEMBER(kaneko16_state::kaneko16_coin_lockout_w)
{
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x0100);
- coin_counter_w(machine(), 1, data & 0x0200);
- coin_lockout_w(machine(), 0, (~data) & 0x0400 );
- coin_lockout_w(machine(), 1, (~data) & 0x0800 );
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0200);
+ machine().bookkeeping().coin_lockout_w(0, (~data) & 0x0400 );
+ machine().bookkeeping().coin_lockout_w(1, (~data) & 0x0800 );
}
}
@@ -217,10 +218,10 @@ WRITE16_MEMBER(kaneko16_state::kaneko16_eeprom_w)
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x0100);
- coin_counter_w(machine(), 1, data & 0x0200);
- coin_lockout_w(machine(), 0, data & 0x8000);
- coin_lockout_w(machine(), 1, data & 0x8000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0200);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x8000);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x8000);
}
}
@@ -334,7 +335,7 @@ ADDRESS_MAP_END
/* The two YM2149 chips are only used when entering high score initials, and */
/* when the game is fully completed. Overkill??? */
-WRITE16_MEMBER(kaneko16_state::bakubrkr_oki_bank_sw)
+WRITE16_MEMBER(kaneko16_state::bakubrkr_oki_bank_w)
{
if (ACCESSING_BITS_0_7) {
m_oki->set_bank_base(0x40000 * (data & 0x7) );
@@ -347,7 +348,7 @@ static ADDRESS_MAP_START( bakubrkr, AS_PROGRAM, 16, kaneko16_state )
AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM
AM_RANGE(0x400000, 0x40001f) AM_READ(kaneko16_ay1_YM2149_r) // Sound
AM_RANGE(0x400000, 0x40001d) AM_WRITE(kaneko16_ay1_YM2149_w)
- AM_RANGE(0x40001e, 0x40001f) AM_WRITE(bakubrkr_oki_bank_sw) // OKI bank Switch
+ AM_RANGE(0x40001e, 0x40001f) AM_WRITE(bakubrkr_oki_bank_w) // OKI bank Switch
AM_RANGE(0x400200, 0x40021f) AM_READWRITE(kaneko16_ay2_YM2149_r,kaneko16_ay2_YM2149_w) // Sound
AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) //
AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
@@ -371,7 +372,7 @@ ADDRESS_MAP_END
***************************************************************************/
static ADDRESS_MAP_START( blazeon, AS_PROGRAM, 16, kaneko16_state )
- AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM
AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
@@ -417,10 +418,10 @@ WRITE16_MEMBER(kaneko16_gtmr_state::bloodwar_coin_lockout_w)
{
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x0100);
- coin_counter_w(machine(), 1, data & 0x0200);
- coin_lockout_w(machine(), 0, data & 0x8000);
- coin_lockout_w(machine(), 1, data & 0x8000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0200);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x8000);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x8000);
}
}
@@ -760,7 +761,7 @@ ADDRESS_MAP_END
***************************************************************************/
static ADDRESS_MAP_START( blazeon_soundmem, AS_PROGRAM, 8, kaneko16_state )
- AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
+ AM_RANGE(0x0000, 0xffff) AM_ROM // ROM
AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM
ADDRESS_MAP_END
@@ -770,6 +771,27 @@ static ADDRESS_MAP_START( blazeon_soundport, AS_IO, 8, kaneko16_state )
AM_RANGE(0x06, 0x06) AM_READ(soundlatch_byte_r)
ADDRESS_MAP_END
+/***************************************************************************
+ Wing Force
+***************************************************************************/
+
+WRITE8_MEMBER(kaneko16_state::wingforc_oki_bank_w)
+{
+ if (data <= 2)
+ m_oki->set_bank_base(0x40000 * data);
+ else
+ logerror("%s: unknown OKI bank %02X\n", machine().describe_context(), data);
+}
+
+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(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)
+ AM_RANGE(0x0c, 0x0c) AM_WRITE(wingforc_oki_bank_w)
+ADDRESS_MAP_END
+
/***************************************************************************
@@ -1063,6 +1085,70 @@ static INPUT_PORTS_START( blazeon )
INPUT_PORTS_END
/***************************************************************************
+ Wing Force
+***************************************************************************/
+
+static INPUT_PORTS_START( wingforc )
+ PORT_START("DSW2_P1") /* c00000.w */
+ // The game reads and stores these the same as Blaze On.
+ // However, none of them actually get used. Lives does work if you patch out the
+ // code that actively zeroes out the value it reads from here.
+ PORT_DIPUNUSED_DIPLOC( 0x0001, 0x0001, "SW1:1" )
+ PORT_DIPUNUSED_DIPLOC( 0x0002, 0x0002, "SW1:2" )
+ PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:3" )
+ PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW1:4" )
+ PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW1:5" )
+ PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:6" )
+ PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW1:7" )
+ PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW1:8" )
+
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+
+ PORT_START("DSW1_P2") /* c00002.w */
+ // In a similar story to DSW2, these are read and then forced to zero.
+ // These are credit selections with the same values as Blaze On.
+ // These work if you remove the code to force to zero, but they don't
+ // give any feedback unless the coin increases the credit counter.
+ PORT_DIPUNUSED_DIPLOC( 0x0001, 0x0001, "SW2:1" )
+ PORT_DIPUNUSED_DIPLOC( 0x0002, 0x0002, "SW2:2" )
+ PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW2:3" )
+ PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW2:4" )
+ PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW2:5" )
+ PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" )
+ PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" )
+ PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW2:8" )
+
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+
+ PORT_START("UNK") /* ? - c00004.w */
+ PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
+
+ PORT_START("SYSTEM") /* c00006.w */
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ 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_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE1 )
+INPUT_PORTS_END
+
+/***************************************************************************
Blood Warrior
***************************************************************************/
@@ -1910,7 +1996,7 @@ static MACHINE_CONFIG_START( blazeon, kaneko16_state )
MCFG_CPU_PROGRAM_MAP(blazeon)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
- MCFG_CPU_ADD("audiocpu", Z80,4000000) /* D780C-2 */
+ MCFG_CPU_ADD("audiocpu", Z80,4000000) /* D780C-2 (6 MHz) */
MCFG_CPU_PROGRAM_MAP(blazeon_soundmem)
MCFG_CPU_IO_MAP(blazeon_soundport)
@@ -1951,6 +2037,59 @@ static MACHINE_CONFIG_START( blazeon, kaneko16_state )
MACHINE_CONFIG_END
+/***************************************************************************
+ Wing Force
+***************************************************************************/
+
+static MACHINE_CONFIG_START( wingforc, kaneko16_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* TMP68HC000N-16 */
+ MCFG_CPU_PROGRAM_MAP(blazeon)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
+
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) /* D780C-2 (6 MHz) */
+ MCFG_CPU_PROGRAM_MAP(blazeon_soundmem)
+ MCFG_CPU_IO_MAP(wingforc_soundport)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
+ MCFG_SCREEN_REFRESH_RATE(59.1854)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
+ MCFG_SCREEN_SIZE(320, 240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1 -16)
+ MCFG_SCREEN_UPDATE_DRIVER(kaneko16_state, screen_update_kaneko16)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", 1x4bit_1x4bit)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
+
+ MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
+ kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
+ kaneko_view2_tilemap_device::set_offset(*device, 0x33, 0x8+1, 320, 240);
+ MCFG_KANEKO_TMAP_GFXDECODE("gfxdecode")
+
+ MCFG_DEVICE_ADD_VU002_SPRITES
+ kaneko16_sprite_device::set_priorities(*device, 1 /* "above tile[0], below the others" */ ,2 /* "above tile[0-1], below the others" */ ,8 /* above all */,8 /* above all */);
+ kaneko16_sprite_device::set_offsets(*device, 0x10000 - 0x680, 0x000);
+ MCFG_KANEKO16_SPRITE_GFXDECODE("gfxdecode")
+
+ // there is actually a 2nd sprite chip! looks like our device emulation handles both at once
+
+ MCFG_VIDEO_START_OVERRIDE(kaneko16_state,kaneko16)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4)
+
+ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
/***************************************************************************
Great 1000 Miles Rally
@@ -2315,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);
}
}
@@ -2470,8 +2612,8 @@ ROM_START( explbrkr )
ROM_COPY( "user1", 0x0c0000, 0x160000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x180000, 0x020000)
ROM_COPY( "user1", 0x0e0000, 0x1a0000, 0x020000)
- ROM_FILL( 0x1c0000, 0x020000, 0x000000 )
- ROM_FILL( 0x1e0000, 0x020000, 0x000000 )
+ ROM_FILL( 0x1c0000, 0x020000, 0x000000 )
+ ROM_FILL( 0x1e0000, 0x020000, 0x000000 )
ROM_END
ROM_START( bakubrkr )
@@ -2512,8 +2654,8 @@ ROM_START( bakubrkr )
ROM_COPY( "user1", 0x0c0000, 0x160000, 0x020000)
ROM_COPY( "user1", 0x000000, 0x180000, 0x020000)
ROM_COPY( "user1", 0x0e0000, 0x1a0000, 0x020000)
- ROM_FILL( 0x1c0000, 0x020000, 0x000000 )
- ROM_FILL( 0x1e0000, 0x020000, 0x000000 )
+ ROM_FILL( 0x1c0000, 0x020000, 0x000000 )
+ ROM_FILL( 0x1e0000, 0x020000, 0x000000 )
ROM_END
@@ -2745,7 +2887,7 @@ CUSTOM: KANEKO VU-002 x2
***************************************************************************/
ROM_START( blazeon )
- ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
+ ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF ) /* 68000 Code */
ROM_LOAD16_BYTE( "bz_prg1.u80", 0x000000, 0x040000, CRC(8409e31d) SHA1(a9dfc299f4b457df190314401aef309adfaf9bae) )
ROM_LOAD16_BYTE( "bz_prg2.u81", 0x000001, 0x040000, CRC(b8a0a08b) SHA1(5f275b98d3e49a834850b45179d26e8c2f9fd604) )
@@ -2764,6 +2906,111 @@ ROM_END
/***************************************************************************
+ Wing Force (Japan, prototype)
+
+Proto board without the later Z09AF-00x's Toybox protection MCU.
+The missing chip "KD" at U97 is a 74 pqfp just like the Toybox and connected to U92
+where the MCU code would be as well as connected to the EEPROM.
+Half way between the Blaze On board and the later Toybox protected Z09AF boards.
+
+Z08AT-001 PCB:
+
+ Toshiba TMP68HC000N-16
+
+ 2 x VU-002
+ VIEW2-CHIP
+ MUX2-CHIP
+ HELP1-CHIP
+
+ YM2151
+ Y3014B
+
+ ATMEL AT93C46 @ U82 (EEPROM, looks like all its pins go to the unpopulated KD MCU)
+ DSW8
+
+ XTALs: 16.0000 MHz, 13.3330 MHz
+
+ATLAS-SUB PCB:
+
+ NEC D780C-2 @ U1
+ OKI M6295 @ U4
+ TL082CP @ U7 (Wide Bandwidth Dual JFET Input Operational AMP)
+
+ROMS:
+
+ Name Size Location Device Note
+
+ E_2.24.U80 524288 U80 27C040 32 pin riser
+ O_2.24.U81 524288 U81 27C040 32 pin riser
+ SP0M.U1 524288 U1 27C040 32 pin riser
+ SP1M.U1 524288 U1 27C040 32 pin riser
+ BG0AM.U2 524288 U2 27C040 42 pin riser
+ BG0BM.U2 524288 U2 27C040 42 pin riser
+ BG1AM.U3 524288 U3 27C040 42 pin riser
+ BG1BM.U3 524288 U3 27C040 42 pin riser
+ SP2M.U20 524288 U20 27C040 32 pin riser
+ SP3M.U20 524288 U20 27C040 32 pin riser
+ SP2M.U68 524288 U68 27C040 32 pin riser
+ SP3M.U68 524288 U68 27C040 32 pin riser
+ SP0M.U69 524288 U69 27C040 32 pin riser
+ SP1M.U69 524288 U69 27C040 32 pin riser
+ S-DRV_2.22.U45 U45 27512 under ATLAS SUB
+ PCM.U5 524288 U5 27C040 ATLAS SUB
+ EEPROM.U7 U7 TL082 ATLAS SUB, not dumped
+
+Video from the PCB:
+
+ http://tmblr.co/ZgJvzv1-0SVG1
+
+***************************************************************************/
+
+ROM_START( wingforc )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "e_2.24.u80", 0x000000, 0x80000, CRC(837e0726) SHA1(349013edc5ccdfd05ae022563e6a831ce98e4a1a) )
+ ROM_LOAD16_BYTE( "o_2.24.u81", 0x000001, 0x80000, CRC(b6983437) SHA1(0a124e64ad37f9381f8a10a7b462a29563c2ccd9) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 Code */
+ ROM_LOAD( "s-drv_2.22.u45", 0x00000, 0x10000, CRC(ccdc2758) SHA1(5c0448a70306bd7574f35056ad45ffcbd4a866a8) )
+
+ ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites */
+ // two sprite chips, roms are doubled
+ ROM_LOAD( "sp0m.u69", 0x000000, 0x80000, CRC(8be26a05) SHA1(5b54cd74235c0e32a234ddbe9cf26817700451f1) )
+ ROM_LOAD( "sp0m.u1", 0x000000, 0x80000, CRC(8be26a05) SHA1(5b54cd74235c0e32a234ddbe9cf26817700451f1) )
+
+ ROM_LOAD( "sp1m.u1", 0x080000, 0x80000, CRC(ad8c5b68) SHA1(438b58df301a06266284aad63e19d607d7e9f726) )
+ ROM_LOAD( "sp1m.u69", 0x080000, 0x80000, CRC(ad8c5b68) SHA1(438b58df301a06266284aad63e19d607d7e9f726) )
+
+ ROM_LOAD( "sp2m.u20", 0x100000, 0x80000, CRC(b5994bda) SHA1(66bd9664e31ac0c831a1c538d895386cabb03ac8) )
+ ROM_LOAD( "sp2m.u68", 0x100000, 0x80000, CRC(b5994bda) SHA1(66bd9664e31ac0c831a1c538d895386cabb03ac8) )
+
+ ROM_LOAD( "sp3m.u20", 0x180000, 0x80000, CRC(889ddf72) SHA1(1eaeb4580133d38185ff52fbdc445744c207a202) )
+ ROM_LOAD( "sp3m.u68", 0x180000, 0x80000, CRC(889ddf72) SHA1(1eaeb4580133d38185ff52fbdc445744c207a202) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles (Scrambled) */
+ ROM_LOAD16_BYTE( "bg0am.u2", 0x000000, 0x80000, CRC(f4276860) SHA1(8c0848d43ec07f88734993a996a62919979c75ea) )
+ ROM_LOAD16_BYTE( "bg0bm.u2", 0x000001, 0x80000, CRC(9df92283) SHA1(53bcac1d63b7bb84b664507906ee768a83be28c9) )
+ ROM_LOAD16_BYTE( "bg1am.u3", 0x100000, 0x80000, CRC(a44fdebb) SHA1(676ade63d22818c7a7adf39d42aad41fa93319d2) )
+ ROM_LOAD16_BYTE( "bg1bm.u3", 0x100001, 0x80000, CRC(a9b9fc5d) SHA1(33db691007a8cf25aea6b87a0f009c50df2676f2) )
+
+ ROM_REGION( 0x80000, "user1", 0 ) /* OKI Sample ROM */
+ ROM_LOAD( "pcm.u5", 0x00000, 0x80000, CRC(233569fd) SHA1(eb835008bcb961528c0ef4ca72e44ee08c517b81) )
+
+ /* $00000-$20000 stays the same in all sound banks, */
+ /* the second half of the bank is what gets switched */
+ ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
+ ROM_COPY( "user1", 0x000000, 0x000000, 0x020000)
+ ROM_COPY( "user1", 0x020000, 0x020000, 0x020000)
+ ROM_COPY( "user1", 0x000000, 0x040000, 0x020000)
+ ROM_COPY( "user1", 0x040000, 0x060000, 0x020000)
+ ROM_COPY( "user1", 0x000000, 0x080000, 0x020000)
+ ROM_COPY( "user1", 0x060000, 0x0a0000, 0x020000)
+ ROM_COPY( "user1", 0x000000, 0x0c0000, 0x020000)
+ ROM_COPY( "user1", 0x000000, 0x0e0000, 0x020000)
+ROM_END
+
+
+/***************************************************************************
+
Blood Warrior
Kaneko 1994
@@ -4083,17 +4330,18 @@ DRIVER_INIT_MEMBER( kaneko16_shogwarr_state, brapboys )
***************************************************************************/
-GAME( 1991, berlwall, 0, berlwall, berlwall, kaneko16_berlwall_state, berlwall, ROT0, "Kaneko", "The Berlin Wall", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, berlwallt,berlwall, berlwall, berlwallt,kaneko16_berlwall_state, berlwall, ROT0, "Kaneko", "The Berlin Wall (bootleg ?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, berlwall, 0, berlwall, berlwall, kaneko16_berlwall_state, berlwall, ROT0, "Kaneko", "The Berlin Wall", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, berlwallt,berlwall, berlwall, berlwallt,kaneko16_berlwall_state, berlwall, ROT0, "Kaneko", "The Berlin Wall (bootleg?)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, berlwallk,berlwall, berlwall, berlwallk,kaneko16_berlwall_state, berlwall, ROT0, "Kaneko (Inter license)", "The Berlin Wall (Korea)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, packbang, 0, berlwall, packbang, kaneko16_berlwall_state, berlwall, ROT90, "Kaneko", "Pack'n Bang Bang (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // priorities between stages?
+GAME( 1994, packbang, 0, berlwall, packbang, kaneko16_berlwall_state, berlwall, ROT90, "Kaneko", "Pack'n Bang Bang (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // priorities between stages?
GAME( 1991, mgcrystl, 0, mgcrystl, mgcrystl, kaneko16_state, kaneko16, ROT0, "Kaneko", "Magical Crystals (World, 92/01/10)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, mgcrystlo,mgcrystl, mgcrystl, mgcrystl, kaneko16_state, kaneko16, ROT0, "Kaneko", "Magical Crystals (World, 91/12/10)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, mgcrystlj,mgcrystl, mgcrystl, mgcrystl, kaneko16_state, kaneko16, ROT0, "Kaneko (Atlus license)", "Magical Crystals (Japan, 92/01/13)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, blazeon, 0, blazeon, blazeon, kaneko16_state, kaneko16, ROT0, "Atlus", "Blaze On (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, blazeon, 0, blazeon, blazeon, kaneko16_state, kaneko16, ROT0, "A.I (Atlus license)", "Blaze On (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, explbrkr, 0, bakubrkr, bakubrkr, kaneko16_state, kaneko16, ROT90, "Kaneko", "Explosive Breaker", MACHINE_SUPPORTS_SAVE )
GAME( 1992, bakubrkr, explbrkr, bakubrkr, bakubrkr, kaneko16_state, kaneko16, ROT90, "Kaneko", "Bakuretsu Breaker", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, wingforc, 0, wingforc, wingforc, kaneko16_state, kaneko16, ROT270,"A.I (Atlus license)", "Wing Force (Japan, prototype)", MACHINE_SUPPORTS_SAVE )
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 )
diff --git a/src/mame/drivers/kangaroo.cpp b/src/mame/drivers/kangaroo.cpp
index e5fad3069d5..54ef454f871 100644
--- a/src/mame/drivers/kangaroo.cpp
+++ b/src/mame/drivers/kangaroo.cpp
@@ -237,8 +237,8 @@ WRITE8_MEMBER(kangaroo_state::mcu_sim_w)
WRITE8_MEMBER(kangaroo_state::kangaroo_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
diff --git a/src/mame/drivers/kas89.cpp b/src/mame/drivers/kas89.cpp
index 7ae13148326..cf7cd47487f 100644
--- a/src/mame/drivers/kas89.cpp
+++ b/src/mame/drivers/kas89.cpp
@@ -272,7 +272,7 @@ WRITE_LINE_MEMBER(kas89_state::kas89_vdp_interrupt)
void kas89_state::machine_start()
{
- output_set_lamp_value(37, 0); /* turning off the operator led */
+ output().set_lamp_value(37, 0); /* turning off the operator led */
}
void kas89_state::machine_reset()
@@ -309,7 +309,7 @@ READ8_MEMBER(kas89_state::mux_r)
case 0x20: return m_pl6->read();
case 0x40:
{
- output_set_lamp_value(37, 1 - ((m_svc->read() >> 5) & 1)); /* Operator Key LAMP */
+ output().set_lamp_value(37, 1 - ((m_svc->read() >> 5) & 1)); /* Operator Key LAMP */
return m_svc->read();
}
case 0x80: return m_dsw->read(); /* Polled at $162a through NMI routine */
@@ -345,8 +345,8 @@ WRITE8_MEMBER(kas89_state::control_w)
m_main_nmi_enable = data & 0x40;
- coin_counter_w(machine(), 0, (data ^ 0xff) & 0x01); /* Credits In counter */
- coin_counter_w(machine(), 1, (data ^ 0xff) & 0x02); /* Credits Out counter */
+ machine().bookkeeping().coin_counter_w(0, (data ^ 0xff) & 0x01); /* Credits In counter */
+ machine().bookkeeping().coin_counter_w(1, (data ^ 0xff) & 0x02); /* Credits Out counter */
}
WRITE8_MEMBER(kas89_state::sound_comm_w)
@@ -375,7 +375,7 @@ WRITE8_MEMBER(kas89_state::sound_comm_w)
UINT8 i;
for ( i = 0; i < 37; i++ )
{
- output_set_lamp_value(i, 0); /* All roulette LEDs OFF */
+ output().set_lamp_value(i, 0); /* All roulette LEDs OFF */
}
}
@@ -421,7 +421,7 @@ WRITE8_MEMBER(kas89_state::led_mux_select_w)
UINT8 i;
for ( i = 0; i < 37; i++ )
{
- output_set_lamp_value(i, 0); /* All LEDs OFF */
+ output().set_lamp_value(i, 0); /* All LEDs OFF */
}
switch(data)
@@ -430,69 +430,69 @@ WRITE8_MEMBER(kas89_state::led_mux_select_w)
{
for ( i = 0; i < 37; i++ )
{
- output_set_lamp_value(i, 0); /* All LEDs OFF */
+ output().set_lamp_value(i, 0); /* All LEDs OFF */
}
}
case 0x01:
{
- output_set_lamp_value(11, (m_leds_mux_data >> 0) & 1); /* Number 11 LED */
- output_set_lamp_value(36, (m_leds_mux_data >> 1) & 1); /* Number 36 LED */
- output_set_lamp_value(13, (m_leds_mux_data >> 2) & 1); /* Number 13 LED */
- output_set_lamp_value(27, (m_leds_mux_data >> 3) & 1); /* Number 27 LED */
- output_set_lamp_value(06, (m_leds_mux_data >> 4) & 1); /* Number 6 LED */
- output_set_lamp_value(34, (m_leds_mux_data >> 5) & 1); /* Number 34 LED */
- output_set_lamp_value(17, (m_leds_mux_data >> 6) & 1); /* Number 17 LED */
- output_set_lamp_value(25, (m_leds_mux_data >> 7) & 1); /* Number 25 LED */
+ output().set_lamp_value(11, (m_leds_mux_data >> 0) & 1); /* Number 11 LED */
+ output().set_lamp_value(36, (m_leds_mux_data >> 1) & 1); /* Number 36 LED */
+ output().set_lamp_value(13, (m_leds_mux_data >> 2) & 1); /* Number 13 LED */
+ output().set_lamp_value(27, (m_leds_mux_data >> 3) & 1); /* Number 27 LED */
+ output().set_lamp_value(06, (m_leds_mux_data >> 4) & 1); /* Number 6 LED */
+ output().set_lamp_value(34, (m_leds_mux_data >> 5) & 1); /* Number 34 LED */
+ output().set_lamp_value(17, (m_leds_mux_data >> 6) & 1); /* Number 17 LED */
+ output().set_lamp_value(25, (m_leds_mux_data >> 7) & 1); /* Number 25 LED */
break;
}
case 0x02:
{
- output_set_lamp_value( 2, (m_leds_mux_data >> 0) & 1); /* Number 2 LED */
- output_set_lamp_value(21, (m_leds_mux_data >> 1) & 1); /* Number 21 LED */
- output_set_lamp_value( 4, (m_leds_mux_data >> 2) & 1); /* Number 4 LED */
- output_set_lamp_value(19, (m_leds_mux_data >> 3) & 1); /* Number 19 LED */
- output_set_lamp_value(15, (m_leds_mux_data >> 4) & 1); /* Number 15 LED */
- output_set_lamp_value(32, (m_leds_mux_data >> 5) & 1); /* Number 32 LED */
- output_set_lamp_value( 0, (m_leds_mux_data >> 6) & 1); /* Number 0 LED */
- output_set_lamp_value(26, (m_leds_mux_data >> 7) & 1); /* Number 26 LED */
+ output().set_lamp_value( 2, (m_leds_mux_data >> 0) & 1); /* Number 2 LED */
+ output().set_lamp_value(21, (m_leds_mux_data >> 1) & 1); /* Number 21 LED */
+ output().set_lamp_value( 4, (m_leds_mux_data >> 2) & 1); /* Number 4 LED */
+ output().set_lamp_value(19, (m_leds_mux_data >> 3) & 1); /* Number 19 LED */
+ output().set_lamp_value(15, (m_leds_mux_data >> 4) & 1); /* Number 15 LED */
+ output().set_lamp_value(32, (m_leds_mux_data >> 5) & 1); /* Number 32 LED */
+ output().set_lamp_value( 0, (m_leds_mux_data >> 6) & 1); /* Number 0 LED */
+ output().set_lamp_value(26, (m_leds_mux_data >> 7) & 1); /* Number 26 LED */
break;
}
case 0x04:
{
- output_set_lamp_value( 3, (m_leds_mux_data >> 0) & 1); /* Number 3 LED */
- output_set_lamp_value(35, (m_leds_mux_data >> 1) & 1); /* Number 35 LED */
- output_set_lamp_value(12, (m_leds_mux_data >> 2) & 1); /* Number 12 LED */
- output_set_lamp_value(28, (m_leds_mux_data >> 3) & 1); /* Number 28 LED */
- output_set_lamp_value( 7, (m_leds_mux_data >> 4) & 1); /* Number 7 LED */
- output_set_lamp_value(29, (m_leds_mux_data >> 5) & 1); /* Number 29 LED */
- output_set_lamp_value(18, (m_leds_mux_data >> 6) & 1); /* Number 18 LED */
+ output().set_lamp_value( 3, (m_leds_mux_data >> 0) & 1); /* Number 3 LED */
+ output().set_lamp_value(35, (m_leds_mux_data >> 1) & 1); /* Number 35 LED */
+ output().set_lamp_value(12, (m_leds_mux_data >> 2) & 1); /* Number 12 LED */
+ output().set_lamp_value(28, (m_leds_mux_data >> 3) & 1); /* Number 28 LED */
+ output().set_lamp_value( 7, (m_leds_mux_data >> 4) & 1); /* Number 7 LED */
+ output().set_lamp_value(29, (m_leds_mux_data >> 5) & 1); /* Number 29 LED */
+ output().set_lamp_value(18, (m_leds_mux_data >> 6) & 1); /* Number 18 LED */
break;
}
case 0x08:
{
- output_set_lamp_value(22, (m_leds_mux_data >> 0) & 1); /* Number 22 LED */
- output_set_lamp_value( 9, (m_leds_mux_data >> 1) & 1); /* Number 9 LED */
- output_set_lamp_value(31, (m_leds_mux_data >> 2) & 1); /* Number 31 LED */
- output_set_lamp_value(14, (m_leds_mux_data >> 3) & 1); /* Number 14 LED */
- output_set_lamp_value(20, (m_leds_mux_data >> 4) & 1); /* Number 20 LED */
- output_set_lamp_value( 1, (m_leds_mux_data >> 5) & 1); /* Number 1 LED */
- output_set_lamp_value(33, (m_leds_mux_data >> 6) & 1); /* Number 33 LED */
+ output().set_lamp_value(22, (m_leds_mux_data >> 0) & 1); /* Number 22 LED */
+ output().set_lamp_value( 9, (m_leds_mux_data >> 1) & 1); /* Number 9 LED */
+ output().set_lamp_value(31, (m_leds_mux_data >> 2) & 1); /* Number 31 LED */
+ output().set_lamp_value(14, (m_leds_mux_data >> 3) & 1); /* Number 14 LED */
+ output().set_lamp_value(20, (m_leds_mux_data >> 4) & 1); /* Number 20 LED */
+ output().set_lamp_value( 1, (m_leds_mux_data >> 5) & 1); /* Number 1 LED */
+ output().set_lamp_value(33, (m_leds_mux_data >> 6) & 1); /* Number 33 LED */
break;
}
case 0x10:
{
- output_set_lamp_value(16, (m_leds_mux_data >> 0) & 1); /* Number 16 LED */
- output_set_lamp_value(24, (m_leds_mux_data >> 1) & 1); /* Number 24 LED */
- output_set_lamp_value( 5, (m_leds_mux_data >> 2) & 1); /* Number 5 LED */
- output_set_lamp_value(10, (m_leds_mux_data >> 3) & 1); /* Number 10 LED */
- output_set_lamp_value(23, (m_leds_mux_data >> 4) & 1); /* Number 23 LED */
- output_set_lamp_value( 8, (m_leds_mux_data >> 5) & 1); /* Number 8 LED */
- output_set_lamp_value(30, (m_leds_mux_data >> 6) & 1); /* Number 30 LED */
+ output().set_lamp_value(16, (m_leds_mux_data >> 0) & 1); /* Number 16 LED */
+ output().set_lamp_value(24, (m_leds_mux_data >> 1) & 1); /* Number 24 LED */
+ output().set_lamp_value( 5, (m_leds_mux_data >> 2) & 1); /* Number 5 LED */
+ output().set_lamp_value(10, (m_leds_mux_data >> 3) & 1); /* Number 10 LED */
+ output().set_lamp_value(23, (m_leds_mux_data >> 4) & 1); /* Number 23 LED */
+ output().set_lamp_value( 8, (m_leds_mux_data >> 5) & 1); /* Number 8 LED */
+ output().set_lamp_value(30, (m_leds_mux_data >> 6) & 1); /* Number 30 LED */
break;
}
@@ -500,7 +500,7 @@ WRITE8_MEMBER(kas89_state::led_mux_select_w)
{
for ( i = 0; i < 37; i++ )
{
- output_set_lamp_value(i, 1); /* All LEDs ON */
+ output().set_lamp_value(i, 1); /* All LEDs ON */
}
}
}
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/kenseim.cpp b/src/mame/drivers/kenseim.cpp
index 3ecc40645fc..e5ec6e2cd78 100644
--- a/src/mame/drivers/kenseim.cpp
+++ b/src/mame/drivers/kenseim.cpp
@@ -190,14 +190,14 @@ public:
{
char temp[32];
sprintf(temp, "molea_%d", i);
- output_set_value(temp, mole_state_a[i]);
+ output().set_value(temp, mole_state_a[i]);
}
for (int i = 0; i < 6; i++)
{
char temp[32];
sprintf(temp, "moleb_%d", i);
- output_set_value(temp, mole_state_b[i]);
+ output().set_value(temp, mole_state_b[i]);
}
}
@@ -260,7 +260,7 @@ public:
void kenseim_state::set_leds(UINT32 ledstates)
{
for (int i=0; i<20; i++)
- output_set_lamp_value(i+1, ((ledstates & (1 << i)) != 0));
+ output().set_lamp_value(i+1, ((ledstates & (1 << i)) != 0));
}
// could be wrong
@@ -352,10 +352,10 @@ WRITE8_MEMBER(kenseim_state::cpu_portc_w)
// d5: coin lock
// d6: left start button lamp
// d7: right start button lamp
- coin_lockout_w(machine(), 0, (data & 0x10) ? 0 : 1); // toggles if you attempt to insert a coin when there are already 15 coins inserted
- coin_counter_w(machine(), 0, (data & 0x20) ? 0 : 1);
- output_set_value("startlamp1", (data & 0x80) ? 0 : 1);
- output_set_value("startlamp2", (data & 0x40) ? 0 : 1);
+ machine().bookkeeping().coin_lockout_w(0, (data & 0x10) ? 0 : 1); // toggles if you attempt to insert a coin when there are already 15 coins inserted
+ machine().bookkeeping().coin_counter_w(0, (data & 0x20) ? 0 : 1);
+ output().set_value("startlamp1", (data & 0x80) ? 0 : 1);
+ output().set_value("startlamp2", (data & 0x40) ? 0 : 1);
}
@@ -400,10 +400,10 @@ WRITE16_MEMBER(kenseim_state::cps1_kensei_w)
if (ACCESSING_BITS_8_15)
{
// NOTE: remapped from default jamma output pins:
- // coin_counter_w(machine(), 0, data & 0x0100);
- // coin_counter_w(machine(), 1, data & 0x0200);
- // coin_lockout_w(machine(), 0, ~data & 0x0400);
- // coin_lockout_w(machine(), 1, ~data & 0x0800);
+ // machine().bookkeeping().coin_counter_w(0, data & 0x0100);
+ // machine().bookkeeping().coin_counter_w(1, data & 0x0200);
+ // machine().bookkeeping().coin_lockout_w(0, ~data & 0x0400);
+ // machine().bookkeeping().coin_lockout_w(1, ~data & 0x0800);
// bit 15 = CPS-A custom reset?
diff --git a/src/mame/drivers/kim1.cpp b/src/mame/drivers/kim1.cpp
index eabedbe6315..828b8357805 100644
--- a/src/mame/drivers/kim1.cpp
+++ b/src/mame/drivers/kim1.cpp
@@ -236,7 +236,7 @@ WRITE8_MEMBER( kim1_state::kim1_u2_write_a )
{
if ( data & 0x80 )
{
- output_set_digit_value( idx-4, data & 0x7f );
+ output().set_digit_value( idx-4, data & 0x7f );
m_led_time[idx - 4] = 15;
}
}
@@ -290,7 +290,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(kim1_state::kim1_update_leds)
if ( m_led_time[i] )
m_led_time[i]--;
else
- output_set_digit_value( i, 0 );
+ output().set_digit_value( i, 0 );
}
}
diff --git a/src/mame/drivers/kingdrby.cpp b/src/mame/drivers/kingdrby.cpp
index 5939a503db5..ac0f42de2bd 100644
--- a/src/mame/drivers/kingdrby.cpp
+++ b/src/mame/drivers/kingdrby.cpp
@@ -391,8 +391,8 @@ WRITE8_MEMBER(kingdrby_state::led_array_w)
they goes from 0 to 5, to indicate the number.
If one player bets something, the other led will toggle between p1 and p2 bets.
*/
- output_set_digit_value(0xf + offset, led_map[(data & 0xf0) >> 4]);
- output_set_digit_value(0x0 + offset, led_map[(data & 0x0f) >> 0]);
+ output().set_digit_value(0xf + offset, led_map[(data & 0xf0) >> 4]);
+ output().set_digit_value(0x0 + offset, led_map[(data & 0x0f) >> 0]);
}
diff --git a/src/mame/drivers/klax.cpp b/src/mame/drivers/klax.cpp
index 4110ff92da6..98590a8f486 100644
--- a/src/mame/drivers/klax.cpp
+++ b/src/mame/drivers/klax.cpp
@@ -98,7 +98,7 @@ static ADDRESS_MAP_START( klax2bl_map, AS_PROGRAM, 16, klax_state )
AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write)
AM_RANGE(0x260000, 0x260001) AM_READ_PORT("P1") AM_WRITE(klax_latch_w)
AM_RANGE(0x260002, 0x260003) AM_READ_PORT("P2")
-// AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // no OKI here
+// AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // no OKI here
AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(interrupt_ack_w)
AM_RANGE(0x3e0000, 0x3e07ff) AM_DEVREADWRITE8("palette", palette_device, read, write, 0xff00) AM_SHARE("palette")
@@ -237,14 +237,14 @@ static MACHINE_CONFIG_DERIVED( klax2bl, klax )
MCFG_CPU_ADD("audiocpu", Z80, 6000000) /* ? */
MCFG_CPU_PROGRAM_MAP(bootleg_sound_map)
-
+
MCFG_GFXDECODE_MODIFY("gfxdecode", klax2bl)
// guess, probably something like this
MCFG_SOUND_ADD("msm", MSM5205, 375000) /* ? */
-// MCFG_MSM5205_VCLK_CB(WRITELINE(klax_state, m5205_int1)) /* interrupt function */
-// MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
-// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+// MCFG_MSM5205_VCLK_CB(WRITELINE(klax_state, m5205_int1)) /* interrupt function */
+// MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* 4KHz 4-bit */
+// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp
index 97b23e6d7c8..f134febe790 100644
--- a/src/mame/drivers/konamigx.cpp
+++ b/src/mame/drivers/konamigx.cpp
@@ -108,7 +108,7 @@
// TODO: check on PCB
#define MASTER_CLOCK XTAL_24MHz
-#define SUB_CLOCK XTAL_16MHz
+#define SUB_CLOCK XTAL_16MHz
/**********************************************************************************/
/*
@@ -221,7 +221,7 @@ void konamigx_state::generate_sprites(address_space &space, UINT32 src, UINT32 s
UINT16 color_set = 0x0000;
UINT16 color_rotate = 0x0000;
UINT16 v;
-
+
v = space.read_word(adr+24);
if(v & 0x8000) {
color_mask = 0xf3ff;
@@ -250,7 +250,7 @@ void konamigx_state::generate_sprites(address_space &space, UINT32 src, UINT32 s
zoom_x = 0x40;
if(!zoom_y)
zoom_y = 0x40;
-
+
if(set >= 0x200000 && set < 0xd00000)
{
UINT16 count2 = space.read_word(set);
@@ -262,7 +262,7 @@ void konamigx_state::generate_sprites(address_space &space, UINT32 src, UINT32 s
UINT16 col = space.read_word(set+4);
short y = space.read_word(set+6);
short x = space.read_word(set+8);
-
+
if(idx == 0xffff) {
set = (flip<<16) | col;
if(set >= 0x200000 && set < 0xd00000)
@@ -475,8 +475,8 @@ WRITE32_MEMBER(konamigx_state::eeprom_w)
m_eepromout->write(odata, 0xff);
- coin_counter_w(machine(), 0, odata & 0x08);
- coin_counter_w(machine(), 1, odata & 0x10);
+ machine().bookkeeping().coin_counter_w(0, odata & 0x08);
+ machine().bookkeeping().coin_counter_w(1, odata & 0x10);
m_gx_wrport1_0 = odata;
}
@@ -504,7 +504,7 @@ WRITE32_MEMBER(konamigx_state::eeprom_w)
}
WRITE32_MEMBER(konamigx_state::control_w)
-{
+{
// TODO: derive from reported PCB XTALs
const UINT32 pixclock[4] = { XTAL_6MHz, XTAL_8MHz, XTAL_12MHz, XTAL_16MHz};
//logerror("write %x to control register (mask=%x)\n", data, mem_mask);
@@ -545,8 +545,12 @@ WRITE32_MEMBER(konamigx_state::control_w)
m_k055673->k053246_set_objcha_line((data&0x100000) ? ASSERT_LINE : CLEAR_LINE);
m_gx_wrport2 = (data>>16)&0xff;
-
- m_k053252->set_unscaled_clock(pixclock[m_gx_wrport2 & 3]);
+
+ if(m_prev_pixel_clock != (m_gx_wrport2 & 3))
+ {
+ m_k053252->set_unscaled_clock(pixclock[m_gx_wrport2 & 3]);
+ m_prev_pixel_clock = m_gx_wrport2 & 3;
+ }
}
}
@@ -593,7 +597,10 @@ TIMER_CALLBACK_MEMBER(konamigx_state::dmaend_callback)
void konamigx_state::dmastart_callback(int data)
{
+ int sprite_timing;
+
// raise the DMA busy flag
+ // TODO: is it supposed to raise even if DMA is disabled?
m_gx_rdport1_3 |= 2;
// begin transfer if DMAEN(bit4 of OBJSET1) is set (see p.48)
@@ -604,7 +611,12 @@ void konamigx_state::dmastart_callback(int data)
}
// simulate DMA delay
- m_dmadelay_timer->adjust(attotime::from_usec(m_gx_wrport2 & 1 ? (256+32) : (342+42)));
+ // TODO: Rushing Heroes doesn't like reported sprite timings, probably due of sprite protection being issued istantly or requires the double buffering ...
+ if(m_gx_rushingheroes_hack == 1)
+ sprite_timing = 64;
+ else
+ sprite_timing = m_gx_wrport2 & 1 ? (256+32) : (342+42);
+ m_dmadelay_timer->adjust(attotime::from_usec(sprite_timing));
}
@@ -636,7 +648,7 @@ INTERRUPT_GEN_MEMBER(konamigx_state::konamigx_type2_vblank_irq)
TIMER_DEVICE_CALLBACK_MEMBER(konamigx_state::konamigx_type2_scanline)
{
int scanline = param;
-
+
if(scanline == 48)
{
if (m_gx_syncen & 0x40)
@@ -870,10 +882,10 @@ WRITE32_MEMBER(konamigx_state::type4_prot_w)
known commands:
rng2 rushhero vsnet winspike what
------------------------------------------------------------------------------
- 0a56 0d96 0d14 0d1c memcpy from c01000 to c01400 for 0x400 bytes
+ 0a56 0d96 0d14 0d1c memcpy from c01000 to c01400 for 0x400 bytes
0b16 generate sprite list at c01000 or c08400 (not sure entirely, see routine at 209922 in rungun2)
- 0d97 0515 parse big DMA list at c10200
- 57a copy 4 bytes from c00f10 to c10f00 and 4 bytes from c00f30 to c0fe00
+ 0d97 0515 parse big DMA list at c10200
+ 057a copy 4 bytes from c00f10 to c10f00 and 4 bytes from c00f30 to c0fe00
*/
if ((m_last_prot_op == 0xa56) || (m_last_prot_op == 0xd96) || (m_last_prot_op == 0xd14) || (m_last_prot_op == 0xd1c))
{
@@ -969,7 +981,7 @@ WRITE32_MEMBER(konamigx_state::type4_prot_w)
// cabinet lamps for type 1 games
WRITE32_MEMBER(konamigx_state::type1_cablamps_w)
{
- set_led_status(machine(), 0, (data>>24)&1);
+ output().set_led_value(0, (data>>24)&1);
}
/**********************************************************************************/
@@ -1619,12 +1631,13 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
- MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
+ MCFG_SCREEN_RAW_PARAMS(8000000, 384+24+64+40, 0, 383, 224+16+8+16, 0, 223)
/* These parameters are actual value written to the CCU.
tbyahhoo attract mode desync is caused by another matter. */
-// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
- MCFG_SCREEN_SIZE(64*8, 32*8)
+ //MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600))
+ // TODO: WTF, without these most games crashes? Some legacy call in video code???
+ MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(24, 24+288-1, 16, 16+224-1)
MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx)
@@ -1683,6 +1696,11 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state )
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( konamigx_bios, konamigx )
+ MCFG_DEVICE_MODIFY("k056832")
+ MCFG_K056832_CONFIG("gfx1", 0, K056832_BPP_4, 0, 0, "k055555")
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( gokuparo, konamigx )
MCFG_DEVICE_MODIFY("k055673")
MCFG_K055673_CONFIG("gfx2", 0, K055673_LAYOUT_GX, -46, -23)
@@ -1707,7 +1725,7 @@ static MACHINE_CONFIG_DERIVED( dragoonj, konamigx )
MCFG_DEVICE_MODIFY("k053252")
MCFG_K053252_OFFSETS(24+16, 16)
-
+
MCFG_DEVICE_MODIFY("k056832")
MCFG_K056832_CONFIG("gfx1", 0, K056832_BPP_5, 1, 0, "none")
@@ -1772,8 +1790,8 @@ static MACHINE_CONFIG_DERIVED( racinfrc, konamigx )
MCFG_VIDEO_START_OVERRIDE(konamigx_state, racinfrc)
MCFG_DEVICE_MODIFY("k053252")
- MCFG_K053252_OFFSETS(24-8+16, 16-16)
-
+ MCFG_K053252_OFFSETS(24-8+16, 0)
+
MCFG_DEVICE_MODIFY("k056832")
MCFG_K056832_CONFIG("gfx1", 0, K056832_BPP_6, 0, 0, "none")
@@ -1797,6 +1815,10 @@ static MACHINE_CONFIG_DERIVED( gxtype3, konamigx )
MCFG_VIDEO_START_OVERRIDE(konamigx_state, konamigx_type3)
+ MCFG_DEVICE_MODIFY("k053252")
+ MCFG_K053252_OFFSETS(0, 16)
+ MCFG_K053252_SET_SLAVE_SCREEN("screen2")
+
MCFG_DEVICE_MODIFY("k056832")
MCFG_K056832_CONFIG("gfx1", 0, K056832_BPP_6, 0, 2, "none")
@@ -1810,14 +1832,14 @@ static MACHINE_CONFIG_DERIVED( gxtype3, konamigx )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
- MCFG_SCREEN_SIZE(576, 264)
+ MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_left)
MCFG_SCREEN_ADD("screen2", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
- MCFG_SCREEN_SIZE(576, 264)
+ MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_right)
@@ -1841,7 +1863,7 @@ static MACHINE_CONFIG_DERIVED( gxtype4, konamigx )
MCFG_SCREEN_ADD("screen2", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE)
MCFG_SCREEN_RAW_PARAMS(6000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223)
- MCFG_SCREEN_SIZE(128*8, 264)
+ MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 32*8-1-16)
MCFG_SCREEN_UPDATE_DRIVER(konamigx_state, screen_update_konamigx_right)
@@ -1853,6 +1875,11 @@ static MACHINE_CONFIG_DERIVED( gxtype4, konamigx )
MCFG_GFXDECODE_MODIFY("gfxdecode", type4)
MCFG_VIDEO_START_OVERRIDE(konamigx_state, konamigx_type4)
+ MCFG_DEVICE_MODIFY("k053252")
+ MCFG_K053252_OFFSETS(0, 16)
+ MCFG_K053252_SET_SLAVE_SCREEN("screen2")
+
+
MCFG_DEVICE_MODIFY("k056832")
MCFG_K056832_CONFIG("gfx1", 0, K056832_BPP_8, 0, 0, "none")
@@ -1869,10 +1896,10 @@ static MACHINE_CONFIG_DERIVED( gxtype4_vsn, gxtype4 )
MCFG_DEVICE_MODIFY("k053252")
MCFG_K053252_OFFSETS(0, 16)
-
-
+
+
MCFG_SCREEN_MODIFY("screen2")
- MCFG_SCREEN_SIZE(128*8, 32*8)
+ MCFG_SCREEN_SIZE(1024, 1024)
MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 16, 32*8-1-16)
MCFG_VIDEO_START_OVERRIDE(konamigx_state, konamigx_type4_vsn)
@@ -1897,7 +1924,7 @@ static MACHINE_CONFIG_DERIVED( winspike, konamigx )
MCFG_DEVICE_MODIFY("k053252")
MCFG_K053252_OFFSETS(24+15, 16)
-
+
MCFG_DEVICE_MODIFY("k056832")
MCFG_K056832_CB(konamigx_state, alpha_tile_callback)
MCFG_K056832_CONFIG("gfx1", 0, K056832_BPP_8, 0, 2, "none")
@@ -1918,6 +1945,14 @@ ROM_START(konamigx)
/* sound program */
ROM_REGION( 0x40000, "soundcpu", ROMREGION_ERASE00 )
+ // TODO: Bus Error, I guess?
+ //ROM_FILL( 4, 1, 0x00 )
+ //ROM_FILL( 5, 1, 0x00 )
+ ROM_FILL( 6, 1, 0x01 )
+ //ROM_FILL( 7, 1, 0x00 )
+ ROM_FILL( 0x100, 1, 0x60 )
+ ROM_FILL( 0x101, 1, 0xfe )
+
/* tiles */
ROM_REGION( 0x600000, "gfx1", ROMREGION_ERASEFF )
/* sprites */
@@ -3688,6 +3723,7 @@ MACHINE_RESET_MEMBER(konamigx_state,konamigx)
m_gx_rdport1_3 = 0xfc;
m_gx_syncen = 0;
m_suspension_active = 0;
+ m_prev_pixel_clock = 0xff;
// Hold sound CPUs in reset
m_soundcpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
@@ -3892,7 +3928,7 @@ DRIVER_INIT_MEMBER(konamigx_state,posthack)
/* year ROM parent machine inp init */
/* dummy parent for the BIOS */
-GAME( 1994, konamigx, 0, konamigx, konamigx, konamigx_state, konamigx, ROT0, "Konami", "System GX", MACHINE_IS_BIOS_ROOT )
+GAME( 1994, konamigx, 0, konamigx_bios, konamigx, konamigx_state, konamigx, ROT0, "Konami", "System GX", MACHINE_IS_BIOS_ROOT )
/* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* Type 1: standard with an add-on 53936 on the ROM board, analog inputs, */
diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp
index 566270a5c4a..426556d0e95 100644
--- a/src/mame/drivers/konamim2.cpp
+++ b/src/mame/drivers/konamim2.cpp
@@ -236,7 +236,6 @@ public:
DECLARE_WRITE64_MEMBER(irq_enable_w);
DECLARE_READ64_MEMBER(irq_active_r);
DECLARE_READ64_MEMBER(unk1_r);
- DECLARE_READ64_MEMBER(unk2_r);
DECLARE_READ64_MEMBER(unk3_r);
DECLARE_READ64_MEMBER(unk4_r);
DECLARE_WRITE64_MEMBER(unk4_w);
@@ -500,7 +499,7 @@ WRITE64_MEMBER(konamim2_state::reset_w)
void konamim2_state::cde_init()
{
- cdrom_file *cdfile = cdrom_open(get_disk_handle(machine(), ":cdrom"));
+ cdrom_file *cdfile = cdrom_open(machine().rom_load().get_disk_handle(":cdrom"));
const cdrom_toc *toc = cdrom_get_toc(cdfile);
diff --git a/src/mame/drivers/kopunch.cpp b/src/mame/drivers/kopunch.cpp
index 168d9eb4f81..cde3048d39a 100644
--- a/src/mame/drivers/kopunch.cpp
+++ b/src/mame/drivers/kopunch.cpp
@@ -113,13 +113,13 @@ READ8_MEMBER(kopunch_state::sensors2_r)
WRITE8_MEMBER(kopunch_state::lamp_w)
{
- set_led_status(machine(), 0, ~data & 0x80);
+ output().set_led_value(0, ~data & 0x80);
}
WRITE8_MEMBER(kopunch_state::coin_w)
{
- coin_counter_w(machine(), 0, ~data & 0x80);
- coin_counter_w(machine(), 1, ~data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, ~data & 0x80);
+ machine().bookkeeping().coin_counter_w(1, ~data & 0x40);
// if ((data & 0x3f) != 0x3e)
// printf("port 34 = %02x ",data);
diff --git a/src/mame/drivers/korgm1.cpp b/src/mame/drivers/korgm1.cpp
index 99658c0057d..6714aaab7dc 100644
--- a/src/mame/drivers/korgm1.cpp
+++ b/src/mame/drivers/korgm1.cpp
@@ -38,7 +38,6 @@ protected:
virtual void machine_reset();
virtual void video_start();
- virtual void palette_init();
};
void korgm1_state::video_start()
diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp
index ebdc29dfefd..18de66cf40d 100644
--- a/src/mame/drivers/ksys573.cpp
+++ b/src/mame/drivers/ksys573.cpp
@@ -725,8 +725,8 @@ void ksys573_state::driver_start()
m_atapi_timer = machine().scheduler().timer_alloc( timer_expired_delegate( FUNC( ksys573_state::atapi_xfer_end ),this ) );
m_atapi_timer->adjust( attotime::never );
- m_available_cdroms[ 0 ] = cdrom_open( get_disk_handle( machine(), ":cdrom0" ) );
- m_available_cdroms[ 1 ] = cdrom_open( get_disk_handle( machine(), ":cdrom1" ) );
+ m_available_cdroms[ 0 ] = cdrom_open(machine().rom_load().get_disk_handle(":cdrom0"));
+ m_available_cdroms[ 1 ] = cdrom_open(machine().rom_load().get_disk_handle(":cdrom1"));
m_n_security_control = 0;
m_control = 0;
@@ -880,11 +880,11 @@ WRITE16_MEMBER( ksys573_state::ge765pwbba_w )
break;
case 0x40:
- output_set_value( "motor", data & 0xff );
+ output().set_value( "motor", data & 0xff );
break;
case 0x44:
- output_set_value( "brake", data & 0xff );
+ output().set_value( "brake", data & 0xff );
break;
case 0x50:
@@ -1079,19 +1079,19 @@ WRITE8_MEMBER( ksys573_state::ddr_output_callback )
switch( offset )
{
case 0:
- output_set_value( "foot 1p up", !data );
+ output().set_value( "foot 1p up", !data );
break;
case 1:
- output_set_value( "foot 1p left", !data );
+ output().set_value( "foot 1p left", !data );
break;
case 2:
- output_set_value( "foot 1p right", !data );
+ output().set_value( "foot 1p right", !data );
break;
case 3:
- output_set_value( "foot 1p down", !data );
+ output().set_value( "foot 1p down", !data );
break;
case 4:
@@ -1103,19 +1103,19 @@ WRITE8_MEMBER( ksys573_state::ddr_output_callback )
break;
case 8:
- output_set_value( "foot 2p up", !data );
+ output().set_value( "foot 2p up", !data );
break;
case 9:
- output_set_value( "foot 2p left", !data );
+ output().set_value( "foot 2p left", !data );
break;
case 10:
- output_set_value( "foot 2p right", !data );
+ output().set_value( "foot 2p right", !data );
break;
case 11:
- output_set_value( "foot 2p down", !data );
+ output().set_value( "foot 2p down", !data );
break;
case 12:
@@ -1127,32 +1127,32 @@ WRITE8_MEMBER( ksys573_state::ddr_output_callback )
break;
case 17:
- output_set_led_value( 0, !data ); // start 1
+ output().set_led_value( 0, !data ); // start 1
break;
case 18:
- output_set_led_value( 1, !data ); // start 2
+ output().set_led_value( 1, !data ); // start 2
break;
case 20:
- output_set_value( "body right low", !data );
+ output().set_value( "body right low", !data );
break;
case 21:
- output_set_value( "body left low", !data );
+ output().set_value( "body left low", !data );
break;
case 22:
- output_set_value( "body left high", !data );
+ output().set_value( "body left high", !data );
break;
case 23:
- output_set_value( "body right high", !data );
+ output().set_value( "body right high", !data );
break;
case 28: // digital
case 30: // analogue
- output_set_value( "speaker", !data );
+ output().set_value( "speaker", !data );
break;
default:
@@ -1173,22 +1173,22 @@ DRIVER_INIT_MEMBER( ksys573_state, ddr )
WRITE_LINE_MEMBER( ksys573_state::gtrfrks_lamps_b7 )
{
- output_set_value( "spot left", state );
+ output().set_value( "spot left", state );
}
WRITE_LINE_MEMBER( ksys573_state::gtrfrks_lamps_b6 )
{
- output_set_value( "spot right", state );
+ output().set_value( "spot right", state );
}
WRITE_LINE_MEMBER( ksys573_state::gtrfrks_lamps_b5 )
{
- output_set_led_value( 0, state ); // start left
+ output().set_led_value( 0, state ); // start left
}
WRITE_LINE_MEMBER( ksys573_state::gtrfrks_lamps_b4 )
{
- output_set_led_value( 1, state ); // start right
+ output().set_led_value( 1, state ); // start right
}
/* ddr solo */
@@ -1205,39 +1205,39 @@ WRITE8_MEMBER( ksys573_state::ddrsolo_output_callback )
break;
case 8:
- output_set_value( "extra 4", !data );
+ output().set_value( "extra 4", !data );
break;
case 9:
- output_set_value( "extra 2", !data );
+ output().set_value( "extra 2", !data );
break;
case 10:
- output_set_value( "extra 1", !data );
+ output().set_value( "extra 1", !data );
break;
case 11:
- output_set_value( "extra 3", !data );
+ output().set_value( "extra 3", !data );
break;
case 16:
- output_set_value( "speaker", !data );
+ output().set_value( "speaker", !data );
break;
case 20:
- output_set_led_value( 0, !data ); // start
+ output().set_led_value( 0, !data ); // start
break;
case 21:
- output_set_value( "body center", !data );
+ output().set_value( "body center", !data );
break;
case 22:
- output_set_value( "body right", !data );
+ output().set_value( "body right", !data );
break;
case 23:
- output_set_value( "body left", !data );
+ output().set_value( "body left", !data );
break;
default:
@@ -1254,52 +1254,52 @@ WRITE8_MEMBER( ksys573_state::drmn_output_callback )
{
case 0: // drmn2+
case 16: // drmn
- output_set_value( "hi-hat", !data );
+ output().set_value( "hi-hat", !data );
break;
case 1: // drmn2+
case 17: // drmn
- output_set_value( "high tom", !data );
+ output().set_value( "high tom", !data );
break;
case 2: // drmn2+
case 18: // drmn
- output_set_value( "low tom", !data );
+ output().set_value( "low tom", !data );
break;
case 3: // drmn2+
case 19: // drmn
- output_set_value( "snare", !data );
+ output().set_value( "snare", !data );
break;
case 8: // drmn2+
case 30: // drmn
- output_set_value( "spot left & right", !data );
+ output().set_value( "spot left & right", !data );
break;
case 9: // drmn2+
case 31: // drmn
- output_set_value( "neon top", data );
+ output().set_value( "neon top", data );
break;
case 11: // drmn2+
case 27: // drmn
- output_set_value( "neon woofer", data );
+ output().set_value( "neon woofer", data );
break;
case 12: // drmn2+
case 20: // drmn
- output_set_value( "cymbal", !data );
+ output().set_value( "cymbal", !data );
break;
case 13: // drmn2+
case 21: // drmn
- output_set_led_value( 0, data ); // start
+ output().set_led_value( 0, data ); // start
break;
case 14: // drmn2+
case 22: // drmn
- output_set_value( "select button", data );
+ output().set_value( "select button", data );
break;
case 23: // drmn
@@ -1324,111 +1324,111 @@ WRITE8_MEMBER( ksys573_state::dmx_output_callback )
switch( offset )
{
case 0:
- output_set_value( "blue io 8", !data );
+ output().set_value( "blue io 8", !data );
break;
case 1:
- output_set_value( "blue io 9", !data );
+ output().set_value( "blue io 9", !data );
break;
case 2:
- output_set_value( "red io 9", !data );
+ output().set_value( "red io 9", !data );
break;
case 3:
- output_set_value( "red io 8", !data );
+ output().set_value( "red io 8", !data );
break;
case 4:
- output_set_value( "blue io 6", !data );
+ output().set_value( "blue io 6", !data );
break;
case 5:
- output_set_value( "blue io 7", !data );
+ output().set_value( "blue io 7", !data );
break;
case 6:
- output_set_value( "red io 7", !data );
+ output().set_value( "red io 7", !data );
break;
case 7:
- output_set_value( "red io 6", !data );
+ output().set_value( "red io 6", !data );
break;
case 8:
- output_set_value( "blue io 4", !data );
+ output().set_value( "blue io 4", !data );
break;
case 9:
- output_set_value( "blue io 5", !data );
+ output().set_value( "blue io 5", !data );
break;
case 10:
- output_set_value( "red io 5", !data );
+ output().set_value( "red io 5", !data );
break;
case 11:
- output_set_value( "red io 4", !data );
+ output().set_value( "red io 4", !data );
break;
case 12:
- output_set_value( "blue io 10", !data );
+ output().set_value( "blue io 10", !data );
break;
case 13:
- output_set_value( "blue io 11", !data );
+ output().set_value( "blue io 11", !data );
break;
case 14:
- output_set_value( "red io 11", !data );
+ output().set_value( "red io 11", !data );
break;
case 15:
- output_set_value( "red io 10", !data );
+ output().set_value( "red io 10", !data );
break;
case 16:
- output_set_value( "blue io 0", !data );
+ output().set_value( "blue io 0", !data );
break;
case 17:
- output_set_value( "blue io 1", !data );
+ output().set_value( "blue io 1", !data );
break;
case 18:
- output_set_value( "red io 1", !data );
+ output().set_value( "red io 1", !data );
break;
case 19:
- output_set_value( "red io 0", !data );
+ output().set_value( "red io 0", !data );
break;
case 20:
- output_set_value( "blue io 2", !data );
+ output().set_value( "blue io 2", !data );
break;
case 21:
- output_set_value( "blue io 3", !data );
+ output().set_value( "blue io 3", !data );
break;
case 22:
- output_set_value( "red io 3", !data );
+ output().set_value( "red io 3", !data );
break;
case 23:
- output_set_value( "red io 2", !data );
+ output().set_value( "red io 2", !data );
break;
case 28:
- output_set_value( "yellow spot light", !data );
+ output().set_value( "yellow spot light", !data );
break;
case 29:
- output_set_value( "blue spot light", !data );
+ output().set_value( "blue spot light", !data );
break;
case 31:
- output_set_value( "pink spot light", !data );
+ output().set_value( "pink spot light", !data );
break;
default:
@@ -1439,32 +1439,32 @@ WRITE8_MEMBER( ksys573_state::dmx_output_callback )
WRITE_LINE_MEMBER( ksys573_state::dmx_lamps_b0 )
{
- output_set_value( "left 2p", state );
+ output().set_value( "left 2p", state );
}
WRITE_LINE_MEMBER( ksys573_state::dmx_lamps_b1 )
{
- output_set_led_value( 1, state ); // start 1p
+ output().set_led_value( 1, state ); // start 1p
}
WRITE_LINE_MEMBER( ksys573_state::dmx_lamps_b2 )
{
- output_set_value( "right 2p", state );
+ output().set_value( "right 2p", state );
}
WRITE_LINE_MEMBER( ksys573_state::dmx_lamps_b3 )
{
- output_set_value( "left 1p", state );
+ output().set_value( "left 1p", state );
}
WRITE_LINE_MEMBER( ksys573_state::dmx_lamps_b4 )
{
- output_set_led_value( 0, state ); // start 2p
+ output().set_led_value( 0, state ); // start 2p
}
WRITE_LINE_MEMBER( ksys573_state::dmx_lamps_b5 )
{
- output_set_value( "right 1p", state );
+ output().set_value( "right 1p", state );
}
/* salary man champ */
@@ -1499,13 +1499,13 @@ WRITE_LINE_MEMBER( ksys573_state::salarymc_lamp_clk )
verboselog( 0, "unknown bits in salarymc_lamp_shift %08x\n", m_salarymc_lamp_shift & ~0xe38 );
}
- output_set_value( "player 1 red", ( m_salarymc_lamp_shift >> 11 ) & 1 );
- output_set_value( "player 1 green", ( m_salarymc_lamp_shift >> 10 ) & 1 );
- output_set_value( "player 1 blue", ( m_salarymc_lamp_shift >> 9 ) & 1 );
+ output().set_value( "player 1 red", ( m_salarymc_lamp_shift >> 11 ) & 1 );
+ output().set_value( "player 1 green", ( m_salarymc_lamp_shift >> 10 ) & 1 );
+ output().set_value( "player 1 blue", ( m_salarymc_lamp_shift >> 9 ) & 1 );
- output_set_value( "player 2 red", ( m_salarymc_lamp_shift >> 5 ) & 1 );
- output_set_value( "player 2 green", ( m_salarymc_lamp_shift >> 4 ) & 1 );
- output_set_value( "player 2 blue", ( m_salarymc_lamp_shift >> 3 ) & 1 );
+ output().set_value( "player 2 red", ( m_salarymc_lamp_shift >> 5 ) & 1 );
+ output().set_value( "player 2 green", ( m_salarymc_lamp_shift >> 4 ) & 1 );
+ output().set_value( "player 2 blue", ( m_salarymc_lamp_shift >> 3 ) & 1 );
m_salarymc_lamp_bits = 0;
m_salarymc_lamp_shift = 0;
@@ -1561,10 +1561,10 @@ WRITE_LINE_MEMBER( ksys573_state::hyperbbc_lamp_strobe1 )
{
if( state && !m_hyperbbc_lamp_strobe1 )
{
- output_set_value( "player 1 red", m_hyperbbc_lamp_red );
- output_set_value( "player 1 green", m_hyperbbc_lamp_green );
- output_set_value( "player 1 blue", m_hyperbbc_lamp_blue );
- output_set_value( "player 1 start", m_hyperbbc_lamp_start );
+ output().set_value( "player 1 red", m_hyperbbc_lamp_red );
+ output().set_value( "player 1 green", m_hyperbbc_lamp_green );
+ output().set_value( "player 1 blue", m_hyperbbc_lamp_blue );
+ output().set_value( "player 1 start", m_hyperbbc_lamp_start );
}
m_hyperbbc_lamp_strobe1 = state;
@@ -1574,10 +1574,10 @@ WRITE_LINE_MEMBER( ksys573_state::hyperbbc_lamp_strobe2 )
{
if( state && !m_hyperbbc_lamp_strobe2 )
{
- output_set_value( "player 2 red", m_hyperbbc_lamp_red );
- output_set_value( "player 2 green", m_hyperbbc_lamp_green );
- output_set_value( "player 2 blue", m_hyperbbc_lamp_blue );
- output_set_value( "player 2 start", m_hyperbbc_lamp_start );
+ output().set_value( "player 2 red", m_hyperbbc_lamp_red );
+ output().set_value( "player 2 green", m_hyperbbc_lamp_green );
+ output().set_value( "player 2 blue", m_hyperbbc_lamp_blue );
+ output().set_value( "player 2 start", m_hyperbbc_lamp_start );
}
m_hyperbbc_lamp_strobe2 = state;
@@ -1587,10 +1587,10 @@ WRITE_LINE_MEMBER( ksys573_state::hyperbbc_lamp_strobe3 )
{
if( state && !m_hyperbbc_lamp_strobe3 )
{
- output_set_value( "player 3 red", m_hyperbbc_lamp_red );
- output_set_value( "player 3 green", m_hyperbbc_lamp_green );
- output_set_value( "player 3 blue", m_hyperbbc_lamp_blue );
- output_set_value( "player 3 start", m_hyperbbc_lamp_start );
+ output().set_value( "player 3 red", m_hyperbbc_lamp_red );
+ output().set_value( "player 3 green", m_hyperbbc_lamp_green );
+ output().set_value( "player 3 blue", m_hyperbbc_lamp_blue );
+ output().set_value( "player 3 start", m_hyperbbc_lamp_start );
}
m_hyperbbc_lamp_strobe3 = state;
@@ -1642,42 +1642,42 @@ WRITE8_MEMBER( ksys573_state::mamboagg_output_callback )
switch( offset )
{
case 4:
- output_set_value( "fire lamp left", !data );
+ output().set_value( "fire lamp left", !data );
break;
case 5:
- output_set_value( "fire fan left", !data );
+ output().set_value( "fire fan left", !data );
break;
case 6:
- output_set_value( "fire fan right", !data );
+ output().set_value( "fire fan right", !data );
break;
case 7:
- output_set_value( "fire lamp right", !data );
+ output().set_value( "fire lamp right", !data );
break;
case 28:
- output_set_value( "conga left", !data );
+ output().set_value( "conga left", !data );
break;
case 29:
- output_set_value( "conga right", !data );
+ output().set_value( "conga right", !data );
break;
case 31:
- output_set_value( "conga centre", !data );
+ output().set_value( "conga centre", !data );
break;
}
}
WRITE_LINE_MEMBER( ksys573_state::mamboagg_lamps_b3 )
{
- output_set_led_value( 0, state ); // start 1p
+ output().set_led_value( 0, state ); // start 1p
}
WRITE_LINE_MEMBER( ksys573_state::mamboagg_lamps_b4 )
{
- output_set_value( "select right", state );
+ output().set_value( "select right", state );
}
WRITE_LINE_MEMBER( ksys573_state::mamboagg_lamps_b5 )
{
- output_set_value( "select left", state );
+ output().set_value( "select left", state );
}
@@ -1736,34 +1736,34 @@ WRITE8_MEMBER( ksys573_state::punchmania_output_callback )
switch( offset )
{
case 8:
- output_set_value( "select left right", !data );
+ output().set_value( "select left right", !data );
break;
case 9:
pad_light[ 2 ] = !data;
- output_set_value( "left bottom lamp", !data );
+ output().set_value( "left bottom lamp", !data );
break;
case 10:
pad_light[ 1 ] = !data;
- output_set_value( "left middle lamp", !data );
+ output().set_value( "left middle lamp", !data );
break;
case 11:
- output_set_value( "start lamp", !data );
+ output().set_value( "start lamp", !data );
break;
case 12:
pad_light[ 0 ] = !data;
- output_set_value( "left top lamp", !data );
+ output().set_value( "left top lamp", !data );
break;
case 13:
pad_light[ 4 ] = !data;
- output_set_value( "right middle lamp", !data );
+ output().set_value( "right middle lamp", !data );
break;
case 14:
pad_light[ 3 ] = !data;
- output_set_value( "right top lamp", !data );
+ output().set_value( "right top lamp", !data );
break;
case 15:
pad_light[ 5 ] = !data;
- output_set_value( "right bottom lamp", !data );
+ output().set_value( "right bottom lamp", !data );
break;
case 16:
if( data )
diff --git a/src/mame/drivers/kungfur.cpp b/src/mame/drivers/kungfur.cpp
index ceb5f2919d1..0a4d2b5c86c 100644
--- a/src/mame/drivers/kungfur.cpp
+++ b/src/mame/drivers/kungfur.cpp
@@ -124,24 +124,24 @@ WRITE8_MEMBER(kungfur_state::kungfur_output_w)
{
int offs = i << 3 | (data & 7);
if (lut_digits[offs])
- output_set_digit_value(lut_digits[offs] - 1, m_latch[i]);
+ output().set_digit_value(lut_digits[offs] - 1, m_latch[i]);
}
// 2.6 goes to level lamps
if ((data & 7) == 6)
{
for (int i = 0; i < 5; i++)
- output_set_lamp_value(i, m_latch[2] >> i & 1);
+ output().set_lamp_value(i, m_latch[2] >> i & 1);
}
// d7: game-over lamp, d3-d4: marquee lamps
- output_set_lamp_value(5, data >> 7 & 1);
- output_set_lamp_value(6, data >> 3 & 1);
- output_set_lamp_value(7, data >> 4 & 1);
+ output().set_lamp_value(5, data >> 7 & 1);
+ output().set_lamp_value(6, data >> 3 & 1);
+ output().set_lamp_value(7, data >> 4 & 1);
// d5: N/C?
// d6: coincounter
- coin_counter_w(machine(), 0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x40);
}
diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp
index 8e49060e1e7..a9354ecea56 100644
--- a/src/mame/drivers/kurukuru.cpp
+++ b/src/mame/drivers/kurukuru.cpp
@@ -309,9 +309,9 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_out_latch_w)
07 | Not connected | unused
*/
- coin_counter_w(machine(), 0, data & 0x01); /* Coin Counter 1 */
- coin_counter_w(machine(), 1, data & 0x20); /* Coin Counter 2 */
- coin_lockout_global_w(machine(), data & 0x40); /* Coin Lock */
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); /* Coin Counter 1 */
+ machine().bookkeeping().coin_counter_w(1, data & 0x20); /* Coin Counter 2 */
+ machine().bookkeeping().coin_lockout_global_w(data & 0x40); /* Coin Lock */
m_hopper->write(space, 0, (data & 0x40)); /* Hopper Motor */
if (data & 0x9e)
@@ -590,6 +590,27 @@ ROM_START( kurukuru )
ROM_LOAD( "7908b-4.ic32", 0x0600, 0x0034, CRC(bddf925e) SHA1(861cf5966444d0c0392241e5cfa08db475fb439a) )
ROM_END
+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 )
+GAME( 199?, ppj, 0, kurukuru, kurukuru, driver_device, 0, ROT0, "Success / Taiyo Jidoki", "Pyon Pyon Jump (Japan)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/kyugo.cpp b/src/mame/drivers/kyugo.cpp
index c83b94fff65..21c80927bfd 100644
--- a/src/mame/drivers/kyugo.cpp
+++ b/src/mame/drivers/kyugo.cpp
@@ -135,7 +135,7 @@ ADDRESS_MAP_END
WRITE8_MEMBER(kyugo_state::kyugo_coin_counter_w)
{
- coin_counter_w(machine(), offset, data & 1);
+ machine().bookkeeping().coin_counter_w(offset, data & 1);
}
static ADDRESS_MAP_START( gyrodine_sub_portmap, AS_IO, 8, kyugo_state )
diff --git a/src/mame/drivers/labyrunr.cpp b/src/mame/drivers/labyrunr.cpp
index d21b85bdaef..e8f0957d10f 100644
--- a/src/mame/drivers/labyrunr.cpp
+++ b/src/mame/drivers/labyrunr.cpp
@@ -41,8 +41,8 @@ WRITE8_MEMBER(labyrunr_state::labyrunr_bankswitch_w)
membank("bank1")->set_entry(data & 0x07); // shall we check if data&7 > #banks?
/* bits 3 and 4 are coin counters */
- coin_counter_w(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 1, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(1, data & 0x10);
}
static ADDRESS_MAP_START( labyrunr_map, AS_PROGRAM, 8, labyrunr_state )
diff --git a/src/mame/drivers/laser3k.cpp b/src/mame/drivers/laser3k.cpp
index dea0ee965d5..c8732ac239d 100644
--- a/src/mame/drivers/laser3k.cpp
+++ b/src/mame/drivers/laser3k.cpp
@@ -120,8 +120,8 @@ private:
bool m_80col;
bool m_mix;
int m_gfxmode;
- UINT16 *m_hires_artifact_map;
- UINT16 *m_dhires_artifact_map;
+ std::unique_ptr<UINT16[]> m_hires_artifact_map;
+ std::unique_ptr<UINT16[]> m_dhires_artifact_map;
void plot_text_character(bitmap_ind16 &bitmap, int xpos, int ypos, int xscale, UINT32 code, const UINT8 *textgfx_data, UINT32 textgfx_datalen);
void do_io(int offset);
@@ -165,10 +165,10 @@ void laser3k_state::machine_start()
UINT16 c;
/* 2^3 dependent pixels * 2 color sets * 2 offsets */
- m_hires_artifact_map = auto_alloc_array(machine(), UINT16, 8 * 2 * 2);
+ m_hires_artifact_map = std::make_unique<UINT16[]>(8 * 2 * 2);
/* 2^4 dependent pixels */
- m_dhires_artifact_map = auto_alloc_array(machine(), UINT16, 16);
+ m_dhires_artifact_map = std::make_unique<UINT16[]>(16);
/* build hires artifact map */
for (i = 0; i < 8; i++)
diff --git a/src/mame/drivers/laserbas.cpp b/src/mame/drivers/laserbas.cpp
index 8d1acf90c01..77684ccfc78 100644
--- a/src/mame/drivers/laserbas.cpp
+++ b/src/mame/drivers/laserbas.cpp
@@ -73,7 +73,6 @@ public:
required_shared_ptr<UINT8> m_protram;
DECLARE_READ8_MEMBER(vram_r);
DECLARE_WRITE8_MEMBER(vram_w);
- DECLARE_READ8_MEMBER(read_unk);
DECLARE_WRITE8_MEMBER(vrambank_w);
DECLARE_READ8_MEMBER(protram_r);
DECLARE_WRITE8_MEMBER(protram_w);
diff --git a/src/mame/drivers/laserbat.cpp b/src/mame/drivers/laserbat.cpp
index 748df115951..2d9ea56a2e4 100644
--- a/src/mame/drivers/laserbat.cpp
+++ b/src/mame/drivers/laserbat.cpp
@@ -1,110 +1,151 @@
// license:BSD-3-Clause
-// copyright-holders:Pierpaolo Prazzoli
+// copyright-holders:Vas Crabb
/*
-
Laser Battle / Lazarian (c) 1981 Zaccaria
Cat and Mouse (c) 1982 Zaccaria
- driver by Pierpaolo Prazzoli
-
- The 2 games have a similar video hardware, but sound hardware is very different
- and they don't use the collision detection provided by the s2636 chips.
-
-TODO:
-- how to use the 82S100 PLA dump
-- colors (tile_index in tilemap needs to be adjusted)
-- sound in laserbat (with schematics) and in catnmous
-- cocktail support
-
+ original driver by Pierpaolo Prazzoli
+
+ The two games have near identical game/video boards hardware, but
+ completely different sound boards. Laser Battle/Lazarian have a
+ dumb sound board with TMS organ and CSG chips driven directly by the
+ game program. Cat and Mouse uses an intelligent sound board with
+ its own CPU that plays melodies on a pair of AY-3-8910 PSGs.
+
+ The video hardware uses a PLA to mix TTL-generated background,
+ effect and sprite layers with the S2636 PVI outputs. The collision
+ detection and interrupt generation capabilities of the S2636 PVIs
+ are not used.
+
+ Game board supports two different sound board interfaces: 16-bit
+ unidirectional bus on J3 and 8-bit bidirectional bus on J7.
+ Lazarian uses only the 16-bit unidirectional interface. The 16-bit
+ interface is controlled by latches at I/O addresses 2 (bits 1-8)
+ and 7 (bits 9-16). The 8-bit interface is read at I/O address 0 and
+ written at I/O address 3. The sound board controls data direction
+ on J7 and when input from sound board to game board is latched.
+
+ Both Laser Battle/Lazarian and Cat and Mouse use the unidirectional
+ interface on J3. It seems there are no games that actually use the
+ bidirectional interface on J7.
+
+ The game board appears to have had some last-minute design changes
+ that aren't reflected in the Midway schematics, for example the last
+ program ROM being double the size of the others. There are also
+ some errors in the schematic like missing connections and incorrect
+ logic gate symbols.
+
+ Laser Battle/Lazarian notes:
+ * Manuals clearly indicate the controls to fire in four directions
+ are four buttons arranged in a diamond, not a four-way joystick
+ * Cocktail cabinet has an additional "image commutation board"
+ consuming the screen flip output, presumably flipping the image by
+ reversing the deflection coil connections
+ * Player 2 inputs are only used in cocktail mode
+ * Tilt input resets Laser Battle, but just causes loss of one credit
+ in Lazarian
+ * Service coin 1 input grants two credits the first time it's
+ pushed, but remembers this and won't grant credits again unless
+ unless you trigger the tilt input
+ * Laser Battle has a credit limit of 61 while Lazarian has a much
+ lower credit limit of 9
+ * Laser Battle is far less forgiving, sending you back to the start
+ of an area on dying and not giving continues
+
+ Cat and Mouse notes:
+ * This game is designed to work with two-way joysticks - up/down
+ directions are ignored and not shown on wiring diagram
+ * The input lines used for the fire buttons are chosen so that if
+ you plug it in to a Laser Battle control panel, the Fire Up button
+ will be used
+ * Tilt input causes loss of one credit
+ * Service coin 1 input grants two credits the first time it's
+ pushed, but remembers this and won't grant credits again unless
+ unless you trigger the tilt input
+ * Flyer suggests there should be an "old lady" sprite, which is not
+ present in our ROM dump
+ * Sprite ROM is likely double size, banking could be controlled by
+ one of the many unused CSOUND bits, the NEG2 bit, or even H128
+ * Judging by the PLA program, the colour weight resistors are likely
+ different to what Laser Battle/Lazarian uses - we need a detailed
+ colour photo of the game board or a schematic to confirm values
+ * Sound board emulation is based on tracing the program and guessing
+ what's connected where - we really need someone to trace out the
+ 1b11107 sound board if we want to get this right
+
+ TODO:
+ - work out where all the magic layer offsets come from
+ - catnmous sprite ROM appears to be underdumped
+ - need to confirm colour weight resistors on catnmous (detailed photo required):
+ R58, R59, R60, R61, R62, R65, R66, R67, R68, R69, R72, R73, R74, R75
+ (network connected between 11M, 12M, Q5, Q7, Q8)
+ - sound in laserbat (with schematics) and in catnmous
*/
#include "emu.h"
-#include "cpu/m6800/m6800.h"
-#include "cpu/s2650/s2650.h"
-#include "machine/6821pia.h"
-#include "sound/tms3615.h"
-#include "includes/laserbat.h"
-
-
-WRITE8_MEMBER(laserbat_state::laserbat_videoram_w)
-{
- if (m_video_page == 0)
- {
- m_videoram[offset] = data;
- m_bg_tilemap->mark_tile_dirty(offset);
- }
- else if (m_video_page == 1)
- {
- m_colorram[offset] = data;
- m_bg_tilemap->mark_tile_dirty(offset); // wrong!
- }
-}
-
-WRITE8_MEMBER(laserbat_state::video_extra_w)
-{
- m_video_page = (data & 0x10) >> 4;
- m_sprite_enable = (data & 1) ^ 1;
- m_sprite_code = (data & 0xe0) >> 5;
- m_sprite_color = (data & 0x0e) >> 1;
-}
-
-WRITE8_MEMBER(laserbat_state::sprite_x_y_w)
-{
- if (offset == 0)
- m_sprite_x = 256 - data;
- else
- m_sprite_y = 256 - data;
-}
-
-WRITE8_MEMBER(laserbat_state::laserbat_input_mux_w)
-{
- m_input_mux = (data & 0x30) >> 4;
-
- flip_screen_set_no_update(data & 0x08);
- coin_counter_w(machine(), 0,data & 1);
-
- //data & 0x02 ?
- //data & 0x04 ?
-}
+#include "includes/laserbat.h"
-READ8_MEMBER(laserbat_state::laserbat_input_r)
-{
- static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3" };
+#include "cpu/m6800/m6800.h"
+#include "cpu/s2650/s2650.h"
- return ioport(portnames[m_input_mux])->read();
-}
-WRITE8_MEMBER(laserbat_state::laserbat_cnteff_w)
+WRITE8_MEMBER(laserbat_state_base::ct_io_w)
{
- // 0x01 = _ABEFF1
- // 0x02 = _ABEFF2
- // 0x04 = MPX EFF2-_SW
- // 0x08 = COLEFF 0
- // 0x10 = COLEFF 1
- // 0x20 = _NEG 1
- // 0x40 = _NEG 2
- // 0x80 = MPX P 1/2
+ /*
+ Uses a hex buffer, so bits 6 and 7 are not physically present.
+
+ Bits 0-2 are open collector outputs with a diode connected to
+ the return line to suppress solenoid switching transients.
+ These are used to drive coin counters.
+
+ Bit 3 is an open collector output with a 2k2 pull-up resistor.
+ It is used to drive the "image commutation board" used to flip
+ the screen for player 2 in cocktail configuration. Note that
+ this output is asserted when player 2 is active even in upright
+ configuration, it's only supposed to be connected in a cocktail
+ cabinet.
+
+ Bits 4-5 feed the input row select decoder that switches between
+ ROW0, ROW1, SW1 and SW2 (ROW2 is selected using a bit in the
+ video effects register, just to be confusing).
+
+ +-----+-----------------------------+--------------------+--------------+
+ | bit | output | laserbat/catnmous | lazarian |
+ +-----+-----------------------------+--------------------+--------------+
+ | 0 | J2-3 solenoid driver | 1*Credits | 1*Coin C |
+ | | | | |
+ | 1 | J2-8 solenoid driver | 5*Coin A | 1*Coin A |
+ | | | 10*Coin B | |
+ | | | 1*Coin C | |
+ | | | | |
+ | 2 | J2-6 solenoid driver | | 1*Coin B |
+ | | | | |
+ | 3 | J3-4 open collector output | Screen flip | Screen flip |
+ | | | | |
+ | 4 | input row select A | | |
+ | | | | |
+ | 5 | input row select B | | |
+ +-----+-----------------------------+--------------------+--------------+
+ */
+
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(2, data & 0x04);
+ flip_screen_set((bool(data & 0x08) && !bool(m_row1->read() & 0x10)) ? 1 : 0);
+ m_input_mux = (data >> 4) & 0x03;
+
+// popmessage("ct io: %02X", data);
}
-#ifdef UNUSED_FUNCTION
-WRITE8_MEMBER(laserbat_state::laserbat_cntmov_w)
+READ8_MEMBER(laserbat_state_base::rrowx_r)
{
- // 0x01 = AB MOVE
- // 0x02 = CLH0
- // 0x04 = CLH1
- // 0x08 = LUM
- // 0x10 = MPX BKEFF
- // 0x20 = SHPA
- // 0x40 = SHPB
- // 0x80 = SHPC
+ ioport_port *const mux_ports[] = { m_row0, m_row1, m_sw1, m_sw2 };
+ return (m_mpx_p_1_2 ? m_row2 : mux_ports[m_input_mux])->read();
}
-#endif
/*
- Color handling with 2716.14L and 82S100.10M
-
2716.14L address lines are connected as follows:
A0 4H
@@ -126,37 +167,11 @@ WRITE8_MEMBER(laserbat_state::laserbat_cntmov_w)
NAV0 D6, D4, D2, D0, 0, 0, 0, 0
NAV1 D7, D5, D3, D1, 0, 0, 0, 0
- 82S100.10M lines are connected as follows:
-
- I0 NAV0
- I1 NAV1
- I2 CLH0
- I3 CLH1
- I4 LUM
- I5 C1*
- I6 C2*
- I7 C3*
- I8 BKR
- I9 BKG
- I10 BKB
- I11 SHELL
- I12 EFF1
- I13 EFF2
- I14 COLEFF0
- I15 COLEFF1
-
- F0 -> 820R -> RED
- F1 -> 820R -> GREEN
- F2 -> 820R -> BLUE
- F3 -> 270R -> RED
- F4 -> 270R -> GREEN
- F5 -> 270R -> BLUE
- F6 -> 1K -> RED
- F7 -> 1K -> GREEN
-
*/
-static ADDRESS_MAP_START( laserbat_map, AS_PROGRAM, 8, laserbat_state )
+static ADDRESS_MAP_START( laserbat_map, AS_PROGRAM, 8, laserbat_state_base )
+ ADDRESS_MAP_UNMAP_HIGH
+
AM_RANGE(0x0000, 0x13ff) AM_ROM
AM_RANGE(0x2000, 0x33ff) AM_ROM
AM_RANGE(0x3800, 0x3bff) AM_ROM
@@ -164,282 +179,214 @@ static ADDRESS_MAP_START( laserbat_map, AS_PROGRAM, 8, laserbat_state )
AM_RANGE(0x6000, 0x73ff) AM_ROM
AM_RANGE(0x7800, 0x7bff) AM_ROM
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_WRITENOP // always 0 (bullet ram in Quasar)
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read, write)
- AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_2", s2636_device, read, write)
- AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_3", s2636_device, read, write)
- AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(laserbat_videoram_w)
+ AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_WRITENOP
+ AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi1", s2636_device, read_data, write_data)
+ AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi2", s2636_device, read_data, write_data)
+ AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi3", s2636_device, read_data, write_data)
+ AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(videoram_w)
AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( laserbat_io_map, AS_IO, 8, laserbat_state )
- AM_RANGE(0x00, 0x00) AM_WRITE(laserbat_cnteff_w)
- AM_RANGE(0x01, 0x01) AM_WRITE(video_extra_w)
- AM_RANGE(0x02, 0x02) AM_READ(laserbat_input_r) AM_WRITE(laserbat_csound1_w)
- AM_RANGE(0x04, 0x05) AM_WRITE(sprite_x_y_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(laserbat_input_mux_w)
- AM_RANGE(0x07, 0x07) AM_WRITE(laserbat_csound2_w)
- AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
-ADDRESS_MAP_END
+static ADDRESS_MAP_START( laserbat_io_map, AS_IO, 8, laserbat_state_base )
+ AM_RANGE(0x00, 0x00) AM_READ(rhsc_r) AM_WRITE(cnt_eff_w)
+ AM_RANGE(0x01, 0x01) /* RBALL */ AM_WRITE(cnt_nav_w)
+ AM_RANGE(0x02, 0x02) AM_READ(rrowx_r) AM_WRITE(csound1_w)
+ AM_RANGE(0x03, 0x03) AM_WRITE(whsc_w)
+ AM_RANGE(0x04, 0x04) AM_WRITE(wcoh_w)
+ AM_RANGE(0x05, 0x05) AM_WRITE(wcov_w)
+ AM_RANGE(0x06, 0x06) AM_WRITE(ct_io_w)
+ AM_RANGE(0x07, 0x07) AM_WRITE(csound2_w)
-
-static ADDRESS_MAP_START( catnmous_io_map, AS_IO, 8, laserbat_state )
- AM_RANGE(0x00, 0x00) AM_WRITE(soundlatch_byte_w) // soundlatch ?
- AM_RANGE(0x01, 0x01) AM_WRITE(video_extra_w)
- AM_RANGE(0x02, 0x02) AM_READ(laserbat_input_r)
- AM_RANGE(0x02, 0x02) AM_WRITENOP // unknown
- AM_RANGE(0x04, 0x05) AM_WRITE(sprite_x_y_w)
- AM_RANGE(0x06, 0x06) AM_WRITE(laserbat_input_mux_w)
- AM_RANGE(0x07, 0x07) AM_WRITENOP // unknown
AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
ADDRESS_MAP_END
-// the same as in zaccaria.c ?
-static ADDRESS_MAP_START( catnmous_sound_map, AS_PROGRAM, 8, laserbat_state )
+
+static ADDRESS_MAP_START( catnmous_sound_map, AS_PROGRAM, 8, catnmous_state )
AM_RANGE(0x0000, 0x007f) AM_RAM
AM_RANGE(0x500c, 0x500f) AM_DEVREADWRITE("pia", pia6821_device, read, write)
- AM_RANGE(0xf000, 0xffff) AM_ROM
+ AM_RANGE(0xc000, 0xcfff) AM_ROM
+ AM_RANGE(0xe000, 0xffff) AM_ROM
ADDRESS_MAP_END
-static INPUT_PORTS_START( laserbat )
- PORT_START("IN0")
+static INPUT_PORTS_START( laserbat_base )
+ PORT_START("ROW0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
-
- PORT_START("IN1")
- 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_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
+
+ PORT_START("ROW1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
+ PORT_CONFNAME( 0x10, 0x10, DEF_STR(Cabinet) ) // sense line on wiring harness
+ PORT_DIPSETTING( 0x10, DEF_STR(Upright) )
+ PORT_DIPSETTING( 0x00, DEF_STR(Cocktail) )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Reset")
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_A ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_5C ) )
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_B ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_7C ) )
- PORT_DIPNAME( 0x70, 0x10, DEF_STR( Lives ) )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT )
+
+ PORT_START("ROW2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+
+ PORT_START("SW1")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR(Coin_A) ) PORT_DIPLOCATION("SW-1:1,2")
+ PORT_DIPSETTING( 0x00, DEF_STR(1C_1C) )
+ PORT_DIPSETTING( 0x01, DEF_STR(1C_2C) )
+ PORT_DIPSETTING( 0x02, DEF_STR(1C_3C) )
+ PORT_DIPSETTING( 0x03, DEF_STR(1C_5C) )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR(Coin_B) ) PORT_DIPLOCATION("SW-1:3,4")
+ PORT_DIPSETTING( 0x00, DEF_STR(1C_2C) )
+ PORT_DIPSETTING( 0x04, DEF_STR(1C_3C) )
+ PORT_DIPSETTING( 0x08, DEF_STR(1C_5C) )
+ PORT_DIPSETTING( 0x0c, DEF_STR(1C_7C) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW-1:5")
+ PORT_DIPSETTING( 0x10, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW-1:6")
+ PORT_DIPSETTING( 0x20, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x40, 0x00, "Infinite Lives" ) PORT_DIPLOCATION("SW-1:7")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x40, DEF_STR(On) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW-1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+
+ PORT_START("SW2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW-2:1")
+ PORT_DIPSETTING( 0x01, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW-2:2")
+ PORT_DIPSETTING( 0x02, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW-2:3")
+ PORT_DIPSETTING( 0x04, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x18, 0x08, DEF_STR(Difficulty) ) PORT_DIPLOCATION("SW-2:4,5")
+ PORT_DIPSETTING( 0x00, DEF_STR(Easy) )
+ PORT_DIPSETTING( 0x08, DEF_STR(Medium) )
+ PORT_DIPSETTING( 0x10, DEF_STR(Difficult) )
+ PORT_DIPSETTING( 0x18, DEF_STR(Very_Difficult) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW-2:6")
+ PORT_DIPSETTING( 0x20, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR(Unknown) ) PORT_DIPLOCATION("SW-2:7")
+ PORT_DIPSETTING( 0x40, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x80, 0x80, "Coin C" ) PORT_DIPLOCATION("SW-2:8")
+ PORT_DIPSETTING( 0x00, DEF_STR(2C_1C) )
+ PORT_DIPSETTING( 0x80, DEF_STR(1C_1C) )
+
+ PORT_START("SENSE")
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( laserbat )
+ PORT_INCLUDE(laserbat_base)
+
+ PORT_MODIFY("SW1")
+ PORT_DIPNAME( 0x30, 0x10, DEF_STR(Lives) ) PORT_DIPLOCATION("SW-1:5,6")
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x10, "3" )
PORT_DIPSETTING( 0x20, "5" )
PORT_DIPSETTING( 0x30, "6" )
- PORT_DIPSETTING( 0x40, "Infinite" )
-// PORT_DIPSETTING( 0x50, "Infinite" )
-// PORT_DIPSETTING( 0x60, "Infinite" )
-// PORT_DIPSETTING( 0x70, "Infinite" )
- PORT_DIPNAME( 0x80, 0x80, "Collision Detection" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
-
- PORT_START("IN3")
- 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_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
-
- PORT_START("SENSE")
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_DIPNAME( 0x80, 0x80, "Collision Detection" ) PORT_DIPLOCATION("SW-1:8")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x80, DEF_STR(On) )
+
+ PORT_MODIFY("SW2")
+ PORT_DIPNAME( 0x60, 0x40, DEF_STR(Bonus_Life) ) PORT_DIPLOCATION("SW-2:6,7")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x20, "10,000" )
+ PORT_DIPSETTING( 0x40, "14,000" )
+ PORT_DIPSETTING( 0x60, "18,000" )
INPUT_PORTS_END
static INPUT_PORTS_START( lazarian )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
-
- PORT_START("IN1")
- 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_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Reset")
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coin_A ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_3C ) )
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_B ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_7C ) )
- PORT_DIPNAME( 0x30, 0x10, DEF_STR( Lives ) )
+ PORT_INCLUDE(laserbat)
+
+ PORT_MODIFY("SW1")
+ PORT_DIPNAME( 0x03, 0x01, DEF_STR(Coin_A) ) PORT_DIPLOCATION("SW-1:1,2")
+ PORT_DIPSETTING( 0x00, DEF_STR(2C_1C) )
+ PORT_DIPSETTING( 0x01, DEF_STR(1C_1C) )
+ PORT_DIPSETTING( 0x02, DEF_STR(1C_2C) )
+ PORT_DIPSETTING( 0x03, DEF_STR(1C_3C) )
+ PORT_DIPNAME( 0x30, 0x10, DEF_STR(Lives) ) PORT_DIPLOCATION("SW-1:5,6")
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x10, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x30, "5" )
- PORT_DIPNAME( 0x40, 0x00, "Calibration Display" )
+ PORT_DIPNAME( 0x40, 0x00, "Calibration Display" ) PORT_DIPLOCATION("SW-1:7")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Collision Detection" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
- PORT_START("IN3")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "Firing" )
+ PORT_MODIFY("SW2")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR(Unused) ) PORT_DIPLOCATION("SW-2:1") // manual says not used
+ PORT_DIPSETTING( 0x01, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x02, 0x02, "Firing" ) PORT_DIPLOCATION("SW-2:2")
PORT_DIPSETTING( 0x02, "Rapid" )
- PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
- PORT_DIPNAME( 0x04, 0x00, "Freeze" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x04, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
-
- PORT_START("SENSE")
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_DIPSETTING( 0x00, DEF_STR(Normal) )
+ PORT_DIPNAME( 0x04, 0x00, "Freeze" ) PORT_DIPLOCATION("SW-2:3")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x04, DEF_STR(On) )
INPUT_PORTS_END
static INPUT_PORTS_START( catnmous )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN1")
- 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_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Reset")
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_A ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_5C ) )
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_B ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_7C ) )
- PORT_DIPNAME( 0x70, 0x10, DEF_STR( Lives ) )
+ PORT_INCLUDE(laserbat_base)
+
+ PORT_MODIFY("ROW0")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_MODIFY("ROW1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_MODIFY("SW1")
+ PORT_DIPNAME( 0x30, 0x10, DEF_STR(Lives) ) PORT_DIPLOCATION("SW-1:5,6")
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x10, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x30, "5" )
- PORT_DIPSETTING( 0x40, "Infinite" )
-// PORT_DIPSETTING( 0x50, "Infinite" )
-// PORT_DIPSETTING( 0x60, "Infinite" )
-// PORT_DIPSETTING( 0x70, "Infinite" )
- PORT_DIPNAME( 0x80, 0x80, "Game Over Melody" )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
-
- PORT_START("IN3")
- 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("SENSE")
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW-1:8")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x80, DEF_STR(On) )
+
+ PORT_MODIFY("SW2")
+ PORT_DIPNAME( 0x01, 0x01, "Free Play" ) PORT_DIPLOCATION("SW-2:1") // taken from manual, assuming poor translation
+ PORT_DIPSETTING( 0x01, "Win Play" )
+ PORT_DIPSETTING( 0x00, "No Win Play" )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR(Unused) ) PORT_DIPLOCATION("SW-2:2") // manual says not used
+ PORT_DIPSETTING( 0x02, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR(Unused) ) PORT_DIPLOCATION("SW-2:3") // manual says not used
+ PORT_DIPSETTING( 0x04, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x00, DEF_STR(On) )
+ PORT_DIPNAME( 0x60, 0x40, DEF_STR(Bonus_Life) ) PORT_DIPLOCATION("SW-2:6,7")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x20, "20,000" )
+ PORT_DIPSETTING( 0x40, "24,000" )
+ PORT_DIPSETTING( 0x60, "28,000" )
INPUT_PORTS_END
static const gfx_layout charlayout =
@@ -459,10 +406,10 @@ static const gfx_layout sprites_layout =
RGN_FRAC(1,1),
2,
{ 0, 1 },
- { 0, 2, 4, 6, 8,10,12,14,16,18,20,22,24,26,28,30,
+ { 0, 2, 4, 6, 8,10,12,14,16,18,20,22,24,26,28,30,
32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62
},
- { 0*32, 2*32, 4*32, 6*32, 8*32,10*32,12*32,14*32,
+ { 0*32, 2*32, 4*32, 6*32, 8*32,10*32,12*32,14*32,
16*32,18*32,20*32,22*32,24*32,26*32,28*32,30*32,
32*32,34*32,36*32,38*32,40*32,42*32,44*32,46*32,
48*32,50*32,52*32,54*32,56*32,58*32,60*32,62*32
@@ -475,304 +422,157 @@ static GFXDECODE_START( laserbat )
GFXDECODE_ENTRY( "gfx2", 0x0000, sprites_layout, 0, 8 ) /* Sprites */
GFXDECODE_END
-TILE_GET_INFO_MEMBER(laserbat_state::get_tile_info)
-{
- // wrong color index!
- SET_TILE_INFO_MEMBER(0, m_videoram[tile_index], m_colorram[tile_index] & 0x7f, 0);
-}
-void laserbat_state::video_start()
+INTERRUPT_GEN_MEMBER(laserbat_state_base::laserbat_interrupt)
{
- m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(laserbat_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
-
- save_item(NAME(m_videoram));
- save_item(NAME(m_colorram));
+ device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x0a);
}
-UINT32 laserbat_state::screen_update_laserbat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+DRIVER_INIT_MEMBER(laserbat_state_base, laserbat)
{
- int y;
-
- m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_scanline_timer = timer_alloc(TIMER_SCANLINE);
- /* update the S2636 chips */
- bitmap_ind16 const &s2636_1_bitmap = m_s2636_1->update(cliprect);
- bitmap_ind16 const &s2636_2_bitmap = m_s2636_2->update(cliprect);
- bitmap_ind16 const &s2636_3_bitmap = m_s2636_3->update(cliprect);
-
- /* copy the S2636 images into the main bitmap */
- for (y = cliprect.min_y; y <= cliprect.max_y; y++)
- {
- int x;
-
- for (x = cliprect.min_x; x <= cliprect.max_x; x++)
- {
- int pixel1 = s2636_1_bitmap.pix16(y, x);
- int pixel2 = s2636_2_bitmap.pix16(y, x);
- int pixel3 = s2636_3_bitmap.pix16(y, x);
+ save_item(NAME(m_input_mux));
+ save_item(NAME(m_mpx_p_1_2));
- if (S2636_IS_PIXEL_DRAWN(pixel1))
- bitmap.pix16(y, x) = S2636_PIXEL_COLOR(pixel1);
+ save_item(NAME(m_bg_ram));
+ save_item(NAME(m_eff_ram));
+ save_item(NAME(m_mpx_bkeff));
- if (S2636_IS_PIXEL_DRAWN(pixel2))
- bitmap.pix16(y, x) = S2636_PIXEL_COLOR(pixel2);
+ save_item(NAME(m_nave));
+ save_item(NAME(m_clr_lum));
+ save_item(NAME(m_shp));
+ save_item(NAME(m_wcoh));
+ save_item(NAME(m_wcov));
- if (S2636_IS_PIXEL_DRAWN(pixel3))
- bitmap.pix16(y, x) = S2636_PIXEL_COLOR(pixel3);
- }
- }
+ save_item(NAME(m_abeff1));
+ save_item(NAME(m_abeff2));
+ save_item(NAME(m_mpx_eff2_sh));
+ save_item(NAME(m_coleff));
+ save_item(NAME(m_neg1));
+ save_item(NAME(m_neg2));
- if (m_sprite_enable)
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
- m_sprite_code,
- m_sprite_color,
- 0,0,
- m_sprite_x - 6,m_sprite_y,0);
-
- return 0;
+ save_item(NAME(m_csound1));
+ save_item(NAME(m_csound2));
+ save_item(NAME(m_rhsc));
+ save_item(NAME(m_whsc));
}
-
-/* Cat'N Mouse sound ***********************************/
-
-WRITE_LINE_MEMBER(laserbat_state::zaccaria_irq0a)
+void laserbat_state::machine_start()
{
- m_audiocpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
-}
+ laserbat_state_base::machine_start();
-WRITE_LINE_MEMBER(laserbat_state::zaccaria_irq0b)
-{
- m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
+ save_item(NAME(m_keys));
}
-READ8_MEMBER(laserbat_state::zaccaria_port0a_r)
+void catnmous_state::machine_start()
{
- ay8910_device *ay8910 = (m_active_8910 == 0) ? m_ay1 : m_ay2;
- return ay8910->data_r(space, 0);
-}
+ laserbat_state_base::machine_start();
-WRITE8_MEMBER(laserbat_state::zaccaria_port0a_w)
-{
- m_port0a = data;
+ save_item(NAME(m_cb1));
}
-WRITE8_MEMBER(laserbat_state::zaccaria_port0b_w)
+void laserbat_state_base::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- /* bit 1 goes to 8910 #0 BDIR pin */
- if ((m_last_port0b & 0x02) == 0x02 && (data & 0x02) == 0x00)
+ switch (id)
{
- /* bit 0 goes to the 8910 #0 BC1 pin */
- m_ay1->data_address_w(space, m_last_port0b >> 0, m_port0a);
+ case TIMER_SCANLINE:
+ video_line(ptr, param);
+ break;
+ default:
+ assert_always(FALSE, "Unknown id in laserbat_state_base::device_timer");
}
- else if ((m_last_port0b & 0x02) == 0x00 && (data & 0x02) == 0x02)
- {
- /* bit 0 goes to the 8910 #0 BC1 pin */
- if (m_last_port0b & 0x01)
- m_active_8910 = 0;
- }
- /* bit 3 goes to 8910 #1 BDIR pin */
- if ((m_last_port0b & 0x08) == 0x08 && (data & 0x08) == 0x00)
- {
- /* bit 2 goes to the 8910 #1 BC1 pin */
- m_ay2->data_address_w(space, m_last_port0b >> 2, m_port0a);
- }
- else if ((m_last_port0b & 0x08) == 0x00 && (data & 0x08) == 0x08)
- {
- /* bit 2 goes to the 8910 #1 BC1 pin */
- if (m_last_port0b & 0x04)
- m_active_8910 = 1;
- }
-
- m_last_port0b = data;
}
-INTERRUPT_GEN_MEMBER(laserbat_state::laserbat_interrupt)
-{
- device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x0a);
-}
-
-INTERRUPT_GEN_MEMBER(laserbat_state::zaccaria_cb1_toggle)
-{
- m_pia->cb1_w(m_cb1_toggle & 1);
- m_cb1_toggle ^= 1;
-}
-
-void laserbat_state::machine_start()
-{
- m_pia = machine().device<pia6821_device>("pia");
- m_tms1 = machine().device<tms3615_device>("tms1");
- m_tms2 = machine().device<tms3615_device>("tms2");
- save_item(NAME(m_video_page));
- save_item(NAME(m_input_mux));
- save_item(NAME(m_active_8910));
- save_item(NAME(m_port0a));
- save_item(NAME(m_last_port0b));
- save_item(NAME(m_cb1_toggle));
- save_item(NAME(m_sprite_x));
- save_item(NAME(m_sprite_y));
- save_item(NAME(m_sprite_code));
- save_item(NAME(m_sprite_color));
- save_item(NAME(m_sprite_enable));
- save_item(NAME(m_csound1));
- save_item(NAME(m_ksound1));
- save_item(NAME(m_ksound2));
- save_item(NAME(m_ksound3));
- save_item(NAME(m_degr));
- save_item(NAME(m_filt));
- save_item(NAME(m_a));
- save_item(NAME(m_us));
- save_item(NAME(m_bit14));
-}
+static MACHINE_CONFIG_START( laserbat_base, laserbat_state_base )
-void laserbat_state::machine_reset()
-{
- m_video_page = 0;
- m_input_mux = 0;
- m_active_8910 = 0;
- m_port0a = 0;
- m_last_port0b = 0;
- m_cb1_toggle = 0;
- m_sprite_x = 0;
- m_sprite_y = 0;
- m_sprite_code = 0;
- m_sprite_color = 0;
- m_sprite_enable = 0;
- m_csound1 = 0;
- m_ksound1 = 0;
- m_ksound2 = 0;
- m_ksound3 = 0;
- m_degr = 0;
- m_filt = 0;
- m_a = 0;
- m_us = 0;
- m_bit14 = 0;
-}
-
-static MACHINE_CONFIG_START( laserbat, laserbat_state )
-
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", S2650, 14318180/4) // ???
+ // basic machine hardware
+ MCFG_CPU_ADD("maincpu", S2650, XTAL_14_31818MHz/4)
MCFG_CPU_PROGRAM_MAP(laserbat_map)
MCFG_CPU_IO_MAP(laserbat_io_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", laserbat_state, laserbat_interrupt)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", laserbat_state_base, laserbat_interrupt)
- /* video hardware */
+ // video hardware
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_SIZE(256, 256)
- MCFG_SCREEN_VISIBLE_AREA(1*8, 29*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(laserbat_state, screen_update_laserbat)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_14_31818MHz, 227*4, 43*4-1, 227*4-1, 312, 8, 255)
+ MCFG_SCREEN_UPDATE_DRIVER(laserbat_state_base, screen_update_laserbat)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", laserbat)
- MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(laserbat_state_base, laserbat)
- MCFG_DEVICE_ADD("s2636_1", S2636, 0)
- MCFG_S2636_OFFSETS(-16, -27)
+ MCFG_PLS100_ADD("gfxmix")
- MCFG_DEVICE_ADD("s2636_2", S2636, 0)
- MCFG_S2636_OFFSETS(-16, -27)
+ MCFG_DEVICE_ADD("pvi1", S2636, XTAL_14_31818MHz/3)
+ MCFG_S2636_OFFSETS(-8, -16)
+ MCFG_S2636_DIVIDER(3)
- MCFG_DEVICE_ADD("s2636_3", S2636, 0)
- MCFG_S2636_OFFSETS(-16, -27)
+ MCFG_DEVICE_ADD("pvi2", S2636, XTAL_14_31818MHz/3)
+ MCFG_S2636_OFFSETS(-8, -16)
+ MCFG_S2636_DIVIDER(3)
- /* sound hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_DEVICE_ADD("pvi3", S2636, XTAL_14_31818MHz/3)
+ MCFG_S2636_OFFSETS(-8, -16)
+ MCFG_S2636_DIVIDER(3)
- MCFG_SOUND_ADD("snsnd", SN76477, 0) // output not connected
- MCFG_SN76477_NOISE_PARAMS(RES_K(47), 0, CAP_P(1000)) // noise + filter: R21 47K + N/C + C21 1000 pF
- MCFG_SN76477_DECAY_RES(0) // decay_res
- MCFG_SN76477_ATTACK_PARAMS(0, 0) // attack_decay_cap + attack_res
- MCFG_SN76477_AMP_RES(RES_K(47)) // amplitude_res: R26 47K
- MCFG_SN76477_FEEDBACK_RES(RES_K(200)) // feedback_res
- MCFG_SN76477_VCO_PARAMS(5.0 * RES_K(2.2) / (RES_K(2.2) + RES_K(4.7)), 0, 0) // VCO volt + cap + res
- MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage
- MCFG_SN76477_SLF_PARAMS(CAP_U(4.7), 0) // slf caps + res: C24 4.7 uF + (variable)
- MCFG_SN76477_ONESHOT_PARAMS(0,0) // oneshot caps + res
- MCFG_SN76477_VCO_MODE(0) // VCO mode
- MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C
- MCFG_SN76477_ENVELOPE_PARAMS(0, 1) // envelope 1, 2
- MCFG_SN76477_ENABLE(1) // enable
-
- MCFG_TMS3615_ADD("tms1", 4000000/8/2) // 250 kHz, from second chip's clock out
- MCFG_SOUND_ROUTE(TMS3615_FOOTAGE_8, "mono", 1.0)
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", laserbat)
- MCFG_TMS3615_ADD("tms2", 4000000/8) // 500 kHz
- MCFG_SOUND_ROUTE(TMS3615_FOOTAGE_8, "mono", 1.0)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( catnmous, laserbat_state )
-
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", S2650, 14318000/4) /* ? */
- MCFG_CPU_PROGRAM_MAP(laserbat_map)
- MCFG_CPU_IO_MAP(catnmous_io_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", laserbat_state, laserbat_interrupt)
+static MACHINE_CONFIG_DERIVED_CLASS( laserbat, laserbat_base, laserbat_state )
- MCFG_CPU_ADD("audiocpu", M6802,3580000) /* ? */
- MCFG_CPU_PROGRAM_MAP(catnmous_sound_map)
- MCFG_CPU_PERIODIC_INT_DRIVER(laserbat_state, zaccaria_cb1_toggle, (double)3580000/4096)
+ // sound board devices
+ MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_DEVICE_ADD("pia", PIA6821, 0)
- MCFG_PIA_READPA_HANDLER(READ8(laserbat_state, zaccaria_port0a_r))
- MCFG_PIA_WRITEPA_HANDLER(WRITE8(laserbat_state, zaccaria_port0a_w))
- MCFG_PIA_WRITEPB_HANDLER(WRITE8(laserbat_state, zaccaria_port0b_w))
- MCFG_PIA_IRQA_HANDLER(WRITELINE(laserbat_state, zaccaria_irq0a))
- MCFG_PIA_IRQB_HANDLER(WRITELINE(laserbat_state, zaccaria_irq0b))
+ MCFG_SOUND_ADD("csg", SN76477, 0) // audio output not used
+ MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(270), CAP_P(1000)) // R21, switchable R30/R23/R24/R25/R29/R28/R27/R26, C21
+ MCFG_SN76477_DECAY_RES(RES_INF) // NC
+ MCFG_SN76477_ATTACK_PARAMS(0, RES_INF) // NC, NC
+ MCFG_SN76477_AMP_RES(RES_K(47)) // R26 47k
+ MCFG_SN76477_FEEDBACK_RES(RES_INF) // NC
+ MCFG_SN76477_VCO_PARAMS(5.0 * RES_VOLTAGE_DIVIDER(RES_K(4.7), RES_K(2.2)), 0, RES_K(47)) // R22/R19, NC, switchable R47/R40/R41/R42/R46/R45/R44/R43
+ MCFG_SN76477_PITCH_VOLTAGE(5.0) // tied to Vreg
+ MCFG_SN76477_SLF_PARAMS(CAP_U(4.7), RES_INF) // C24, switchable NC/R54/R53/R52/R51
+ MCFG_SN76477_ONESHOT_PARAMS(0, RES_INF) // NC, NC
+ MCFG_SN76477_VCO_MODE(1) // BIT15
+ MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // GND, VCO/NOISE, GND
+ MCFG_SN76477_ENVELOPE_PARAMS(0, 1) // GND, Vreg
+ MCFG_SN76477_ENABLE(0) // AB SOUND
+
+ MCFG_TMS3615_ADD("synth_high", XTAL_4MHz/16/2) // from the other one's /2 clock output
+ MCFG_SOUND_ROUTE(TMS3615_FOOTAGE_8, "mono", 1.0)
- /* 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(256, 256)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 32*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(laserbat_state, screen_update_laserbat)
- MCFG_SCREEN_PALETTE("palette")
+ MCFG_TMS3615_ADD("synth_low", XTAL_4MHz/16) // 4MHz divided down with a 74LS161
+ MCFG_SOUND_ROUTE(TMS3615_FOOTAGE_8, "mono", 1.0)
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", laserbat)
- MCFG_PALETTE_ADD("palette", 1024)
+MACHINE_CONFIG_END
- MCFG_DEVICE_ADD("s2636_1", S2636, 0)
- MCFG_S2636_OFFSETS(-16, -19)
+static MACHINE_CONFIG_DERIVED_CLASS( catnmous, laserbat_base, catnmous_state )
- MCFG_DEVICE_ADD("s2636_2", S2636, 0)
- MCFG_S2636_OFFSETS(-16, -19)
+ // sound board devices
+ MCFG_CPU_ADD("audiocpu", M6802, 3580000) // ?
+ MCFG_CPU_PROGRAM_MAP(catnmous_sound_map)
+ MCFG_CPU_PERIODIC_INT_DRIVER(catnmous_state, cb1_toggle, (double)3580000/4096)
- MCFG_DEVICE_ADD("s2636_3", S2636, 0)
- MCFG_S2636_OFFSETS(-16, -19)
+ MCFG_DEVICE_ADD("pia", PIA6821, 0)
+ MCFG_PIA_READPA_HANDLER(READ8(catnmous_state, pia_porta_r))
+ MCFG_PIA_WRITEPA_HANDLER(WRITE8(catnmous_state, pia_porta_w))
+ MCFG_PIA_WRITEPB_HANDLER(WRITE8(catnmous_state, pia_portb_w))
+ MCFG_PIA_IRQA_HANDLER(WRITELINE(catnmous_state, pia_irqa))
+ MCFG_PIA_IRQB_HANDLER(WRITELINE(catnmous_state, pia_irqb))
- /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("ay1", AY8910, 3580000/2) // ?
- MCFG_AY8910_PORT_B_READ_CB(READ8(driver_device, soundlatch_byte_r))
+ MCFG_SOUND_ADD("psg1", AY8910, 3580000/2) // ?
+ MCFG_AY8910_PORT_B_READ_CB(READ8(catnmous_state, psg1_portb_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_SOUND_ADD("ay2", AY8910, 3580000/2) // ?
+ MCFG_SOUND_ADD("psg2", AY8910, 3580000/2) // ?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+MACHINE_CONFIG_END
-/*
-
-Main cpu : 2650 signetics
-quartz : can't read it
-Sub : 2636 signetics (3 pieces)
-ram : 2114 (6 pieces in total)
-special : 82s100
-special : 2621N
-
-Sound board info :
-
-TMS SN76477N
-TMS 3615NS-28 (x2)
-Xtal : 4.000 Mhz
-
-+ a few usual 74 chips
-
-*/
ROM_START( laserbat )
ROM_REGION( 0x8000, "maincpu", 0 )
@@ -805,8 +605,9 @@ ROM_START( laserbat )
ROM_REGION( 0x0800, "gfx2", 0 )
ROM_LOAD( "lb02.14l", 0x0000, 0x0800, CRC(d29962d1) SHA1(5b6d0856c3ebbd5833b522f7c0240309cf3c9777) )
- ROM_REGION( 0x0100, "plds", 0 )
- ROM_LOAD( "82s100_prom", 0x0000, 0x00f5, NO_DUMP )
+ ROM_REGION( 0x0100, "gfxmix", 0 )
+ // copied from lazarian to give working graphics, need dump to confirm
+ ROM_LOAD( "82s100_prom", 0x0000, 0x00f5, CRC(c3eb562a) SHA1(65dff81b2e5321d530e5171dab9aa3809ab38b4d) BAD_DUMP )
ROM_END
ROM_START( lazarian )
@@ -842,7 +643,7 @@ ROM_START( lazarian )
ROM_REGION( 0x0800, "gfx2", 0 )
ROM_LOAD( "laz.14l", 0x0000, 0x0800, CRC(d29962d1) SHA1(5b6d0856c3ebbd5833b522f7c0240309cf3c9777) )
- ROM_REGION( 0x0100, "plds", 0 )
+ ROM_REGION( 0x0100, "gfxmix", 0 )
ROM_LOAD( "lz82s100.10m", 0x0000, 0x00f5, CRC(c3eb562a) SHA1(65dff81b2e5321d530e5171dab9aa3809ab38b4d) )
ROM_END
@@ -869,7 +670,7 @@ Sound Board 1b11107
6802
6821
-8910
+2*8910
*/
ROM_START( catnmous )
@@ -897,21 +698,25 @@ ROM_START( catnmous )
ROM_CONTINUE( 0x3000, 0x0400 )
ROM_CONTINUE( 0x7000, 0x0400 )
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "sound01.1d", 0xd000, 0x1000, CRC(f65cb9d0) SHA1(a2fe7563c6da055bf6aa20797b2d9fa184f0133c) )
- ROM_LOAD( "sound01.1f", 0xe000, 0x1000, CRC(473c44de) SHA1(ff08b02d45a2c23cabb5db716aa203225a931424) )
- ROM_LOAD( "sound01.1e", 0xf000, 0x1000, CRC(1bd90c93) SHA1(20fd2b765a42e25cf7f716e6631b8c567785a866) )
-
ROM_REGION( 0x1800, "gfx1", 0 )
ROM_LOAD( "type01.8g", 0x0000, 0x0800, CRC(2b180d4a) SHA1(b6f48ffdbad64b4d9f1fe838000187800c51228c) )
ROM_LOAD( "type01.10g", 0x0800, 0x0800, CRC(e5259f9b) SHA1(396753291ab36c3ed72208d619665fc0f33d1e17) )
ROM_LOAD( "type01.11g", 0x1000, 0x0800, CRC(2999f378) SHA1(929082383b2b0006de171587adb932ce57316963) )
ROM_REGION( 0x0800, "gfx2", 0 )
- ROM_LOAD( "type01.14l", 0x0000, 0x0800, CRC(af79179a) SHA1(de61af7d02c93be326a33ee51572e3da7a25dab0) )
+ // This needs double checking, might be a case of the wrong ROM type being marked on the PCB like with the final program rom.
+ // Flyers indicate there should be an 'old lady' character, and even show a graphic for one approaching from the right.
+ // This graphic is not present in our ROM and instead we get incorrect looking sprites, so the rom could be half size with
+ // an additional sprite bank bit coming from somewhere?
+ ROM_LOAD( "type01.14l", 0x0000, 0x0800, BAD_DUMP CRC(af79179a) SHA1(de61af7d02c93be326a33ee51572e3da7a25dab0) )
- ROM_REGION( 0x0100, "plds", 0 )
+ ROM_REGION( 0x0100, "gfxmix", 0 )
ROM_LOAD( "82s100.13m", 0x0000, 0x00f5, CRC(6b724cdb) SHA1(8a0ca3b171b103661a3b2fffbca3d7162089e243) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "sound01.1f", 0xc000, 0x1000, CRC(473c44de) SHA1(ff08b02d45a2c23cabb5db716aa203225a931424) )
+ ROM_LOAD( "sound01.1d", 0xe000, 0x1000, CRC(f65cb9d0) SHA1(a2fe7563c6da055bf6aa20797b2d9fa184f0133c) )
+ ROM_LOAD( "sound01.1e", 0xf000, 0x1000, CRC(1bd90c93) SHA1(20fd2b765a42e25cf7f716e6631b8c567785a866) )
ROM_END
ROM_START( catnmousa )
@@ -938,25 +743,27 @@ ROM_START( catnmousa )
ROM_LOAD( "catnmous.2b", 0x3000, 0x0400, BAD_DUMP CRC(880728fa) SHA1(f204d669c190ad0cf2c885af12625026534db655) )
ROM_CONTINUE( 0x7000, 0x0400 )
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "snd.1d", 0xd000, 0x1000, CRC(f65cb9d0) SHA1(a2fe7563c6da055bf6aa20797b2d9fa184f0133c) )
- ROM_LOAD( "snd.1f", 0xe000, 0x1000, CRC(473c44de) SHA1(ff08b02d45a2c23cabb5db716aa203225a931424) )
- ROM_LOAD( "snd.1e", 0xf000, 0x1000, CRC(1bd90c93) SHA1(20fd2b765a42e25cf7f716e6631b8c567785a866) )
-
ROM_REGION( 0x1800, "gfx1", 0 )
ROM_LOAD( "catnmous.8g", 0x0000, 0x0800, CRC(2b180d4a) SHA1(b6f48ffdbad64b4d9f1fe838000187800c51228c) )
ROM_LOAD( "catnmous.10g", 0x0800, 0x0800, CRC(e5259f9b) SHA1(396753291ab36c3ed72208d619665fc0f33d1e17) )
ROM_LOAD( "catnmous.11g", 0x1000, 0x0800, CRC(2999f378) SHA1(929082383b2b0006de171587adb932ce57316963) )
ROM_REGION( 0x0800, "gfx2", 0 )
- ROM_LOAD( "catnmous.14l", 0x0000, 0x0800, CRC(af79179a) SHA1(de61af7d02c93be326a33ee51572e3da7a25dab0) )
+ // see comment in parent set
+ ROM_LOAD( "catnmous.14l", 0x0000, 0x0800, BAD_DUMP CRC(af79179a) SHA1(de61af7d02c93be326a33ee51572e3da7a25dab0) )
+
+ ROM_REGION( 0x0100, "gfxmix", 0 )
+ // copied from parent set to give working graphics, need dump to confirm
+ ROM_LOAD( "catnmousa_82s100.13m", 0x0000, 0x00f5, CRC(6b724cdb) SHA1(8a0ca3b171b103661a3b2fffbca3d7162089e243) BAD_DUMP )
- ROM_REGION( 0x0100, "plds", 0 )
- ROM_LOAD( "catnmousa_82s100.13m", 0x0000, 0x00f5, NO_DUMP )
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "snd.1f", 0xc000, 0x1000, CRC(473c44de) SHA1(ff08b02d45a2c23cabb5db716aa203225a931424) )
+ ROM_LOAD( "snd.1d", 0xe000, 0x1000, CRC(f65cb9d0) SHA1(a2fe7563c6da055bf6aa20797b2d9fa184f0133c) )
+ ROM_LOAD( "snd.1e", 0xf000, 0x1000, CRC(1bd90c93) SHA1(20fd2b765a42e25cf7f716e6631b8c567785a866) )
ROM_END
-GAME( 1981, laserbat, 0, laserbat, laserbat, driver_device, 0, ROT0, "Zaccaria", "Laser Battle", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
-GAME( 1981, lazarian, laserbat, laserbat, lazarian, driver_device, 0, ROT0, "Zaccaria (Bally Midway license)", "Lazarian", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
-GAME( 1982, catnmous, 0, catnmous, catnmous, driver_device, 0, ROT90, "Zaccaria", "Cat and Mouse (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE)
-GAME( 1982, catnmousa,catnmous, catnmous, catnmous, driver_device, 0, ROT90, "Zaccaria", "Cat and Mouse (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE)
+GAME( 1981, laserbat, 0, laserbat, laserbat, laserbat_state_base, laserbat, ROT0, "Zaccaria", "Laser Battle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, lazarian, laserbat, laserbat, lazarian, laserbat_state_base, laserbat, ROT0, "Zaccaria (Bally Midway license)", "Lazarian", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, catnmous, 0, catnmous, catnmous, laserbat_state_base, laserbat, ROT90, "Zaccaria", "Cat and Mouse (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, catnmousa, catnmous, catnmous, catnmous, laserbat_state_base, laserbat, ROT90, "Zaccaria", "Cat and Mouse (set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/laz_aftrshok.cpp b/src/mame/drivers/laz_aftrshok.cpp
index 6e6ccfd93a4..d9611e29dd6 100644
--- a/src/mame/drivers/laz_aftrshok.cpp
+++ b/src/mame/drivers/laz_aftrshok.cpp
@@ -11,9 +11,9 @@ devices are 27c512
--------------------------
file Aftrshk.upd is the updated eprom for an update version.
-The update version uses a small (appx 2" x 4" ) pcb to turn on
+The update version uses a small (appx 2" x 4" ) pcb to turn on
the playfield motor. If you don't have this small pcb, then don't use
-this .upd version software. The small pcb is numbered
+this .upd version software. The small pcb is numbered
"pcb100067"
"Lazer Tron driver pcb V.02"
@@ -38,13 +38,13 @@ class aftrshok_state : public driver_device
public:
aftrshok_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- // ,m_maincpu(*this, "maincpu")
+ // ,m_maincpu(*this, "maincpu")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
-// required_device<mcs51_cpu_device> m_maincpu;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( aftrshok )
@@ -64,9 +64,9 @@ void aftrshok_state::machine_reset()
static MACHINE_CONFIG_START( aftrshok, aftrshok_state )
/* basic machine hardware */
-// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
-// MCFG_CPU_PROGRAM_MAP(aftrshok_map)
-// MCFG_CPU_IO_MAP(aftrshok_io)
+// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
+// MCFG_CPU_PROGRAM_MAP(aftrshok_map)
+// MCFG_CPU_IO_MAP(aftrshok_io)
// MCFG_CPU_VBLANK_INT_DRIVER("screen", aftrshok_state, irq0_line_hold)
/* sound hardware */
@@ -101,4 +101,3 @@ ROM_END
GAME( 19??, aftrshok, 0, aftrshok, aftrshok, driver_device, 0, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 1)", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 19??, aftrshoka, aftrshok, aftrshok, aftrshok, driver_device, 0, ROT0, "Lazer-tron", "After Shock (Lazer-tron, set 2)", MACHINE_IS_SKELETON_MECHANICAL )
-
diff --git a/src/mame/drivers/laz_awetoss.cpp b/src/mame/drivers/laz_awetoss.cpp
index bb63c93aaff..e0ae4697f64 100644
--- a/src/mame/drivers/laz_awetoss.cpp
+++ b/src/mame/drivers/laz_awetoss.cpp
@@ -18,13 +18,13 @@ class awetoss_state : public driver_device
public:
awetoss_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- // ,m_maincpu(*this, "maincpu")
+ // ,m_maincpu(*this, "maincpu")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
-// required_device<mcs51_cpu_device> m_maincpu;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( awetoss )
@@ -44,9 +44,9 @@ void awetoss_state::machine_reset()
static MACHINE_CONFIG_START( awetoss, awetoss_state )
/* basic machine hardware */
-// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
-// MCFG_CPU_PROGRAM_MAP(awetoss_map)
-// MCFG_CPU_IO_MAP(awetoss_io)
+// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
+// MCFG_CPU_PROGRAM_MAP(awetoss_map)
+// MCFG_CPU_IO_MAP(awetoss_io)
// MCFG_CPU_VBLANK_INT_DRIVER("screen", awetoss_state, irq0_line_hold)
/* sound hardware */
@@ -77,8 +77,7 @@ ROM_START( awetoss )
ROM_LOAD( "AWSMTOSS.U14", 0x00000, 0x10000, CRC(6217daaf) SHA1(3036e7f941f787374ef130d3ae6d57813d9e9aac) )
ROM_LOAD( "AWSMTOSS.U13", 0x10000, 0x10000, CRC(4ed3c827) SHA1(761d2796d4f40deeb2caa61c4a9c56ced156084b) )
ROM_LOAD( "AWSMTOSS.U12", 0x20000, 0x10000, CRC(9ddf6dd9) SHA1(c115828ab261ae6d83cb500057313c3a5570b4b0) )
- ROM_LOAD( "AWSMTOSS.U11", 0x30000, 0x10000, CRC(8ae9d4f0) SHA1(58d1d8972c8e4c9a7c63e9d63e267ea81515d22a) )
+ ROM_LOAD( "AWSMTOSS.U11", 0x30000, 0x10000, CRC(8ae9d4f0) SHA1(58d1d8972c8e4c9a7c63e9d63e267ea81515d22a) )
ROM_END
GAME( 19??, awetoss, 0, awetoss, awetoss, driver_device, 0, ROT0, "Lazer-tron", "Awesome Toss'em (Lazer-tron)", MACHINE_IS_SKELETON_MECHANICAL )
-
diff --git a/src/mame/drivers/laz_ribrac.cpp b/src/mame/drivers/laz_ribrac.cpp
index b5ee6ee58c7..fde9067a7b0 100644
--- a/src/mame/drivers/laz_ribrac.cpp
+++ b/src/mame/drivers/laz_ribrac.cpp
@@ -22,13 +22,13 @@ class laz_ribrac_state : public driver_device
public:
laz_ribrac_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- // ,m_maincpu(*this, "maincpu")
+ // ,m_maincpu(*this, "maincpu")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
-// required_device<mcs51_cpu_device> m_maincpu;
+// required_device<mcs51_cpu_device> m_maincpu;
};
static INPUT_PORTS_START( laz_ribrac )
@@ -48,9 +48,9 @@ void laz_ribrac_state::machine_reset()
static MACHINE_CONFIG_START( laz_ribrac, laz_ribrac_state )
/* basic machine hardware */
-// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
-// MCFG_CPU_PROGRAM_MAP(laz_ribrac_map)
-// MCFG_CPU_IO_MAP(laz_ribrac_io)
+// MCFG_CPU_ADD("maincpu", ??, 8000000) // unknown
+// MCFG_CPU_PROGRAM_MAP(laz_ribrac_map)
+// MCFG_CPU_IO_MAP(laz_ribrac_io)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -79,4 +79,3 @@ ROM_START( ribrac )
ROM_END
GAME( 1993, ribrac, 0, laz_ribrac, laz_ribrac, driver_device, 0, ROT0, "Lazer-tron", "Ribbit Racing (Lazer-tron)", MACHINE_IS_SKELETON_MECHANICAL )
-
diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp
index 046bd69af0e..fc4f14167c6 100644
--- a/src/mame/drivers/lc80.cpp
+++ b/src/mame/drivers/lc80.cpp
@@ -141,7 +141,7 @@ void lc80_state::update_display()
for (i = 0; i < 6; i++)
{
- if (!BIT(m_digit, i)) output_set_digit_value(5 - i, m_segment);
+ if (!BIT(m_digit, i)) output().set_digit_value(5 - i, m_segment);
}
}
@@ -211,7 +211,7 @@ WRITE8_MEMBER( lc80_state::pio1_pb_w )
m_speaker->level_w(!BIT(data, 1));
/* OUT led */
- output_set_led_value(0, !BIT(data, 1));
+ output().set_led_value(0, !BIT(data, 1));
/* keyboard */
m_digit = data >> 2;
diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp
index e146c0ad594..7fae2a89c71 100644
--- a/src/mame/drivers/legionna.cpp
+++ b/src/mame/drivers/legionna.cpp
@@ -1225,6 +1225,7 @@ static MACHINE_CONFIG_START( legionna, legionna_state )
MCFG_DEVICE_ADD("crtc", SEIBU_CRTC, 0)
MCFG_SEIBU_CRTC_LAYER_EN_CB(WRITE16(legionna_state, tilemap_enable_w))
+ MCFG_SEIBU_CRTC_REG_1A_CB(WRITE16(legionna_state, tile_vreg_1a_w))
MCFG_SEIBU_CRTC_LAYER_SCROLL_CB(WRITE16(legionna_state, tile_scroll_w))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", legionna)
@@ -1261,6 +1262,7 @@ static MACHINE_CONFIG_START( heatbrl, legionna_state )
MCFG_DEVICE_ADD("crtc", SEIBU_CRTC, 0)
MCFG_SEIBU_CRTC_LAYER_EN_CB(WRITE16(legionna_state, tilemap_enable_w))
+ MCFG_SEIBU_CRTC_REG_1A_CB(WRITE16(legionna_state, tile_vreg_1a_w))
MCFG_SEIBU_CRTC_LAYER_SCROLL_CB(WRITE16(legionna_state, tile_scroll_w))
@@ -1293,14 +1295,15 @@ static MACHINE_CONFIG_START( godzilla, legionna_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
// MCFG_SCREEN_SIZE(42*8, 36*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
- MCFG_SCREEN_RAW_PARAMS(14318180/2,455,0,320,258,0,224) // ~61 Hz
+ MCFG_SCREEN_RAW_PARAMS(14318180/2,455,0,320,258,0,224) // ~61 Hz, 15.734 kHz
MCFG_SCREEN_UPDATE_DRIVER(legionna_state, screen_update_godzilla)
MCFG_SCREEN_PALETTE("palette")
MCFG_DEVICE_ADD("crtc", SEIBU_CRTC, 0)
MCFG_SEIBU_CRTC_LAYER_EN_CB(WRITE16(legionna_state, tilemap_enable_w))
MCFG_SEIBU_CRTC_LAYER_SCROLL_CB(WRITE16(legionna_state, tile_scroll_w))
-
+ MCFG_SEIBU_CRTC_REG_1A_CB(WRITE16(legionna_state, tile_vreg_1a_w))
+ MCFG_SEIBU_CRTC_LAYER_SCROLL_BASE_CB(WRITE16(legionna_state, tile_scroll_base_w))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", heatbrl)
@@ -1339,6 +1342,7 @@ static MACHINE_CONFIG_START( denjinmk, legionna_state )
MCFG_DEVICE_ADD("crtc", SEIBU_CRTC, 0)
MCFG_SEIBU_CRTC_LAYER_EN_CB(WRITE16(legionna_state, tilemap_enable_w))
MCFG_SEIBU_CRTC_LAYER_SCROLL_CB(WRITE16(legionna_state, tile_scroll_w))
+ MCFG_SEIBU_CRTC_REG_1A_CB(WRITE16(legionna_state, tile_vreg_1a_w))
MCFG_PALETTE_ADD_INIT_BLACK("palette", 128*16)
@@ -1374,6 +1378,7 @@ static MACHINE_CONFIG_START( grainbow, legionna_state )
MCFG_DEVICE_ADD("crtc", SEIBU_CRTC, 0)
MCFG_SEIBU_CRTC_LAYER_EN_CB(WRITE16(legionna_state, tilemap_enable_w))
MCFG_SEIBU_CRTC_LAYER_SCROLL_CB(WRITE16(legionna_state, tile_scroll_w))
+ MCFG_SEIBU_CRTC_REG_1A_CB(WRITE16(legionna_state, tile_vreg_1a_w))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", grainbow)
@@ -1412,6 +1417,7 @@ static MACHINE_CONFIG_START( cupsoc, legionna_state )
MCFG_DEVICE_ADD("crtc", SEIBU_CRTC, 0)
MCFG_SEIBU_CRTC_LAYER_EN_CB(WRITE16(legionna_state, tilemap_enable_w))
MCFG_SEIBU_CRTC_LAYER_SCROLL_CB(WRITE16(legionna_state, tile_scroll_w))
+ MCFG_SEIBU_CRTC_REG_1A_CB(WRITE16(legionna_state, tile_vreg_1a_w))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cupsoc)
@@ -1460,7 +1466,7 @@ static MACHINE_CONFIG_START( cupsocbl, legionna_state )
MCFG_DEVICE_ADD("crtc", SEIBU_CRTC, 0)
MCFG_SEIBU_CRTC_LAYER_EN_CB(WRITE16(legionna_state, tilemap_enable_w))
MCFG_SEIBU_CRTC_LAYER_SCROLL_CB(WRITE16(legionna_state, tile_scroll_w))
-
+ MCFG_SEIBU_CRTC_REG_1A_CB(WRITE16(legionna_state, tile_vreg_1a_w))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", heatbrl_csb)
@@ -1482,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) )
@@ -1527,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 )
@@ -1575,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 )
@@ -2680,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/leland.cpp b/src/mame/drivers/leland.cpp
index ae0706928fe..7cd0eb7709b 100644
--- a/src/mame/drivers/leland.cpp
+++ b/src/mame/drivers/leland.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
+// copyright-holders:Aaron Giles,Paul Leaman
/***************************************************************************
Cinemat/Leland driver
diff --git a/src/mame/drivers/lethal.cpp b/src/mame/drivers/lethal.cpp
index 30f82d8195c..fb6ce38d331 100644
--- a/src/mame/drivers/lethal.cpp
+++ b/src/mame/drivers/lethal.cpp
@@ -731,7 +731,7 @@ ROM_START( lethalenj ) // Japan version JAD
ROM_LOAD( "lethalenj.nv", 0x0000, 0x0080, CRC(20b28f2f) SHA1(53d212f2c006729a01dfdb49cb36b67b9425172e) )
ROM_END
-ROM_START( lethaleneaa ) // Euro ver. EAA
+ROM_START( lethaleneaa ) // Euro ver. EAA
ROM_REGION( 0x40000, "maincpu", 0 ) /* main program */
ROM_LOAD( "191_a01.u4", 0x00000, 0x40000, CRC(c6f4d712) SHA1(92938b823f057b5185a2ada7878efa4bf7e6c682) ) // handwritten label
diff --git a/src/mame/drivers/lethalj.cpp b/src/mame/drivers/lethalj.cpp
index 308144db328..6ce095cf141 100644
--- a/src/mame/drivers/lethalj.cpp
+++ b/src/mame/drivers/lethalj.cpp
@@ -175,29 +175,29 @@ CUSTOM_INPUT_MEMBER(lethalj_state::cclownz_paddle)
WRITE16_MEMBER(lethalj_state::ripribit_control_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
m_ticket->write(space, 0, ((data >> 1) & 1) << 7);
- output_set_lamp_value(0, (data >> 2) & 1);
+ output().set_lamp_value(0, (data >> 2) & 1);
}
WRITE16_MEMBER(lethalj_state::cfarm_control_w)
{
m_ticket->write(space, 0, ((data >> 0) & 1) << 7);
- output_set_lamp_value(0, (data >> 2) & 1);
- output_set_lamp_value(1, (data >> 3) & 1);
- output_set_lamp_value(2, (data >> 4) & 1);
- coin_counter_w(machine(), 0, (data >> 7) & 1);
+ output().set_lamp_value(0, (data >> 2) & 1);
+ output().set_lamp_value(1, (data >> 3) & 1);
+ output().set_lamp_value(2, (data >> 4) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 7) & 1);
}
WRITE16_MEMBER(lethalj_state::cclownz_control_w)
{
m_ticket->write(space, 0, ((data >> 0) & 1) << 7);
- output_set_lamp_value(0, (data >> 2) & 1);
- output_set_lamp_value(1, (data >> 4) & 1);
- output_set_lamp_value(2, (data >> 5) & 1);
- coin_counter_w(machine(), 0, (data >> 6) & 1);
+ output().set_lamp_value(0, (data >> 2) & 1);
+ output().set_lamp_value(1, (data >> 4) & 1);
+ output().set_lamp_value(2, (data >> 5) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 6) & 1);
}
diff --git a/src/mame/drivers/liberatr.cpp b/src/mame/drivers/liberatr.cpp
index f0f77750814..b6c46aea717 100644
--- a/src/mame/drivers/liberatr.cpp
+++ b/src/mame/drivers/liberatr.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -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);
+}
+
+
/*************************************
*
@@ -161,13 +169,13 @@ void liberatr_state::machine_start()
WRITE8_MEMBER( liberatr_state::led_w )
{
- set_led_status(machine(), offset, ~data & 0x10);
+ output().set_led_value(offset, ~data & 0x10);
}
WRITE8_MEMBER( liberatr_state::coin_counter_w )
{
- ::coin_counter_w(machine(), offset ^ 0x01, data & 0x10);
+ machine().bookkeeping().coin_counter_w(offset ^ 0x01, data & 0x10);
}
@@ -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/limenko.cpp b/src/mame/drivers/limenko.cpp
index 62b9cb01e74..57c7f1df3b4 100644
--- a/src/mame/drivers/limenko.cpp
+++ b/src/mame/drivers/limenko.cpp
@@ -117,7 +117,7 @@ public:
WRITE32_MEMBER(limenko_state::limenko_coincounter_w)
{
- coin_counter_w(machine(),0,data & 0x10000);
+ machine().bookkeeping().coin_counter_w(0,data & 0x10000);
}
diff --git a/src/mame/drivers/lkage.cpp b/src/mame/drivers/lkage.cpp
index a357dc57334..5aa2b49a471 100644
--- a/src/mame/drivers/lkage.cpp
+++ b/src/mame/drivers/lkage.cpp
@@ -964,4 +964,4 @@ GAME( 1984, lkageoo, lkage, lkage, lkage, lkage_state, lkage, ROT0,
GAME( 1984, lkageb, lkage, lkageb, lkageb, lkage_state, lkageb, ROT0, "bootleg", "The Legend of Kage (bootleg set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1984, lkageb2, lkage, lkageb, lkageb, lkage_state, lkageb, ROT0, "bootleg", "The Legend of Kage (bootleg set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1984, lkageb3, lkage, lkageb, lkageb, lkage_state, lkageb, ROT0, "bootleg", "The Legend of Kage (bootleg set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
-GAME( 1985, bygone, 0, lkage, bygone, lkage_state, bygone, ROT0, "Taito Corporation", "Bygone", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, bygone, 0, lkage, bygone, lkage_state, bygone, ROT0, "Taito Corporation", "Bygone (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/lockon.cpp b/src/mame/drivers/lockon.cpp
index 3dff4710044..4943e440c86 100644
--- a/src/mame/drivers/lockon.cpp
+++ b/src/mame/drivers/lockon.cpp
@@ -423,12 +423,12 @@ WRITE_LINE_MEMBER(lockon_state::ym2203_irq)
WRITE8_MEMBER(lockon_state::ym2203_out_b)
{
- coin_counter_w(machine(), 0, data & 0x80);
- coin_counter_w(machine(), 1, data & 0x40);
- coin_counter_w(machine(), 2, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
+ machine().bookkeeping().coin_counter_w(2, data & 0x20);
/* 'Lock-On' lamp */
- set_led_status(machine(), 1, !(data & 0x10));
+ output().set_led_value(1, !(data & 0x10));
}
/*************************************
diff --git a/src/mame/drivers/lordgun.cpp b/src/mame/drivers/lordgun.cpp
index e25acbe1cc6..15b66477bf1 100644
--- a/src/mame/drivers/lordgun.cpp
+++ b/src/mame/drivers/lordgun.cpp
@@ -178,7 +178,7 @@ WRITE8_MEMBER(lordgun_state::lordgun_eeprom_w)
logerror("%s: Unknown EEPROM bit written %02X\n",machine().describe_context(),data);
}
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
// Update light guns positions
for (i = 0; i < 2; i++)
@@ -210,8 +210,8 @@ WRITE8_MEMBER(lordgun_state::aliencha_eeprom_w)
// bit 1? cleared during screen transitions
m_whitescreen = !(data & 0x02);
- coin_counter_w(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 1, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(1, data & 0x10);
// latch the bit
m_eeprom->di_write((data & 0x80) >> 7);
diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp
index 59bac085cee..23749cd2313 100644
--- a/src/mame/drivers/ltd.cpp
+++ b/src/mame/drivers/ltd.cpp
@@ -315,21 +315,21 @@ WRITE8_MEMBER( ltd_state::port1_w )
if (m_clear)
{
if (row>7)
- output_set_digit_value(row+2, segment); // P2
+ output().set_digit_value(row+2, segment); // P2
else
- output_set_digit_value(row, segment); // P1
+ output().set_digit_value(row, segment); // P1
}
break;
case 8:
if (m_clear)
{
if (row>13)
- output_set_digit_value(row+26, segment); // credits / ball
+ output().set_digit_value(row+26, segment); // credits / ball
else
if (row>7)
- output_set_digit_value(row+22, segment); // P4
+ output().set_digit_value(row+22, segment); // P4
else
- output_set_digit_value(row+20, segment); // P3
+ output().set_digit_value(row+20, segment); // P3
}
break;
}
@@ -370,8 +370,8 @@ DRIVER_INIT_MEMBER( ltd_state, ltd )
DRIVER_INIT_MEMBER( ltd_state, atla_ltd )
{
m_game = 1;
- output_set_digit_value(0, 0x3f);
- output_set_digit_value(10, 0x3f);
+ output().set_digit_value(0, 0x3f);
+ output().set_digit_value(10, 0x3f);
}
DRIVER_INIT_MEMBER( ltd_state, bhol_ltd )
@@ -401,24 +401,24 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r )
switch(m_out_offs-0x60)
{
case 0:
- output_set_digit_value(1, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(2, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(1, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(2, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 1:
- output_set_digit_value(11, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(12, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(11, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(12, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 2:
- output_set_digit_value(3, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(4, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(3, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(4, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 3:
- output_set_digit_value(13, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(14, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(13, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(14, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 8:
- output_set_digit_value(41, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(40, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(41, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(40, patterns[m_p_ram[m_out_offs]>>4]);
break;
}
break;
@@ -428,32 +428,32 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r )
switch(m_out_offs-0x60)
{
case 0:
- output_set_digit_value(0, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(1, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(0, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(1, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 1:
- output_set_digit_value(10, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(11, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(10, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(11, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 2:
- output_set_digit_value(2, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(3, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(2, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(3, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 3:
- output_set_digit_value(12, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(13, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(12, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(13, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 4:
- output_set_digit_value(4, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(5, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(4, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(5, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 5:
- output_set_digit_value(14, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(15, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(14, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(15, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 8:
- output_set_digit_value(41, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(40, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(41, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(40, patterns[m_p_ram[m_out_offs]>>4]);
break;
}
break;
@@ -463,44 +463,44 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r )
switch(m_out_offs-0x60)
{
case 0:
- output_set_digit_value(0, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(1, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(0, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(1, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 1:
- output_set_digit_value(2, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(3, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(2, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(3, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 2:
- output_set_digit_value(4, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(5, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(4, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(5, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 3:
- output_set_digit_value(10, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(11, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(10, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(11, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 4:
- output_set_digit_value(12, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(13, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(12, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(13, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 5:
- output_set_digit_value(14, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(15, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(14, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(15, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 6:
- output_set_digit_value(20, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(21, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(20, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(21, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 7:
- output_set_digit_value(22, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(23, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(22, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(23, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 8:
- output_set_digit_value(24, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(25, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(24, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(25, patterns[m_p_ram[m_out_offs]>>4]);
break;
case 9:
- output_set_digit_value(40, patterns[m_p_ram[m_out_offs]&15]);
- output_set_digit_value(41, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(40, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(41, patterns[m_p_ram[m_out_offs]>>4]);
break;
}
break;
diff --git a/src/mame/drivers/luckgrln.cpp b/src/mame/drivers/luckgrln.cpp
index e2c4543a910..56d5747a5e7 100644
--- a/src/mame/drivers/luckgrln.cpp
+++ b/src/mame/drivers/luckgrln.cpp
@@ -521,14 +521,14 @@ WRITE8_MEMBER(luckgrln_state::lamps_a_w)
x--- ---- TAKE
*/
- output_set_lamp_value(0, (data >> 0) & 1); /* HOLD1 */
- output_set_lamp_value(1, (data >> 1) & 1); /* HOLD2 */
- output_set_lamp_value(2, (data >> 2) & 1); /* HOLD3 */
- output_set_lamp_value(3, (data >> 3) & 1); /* HOLD4 */
- output_set_lamp_value(4, (data >> 4) & 1); /* HOLD5 */
- output_set_lamp_value(5, (data >> 5) & 1); /* START */
- output_set_lamp_value(6, (data >> 6) & 1); /* BET */
- output_set_lamp_value(7, (data >> 7) & 1); /* TAKE */
+ output().set_lamp_value(0, (data >> 0) & 1); /* HOLD1 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* HOLD2 */
+ output().set_lamp_value(2, (data >> 2) & 1); /* HOLD3 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* HOLD4 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* HOLD5 */
+ output().set_lamp_value(5, (data >> 5) & 1); /* START */
+ output().set_lamp_value(6, (data >> 6) & 1); /* BET */
+ output().set_lamp_value(7, (data >> 7) & 1); /* TAKE */
}
WRITE8_MEMBER(luckgrln_state::lamps_b_w)
@@ -544,10 +544,10 @@ WRITE8_MEMBER(luckgrln_state::lamps_b_w)
xx-- ---- unused
*/
- output_set_lamp_value(8, (data >> 0) & 1); /* D-UP */
- output_set_lamp_value(9, (data >> 1) & 1); /* HIGH */
- output_set_lamp_value(10, (data >> 2) & 1); /* LOW */
- output_set_lamp_value(11, (data >> 3) & 1); /* CANCEL */
+ output().set_lamp_value(8, (data >> 0) & 1); /* D-UP */
+ output().set_lamp_value(9, (data >> 1) & 1); /* HIGH */
+ output().set_lamp_value(10, (data >> 2) & 1); /* LOW */
+ output().set_lamp_value(11, (data >> 3) & 1); /* CANCEL */
}
WRITE8_MEMBER(luckgrln_state::counters_w)
@@ -562,10 +562,10 @@ WRITE8_MEMBER(luckgrln_state::counters_w)
xxxx ---- unused
*/
- coin_counter_w(machine(), 0, data & 0x01); /* COIN 1 */
- coin_counter_w(machine(), 1, data & 0x04); /* COIN 2 */
- coin_counter_w(machine(), 2, data & 0x08); /* COIN 3 */
- coin_counter_w(machine(), 3, data & 0x02); /* KEY IN */
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); /* COIN 1 */
+ machine().bookkeeping().coin_counter_w(1, data & 0x04); /* COIN 2 */
+ machine().bookkeeping().coin_counter_w(2, data & 0x08); /* COIN 3 */
+ machine().bookkeeping().coin_counter_w(3, data & 0x02); /* KEY IN */
}
diff --git a/src/mame/drivers/lucky74.cpp b/src/mame/drivers/lucky74.cpp
index ae654165df3..03900d66a7d 100644
--- a/src/mame/drivers/lucky74.cpp
+++ b/src/mame/drivers/lucky74.cpp
@@ -874,10 +874,10 @@ WRITE8_MEMBER(lucky74_state::lamps_a_w)
---- xx-- BIG + SMALL (need to be individualized)
*/
- output_set_lamp_value(8, (data >> 0) & 1); /* D-UP */
- output_set_lamp_value(9, (data >> 1) & 1); /* TAKE SCORE */
- output_set_lamp_value(10, (data >> 2) & 1); /* BIG */
- output_set_lamp_value(11, (data >> 3) & 1); /* SMALL */
+ output().set_lamp_value(8, (data >> 0) & 1); /* D-UP */
+ output().set_lamp_value(9, (data >> 1) & 1); /* TAKE SCORE */
+ output().set_lamp_value(10, (data >> 2) & 1); /* BIG */
+ output().set_lamp_value(11, (data >> 3) & 1); /* SMALL */
}
WRITE8_MEMBER(lucky74_state::lamps_b_w)
@@ -894,14 +894,14 @@ WRITE8_MEMBER(lucky74_state::lamps_b_w)
x--- ---- CANCEL (should lit start too?)
*/
- output_set_lamp_value(0, (data >> 0) & 1); /* HOLD1 */
- output_set_lamp_value(1, (data >> 1) & 1); /* HOLD2 */
- output_set_lamp_value(2, (data >> 2) & 1); /* HOLD3 */
- output_set_lamp_value(3, (data >> 3) & 1); /* HOLD4 */
- output_set_lamp_value(4, (data >> 4) & 1); /* HOLD5 */
- output_set_lamp_value(5, (data >> 5) & 1); /* BET */
- output_set_lamp_value(6, ((data >> 6) & 1)|((data >> 7) & 1)); /* START */
- output_set_lamp_value(7, (data >> 7) & 1); /* CANCEL */
+ output().set_lamp_value(0, (data >> 0) & 1); /* HOLD1 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* HOLD2 */
+ output().set_lamp_value(2, (data >> 2) & 1); /* HOLD3 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* HOLD4 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* HOLD5 */
+ output().set_lamp_value(5, (data >> 5) & 1); /* BET */
+ output().set_lamp_value(6, ((data >> 6) & 1)|((data >> 7) & 1)); /* START */
+ output().set_lamp_value(7, (data >> 7) & 1); /* CANCEL */
}
diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp
index 762264188fd..f0d7bf96932 100644
--- a/src/mame/drivers/lwings.cpp
+++ b/src/mame/drivers/lwings.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
@@ -85,8 +85,8 @@ WRITE8_MEMBER(lwings_state::lwings_bankswitch_w)
m_nmi_mask = data & 8;
/* bits 6 and 7 are coin counters */
- coin_counter_w(machine(), 1, data & 0x40);
- coin_counter_w(machine(), 0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
}
INTERRUPT_GEN_MEMBER(lwings_state::lwings_interrupt)
diff --git a/src/mame/drivers/m107.cpp b/src/mame/drivers/m107.cpp
index 599d1da3167..d9034a10e77 100644
--- a/src/mame/drivers/m107.cpp
+++ b/src/mame/drivers/m107.cpp
@@ -108,8 +108,8 @@ WRITE16_MEMBER(m107_state::coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
}
}
diff --git a/src/mame/drivers/m14.cpp b/src/mame/drivers/m14.cpp
index 6845da4b45e..7a81d5fab73 100644
--- a/src/mame/drivers/m14.cpp
+++ b/src/mame/drivers/m14.cpp
@@ -82,7 +82,6 @@ public:
DECLARE_WRITE8_MEMBER(m14_cram_w);
DECLARE_READ8_MEMBER(m14_rng_r);
DECLARE_READ8_MEMBER(input_buttons_r);
- DECLARE_WRITE8_MEMBER(test_w);
DECLARE_WRITE8_MEMBER(hopper_w);
DECLARE_INPUT_CHANGED_MEMBER(left_coin_inserted);
DECLARE_INPUT_CHANGED_MEMBER(right_coin_inserted);
diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp
index 2667f26e57a..89e792e83ad 100644
--- a/src/mame/drivers/m20.cpp
+++ b/src/mame/drivers/m20.cpp
@@ -97,7 +97,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(tty_clock_tick_w);
DECLARE_WRITE_LINE_MEMBER(kbd_clock_tick_w);
DECLARE_WRITE_LINE_MEMBER(timer_tick_w);
- DECLARE_WRITE_LINE_MEMBER(halt_apb_w);
DECLARE_WRITE_LINE_MEMBER(int_w);
MC6845_UPDATE_ROW(update_row);
diff --git a/src/mame/drivers/m58.cpp b/src/mame/drivers/m58.cpp
index ded857f1146..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?
- UINT8* buffer = auto_alloc_array(machine(), UINT8, 0x10);
- UINT8* region = memregion("proms")->base();
- int i;
-
- for (i=0;i<0x10;i++)
- {
- buffer[i] = region[0x20f-i];
- }
- memcpy(region+0x200, buffer, 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/m63.cpp b/src/mame/drivers/m63.cpp
index 9e90e6d85e9..1a0f04752eb 100644
--- a/src/mame/drivers/m63.cpp
+++ b/src/mame/drivers/m63.cpp
@@ -163,7 +163,7 @@ public:
int m_sound_status;
int m_p1;
int m_p2;
- INT16 *m_samplebuf;
+ std::unique_ptr<INT16[]> m_samplebuf;
/* sound devices */
required_device<cpu_device> m_soundcpu;
@@ -384,7 +384,7 @@ UINT32 m63_state::screen_update_m63(screen_device &screen, bitmap_ind16 &bitmap,
WRITE8_MEMBER(m63_state::coin_w)
{
- coin_counter_w(machine(), offset, data & 0x01);
+ machine().bookkeeping().coin_counter_w(offset, data & 0x01);
}
WRITE8_MEMBER(m63_state::snd_irq_w)
@@ -449,7 +449,7 @@ READ8_MEMBER(m63_state::snddata_r)
WRITE8_MEMBER(m63_state::fghtbskt_samples_w)
{
if (data & 1)
- m_samples->start_raw(0, m_samplebuf + ((data & 0xf0) << 8), 0x2000, 8000);
+ m_samples->start_raw(0, m_samplebuf.get() + ((data & 0xf0) << 8), 0x2000, 8000);
}
WRITE8_MEMBER(m63_state::nmi_mask_w)
@@ -704,8 +704,8 @@ SAMPLES_START_CB_MEMBER(m63_state::fghtbskt_sh_start)
int i, len = memregion("samples")->bytes();
UINT8 *ROM = memregion("samples")->base();
- m_samplebuf = auto_alloc_array(machine(), INT16, len);
- save_pointer(NAME(m_samplebuf), len);
+ m_samplebuf = std::make_unique<INT16[]>(len);
+ save_pointer(NAME(m_samplebuf.get()), len);
for(i = 0; i < len; i++)
m_samplebuf[i] = ((INT8)(ROM[i] ^ 0x80)) * 256;
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp
index 2fad012c24c..b6cc9b7e4bb 100644
--- a/src/mame/drivers/m72.cpp
+++ b/src/mame/drivers/m72.cpp
@@ -373,7 +373,7 @@ WRITE16_MEMBER(m72_state::main_mcu_w)
//machine().scheduler().timer_set(m_mcu->cycles_to_attotime(0), FUNC(mcu_irq0_raise));
}
else
- machine().scheduler().synchronize( timer_expired_delegate(FUNC(m72_state::delayed_ram16_w),this), (offset<<16) | val, m_protection_ram);
+ machine().scheduler().synchronize( timer_expired_delegate(FUNC(m72_state::delayed_ram16_w),this), (offset<<16) | val, m_protection_ram.get());
}
WRITE8_MEMBER(m72_state::mcu_data_w)
@@ -382,7 +382,7 @@ WRITE8_MEMBER(m72_state::mcu_data_w)
if (offset&1) val = (m_protection_ram[offset/2] & 0x00ff) | (data << 8);
else val = (m_protection_ram[offset/2] & 0xff00) | (data&0xff);
- machine().scheduler().synchronize( timer_expired_delegate(FUNC(m72_state::delayed_ram16_w),this), ((offset >>1 ) << 16) | val, m_protection_ram);
+ machine().scheduler().synchronize( timer_expired_delegate(FUNC(m72_state::delayed_ram16_w),this), ((offset >>1 ) << 16) | val, m_protection_ram.get());
}
READ8_MEMBER(m72_state::mcu_data_r)
@@ -466,12 +466,12 @@ DRIVER_INIT_MEMBER(m72_state,m72_8751)
address_space &io = m_maincpu->space(AS_IO);
address_space &sndio = m_soundcpu->space(AS_IO);
- m_protection_ram = auto_alloc_array(machine(), UINT16, 0x10000/2);
+ m_protection_ram = std::make_unique<UINT16[]>(0x10000/2);
program.install_read_bank(0xb0000, 0xbffff, "bank1");
program.install_write_handler(0xb0000, 0xb0fff, write16_delegate(FUNC(m72_state::main_mcu_w),this));
- membank("bank1")->configure_entry(0, m_protection_ram);
+ membank("bank1")->configure_entry(0, m_protection_ram.get());
- save_pointer(NAME(m_protection_ram), 0x10000/2);
+ save_pointer(NAME(m_protection_ram.get()), 0x10000/2);
save_item(NAME(m_mcu_sample_latch));
save_item(NAME(m_mcu_sample_addr));
save_item(NAME(m_mcu_snd_cmd_latch));
@@ -795,7 +795,7 @@ void m72_state::copy_le(UINT16 *dest, const UINT8 *src, UINT8 bytes)
READ16_MEMBER(m72_state::protection_r)
{
if (ACCESSING_BITS_8_15)
- copy_le(m_protection_ram,m_protection_code,CODE_LEN);
+ copy_le(m_protection_ram.get(),m_protection_code,CODE_LEN);
return m_protection_ram[0xffa/2+offset];
}
@@ -811,15 +811,15 @@ WRITE16_MEMBER(m72_state::protection_w)
void m72_state::install_protection_handler(const UINT8 *code,const UINT8 *crc)
{
- m_protection_ram = auto_alloc_array(machine(), UINT16, 0x1000/2);
+ m_protection_ram = std::make_unique<UINT16[]>(0x1000/2);
m_protection_code = code;
m_protection_crc = crc;
m_maincpu->space(AS_PROGRAM).install_read_bank(0xb0000, 0xb0fff, "bank1");
m_maincpu->space(AS_PROGRAM).install_read_handler(0xb0ffa, 0xb0ffb, read16_delegate(FUNC(m72_state::protection_r),this));
m_maincpu->space(AS_PROGRAM).install_write_handler(0xb0000, 0xb0fff, write16_delegate(FUNC(m72_state::protection_w),this));
- membank("bank1")->configure_entry(0, m_protection_ram);
+ membank("bank1")->configure_entry(0, m_protection_ram.get());
- save_pointer(NAME(m_protection_ram), 0x1000/2);
+ save_pointer(NAME(m_protection_ram.get()), 0x1000/2);
}
DRIVER_INIT_MEMBER(m72_state,bchopper)
diff --git a/src/mame/drivers/m79amb.cpp b/src/mame/drivers/m79amb.cpp
index 2d7a5c0836c..0a3f791529e 100644
--- a/src/mame/drivers/m79amb.cpp
+++ b/src/mame/drivers/m79amb.cpp
@@ -111,7 +111,7 @@ WRITE8_MEMBER(m79amb_state::m79amb_8002_w)
{
/* D1 may also be watchdog reset */
/* port goes to 0x7f to turn on explosion lamp */
- output_set_value("EXP_LAMP", data ? 1 : 0);
+ output().set_value("EXP_LAMP", data ? 1 : 0);
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, m79amb_state )
diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp
index 9c59f67b44b..6386e102c15 100644
--- a/src/mame/drivers/m90.cpp
+++ b/src/mame/drivers/m90.cpp
@@ -41,8 +41,8 @@ WRITE16_MEMBER(m90_state::m90_coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
if (data & 0xfc) logerror("Coin counter %02x\n",data);
}
diff --git a/src/mame/drivers/m92.cpp b/src/mame/drivers/m92.cpp
index 6f06921f32b..ad1239ca675 100644
--- a/src/mame/drivers/m92.cpp
+++ b/src/mame/drivers/m92.cpp
@@ -308,8 +308,8 @@ WRITE16_MEMBER(m92_state::m92_coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* Bit 0x8 is Motor(?!), used in Hook, In The Hunt, UCops */
/* Bit 0x8 is Memcard related in RTypeLeo */
/* Bit 0x40 set in Blade Master test mode input check */
@@ -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/mac.cpp b/src/mame/drivers/mac.cpp
index 907dab8926b..05d9e85a61c 100644
--- a/src/mame/drivers/mac.cpp
+++ b/src/mame/drivers/mac.cpp
@@ -2305,7 +2305,10 @@ ROM_END
ROM_START( maciici )
ROM_REGION32_BE(0x80000, "bootrom", 0)
- ROM_LOAD( "368cadfe.rom", 0x000000, 0x080000, CRC(46adbf74) SHA1(b54f9d2ed16b63c49ed55adbe4685ebe73eb6e80) )
+ ROM_LOAD32_BYTE( "341-0736.um12", 0x000000, 0x020000, CRC(7a1906e6) SHA1(3e39c80b52f40798502fcbdfc97b315545c4c4d3) )
+ ROM_LOAD32_BYTE( "341-0735.um11", 0x000001, 0x020000, CRC(a8942189) SHA1(be9f653cab04c304d7ee8d4ec312c23ff5d47efc) )
+ ROM_LOAD32_BYTE( "342-0734.um10", 0x000002, 0x020000, CRC(07f56402) SHA1(e11ca97181faf26cd0d05bd639d65998805c7822) )
+ ROM_LOAD32_BYTE( "342-0733.um9", 0x000003, 0x020000, CRC(20c28451) SHA1(fecf849c9ac9717c18c13184e24a471888028e46) )
ROM_END
ROM_START( maciisi )
diff --git a/src/mame/drivers/macs.cpp b/src/mame/drivers/macs.cpp
index 34f1bbda216..0bcdb63d3ce 100644
--- a/src/mame/drivers/macs.cpp
+++ b/src/mame/drivers/macs.cpp
@@ -73,7 +73,7 @@ public:
UINT8 m_mux_data;
UINT8 m_rev;
- UINT8 *m_ram1;
+ std::unique_ptr<UINT8[]> m_ram1;
required_shared_ptr<UINT8> m_ram2;
DECLARE_WRITE8_MEMBER(rambank_w);
DECLARE_READ8_MEMBER(macs_input_r);
@@ -639,7 +639,7 @@ static const UINT8 ramdata[160]=
MACHINE_RESET_MEMBER(macs_state,macs)
{
- UINT8 *macs_ram1 = m_ram1;
+ UINT8 *macs_ram1 = m_ram1.get();
#if 0
UINT8 *macs_ram2 = m_ram2;
/*
@@ -718,28 +718,28 @@ MACHINE_RESET_MEMBER(macs_state,macs)
DRIVER_INIT_MEMBER(macs_state,macs)
{
- m_ram1=auto_alloc_array(machine(), UINT8, 0x20000);
+ m_ram1=std::make_unique<UINT8[]>(0x20000);
m_maincpu->st0016_game=10|0x80;
m_rev = 1;
}
DRIVER_INIT_MEMBER(macs_state,macs2)
{
- m_ram1=auto_alloc_array(machine(), UINT8, 0x20000);
+ m_ram1=std::make_unique<UINT8[]>(0x20000);
m_maincpu->st0016_game=10|0x80;
m_rev = 2;
}
DRIVER_INIT_MEMBER(macs_state,kisekaeh)
{
- m_ram1=auto_alloc_array(machine(), UINT8, 0x20000);
+ m_ram1=std::make_unique<UINT8[]>(0x20000);
m_maincpu->st0016_game=11|0x180;
m_rev = 1;
}
DRIVER_INIT_MEMBER(macs_state,kisekaem)
{
- m_ram1=auto_alloc_array(machine(), UINT8, 0x20000);
+ m_ram1=std::make_unique<UINT8[]>(0x20000);
m_maincpu->st0016_game=10|0x180;
m_rev = 1;
}
diff --git a/src/mame/drivers/madmotor.cpp b/src/mame/drivers/madmotor.cpp
index a71d77e7a60..34d50a6e22f 100644
--- a/src/mame/drivers/madmotor.cpp
+++ b/src/mame/drivers/madmotor.cpp
@@ -349,4 +349,4 @@ DRIVER_INIT_MEMBER(madmotor_state,madmotor)
/* The title screen is undated, but it's (c) 1989 Data East at 0xefa0 */
-GAME( 1989, madmotor, 0, madmotor, madmotor, madmotor_state, madmotor, ROT0, "Mitchell", "Mad Motor", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, madmotor, 0, madmotor, madmotor, madmotor_state, madmotor, ROT0, "Mitchell", "Mad Motor (prototype)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/magic10.cpp b/src/mame/drivers/magic10.cpp
index 9de8bc1a97a..6005f807aac 100644
--- a/src/mame/drivers/magic10.cpp
+++ b/src/mame/drivers/magic10.cpp
@@ -270,16 +270,16 @@ WRITE16_MEMBER(magic10_state::magic10_out_w)
// popmessage("lamps: %02X", data);
- output_set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
- output_set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
- output_set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
- output_set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
- output_set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */
- output_set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */
- output_set_lamp_value(7, (data >> 6) & 1); /* Lamp 7 - PLAY (BET/TAKE/CANCEL) */
- output_set_lamp_value(8, (data >> 8) & 1); /* Lamp 8 - PAYOUT/SUPERGAME */
-
- coin_counter_w(machine(), 0, data & 0x400);
+ output().set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
+ output().set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
+ output().set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
+ output().set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
+ output().set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */
+ output().set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */
+ output().set_lamp_value(7, (data >> 6) & 1); /* Lamp 7 - PLAY (BET/TAKE/CANCEL) */
+ output().set_lamp_value(8, (data >> 8) & 1); /* Lamp 8 - PAYOUT/SUPERGAME */
+
+ machine().bookkeeping().coin_counter_w(0, data & 0x400);
}
/***************************
diff --git a/src/mame/drivers/magicfly.cpp b/src/mame/drivers/magicfly.cpp
index f9cc51343ab..bb82206dda1 100644
--- a/src/mame/drivers/magicfly.cpp
+++ b/src/mame/drivers/magicfly.cpp
@@ -655,9 +655,9 @@ WRITE8_MEMBER(magicfly_state::mux_port_w)
m_dac->write_unsigned8(data & 0x80); /* Sound DAC */
- coin_counter_w(machine(), 0, data & 0x40); /* Coin1 */
- coin_counter_w(machine(), 1, data & 0x10); /* Coin2 */
- coin_counter_w(machine(), 2, data & 0x20); /* Payout */
+ machine().bookkeeping().coin_counter_w(0, data & 0x40); /* Coin1 */
+ machine().bookkeeping().coin_counter_w(1, data & 0x10); /* Coin2 */
+ machine().bookkeeping().coin_counter_w(2, data & 0x20); /* Payout */
}
diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp
index 32af4e8cfc6..63b0df20394 100644
--- a/src/mame/drivers/magictg.cpp
+++ b/src/mame/drivers/magictg.cpp
@@ -212,7 +212,6 @@ public:
DECLARE_READ32_MEMBER( unk_r );
DECLARE_READ32_MEMBER( unk2_r );
- DECLARE_READ32_MEMBER( serial_r );
DECLARE_WRITE32_MEMBER( serial_w );
DECLARE_READ32_MEMBER( adsp_idma_data_r );
diff --git a/src/mame/drivers/mainevt.cpp b/src/mame/drivers/mainevt.cpp
index 840da8b536b..c0c9df9ff43 100644
--- a/src/mame/drivers/mainevt.cpp
+++ b/src/mame/drivers/mainevt.cpp
@@ -66,12 +66,12 @@ WRITE8_MEMBER(mainevt_state::mainevt_bankswitch_w)
WRITE8_MEMBER(mainevt_state::mainevt_coin_w)
{
- coin_counter_w(machine(), 0, data & 0x10);
- coin_counter_w(machine(), 1, data & 0x20);
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x02);
- set_led_status(machine(), 2, data & 0x04);
- set_led_status(machine(), 3, data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
+ output().set_led_value(2, data & 0x04);
+ output().set_led_value(3, data & 0x08);
}
WRITE8_MEMBER(mainevt_state::mainevt_sh_irqtrigger_w)
diff --git a/src/mame/drivers/majorpkr.cpp b/src/mame/drivers/majorpkr.cpp
index 7238599f40c..aed787f9459 100644
--- a/src/mame/drivers/majorpkr.cpp
+++ b/src/mame/drivers/majorpkr.cpp
@@ -663,13 +663,13 @@ WRITE8_MEMBER(majorpkr_state::lamps_a_w)
-x-- ---- Small lamp.
x--- ---- Unknown.
*/
- output_set_lamp_value(0, (data) & 1); /* Lamp 0: Hold 1 */
- output_set_lamp_value(1, (data >> 1) & 1); /* Lamp 1: Hold 2 */
- output_set_lamp_value(2, (data >> 2) & 1); /* Lamp 2: Hold 3 */
- output_set_lamp_value(3, (data >> 3) & 1); /* Lamp 3: Hold 4 */
- output_set_lamp_value(4, (data >> 4) & 1); /* Lamp 4: Hold 5 */
- output_set_lamp_value(5, (data >> 5) & 1); /* Lamp 5: Big or Small (need identification) */
- output_set_lamp_value(6, (data >> 6) & 1); /* Lamp 6: Big or Small (need identification) */
+ output().set_lamp_value(0, (data) & 1); /* Lamp 0: Hold 1 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* Lamp 1: Hold 2 */
+ output().set_lamp_value(2, (data >> 2) & 1); /* Lamp 2: Hold 3 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* Lamp 3: Hold 4 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* Lamp 4: Hold 5 */
+ output().set_lamp_value(5, (data >> 5) & 1); /* Lamp 5: Big or Small (need identification) */
+ output().set_lamp_value(6, (data >> 6) & 1); /* Lamp 6: Big or Small (need identification) */
if (data & 0x80)
logerror("Lamps A: Write to 13h: %02x\n", data);
@@ -689,12 +689,12 @@ WRITE8_MEMBER(majorpkr_state::lamps_b_w)
--x- ---- Fever lamp.
xx-- ---- Unknown.
*/
- output_set_lamp_value(7, (data) & 1); /* Lamp 7: Bet */
- output_set_lamp_value(8, (data >> 1) & 1); /* Lamp 8: Draw */
- output_set_lamp_value(9, (data >> 2) & 1); /* Lamp 9: Cancel */
- output_set_lamp_value(10, (data >> 3) & 1); /* Lamp 10: Take */
- output_set_lamp_value(11, (data >> 4) & 1); /* Lamp 11: D-UP */
- output_set_lamp_value(12, (data >> 5) & 1); /* Lamp 12: Fever */
+ output().set_lamp_value(7, (data) & 1); /* Lamp 7: Bet */
+ output().set_lamp_value(8, (data >> 1) & 1); /* Lamp 8: Draw */
+ output().set_lamp_value(9, (data >> 2) & 1); /* Lamp 9: Cancel */
+ output().set_lamp_value(10, (data >> 3) & 1); /* Lamp 10: Take */
+ output().set_lamp_value(11, (data >> 4) & 1); /* Lamp 11: D-UP */
+ output().set_lamp_value(12, (data >> 5) & 1); /* Lamp 12: Fever */
if (data & 0xc0)
logerror("Lamps B: Write to 14h: %02x\n", data);
@@ -713,10 +713,10 @@ WRITE8_MEMBER(majorpkr_state::pulses_w)
---x ---- Watchdog? (constant writes).
xxx- ---- Unknown.
*/
- coin_counter_w(machine(), 3, data & 0x01); /* Credits Out (all) */
- coin_counter_w(machine(), 2, data & 0x02); /* Credits 3 */
- coin_counter_w(machine(), 0, data & 0x04); /* Credits 1 */
- coin_counter_w(machine(), 1, data & 0x08); /* Credits 2 */
+ machine().bookkeeping().coin_counter_w(3, data & 0x01); /* Credits Out (all) */
+ machine().bookkeeping().coin_counter_w(2, data & 0x02); /* Credits 3 */
+ machine().bookkeeping().coin_counter_w(0, data & 0x04); /* Credits 1 */
+ machine().bookkeeping().coin_counter_w(1, data & 0x08); /* Credits 2 */
if (data & 0xe0)
logerror("Pulse: Write to 10h: %02x\n", data);
diff --git a/src/mame/drivers/malzak.cpp b/src/mame/drivers/malzak.cpp
index eb65b80951f..4b39c437037 100644
--- a/src/mame/drivers/malzak.cpp
+++ b/src/mame/drivers/malzak.cpp
@@ -74,7 +74,7 @@
READ8_MEMBER(malzak_state::fake_VRLE_r)
{
- return (m_s2636_0->read(space, 0xcb) & 0x3f) + (m_screen->vblank() * 0x40);
+ return (m_s2636_0->read_data(space, 0xcb) & 0x3f) + (m_screen->vblank() ? 0x40 : 0x00);
}
READ8_MEMBER(malzak_state::s2636_portA_r)
@@ -106,8 +106,8 @@ static ADDRESS_MAP_START( malzak_map, AS_PROGRAM, 8, malzak_state )
AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x1300, 0x13ff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x14cb, 0x14cb) AM_MIRROR(0x6000) AM_READ(fake_VRLE_r)
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read, write)
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read, write)
+ AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data)
+ AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data)
AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w)
AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("videoram")
@@ -127,8 +127,8 @@ static ADDRESS_MAP_START( malzak2_map, AS_PROGRAM, 8, malzak_state )
AM_RANGE(0x1300, 0x13ff) AM_MIRROR(0x6000) AM_RAM
AM_RANGE(0x14cb, 0x14cb) AM_MIRROR(0x6000) AM_READ(fake_VRLE_r)
AM_RANGE(0x14cc, 0x14cc) AM_MIRROR(0x6000) AM_READ(s2636_portA_r)
- AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read, write)
- AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read, write)
+ AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data)
+ AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data)
AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w)
AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("videoram")
diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp
index aad2fa4a05d..0c82f9affba 100644
--- a/src/mame/drivers/mappy.cpp
+++ b/src/mame/drivers/mappy.cpp
@@ -1624,10 +1624,10 @@ WRITE8_MEMBER(mappy_state::out_mux)
WRITE8_MEMBER(mappy_state::out_lamps)
{
- set_led_status(machine(), 0, data & 1);
- set_led_status(machine(), 1, data & 2);
- coin_lockout_global_w(machine(), data & 4);
- coin_counter_w(machine(), 0, ~data & 8);
+ output().set_led_value(0, data & 1);
+ output().set_led_value(1, data & 2);
+ machine().bookkeeping().coin_lockout_global_w(data & 4);
+ machine().bookkeeping().coin_counter_w(0, ~data & 8);
}
MACHINE_START_MEMBER(mappy_state,mappy)
diff --git a/src/mame/drivers/marinedt.cpp b/src/mame/drivers/marinedt.cpp
index 0572dd30412..0f8e24b6199 100644
--- a/src/mame/drivers/marinedt.cpp
+++ b/src/mame/drivers/marinedt.cpp
@@ -168,9 +168,9 @@ public:
required_shared_ptr<UINT8> m_tx_tileram;
/* video-related */
- bitmap_ind16 *m_tile;
- bitmap_ind16 *m_obj1;
- bitmap_ind16 *m_obj2;
+ std::unique_ptr<bitmap_ind16> m_tile;
+ std::unique_ptr<bitmap_ind16> m_obj1;
+ std::unique_ptr<bitmap_ind16> m_obj2;
tilemap_t *m_tx_tilemap;
UINT8 m_obj1_a;
@@ -561,9 +561,9 @@ void marinedt_state::video_start()
m_tx_tilemap->set_scrolldx(0, 4*8);
m_tx_tilemap->set_scrolldy(0, -4*8);
- m_tile = auto_bitmap_ind16_alloc(machine(), 32 * 8, 32 * 8);
- m_obj1 = auto_bitmap_ind16_alloc(machine(), 32, 32);
- m_obj2 = auto_bitmap_ind16_alloc(machine(), 32, 32);
+ m_tile = std::make_unique<bitmap_ind16>(32 * 8, 32 * 8);
+ m_obj1 = std::make_unique<bitmap_ind16>(32, 32);
+ m_obj2 = std::make_unique<bitmap_ind16>(32, 32);
}
diff --git a/src/mame/drivers/marywu.cpp b/src/mame/drivers/marywu.cpp
new file mode 100644
index 00000000000..ce48608de52
--- /dev/null
+++ b/src/mame/drivers/marywu.cpp
@@ -0,0 +1,217 @@
+// 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"
+
+ Driver by Felipe Sanches
+
+ TODO:
+ * Figure out where exactly all devices are mapped to (the devices are
+ 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.
+**************************************************************************/
+
+#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)
+ { }
+
+ 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
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( io_map, AS_IO, 8, marywu_state )
+ 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)
+
+ /* 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_END
+
+/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
+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/maxaflex.cpp b/src/mame/drivers/maxaflex.cpp
index d29164ba6aa..fce86aec694 100644
--- a/src/mame/drivers/maxaflex.cpp
+++ b/src/mame/drivers/maxaflex.cpp
@@ -165,10 +165,10 @@ WRITE8_MEMBER(maxaflex_state::mcu_portB_w)
/* latch for lamps */
if ((diff & 0x40) && !(data & 0x40))
{
- output_set_lamp_value(0, (m_portC_out >> 0) & 1);
- output_set_lamp_value(1, (m_portC_out >> 1) & 1);
- output_set_lamp_value(2, (m_portC_out >> 2) & 1);
- output_set_lamp_value(3, (m_portC_out >> 3) & 1);
+ output().set_lamp_value(0, (m_portC_out >> 0) & 1);
+ output().set_lamp_value(1, (m_portC_out >> 1) & 1);
+ output().set_lamp_value(2, (m_portC_out >> 2) & 1);
+ output().set_lamp_value(3, (m_portC_out >> 3) & 1);
}
}
@@ -194,9 +194,9 @@ WRITE8_MEMBER(maxaflex_state::mcu_portC_w)
/* displays */
switch( m_portB_out & 0x3 )
{
- case 0x0: output_set_digit_value(0, ls48_map[m_portC_out]); break;
- case 0x1: output_set_digit_value(1, ls48_map[m_portC_out]); break;
- case 0x2: output_set_digit_value(2, ls48_map[m_portC_out]); break;
+ case 0x0: output().set_digit_value(0, ls48_map[m_portC_out]); break;
+ case 0x1: output().set_digit_value(1, ls48_map[m_portC_out]); break;
+ case 0x2: output().set_digit_value(2, ls48_map[m_portC_out]); break;
case 0x3: break;
}
}
@@ -410,13 +410,13 @@ void maxaflex_state::machine_reset()
m_tdr = m_tcr = 0;
m_mcu_timer = machine().device<timer_device>("mcu_timer");
- output_set_lamp_value(0, 0);
- output_set_lamp_value(1, 0);
- output_set_lamp_value(2, 0);
- output_set_lamp_value(3, 0);
- output_set_digit_value(0, 0x00);
- output_set_digit_value(1, 0x00);
- output_set_digit_value(2, 0x00);
+ output().set_lamp_value(0, 0);
+ output().set_lamp_value(1, 0);
+ output().set_lamp_value(2, 0);
+ output().set_lamp_value(3, 0);
+ output().set_digit_value(0, 0x00);
+ output().set_digit_value(1, 0x00);
+ output().set_digit_value(2, 0x00);
}
TIMER_DEVICE_CALLBACK_MEMBER( maxaflex_state::mf_interrupt )
diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp
index 998e4b19800..8d129794d27 100644
--- a/src/mame/drivers/maygay1b.cpp
+++ b/src/mame/drivers/maygay1b.cpp
@@ -159,7 +159,7 @@ WRITE8_MEMBER(maygay1b_state::m1_pia_portb_w)
{
if ( data & (1 << i) )
{
- output_set_indexed_value("triac", i, data & (1 << i));
+ output().set_indexed_value("triac", i, data & (1 << i));
}
}
}
@@ -283,17 +283,14 @@ INPUT_PORTS_END
void maygay1b_state::machine_start()
{
-// setup 8 mechanical meters ////////////////////////////////////////////
- MechMtr_config(machine(),8);
-
}
WRITE8_MEMBER(maygay1b_state::reel12_w)
{
m_reel0->update( data & 0x0F);
m_reel1->update((data>>4) & 0x0F);
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
}
WRITE8_MEMBER(maygay1b_state::reel34_w)
@@ -301,8 +298,8 @@ WRITE8_MEMBER(maygay1b_state::reel34_w)
m_reel2->update( data & 0x0F);
m_reel3->update((data>>4) & 0x0F);
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
}
WRITE8_MEMBER(maygay1b_state::reel56_w)
@@ -310,8 +307,8 @@ WRITE8_MEMBER(maygay1b_state::reel56_w)
m_reel4->update( data & 0x0F);
m_reel5->update((data>>4) & 0x0F);
- awp_draw_reel("reel5", m_reel4);
- awp_draw_reel("reel6", m_reel5);
+ awp_draw_reel(machine(),"reel5", m_reel4);
+ awp_draw_reel(machine(),"reel6", m_reel5);
}
READ8_MEMBER(maygay1b_state::m1_duart_r)
@@ -326,7 +323,7 @@ WRITE8_MEMBER(maygay1b_state::m1_meter_w)
{
if ( data & (1 << i) )
{
- MechMtr_update(i, data & (1 << i) );
+ m_meters->update(i, data & (1 << i) );
m_meter = data;
}
}
@@ -405,7 +402,7 @@ WRITE8_MEMBER(maygay1b_state::m1_lockout_w)
int i;
for (i=0; i<6; i++)
{
- coin_lockout_w(machine(), i, data & (1 << i) );
+ machine().bookkeeping().coin_lockout_w(i, data & (1 << i) );
}
}
@@ -553,7 +550,7 @@ WRITE8_MEMBER( maygay1b_state::lamp_data_w )
for (int i = 0; i < 8; i++)
{
- output_set_lamp_value((8*m_lamp_strobe)+i, ((data & (1 << i)) !=0));
+ output().set_lamp_value((8*m_lamp_strobe)+i, ((data & (1 << i)) !=0));
}
m_old_lamp_strobe = m_lamp_strobe;
}
@@ -578,7 +575,7 @@ WRITE8_MEMBER( maygay1b_state::lamp_data_2_w )
for (int i = 0; i < 8; i++)
{
- output_set_lamp_value((8*m_lamp_strobe)+i+128, ((data & (1 << i)) !=0));
+ output().set_lamp_value((8*m_lamp_strobe)+i+128, ((data & (1 << i)) !=0));
}
m_old_lamp_strobe2 = m_lamp_strobe2;
}
@@ -637,6 +634,9 @@ MACHINE_CONFIG_START( maygay_m1, maygay1b_state )
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(maygay1b_state, reel5_optic_cb))
+ MCFG_DEVICE_ADD("meters", METERS, 0)
+ MCFG_METERS_NUMBER(8)
+
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_DEFAULT_LAYOUT(layout_maygay1b)
diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp
index d3e911d772a..256af7bbbee 100644
--- a/src/mame/drivers/maygayv1.cpp
+++ b/src/mame/drivers/maygayv1.cpp
@@ -199,9 +199,9 @@ static const UINT32 banks[4] = { 0, 0x40000/2, 0x20000/2, 0x60000/2 };
struct i82716_t
{
UINT16 r[16];
- UINT16 *dram;
+ std::unique_ptr<UINT16[]> dram;
- UINT8 *line_buf; // there's actually two
+ std::unique_ptr<UINT8[]> line_buf; // there's actually two
};
@@ -336,7 +336,7 @@ UINT32 maygayv1_state::screen_update_maygayv1(screen_device &screen, bitmap_ind1
/* Clear the frame buffer on each line to BG colour (palette entry 2) */
/* 4bpp only ! */
- memset(i82716.line_buf, 0x22, 512);
+ memset(i82716.line_buf.get(), 0x22, 512);
/* Parse the list of 16 objects */
for (obj = 0; obj < 16; ++obj)
@@ -523,7 +523,7 @@ WRITE8_MEMBER( maygayv1_state::lamp_data_w )
for (int i = 0; i < 8; i++)
{
- output_set_lamp_value((8*m_lamp_strobe)+i, ((data & (1 << i)) !=0));
+ output().set_lamp_value((8*m_lamp_strobe)+i, ((data & (1 << i)) !=0));
}
m_old_lamp_strobe = m_lamp_strobe;
}
@@ -838,10 +838,10 @@ WRITE8_MEMBER(maygayv1_state::b_writ)
void maygayv1_state::machine_start()
{
i82716_t &i82716 = m_i82716;
- i82716.dram = auto_alloc_array(machine(), UINT16, 0x80000/2); // ???
- i82716.line_buf = auto_alloc_array(machine(), UINT8, 512);
+ i82716.dram = std::make_unique<UINT16[]>(0x80000/2); // ???
+ i82716.line_buf = std::make_unique<UINT8[]>(512);
- save_pointer(NAME(i82716.dram), 0x40000);
+ save_pointer(NAME(i82716.dram.get()), 0x40000);
m_soundcpu->i8051_set_serial_tx_callback(write8_delegate(FUNC(maygayv1_state::data_from_i8031),this));
m_soundcpu->i8051_set_serial_rx_callback(read8_delegate(FUNC(maygayv1_state::data_to_i8031),this));
@@ -851,7 +851,7 @@ void maygayv1_state::machine_reset()
{
i82716_t &i82716 = m_i82716;
// ?
- memset(i82716.dram, 0, 0x40000);
+ memset(i82716.dram.get(), 0, 0x40000);
i82716.r[RWBA] = 0x0200;
}
diff --git a/src/mame/drivers/mazerbla.cpp b/src/mame/drivers/mazerbla.cpp
index 75355beea8d..24c80847ea8 100644
--- a/src/mame/drivers/mazerbla.cpp
+++ b/src/mame/drivers/mazerbla.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Jarek Burczynski
+// license:GPL-2.0+
+// copyright-holders:Jarek Burczynski, Angelo Salese
/****************************************************************************
Mazer Blazer by Stern Electronics (c) 1983
@@ -194,14 +194,7 @@ public:
int m_planes_enabled[4];
#endif
- DECLARE_WRITE8_MEMBER(cfb_backgnd_color_w);
- DECLARE_WRITE8_MEMBER(cfb_vbank_w);
DECLARE_WRITE8_MEMBER(cfb_rom_bank_sel_w);
- DECLARE_READ8_MEMBER(cfb_port_02_r);
- DECLARE_WRITE8_MEMBER(vcu_video_reg_w);
- DECLARE_READ8_MEMBER(vcu_set_cmd_param_r);
- DECLARE_READ8_MEMBER(vcu_set_gfx_addr_r);
- DECLARE_READ8_MEMBER(vcu_set_clr_addr_r);
DECLARE_WRITE8_MEMBER(cfb_zpu_int_req_set_w);
DECLARE_READ8_MEMBER(cfb_zpu_int_req_clr);
DECLARE_READ8_MEMBER(ls670_0_r);
@@ -883,7 +876,7 @@ WRITE8_MEMBER(mazerbla_state::zpu_led_w)
{
/* 0x6e - reset (offset = 0)*/
/* 0x6f - set */
- set_led_status(machine(), 0, offset & 1);
+ output().set_led_value(0, offset & 1);
}
WRITE8_MEMBER(mazerbla_state::zpu_lamps_w)
@@ -891,26 +884,26 @@ WRITE8_MEMBER(mazerbla_state::zpu_lamps_w)
/* bit 4 = /LAMP0 */
/* bit 5 = /LAMP1 */
- /*set_led_status(machine(), 0, (data & 0x10) >> 4);*/
- /*set_led_status(machine(), 1, (data & 0x20) >> 4);*/
+ /*output().set_led_value(0, (data & 0x10) >> 4);*/
+ /*output().set_led_value(1, (data & 0x20) >> 4);*/
}
WRITE8_MEMBER(mazerbla_state::zpu_coin_counter_w)
{
/* bit 6 = coin counter */
- coin_counter_w(machine(), offset, BIT(data, 6));
+ machine().bookkeeping().coin_counter_w(offset, BIT(data, 6));
}
WRITE8_MEMBER(mazerbla_state::cfb_led_w)
{
/* bit 7 - led on */
- set_led_status(machine(), 2, BIT(data, 7));
+ output().set_led_value(2, BIT(data, 7));
}
WRITE8_MEMBER(mazerbla_state::gg_led_ctrl_w)
{
/* bit 0, bit 1 - led on */
- set_led_status(machine(), 1, BIT(data, 0));
+ output().set_led_value(1, BIT(data, 0));
}
@@ -925,7 +918,7 @@ WRITE8_MEMBER(mazerbla_state::vsb_ls273_audio_control_w)
m_vsb_ls273 = data;
/* bit 5 - led on */
- set_led_status(machine(), 1, BIT(data, 5));
+ output().set_led_value(1, BIT(data, 5));
}
READ8_MEMBER(mazerbla_state::soundcommand_r)
diff --git a/src/mame/drivers/mbdtower.cpp b/src/mame/drivers/mbdtower.cpp
index 96efd3120d8..f20f805fb5f 100644
--- a/src/mame/drivers/mbdtower.cpp
+++ b/src/mame/drivers/mbdtower.cpp
@@ -2,7 +2,7 @@
// copyright-holders:hap, Sean Riddle
/***************************************************************************
- ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.c) **
+ ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.cpp) **
Milton Bradley Dark Tower
* TMS1400NLL MP7332-N1.U1(Rev. B) or MP7332-N2LL(Rev. C), die labeled MP7332
@@ -107,7 +107,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mbdtower_state::motor_sim_tick)
// on change, output info
if (m_motor_pos != m_motor_pos_prev)
- output_set_value("motor_pos", 100 * (m_motor_pos / (float)0x80));
+ output().set_value("motor_pos", 100 * (m_motor_pos / (float)0x80));
/* 3 display cards per hole, like this:
@@ -119,7 +119,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mbdtower_state::motor_sim_tick)
*/
int card_pos = m_motor_pos >> 4 & 7;
if (card_pos != (m_motor_pos_prev >> 4 & 7))
- output_set_value("card_pos", card_pos);
+ output().set_value("card_pos", card_pos);
m_motor_pos_prev = m_motor_pos;
}
@@ -139,7 +139,7 @@ WRITE16_MEMBER(mbdtower_state::write_r)
// R9: motor on
if ((m_r ^ data) & 0x200)
- output_set_value("motor_on", data >> 9 & 1);
+ output().set_value("motor_on", data >> 9 & 1);
if (data & 0x200)
m_motor_on = true;
@@ -255,8 +255,6 @@ static MACHINE_CONFIG_START( mbdtower, mbdtower_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_mbdtower)
- /* no video! */
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
diff --git a/src/mame/drivers/mcatadv.cpp b/src/mame/drivers/mcatadv.cpp
index 9c9186a20fe..74b00d9738e 100644
--- a/src/mame/drivers/mcatadv.cpp
+++ b/src/mame/drivers/mcatadv.cpp
@@ -157,10 +157,10 @@ WRITE16_MEMBER(mcatadv_state::mcat_coin_w)
{
if(ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x1000);
- coin_counter_w(machine(), 1, data & 0x2000);
- coin_lockout_w(machine(), 0, ~data & 0x4000);
- coin_lockout_w(machine(), 1, ~data & 0x8000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x1000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x2000);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x4000);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x8000);
}
}
#endif
diff --git a/src/mame/drivers/mcr.cpp b/src/mame/drivers/mcr.cpp
index 43639f70999..e0b42f836d1 100644
--- a/src/mame/drivers/mcr.cpp
+++ b/src/mame/drivers/mcr.cpp
@@ -314,9 +314,9 @@ WRITE8_MEMBER(mcr_state::mcr_control_port_w)
D0 = coin meter 1
*/
- coin_counter_w(machine(), 0, (data >> 0) & 1);
- coin_counter_w(machine(), 1, (data >> 1) & 1);
- coin_counter_w(machine(), 2, (data >> 2) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 0) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 1) & 1);
+ machine().bookkeeping().coin_counter_w(2, (data >> 2) & 1);
mcr_cocktail_flip = (data >> 6) & 1;
}
@@ -384,7 +384,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mcr_state::dpoker_hopper_callback)
dpoker_coin_status &= ~8;
}
- coin_counter_w(machine(), 3, dpoker_coin_status & 8);
+ machine().bookkeeping().coin_counter_w(3, dpoker_coin_status & 8);
}
TIMER_DEVICE_CALLBACK_MEMBER(mcr_state::dpoker_coin_in_callback)
@@ -421,24 +421,24 @@ READ8_MEMBER(mcr_state::dpoker_ip0_r)
WRITE8_MEMBER(mcr_state::dpoker_lamps1_w)
{
// cpanel button lamps (white)
- output_set_lamp_value(0, data >> 0 & 1); // hold 1
- output_set_lamp_value(1, data >> 4 & 1); // hold 2
- output_set_lamp_value(2, data >> 5 & 1); // hold 3
- output_set_lamp_value(3, data >> 6 & 1); // hold 4
- output_set_lamp_value(4, data >> 7 & 1); // hold 5
- output_set_lamp_value(5, data >> 1 & 1); // deal
- output_set_lamp_value(6, data >> 2 & 1); // cancel
- output_set_lamp_value(7, data >> 3 & 1); // stand
+ output().set_lamp_value(0, data >> 0 & 1); // hold 1
+ output().set_lamp_value(1, data >> 4 & 1); // hold 2
+ output().set_lamp_value(2, data >> 5 & 1); // hold 3
+ output().set_lamp_value(3, data >> 6 & 1); // hold 4
+ output().set_lamp_value(4, data >> 7 & 1); // hold 5
+ output().set_lamp_value(5, data >> 1 & 1); // deal
+ output().set_lamp_value(6, data >> 2 & 1); // cancel
+ output().set_lamp_value(7, data >> 3 & 1); // stand
}
WRITE8_MEMBER(mcr_state::dpoker_lamps2_w)
{
// d5: button lamp: service or change
- output_set_lamp_value(8, data >> 5 & 1);
+ output().set_lamp_value(8, data >> 5 & 1);
// d0-d4: marquee lamps: coin 1 to 5 --> output lamps 9 to 13
for (int i = 0; i < 5; i++)
- output_set_lamp_value(9 + i, data >> i & 1);
+ output().set_lamp_value(9 + i, data >> i & 1);
// d6, d7: unused?
}
@@ -590,7 +590,7 @@ WRITE8_MEMBER(mcr_state::dotron_op4_w)
*/
/* bit 7 = FL1 (J1-3) on flasher control board */
/* bit 6 = FL0 (J1-4) on flasher control board */
- output_set_value("backlight", (data >> 6) & 1);
+ output().set_value("backlight", (data >> 6) & 1);
/*
Lamp Sequencer:
diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp
index 1c8069c0f17..150e0f54b32 100644
--- a/src/mame/drivers/mcr3.cpp
+++ b/src/mame/drivers/mcr3.cpp
@@ -133,7 +133,7 @@ WRITE8_MEMBER(mcr3_state::mcrmono_control_port_w)
D0 = coin meter 1
*/
- coin_counter_w(machine(), 0, (data >> 0) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 0) & 1);
mcr_cocktail_flip = (data >> 6) & 1;
}
@@ -321,9 +321,9 @@ WRITE8_MEMBER(mcr3_state::powerdrv_op5_w)
/* bit 3 -> J1-10 = lamp 1 */
/* bit 2 -> J1-8 = lamp 2 */
/* bit 1 -> J1-6 = lamp 3 */
- set_led_status(machine(), 0, (data >> 3) & 1);
- set_led_status(machine(), 1, (data >> 2) & 1);
- set_led_status(machine(), 2, (data >> 1) & 1);
+ output().set_led_value(0, (data >> 3) & 1);
+ output().set_led_value(1, (data >> 2) & 1);
+ output().set_led_value(2, (data >> 1) & 1);
/* remaining bits go to standard connections */
mcrmono_control_port_w(space, offset, data);
@@ -364,9 +364,9 @@ WRITE8_MEMBER(mcr3_state::stargrds_op5_w)
/* bit 2 controls light #0 */
/* bit 3 controls light #1 */
/* bit 4 controls light #2 */
- set_led_status(machine(), 0, (data >> 2) & 1);
- set_led_status(machine(), 1, (data >> 3) & 1);
- set_led_status(machine(), 2, (data >> 4) & 1);
+ output().set_led_value(0, (data >> 2) & 1);
+ output().set_led_value(1, (data >> 3) & 1);
+ output().set_led_value(2, (data >> 4) & 1);
/* remaining bits go to standard connections */
mcrmono_control_port_w(space, offset, data);
@@ -431,7 +431,7 @@ WRITE8_MEMBER(mcr3_state::spyhunt_op4_w)
/* bit 2 -> J1-11 (A2) */
/* bit 1 -> J1-10 (A1) */
/* bit 0 -> J1-12 (A0) */
- output_set_value(lampname[data & 7], (data >> 3) & 1);
+ output().set_value(lampname[data & 7], (data >> 3) & 1);
}
m_last_op4 = data;
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/mediagx.cpp b/src/mame/drivers/mediagx.cpp
index d7212977ae4..1ad02146050 100644
--- a/src/mame/drivers/mediagx.cpp
+++ b/src/mame/drivers/mediagx.cpp
@@ -130,8 +130,8 @@ public:
UINT32 m_cx5510_regs[256/4];
- INT16 *m_dacl;
- INT16 *m_dacr;
+ std::unique_ptr<INT16[]> m_dacl;
+ std::unique_ptr<INT16[]> m_dacr;
int m_dacl_ptr;
int m_dacr_ptr;
@@ -152,7 +152,6 @@ public:
DECLARE_WRITE32_MEMBER(memory_ctrl_w);
DECLARE_READ32_MEMBER(biu_ctrl_r);
DECLARE_WRITE32_MEMBER(biu_ctrl_w);
- DECLARE_WRITE32_MEMBER(bios_ram_w);
DECLARE_READ32_MEMBER(parallel_port_r);
DECLARE_WRITE32_MEMBER(parallel_port_w);
DECLARE_READ32_MEMBER(ad1847_r);
@@ -659,8 +658,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(mediagx_state::sound_timer_callback)
m_ad1847_sample_counter = 0;
timer.adjust(attotime::from_msec(10));
- dmadac_transfer(&m_dmadac[0], 1, 0, 1, m_dacl_ptr, m_dacl);
- dmadac_transfer(&m_dmadac[1], 1, 0, 1, m_dacr_ptr, m_dacr);
+ dmadac_transfer(&m_dmadac[0], 1, 0, 1, m_dacl_ptr, m_dacl.get());
+ dmadac_transfer(&m_dmadac[1], 1, 0, 1, m_dacr_ptr, m_dacr.get());
m_dacl_ptr = 0;
m_dacr_ptr = 0;
@@ -847,8 +846,8 @@ INPUT_PORTS_END
void mediagx_state::machine_start()
{
- m_dacl = auto_alloc_array(machine(), INT16, 65536);
- m_dacr = auto_alloc_array(machine(), INT16, 65536);
+ m_dacl = std::make_unique<INT16[]>(65536);
+ m_dacr = std::make_unique<INT16[]>(65536);
}
void mediagx_state::machine_reset()
diff --git a/src/mame/drivers/megadriv.cpp b/src/mame/drivers/megadriv.cpp
index e74b324b447..e72c8816197 100644
--- a/src/mame/drivers/megadriv.cpp
+++ b/src/mame/drivers/megadriv.cpp
@@ -274,6 +274,46 @@ MACHINE_START_MEMBER(md_cons_state, md_common)
m_cart->save_nvram();
}
+void md_cons_state::install_cartslot()
+{
+ // for now m_cartslot is only in MD and not 32x and SegaCD
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_cart));
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_cart));
+// m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_cart));
+}
+
+READ16_MEMBER( md_cons_state::tmss_r )
+{
+ if (offset < 0x4000 / 2)
+ return m_tmss[offset];
+
+ return 0xffff;
+}
+
+WRITE16_MEMBER( md_cons_state::tmss_swap_w )
+{
+ if (data & 0x0001)
+ {
+ install_cartslot();
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14100, 0xa14101, write16_delegate(FUNC(md_cons_state::tmss_swap_w),this));
+ }
+ else
+ {
+ install_tmss();
+ }
+}
+
+
+void md_cons_state::install_tmss()
+{
+ m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x000000, 0x7fffff);
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x7fffff, read16_delegate(FUNC(md_cons_state::tmss_r),this));
+
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14100, 0xa14101, write16_delegate(FUNC(md_cons_state::tmss_swap_w),this));
+
+}
+
MACHINE_START_MEMBER(md_cons_state, ms_megadriv)
{
MACHINE_START_CALL_MEMBER( md_common );
@@ -282,11 +322,16 @@ MACHINE_START_MEMBER(md_cons_state, ms_megadriv)
if (m_cart->get_type() == SEGA_SVP)
m_vdp->set_dma_delay(2);
- // for now m_cartslot is only in MD and not 32x and SegaCD
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_cart));
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_cart));
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_cart));
- m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_cart));
+ if (m_tmss)
+ {
+ install_tmss();
+ }
+ else
+ {
+ install_cartslot();
+ }
+
+
}
MACHINE_START_MEMBER(md_cons_state, ms_megacd)
@@ -388,6 +433,13 @@ ROM_START(megadrij)
ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF)
ROM_END
+ROM_START(genesis_tmss)
+ ROM_REGION(MD_CPU_REGION_SIZE, "maincpu", ROMREGION_ERASEFF)
+ ROM_REGION( 0x10000, "soundcpu", ROMREGION_ERASEFF)
+
+ ROM_REGION16_BE(0x4000, "tmss", ROMREGION_ERASEFF)
+ ROM_LOAD( "tmss_usa.bin", 0x0000, 0x4000, CRC(5f5e64eb) SHA1(453fca4e1db6fae4a10657c4451bccbb71955628) )
+ROM_END
/*************************************
*
@@ -1005,6 +1057,10 @@ CONS( 1989, genesis, 0, 0, ms_megadriv, md, md_cons_state,
CONS( 1990, megadriv, genesis, 0, ms_megadpal, md, md_cons_state, md_eur, "Sega", "Mega Drive (Europe, PAL)", MACHINE_SUPPORTS_SAVE )
CONS( 1988, megadrij, genesis, 0, ms_megadriv, md, md_cons_state, md_jpn, "Sega", "Mega Drive (Japan, NTSC)", MACHINE_SUPPORTS_SAVE )
+// 1990+ models had the TMSS security chip, leave this as a clone, it reduces compatibility and nothing more.
+CONS( 1990, genesis_tmss, genesis, 0, ms_megadriv, md, md_cons_state, genesis, "Sega", "Genesis (USA, NTSC, with TMSS chip)", MACHINE_SUPPORTS_SAVE )
+
+
// the 32X plugged in the cart slot, games plugged into the 32x. Maybe it should be handled as an expansion device?
CONS( 1994, 32x, 0, 0, genesis_32x, md, md_cons_state, genesis, "Sega", "Genesis with 32X (USA, NTSC)", MACHINE_NOT_WORKING )
CONS( 1994, 32xe, 32x, 0, md_32x, md, md_cons_state, md_eur, "Sega", "Mega Drive with 32X (Europe, PAL)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/megaplay.cpp b/src/mame/drivers/megaplay.cpp
index 1e70aa87996..f7533ce8fd1 100644
--- a/src/mame/drivers/megaplay.cpp
+++ b/src/mame/drivers/megaplay.cpp
@@ -115,8 +115,8 @@ private:
UINT8 m_bios_6403;
UINT8 m_bios_6404;
- UINT16 *m_ic36_ram;
- UINT8* m_ic37_ram;
+ std::unique_ptr<UINT16[]> m_ic36_ram;
+ std::unique_ptr<UINT8[]> m_ic37_ram;
required_shared_ptr<UINT8> m_ic3_ram;
optional_device<sega315_5124_device> m_vdp1;
@@ -896,8 +896,8 @@ DRIVER_INIT_MEMBER(mplay_state,megaplay)
}
// to support the old code
- m_ic36_ram = auto_alloc_array(machine(), UINT16, 0x10000 / 2);
- m_ic37_ram = auto_alloc_array(machine(), UINT8, 0x10000);
+ m_ic36_ram = std::make_unique<UINT16[]>(0x10000 / 2);
+ m_ic37_ram = std::make_unique<UINT8[]>(0x10000);
DRIVER_INIT_CALL(megadrij);
m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_3button),this);
diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp
index bddc0b10732..ad32ebb1961 100644
--- a/src/mame/drivers/megasys1.cpp
+++ b/src/mame/drivers/megasys1.cpp
@@ -172,19 +172,42 @@ TIMER_DEVICE_CALLBACK_MEMBER(megasys1_state::megasys1A_scanline)
{
int scanline = param;
- // irq 1 is vblank (confirmed by Saint Dragon "press start" behaviour), 2 & 3 unknown
-
- if(scanline == 240) // vblank-out irq
- m_maincpu->set_input_line(1, HOLD_LINE);
+ // stdragon: irq 1 is raster irq ("press start" behaviour), happens at around scanline 90(-16), 2 vblank, 3 is RTE.
+ // p47: irq 2 valid, others RTE
+ // kickoff: irq 3 valid, others RTE
+ // tshingen: irq 3 RTE, irq 1 reads inputs, irq 2 sets vregs values (pending further investigation ...)
+ // kazan: irq 3 disables irq in SW then execute a routine, irq 2 just execute this routine, irq 1 RTR
+ // astyanax: irq 3 RTE, irq 1 sets "ffff0210" OR 2, irq 2 vblank
+ // hachoo: irq 2 vblank, irq 3 & 1 sets 0xf004e buffer with the level number
+ // jitsupro: irq 3 RTE, irq 2 sets palette and vregs, irq 1 reads inputs
+ // plusalph: irq 1 & 3 RTE, irq 2 valid
+ // rodland: irq 1 & 3 RTE, irq 2 valid (sets palette, vregs ...)
+ // soldam: irq 1 & 3 RTE, irq 2 valid
- if(scanline == 0)
+ if(scanline == 240) // vblank-out irq
m_maincpu->set_input_line(2, HOLD_LINE);
- // RTE in stdragon
+ if(scanline == 16)
+ m_maincpu->set_input_line(1, HOLD_LINE);
+
if(scanline == 128)
m_maincpu->set_input_line(3, HOLD_LINE);
}
+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.
+ // Of course MCU is probably doing a lot more to mask and probably set a specific line too.
+ if(m_ram[0] == 0)
+ return;
+
+ if(scanline == 240) // vblank-out irq
+ m_maincpu->set_input_line(2, HOLD_LINE);
+}
+
static ADDRESS_MAP_START( megasys1A_map, AS_PROGRAM, 16, megasys1_state )
ADDRESS_MAP_GLOBAL_MASK(0xfffff)
AM_RANGE(0x000000, 0x05ffff) AM_ROM
@@ -297,7 +320,7 @@ WRITE16_MEMBER(megasys1_state::ms1_ram_w )
// 64th Street and Chimera Beast rely on this for attract inputs
m_ram[offset] = data;
-// if (mem_mask != 0xffff) printf("byte write to RAM %04x %04x %04x\n", offset, data, mem_mask);
+// if (mem_mask != 0xffff) printf("byte write to RAM %04x %04x %04x\n", offset, data, mem_mask);
}
@@ -1492,13 +1515,13 @@ static MACHINE_CONFIG_START( system_A, megasys1_state )
/* 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, 2*8, 30*8-1)
+ //MCFG_SCREEN_REFRESH_RATE(56.18) // same as nmk16.cpp based on YT videos.
+ MCFG_SCREEN_RAW_PARAMS(SYS_A_CPU_CLOCK,406,0,256,263,16,240)
+
MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update_megasys1)
MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof_megasys1)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ABC)
MCFG_PALETTE_ADD("palette", 1024)
@@ -1527,6 +1550,12 @@ static MACHINE_CONFIG_DERIVED( system_A_hachoo, system_A )
MCFG_MACHINE_RESET_OVERRIDE(megasys1_state,megasys1_hachoo)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( system_A_iganinju, system_A )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_DEVICE_REMOVE("scantimer")
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", megasys1_state, megasys1A_iganinju_scanline, "screen", 0, 1)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( system_B, system_A )
/* basic machine hardware */
@@ -1553,13 +1582,14 @@ static MACHINE_CONFIG_START( system_Bbl, megasys1_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_REFRESH_RATE(56.18) // same as nmk16.cpp based on YT videos.
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update_megasys1)
MCFG_SCREEN_VBLANK_DRIVER(megasys1_state, screen_eof_megasys1)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ABC)
MCFG_PALETTE_ADD("palette", 1024)
@@ -1626,7 +1656,7 @@ static MACHINE_CONFIG_START( system_D, megasys1_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_REFRESH_RATE(56.18) // same as nmk16.cpp based on YT videos.
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
@@ -1680,7 +1710,7 @@ static MACHINE_CONFIG_START( system_Z, megasys1_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_REFRESH_RATE(56.18) // same as nmk16.cpp based on YT videos.
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
@@ -4331,8 +4361,8 @@ GAME( 1988, p47je, p47, system_A, p47, driver_device, 0,
GAME( 1988, kickoff, 0, system_A, kickoff, driver_device, 0, ROT0, "Jaleco", "Kick Off (Japan)", 0 )
GAME( 1988, tshingen, 0, system_A, tshingen, megasys1_state, phantasm, ROT0, "Jaleco", "Shingen Samurai-Fighter (Japan, English)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1988, tshingena,tshingen, system_A, tshingen, megasys1_state, phantasm, ROT0, "Jaleco", "Takeda Shingen (Japan, Japanese)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1988, kazan, 0, system_A, kazan, megasys1_state, iganinju, ROT0, "Jaleco", "Ninja Kazan (World)", 0 )
-GAME( 1988, iganinju, kazan, system_A, kazan, megasys1_state, iganinju, ROT0, "Jaleco", "Iga Ninjyutsuden (Japan)", 0 )
+GAME( 1988, kazan, 0, system_A_iganinju, kazan, megasys1_state, iganinju, ROT0, "Jaleco", "Ninja Kazan (World)", 0 )
+GAME( 1988, iganinju, kazan, system_A_iganinju, kazan, megasys1_state, iganinju, ROT0, "Jaleco", "Iga Ninjyutsuden (Japan)", 0 )
GAME( 1989, astyanax, 0, system_A, astyanax, megasys1_state, astyanax, ROT0, "Jaleco", "The Astyanax", 0 )
GAME( 1989, lordofk, astyanax, system_A, astyanax, megasys1_state, astyanax, ROT0, "Jaleco", "The Lord of King (Japan)", 0 )
GAME( 1989, hachoo, 0, system_A_hachoo, hachoo, megasys1_state, astyanax, ROT0, "Jaleco", "Hachoo!", 0 )
@@ -4362,7 +4392,7 @@ GAME( 1993, hayaosi1, 0, system_B_hayaosi1, hayaosi1, megasys1_state, hay
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( 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 (prototype)", 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 )
// Type D
diff --git a/src/mame/drivers/megatech.cpp b/src/mame/drivers/megatech.cpp
index 281578fd94f..52cc1bbb3dc 100644
--- a/src/mame/drivers/megatech.cpp
+++ b/src/mame/drivers/megatech.cpp
@@ -156,7 +156,7 @@ private:
void switch_cart(int gameno);
- UINT8* m_banked_ram;
+ std::unique_ptr<UINT8[]> m_banked_ram;
UINT8* sms_mainram;
UINT8* sms_rom;
@@ -398,9 +398,9 @@ void mtech_state::set_genz80_as_md()
address_space &prg = m_z80snd->space(AS_PROGRAM);
prg.install_readwrite_bank(0x0000, 0x1fff, "bank1");
- machine().root_device().membank("bank1")->set_base(m_genz80.z80_prgram);
+ machine().root_device().membank("bank1")->set_base(m_genz80.z80_prgram.get());
- prg.install_ram(0x0000, 0x1fff, m_genz80.z80_prgram);
+ prg.install_ram(0x0000, 0x1fff, m_genz80.z80_prgram.get());
prg.install_readwrite_handler(0x4000, 0x4003, read8_delegate(FUNC(ym2612_device::read), (ym2612_device *)m_ymsnd), write8_delegate(FUNC(ym2612_device::write), (ym2612_device *)m_ymsnd));
prg.install_write_handler (0x6000, 0x6000, write8_delegate(FUNC(mtech_state::megadriv_z80_z80_bank_w),this));
@@ -478,11 +478,11 @@ WRITE8_MEMBER(mtech_state::bios_ctrl_w )
{
if (offset == 1)
{
- output_set_value("Alarm_sound", BIT(data, 7));
+ output().set_value("Alarm_sound", BIT(data, 7));
m_bios_ctrl_inputs = data & 0x04; // Genesis/SMS input ports disable bit
}
else if (offset == 2)
- output_set_value("Flash_screen", BIT(data, 1));
+ output().set_value("Flash_screen", BIT(data, 1));
m_bios_ctrl[offset] = data;
}
@@ -595,7 +595,7 @@ ADDRESS_MAP_END
DRIVER_INIT_MEMBER(mtech_state,mt_slot)
{
- m_banked_ram = auto_alloc_array(machine(), UINT8, 0x1000*8);
+ m_banked_ram = std::make_unique<UINT8[]>(0x1000*8);
DRIVER_INIT_CALL(megadriv);
diff --git a/src/mame/drivers/megazone.cpp b/src/mame/drivers/megazone.cpp
index 60d7b9eb0b0..52422a8a860 100644
--- a/src/mame/drivers/megazone.cpp
+++ b/src/mame/drivers/megazone.cpp
@@ -71,7 +71,7 @@ WRITE8_MEMBER(megazone_state::i8039_irqen_and_status_w)
WRITE8_MEMBER(megazone_state::megazone_coin_counter_w)
{
- coin_counter_w(machine(), 1 - offset, data); /* 1-offset, because coin counters are in reversed order */
+ machine().bookkeeping().coin_counter_w(1 - offset, data); /* 1-offset, because coin counters are in reversed order */
}
WRITE8_MEMBER(megazone_state::irq_mask_w)
diff --git a/src/mame/drivers/mekd2.cpp b/src/mame/drivers/mekd2.cpp
index e7912697d07..3e79057964e 100644
--- a/src/mame/drivers/mekd2.cpp
+++ b/src/mame/drivers/mekd2.cpp
@@ -282,7 +282,7 @@ WRITE8_MEMBER( mekd2_state::mekd2_digit_w )
for (i = 0; i < 6; i++)
{
if (BIT(data, i))
- output_set_digit_value(i, ~m_segment & 0x7f);
+ output().set_digit_value(i, ~m_segment & 0x7f);
}
}
m_digit = data;
diff --git a/src/mame/drivers/mephisto.cpp b/src/mame/drivers/mephisto.cpp
index 1bb0e074bab..822cbc584a3 100644
--- a/src/mame/drivers/mephisto.cpp
+++ b/src/mame/drivers/mephisto.cpp
@@ -137,9 +137,9 @@ protected:
WRITE8_MEMBER( mephisto_state::write_lcd )
{
- if (m_led7 == 0) output_set_digit_value(m_lcd_shift_counter,data); // 0x109 MM IV // 0x040 MM V
+ if (m_led7 == 0) output().set_digit_value(m_lcd_shift_counter,data); // 0x109 MM IV // 0x040 MM V
- //output_set_digit_value(m_lcd_shift_counter,data ^ m_p_ram[0x165]); // 0x109 MM IV // 0x040 MM V
+ //output().set_digit_value(m_lcd_shift_counter,data ^ m_p_ram[0x165]); // 0x109 MM IV // 0x040 MM V
m_lcd_shift_counter--;
m_lcd_shift_counter &= 3;
}
@@ -192,7 +192,7 @@ WRITE8_MEMBER( mephisto_state::write_led )
data &= 0x80;
if (data==0)m_led_status &= 255-(1<<offset) ; else m_led_status|=1<<offset;
- if (offset<6)output_set_led_value(LED_offset+offset, m_led_status&1<<offset?1:0);
+ if (offset<6)output().set_led_value(LED_offset+offset, m_led_status&1<<offset?1:0);
if (offset==7) m_led7=data& 0x80 ? 0x00 :0xff;
logerror("LEDs Offset = %d Data = %d\n",offset,data);
}
@@ -208,7 +208,7 @@ WRITE8_MEMBER( mephisto_state::write_led_mm2 )
m_led_status|=1<<offset;
if (offset<6)
- output_set_led_value(LED_offset+offset, m_led_status&1<<offset?1:0);
+ output().set_led_value(LED_offset+offset, m_led_status&1<<offset?1:0);
if (offset==7)
m_led7= BIT(data, 7) ? 0xff :0x00; //MM2
@@ -341,19 +341,19 @@ void mephisto_state::machine_reset()
/* adjust artwork depending on current emulation*/
if (!strcmp(machine().system().name,"mm2") )
- output_set_value("MM",1);
+ output().set_value("MM",1);
else if (!strcmp(machine().system().name,"mm4") )
- output_set_value("MM",2);
+ output().set_value("MM",2);
else if (!strcmp(machine().system().name,"mm4tk") )
- output_set_value("MM",5);
+ output().set_value("MM",5);
else if (!strcmp(machine().system().name,"mm5tk") )
- output_set_value("MM",5);
+ output().set_value("MM",5);
else if (!strcmp(machine().system().name,"mm5") )
- output_set_value("MM",3);
+ output().set_value("MM",3);
else if (!strcmp(machine().system().name,"mm50") )
- output_set_value("MM",3);
+ output().set_value("MM",3);
else if (!strcmp(machine().system().name,"rebel5") )
- output_set_value("MM",4);
+ output().set_value("MM",4);
}
@@ -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 9eea39980c1..9f5ac8f6190 100644
--- a/src/mame/drivers/merit.cpp
+++ b/src/mame/drivers/merit.cpp
@@ -99,7 +99,7 @@ public:
pen_t m_pens[NUM_PENS];
required_shared_ptr<UINT8> m_ram_attr;
required_shared_ptr<UINT8> m_ram_video;
- UINT8 *m_ram_palette;
+ std::unique_ptr<UINT8[]> m_ram_palette;
UINT8 m_lscnblk;
int m_extra_video_bank_bit;
int m_question_address;
@@ -138,9 +138,9 @@ public:
void merit_state::machine_start()
{
m_question_address = 0;
- m_ram_palette = auto_alloc_array(machine(), UINT8, RAM_PALETTE_SIZE);
+ m_ram_palette = std::make_unique<UINT8[]>(RAM_PALETTE_SIZE);
- save_pointer(NAME(m_ram_palette), RAM_PALETTE_SIZE);
+ save_pointer(NAME(m_ram_palette.get()), RAM_PALETTE_SIZE);
save_item(NAME(m_lscnblk));
save_item(NAME(m_extra_video_bank_bit));
save_item(NAME(m_question_address));
@@ -318,24 +318,24 @@ WRITE_LINE_MEMBER(merit_state::vsync_changed)
WRITE8_MEMBER(merit_state::led1_w)
{
/* 5 button lamps player 1 */
- set_led_status(machine(), 0,~data & 0x01);
- set_led_status(machine(), 1,~data & 0x02);
- set_led_status(machine(), 2,~data & 0x04);
- set_led_status(machine(), 3,~data & 0x08);
- set_led_status(machine(), 4,~data & 0x10);
+ output().set_led_value(0,~data & 0x01);
+ output().set_led_value(1,~data & 0x02);
+ output().set_led_value(2,~data & 0x04);
+ output().set_led_value(3,~data & 0x08);
+ output().set_led_value(4,~data & 0x10);
}
WRITE8_MEMBER(merit_state::led2_w)
{
/* 5 button lamps player 2 */
- set_led_status(machine(), 5,~data & 0x01);
- set_led_status(machine(), 6,~data & 0x02);
- set_led_status(machine(), 7,~data & 0x04);
- set_led_status(machine(), 8,~data & 0x08);
- set_led_status(machine(), 9,~data & 0x10);
+ output().set_led_value(5,~data & 0x01);
+ output().set_led_value(6,~data & 0x02);
+ output().set_led_value(7,~data & 0x04);
+ output().set_led_value(8,~data & 0x08);
+ output().set_led_value(9,~data & 0x10);
/* coin counter */
- coin_counter_w(machine(),0,0x80-(data & 0x80));
+ machine().bookkeeping().coin_counter_w(0,0x80-(data & 0x80));
}
WRITE8_MEMBER(merit_state::misc_w)
diff --git a/src/mame/drivers/meritm.cpp b/src/mame/drivers/meritm.cpp
index b0e73d23d76..fad7bfa2f7f 100644
--- a/src/mame/drivers/meritm.cpp
+++ b/src/mame/drivers/meritm.cpp
@@ -205,7 +205,7 @@ public:
m_region_extra(*this, "extra")
{ }
- UINT8* m_ram;
+ std::unique_ptr<UINT8[]> m_ram;
required_device<z80pio_device> m_z80pio_0;
required_device<z80pio_device> m_z80pio_1;
int m_vint;
@@ -864,13 +864,13 @@ READ8_MEMBER(meritm_state::meritm_8255_port_c_r)
WRITE8_MEMBER(meritm_state::meritm_crt250_port_b_w)
{
//popmessage("Lamps: %d %d %d %d %d %d %d", BIT(data,0), BIT(data,1), BIT(data,2), BIT(data,3), BIT(data,4), BIT(data,5), BIT(data,6) );
- output_set_value("P1 DISC 1 LAMP", !BIT(data,0));
- output_set_value("P1 DISC 2 LAMP", !BIT(data,1));
- output_set_value("P1 DISC 3 LAMP", !BIT(data,2));
- output_set_value("P1 DISC 4 LAMP", !BIT(data,3));
- output_set_value("P1 DISC 5 LAMP", !BIT(data,4));
- output_set_value("P1 PLAY LAMP", !BIT(data,5));
- output_set_value("P1 CANCEL LAMP", !BIT(data,6));
+ output().set_value("P1 DISC 1 LAMP", !BIT(data,0));
+ output().set_value("P1 DISC 2 LAMP", !BIT(data,1));
+ output().set_value("P1 DISC 3 LAMP", !BIT(data,2));
+ output().set_value("P1 DISC 4 LAMP", !BIT(data,3));
+ output().set_value("P1 DISC 5 LAMP", !BIT(data,4));
+ output().set_value("P1 PLAY LAMP", !BIT(data,5));
+ output().set_value("P1 CANCEL LAMP", !BIT(data,6));
}
/*************************************
@@ -1052,19 +1052,19 @@ MACHINE_START_MEMBER(meritm_state,meritm_crt250_crt252_crt258)
MACHINE_START_MEMBER(meritm_state,meritm_crt260)
{
- m_ram = auto_alloc_array(machine(), UINT8, 0x8000 );
- machine().device<nvram_device>("nvram")->set_base(m_ram, 0x8000);
- memset(m_ram, 0x00, 0x8000);
+ m_ram = std::make_unique<UINT8[]>( 0x8000 );
+ machine().device<nvram_device>("nvram")->set_base(m_ram.get(), 0x8000);
+ memset(m_ram.get(), 0x00, 0x8000);
m_bank1->configure_entries(0, 128, m_region_maincpu->base(), 0x8000);
m_bank2->configure_entries(0, 128, m_region_maincpu->base(), 0x8000);
- m_bank3->configure_entries(0, 4, m_ram, 0x2000);
+ m_bank3->configure_entries(0, 4, m_ram.get(), 0x2000);
m_bank = 0xff;
m_psd_a15 = 0;
meritm_switch_banks();
MACHINE_START_CALL_MEMBER(merit_common);
save_item(NAME(m_bank));
save_item(NAME(m_psd_a15));
- save_pointer(NAME(m_ram), 0x8000);
+ save_pointer(NAME(m_ram.get()), 0x8000);
}
TIMER_DEVICE_CALLBACK_MEMBER(meritm_state::vblank_start_tick)
diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp
index 10492a1fabb..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
@@ -450,8 +451,8 @@ WRITE16_MEMBER(metro_state::metro_coin_lockout_1word_w)
{
if (ACCESSING_BITS_0_7)
{
-// coin_lockout_w(machine(), 0, data & 1);
-// coin_lockout_w(machine(), 1, data & 2);
+// machine().bookkeeping().coin_lockout_w(0, data & 1);
+// machine().bookkeeping().coin_lockout_w(1, data & 2);
}
if (data & ~3) logerror("CPU #0 PC %06X : unknown bits of coin lockout written: %04X\n", space.device().safe_pc(), data);
}
@@ -459,7 +460,7 @@ WRITE16_MEMBER(metro_state::metro_coin_lockout_1word_w)
WRITE16_MEMBER(metro_state::metro_coin_lockout_4words_w)
{
-// coin_lockout_w(machine(), (offset >> 1) & 1, offset & 1);
+// machine().bookkeeping().coin_lockout_w((offset >> 1) & 1, offset & 1);
if (data & ~1) logerror("CPU #0 PC %06X : unknown bits of coin lockout written: %04X\n", space.device().safe_pc(), data);
}
@@ -1879,10 +1880,10 @@ WRITE8_MEMBER(metro_state::vmetal_control_w)
{
/* Lower nibble is the coin control bits shown in
service mode, but in game mode they're different */
- coin_counter_w(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x08); /* 2nd coin schute activates coin 0 counter in game mode?? */
-// coin_lockout_w(machine(), 0, data & 0x01); /* always on in game mode?? */
- coin_lockout_w(machine(), 1, data & 0x02); /* never activated in game mode?? */
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08); /* 2nd coin schute activates coin 0 counter in game mode?? */
+// machine().bookkeeping().coin_lockout_w(0, data & 0x01); /* always on in game mode?? */
+ machine().bookkeeping().coin_lockout_w(1, data & 0x02); /* never activated in game mode?? */
if ((data & 0x40) == 0)
m_essnd->reset();
@@ -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/mexico86.cpp b/src/mame/drivers/mexico86.cpp
index b82d086738d..d9e7a43c298 100644
--- a/src/mame/drivers/mexico86.cpp
+++ b/src/mame/drivers/mexico86.cpp
@@ -403,7 +403,7 @@ void mexico86_state::machine_start()
{
UINT8 *ROM = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 6, &ROM[0x10000], 0x4000);
+ membank("bank1")->configure_entries(0, 6, &ROM[0x08000], 0x4000);
save_item(NAME(m_port_a_in));
save_item(NAME(m_port_a_out));
@@ -525,9 +525,8 @@ MACHINE_CONFIG_END
ROM_START( kikikai )
ROM_REGION( 0x28000, "maincpu", 0 )
ROM_LOAD( "a85-17.h16", 0x00000, 0x08000, CRC(c141d5ab) SHA1(fe3622ba283e514416c43a44f83f922a958b27cd) ) /* 1st half, main code */
- ROM_CONTINUE( 0x20000, 0x08000 ) /* 2nd half, banked at 0x8000 */
- ROM_LOAD( "a85-16.h18", 0x10000, 0x10000, CRC(4094d750) SHA1(05e0ad177a3eb144b203784ecb6242a0fc5c4d4d) ) /* banked at 0x8000 */
- ROM_COPY( "maincpu", 0x10000, 0x08000, 0x04000 ) // set as default to avoid banking problems
+ ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
+ ROM_LOAD( "a85-16.h18", 0x08000, 0x10000, CRC(4094d750) SHA1(05e0ad177a3eb144b203784ecb6242a0fc5c4d4d) ) /* banked at 0x8000 */
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "a85-11.f6", 0x0000, 0x8000, CRC(cc3539db) SHA1(4239a40fdee65cba613e4b4ec54cf7899480e366) )
@@ -551,9 +550,8 @@ ROM_END
ROM_START( knightb )
ROM_REGION( 0x28000, "maincpu", 0 )
ROM_LOAD( "a85-17.h16", 0x00000, 0x08000, CRC(c141d5ab) SHA1(fe3622ba283e514416c43a44f83f922a958b27cd) ) /* 1st half, main code */
- ROM_CONTINUE( 0x20000, 0x08000 ) /* 2nd half, banked at 0x8000 */
- ROM_LOAD( "a85-16.h18", 0x10000, 0x10000, CRC(4094d750) SHA1(05e0ad177a3eb144b203784ecb6242a0fc5c4d4d) ) /* banked at 0x8000 */
- ROM_COPY( "maincpu", 0x10000, 0x08000, 0x04000 ) // set as default to avoid banking problems
+ ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
+ ROM_LOAD( "a85-16.h18", 0x08000, 0x10000, CRC(4094d750) SHA1(05e0ad177a3eb144b203784ecb6242a0fc5c4d4d) ) /* banked at 0x8000 */
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "a85-11.f6", 0x0000, 0x8000, CRC(cc3539db) SHA1(4239a40fdee65cba613e4b4ec54cf7899480e366) )
@@ -576,9 +574,8 @@ ROM_END
ROM_START( kicknrun )
ROM_REGION( 0x28000, "maincpu", 0 )
ROM_LOAD( "a87-08.h16", 0x00000, 0x08000, CRC(715e1b04) SHA1(60b7259758ec73f1cc945556e9c2b25766b745a8) ) /* 1st half, main code */
- ROM_CONTINUE( 0x20000, 0x08000 ) /* 2nd half, banked at 0x8000 */
- ROM_LOAD( "a87-07.h18", 0x10000, 0x10000, CRC(6cb6ebfe) SHA1(fca61fc2ad8fadc1e15b9ff84c7469b68d16e885) ) /* banked at 0x8000 */
- ROM_COPY( "maincpu", 0x10000, 0x08000, 0x04000 ) // set as default to avoid banking problems
+ ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
+ ROM_LOAD( "a87-07.h18", 0x08000, 0x10000, CRC(6cb6ebfe) SHA1(fca61fc2ad8fadc1e15b9ff84c7469b68d16e885) ) /* banked at 0x8000 */
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "a87-06.f6", 0x0000, 0x8000, CRC(1625b587) SHA1(7336384e13c114915de5e439df5731ce3fc2054a) )
@@ -609,9 +606,8 @@ ROM_END
ROM_START( kicknrunu )
ROM_REGION( 0x28000, "maincpu", 0 )
ROM_LOAD( "a87-23.h16", 0x00000, 0x08000, CRC(37182560) SHA1(8db393131f50af88b2e7489d6aae65bad0a5a65b) ) /* 1st half, main code */
- ROM_CONTINUE( 0x20000, 0x08000 ) /* 2nd half, banked at 0x8000 */
- ROM_LOAD( "a87-22.h18", 0x10000, 0x10000, CRC(3b5a8354) SHA1(e0db4cb0657989d5a21f9a8d4e8f842adba636ad) ) /* banked at 0x8000 */
- ROM_COPY( "maincpu", 0x10000, 0x08000, 0x04000 ) // set as default to avoid banking problems
+ ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
+ ROM_LOAD( "a87-22.h18", 0x08000, 0x10000, CRC(3b5a8354) SHA1(e0db4cb0657989d5a21f9a8d4e8f842adba636ad) ) /* banked at 0x8000 */
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "a87-06.f6", 0x0000, 0x8000, CRC(1625b587) SHA1(7336384e13c114915de5e439df5731ce3fc2054a) )
@@ -642,9 +638,8 @@ ROM_END
ROM_START( mexico86 )
ROM_REGION( 0x28000, "maincpu", 0 )
ROM_LOAD( "2_g.bin", 0x00000, 0x08000, CRC(2bbfe0fb) SHA1(8f047e001ea8e49d28f73e546c82812af1c2533c) ) /* 1st half, main code */
- ROM_CONTINUE( 0x20000, 0x08000 ) /* 2nd half, banked at 0x8000 */
- ROM_LOAD( "1_f.bin", 0x10000, 0x10000, CRC(0b93e68e) SHA1(c6fbcce83103e3e71a7a1ef9f18a10622ed6b951) ) /* banked at 0x8000 */
- ROM_COPY( "maincpu", 0x10000, 0x08000, 0x04000 ) //set as default to avoid banking problems
+ ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
+ ROM_LOAD( "1_f.bin", 0x08000, 0x10000, CRC(0b93e68e) SHA1(c6fbcce83103e3e71a7a1ef9f18a10622ed6b951) ) /* banked at 0x8000 */
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "a87-06.f6", 0x0000, 0x8000, CRC(1625b587) SHA1(7336384e13c114915de5e439df5731ce3fc2054a) )
@@ -671,6 +666,50 @@ ROM_START( mexico86 )
ROM_LOAD( "a87-11.g14", 0x0200, 0x0100, CRC(14f6c28d) SHA1(8c60974e4607906a3f77260bdd0704af60d596fc) )
ROM_END
+ROM_START( mexico86a )
+ ROM_REGION( 0x28000, "maincpu", 0 )
+ ROM_LOAD( "2.bin", 0x00000, 0x08000, CRC(397c93ad) SHA1(6b28d284cafb86f3efd13033984caa1a221a8a14) ) /* 1st half, main code */
+ ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
+ ROM_LOAD( "1.bin", 0x08000, 0x10000, CRC(0b93e68e) SHA1(c6fbcce83103e3e71a7a1ef9f18a10622ed6b951) ) /* banked at 0x8000 */
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "3x.bin", 0x0000, 0x8000, CRC(abbbf6c4) SHA1(27456d8607e0a246f0c2ad1bc57ee7e4ec37b278) ) // 0x1FEF is 0x2f instead of 0x0f, causes checksum failure, bad?
+ ROM_LOAD( "3.bin", 0x0000, 0x8000, CRC(1625b587) SHA1(7336384e13c114915de5e439df5731ce3fc2054a) )
+
+ ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
+ ROM_LOAD( "68_h.bin", 0x0000, 0x0800, CRC(ff92f816) SHA1(0015c3f2ed014052b3fa376409e3a7cca36fac72) ) // missing in this set, not dumped or never present??
+
+ ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the cpu on the sub board */
+ ROM_LOAD( "8.bin", 0x0000, 0x4000, CRC(6a2ad32f) SHA1(42d4b97b25d219902ad215793f1d2c006ffe94dc) )
+
+ ROM_REGION( 0x40000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "4.bin", 0x08000, 0x08000, CRC(57cfdbca) SHA1(89c305c380c3de14a956ee4bc85d3a0d343b638e) )
+ ROM_CONTINUE( 0x00000, 0x08000 )
+ ROM_LOAD( "5.bin", 0x10000, 0x08000, CRC(e42fa143) SHA1(02d7e0e01af1cecc3952f6355987118098d346c3) )
+ ROM_RELOAD( 0x18000, 0x08000 )
+ ROM_LOAD( "6.bin", 0x28000, 0x08000, CRC(a4607989) SHA1(6832147603a146c34cc1809e839c8e034d0dacc5) )
+ ROM_CONTINUE( 0x20000, 0x08000 )
+ ROM_LOAD( "7.bin", 0x30000, 0x08000, CRC(245036b1) SHA1(108d9959de869b4fdf766abeade1486acec13bf2) )
+ ROM_RELOAD( 0x38000, 0x08000 )
+
+ ROM_REGION( 0x0300, "proms", 0 )
+ ROM_LOAD( "n82s129n.1.bin", 0x0000, 0x0100, CRC(be6eb1f0) SHA1(f4d00e9b12bf116bf84edb2ff6caab158094b668) ) /* all proms are 63S141AN or compatible type */
+ ROM_LOAD( "n82s129n.3.bin", 0x0100, 0x0100, CRC(3e953444) SHA1(e9c84ca9390fd7c73738a8b681a02e87fbd51bb4) )
+ ROM_LOAD( "n82s129n.2.bin", 0x0200, 0x0100, CRC(14f6c28d) SHA1(8c60974e4607906a3f77260bdd0704af60d596fc) )
+
+ ROM_REGION( 0x0300, "plds", 0 )
+ ROM_LOAD( "ampal16l8pc.1.bin", 0x0000, 0x0104, CRC(634f3a5b) SHA1(af895a10563e0011c9e6546de2bb61fb8c93bcf4) )
+ ROM_LOAD( "ampal16l8pc.3.bin", 0x0000, 0x0104, CRC(f9ce900a) SHA1(c2b4626a4663a3dedd70e04833b9968e58ae372b) )
+ ROM_LOAD( "ampal16l8pc.4.bin", 0x0000, 0x0104, CRC(39120b6f) SHA1(d44291f72566f2ad61ab6e612c2c6212076ef541) )
+ ROM_LOAD( "ampal16l8pc.5.bin", 0x0000, 0x0104, CRC(1d27f7b9) SHA1(7fe3cb474c599acd7b5fe74bef8f2bae582f2ce9) )
+ ROM_LOAD( "ampal16l8pc.6.bin", 0x0000, 0x0104, CRC(9f941c8e) SHA1(34728a572132c23bd2887452ec7ad38504d392d7) )
+ ROM_LOAD( "ampal16l8pc.7.bin", 0x0000, 0x0104, CRC(9f941c8e) SHA1(34728a572132c23bd2887452ec7ad38504d392d7) )
+
+ ROM_LOAD( "ampal16r4pc.2.bin", 0x0000, 0x0104, CRC(213a71d1) SHA1(a83b1c089fae72b8216533d0733491c3dc3630af) )
+ROM_END
+
+
+
/*************************************
*
@@ -682,4 +721,5 @@ GAME( 1986, kikikai, 0, kikikai, kikikai, driver_device, 0, ROT90, "Ta
GAME( 1986, knightb, kikikai, knightb, kikikai, driver_device, 0, ROT90, "bootleg", "Knight Boy", MACHINE_SUPPORTS_SAVE )
GAME( 1986, kicknrun, 0, mexico86, mexico86, driver_device, 0, ROT0, "Taito Corporation", "Kick and Run (World)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, kicknrunu,kicknrun, mexico86, mexico86, driver_device, 0, ROT0, "Taito America Corp", "Kick and Run (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, mexico86, kicknrun, mexico86, mexico86, driver_device, 0, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, mexico86, kicknrun, mexico86, mexico86, driver_device, 0, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, mexico86a,kicknrun, mexico86, mexico86, driver_device, 0, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/meyc8080.cpp b/src/mame/drivers/meyc8080.cpp
index ff2529984ac..abd0cb8f070 100644
--- a/src/mame/drivers/meyc8080.cpp
+++ b/src/mame/drivers/meyc8080.cpp
@@ -179,11 +179,11 @@ WRITE8_MEMBER(meyc8080_state::lights_1_w)
xxxx ---- Seems unused...
*/
- output_set_lamp_value(0, (data) & 1); /* Lamp 0 */
- output_set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 */
- output_set_lamp_value(2, (data >> 2) & 1); /* Lamp 2 */
- output_set_lamp_value(3, (data >> 3) & 1); /* Lamp 3 */
- output_set_lamp_value(4, (data >> 4) & 1); /* Lamp 4 */
+ output().set_lamp_value(0, (data) & 1); /* Lamp 0 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 */
+ output().set_lamp_value(2, (data >> 2) & 1); /* Lamp 2 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* Lamp 3 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* Lamp 4 */
logerror("lights 1: %02x\n", data);
}
@@ -226,13 +226,13 @@ WRITE8_MEMBER(meyc8080_state::lights_2_w)
xxx- ---- Unknown.
*/
- output_set_lamp_value(5, (data) & 1); /* Lamp 5 */
- output_set_lamp_value(6, (data >> 1) & 1); /* Lamp 6 */
- output_set_lamp_value(7, (data >> 2) & 1); /* Lamp 7 */
- output_set_lamp_value(8, (data >> 3) & 1); /* Lamp 8 */
- output_set_lamp_value(9, (data >> 4) & 1); /* Lamp 9 */
+ output().set_lamp_value(5, (data) & 1); /* Lamp 5 */
+ output().set_lamp_value(6, (data >> 1) & 1); /* Lamp 6 */
+ output().set_lamp_value(7, (data >> 2) & 1); /* Lamp 7 */
+ output().set_lamp_value(8, (data >> 3) & 1); /* Lamp 8 */
+ output().set_lamp_value(9, (data >> 4) & 1); /* Lamp 9 */
- output_set_lamp_value(10, (data >> 5) & 1); /* Lamp 10 (Game-Over) */
+ output().set_lamp_value(10, (data >> 5) & 1); /* Lamp 10 (Game-Over) */
logerror("lights 2: %02x\n", data);
}
@@ -251,12 +251,12 @@ WRITE8_MEMBER(meyc8080_state::counters_w)
xxxx ---- Seems unused...
*/
- coin_counter_w(machine(), 0, ~data & 0x01); /* Coin1 */
- coin_counter_w(machine(), 1, ~data & 0x04); /* Bets */
- coin_counter_w(machine(), 2, ~data & 0x02); /* Payout */
+ machine().bookkeeping().coin_counter_w(0, ~data & 0x01); /* Coin1 */
+ machine().bookkeeping().coin_counter_w(1, ~data & 0x04); /* Bets */
+ machine().bookkeeping().coin_counter_w(2, ~data & 0x02); /* Payout */
/* Only Draw Poker (2-11) (mdrawpkra) */
- coin_counter_w(machine(), 3, ~data & 0x08); /* Manual Keyout */
+ machine().bookkeeping().coin_counter_w(3, ~data & 0x08); /* Manual Keyout */
logerror("counters: %02x\n", ~data);
}
diff --git a/src/mame/drivers/meyc8088.cpp b/src/mame/drivers/meyc8088.cpp
index ddc5621cb69..7e8edcf4169 100644
--- a/src/mame/drivers/meyc8088.cpp
+++ b/src/mame/drivers/meyc8088.cpp
@@ -255,14 +255,14 @@ WRITE8_MEMBER(meyc8088_state::meyc8088_lights1_w)
{
// lite 1-8
for (int i = 0; i < 8; i++)
- output_set_lamp_value(i, ~data >> i & 1);
+ output().set_lamp_value(i, ~data >> i & 1);
}
WRITE8_MEMBER(meyc8088_state::meyc8088_lights2_w)
{
// lite 9-16
for (int i = 0; i < 8; i++)
- output_set_lamp_value(i + 8, ~data >> i & 1);
+ output().set_lamp_value(i + 8, ~data >> i & 1);
}
WRITE8_MEMBER(meyc8088_state::meyc8088_common_w)
diff --git a/src/mame/drivers/mgames.cpp b/src/mame/drivers/mgames.cpp
index 1ce15abc4c7..88e0656cdf2 100644
--- a/src/mame/drivers/mgames.cpp
+++ b/src/mame/drivers/mgames.cpp
@@ -250,7 +250,6 @@ public:
required_shared_ptr<UINT8> m_video;
int m_mixdata;
DECLARE_READ8_MEMBER(mixport_r);
- DECLARE_WRITE8_MEMBER(muxed_w);
DECLARE_WRITE8_MEMBER(outport0_w);
DECLARE_WRITE8_MEMBER(outport1_w);
DECLARE_WRITE8_MEMBER(outport2_w);
@@ -259,7 +258,6 @@ public:
DECLARE_WRITE8_MEMBER(outport5_w);
DECLARE_WRITE8_MEMBER(outport6_w);
DECLARE_WRITE8_MEMBER(outport7_w);
- DECLARE_WRITE8_MEMBER(sound_w);
virtual void video_start() override;
DECLARE_PALETTE_INIT(mgames);
UINT32 screen_update_mgames(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -363,8 +361,8 @@ READ8_MEMBER(mgames_state::mixport_r)
WRITE8_MEMBER(mgames_state::outport0_w)
{
- output_set_lamp_value(1, (data & 1)); /* Lamp 1 - BET */
- output_set_lamp_value(5, (data >> 1) & 1); /* Lamp 5 - HOLD 1 */
+ output().set_lamp_value(1, (data & 1)); /* Lamp 1 - BET */
+ output().set_lamp_value(5, (data >> 1) & 1); /* Lamp 5 - HOLD 1 */
m_output[0] = data;
popmessage("outport0 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]);
@@ -384,8 +382,8 @@ WRITE8_MEMBER(mgames_state::outport0_w)
WRITE8_MEMBER(mgames_state::outport1_w)
{
- output_set_lamp_value(2, (data & 1)); /* Lamp 2 - DEAL */
- output_set_lamp_value(6, (data >> 1) & 1); /* Lamp 6 - HOLD 2 */
+ output().set_lamp_value(2, (data & 1)); /* Lamp 2 - DEAL */
+ output().set_lamp_value(6, (data >> 1) & 1); /* Lamp 6 - HOLD 2 */
m_output[1] = data;
popmessage("outport1 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]);
@@ -405,8 +403,8 @@ WRITE8_MEMBER(mgames_state::outport1_w)
WRITE8_MEMBER(mgames_state::outport2_w)
{
- output_set_lamp_value(3, (data & 1)); /* Lamp 3 - CANCEL */
- output_set_lamp_value(7, (data >> 1) & 1); /* Lamp 7 - HOLD 3 */
+ output().set_lamp_value(3, (data & 1)); /* Lamp 3 - CANCEL */
+ output().set_lamp_value(7, (data >> 1) & 1); /* Lamp 7 - HOLD 3 */
m_output[2] = data;
popmessage("outport2 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]);
@@ -426,8 +424,8 @@ WRITE8_MEMBER(mgames_state::outport2_w)
WRITE8_MEMBER(mgames_state::outport3_w)
{
- output_set_lamp_value(4, (data & 1)); /* Lamp 4 - STAND */
- output_set_lamp_value(8, (data >> 1) & 1); /* Lamp 8 - HOLD 4 */
+ output().set_lamp_value(4, (data & 1)); /* Lamp 4 - STAND */
+ output().set_lamp_value(8, (data >> 1) & 1); /* Lamp 8 - HOLD 4 */
m_output[3] = data;
popmessage("outport3 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]);
@@ -447,7 +445,7 @@ WRITE8_MEMBER(mgames_state::outport3_w)
WRITE8_MEMBER(mgames_state::outport4_w)
{
- output_set_lamp_value(9, (data >> 1) & 1); /* Lamp 9 - HOLD 5 */
+ output().set_lamp_value(9, (data >> 1) & 1); /* Lamp 9 - HOLD 5 */
m_output[4] = data;
popmessage("outport4 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]);
@@ -485,7 +483,7 @@ WRITE8_MEMBER(mgames_state::outport5_w)
WRITE8_MEMBER(mgames_state::outport6_w)
{
- coin_counter_w(machine(), 1, data & 0x02); /* Payout pulse */
+ machine().bookkeeping().coin_counter_w(1, data & 0x02); /* Payout pulse */
m_output[6] = data;
popmessage("outport6 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]);
@@ -505,7 +503,7 @@ WRITE8_MEMBER(mgames_state::outport6_w)
WRITE8_MEMBER(mgames_state::outport7_w)
{
- coin_counter_w(machine(), 0, data & 0x02); /* Coin pulse */
+ machine().bookkeeping().coin_counter_w(0, data & 0x02); /* Coin pulse */
m_output[7] = data;
popmessage("outport7 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]);
diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp
index bb1cbade09a..27033c0d759 100644
--- a/src/mame/drivers/mgavegas.cpp
+++ b/src/mame/drivers/mgavegas.cpp
@@ -160,38 +160,38 @@ private:
void mgavegas_state::update_lamp(){
- //output_set_value("AUXS", m_auxs); //unused
- output_set_value("MGA4", m_anal&0x01);
- output_set_value("MGA3", m_anacl&0x01);
- output_set_value("MGA2", m_anacr&0x01);
- output_set_value("MGA", m_anar&0x01);
- output_set_value("PL", m_pl&0x01);
- output_set_value("PC", m_pc&0x01);
- output_set_value("PR", m_pr&0x01);
- output_set_value("250", m_luz_250_rul&0x01);
- output_set_value("1002", m_luz_100_rul&0x01);
- output_set_value("50", m_luz_50_rlul&0x01);
- output_set_value("252", m_luz_25_lrul&0x01);
- output_set_value("25", m_luz_25_rrul&0x01);
- output_set_value("FL", m_fl&0x01);
- output_set_value("FC", m_fc&0x01);
- output_set_value("FR", m_fr&0x01);
- output_set_value("INSERTCOIN", m_insert_coin&0x01);
- output_set_value("NOCAMBIO", m_no_cambio&0x01);
- output_set_value("FUSE", m_fuse&0x01);
- output_set_value("FALTA", m_falta&0x01);
- //output_set_value("ANAG", m_anag&0x01); //unused
- output_set_value("CL", m_cl&0x01);
- output_set_value("CC", m_cc&0x01);
- output_set_value("CR", m_cr&0x01);
- output_set_value("PREMIOS", m_premio_s&0x01);
- output_set_value("100", m_100&0x01);
- output_set_value("200", m_200&0x01);
- output_set_value("300", m_300&0x01);
- output_set_value("500", m_500&0x01);
- output_set_value("ML", m_ml&0x01);
- output_set_value("MC", m_mc&0x01);
- output_set_value("MR", m_mr&0x01);
+ //output().set_value("AUXS", m_auxs); //unused
+ output().set_value("MGA4", m_anal&0x01);
+ output().set_value("MGA3", m_anacl&0x01);
+ output().set_value("MGA2", m_anacr&0x01);
+ output().set_value("MGA", m_anar&0x01);
+ output().set_value("PL", m_pl&0x01);
+ output().set_value("PC", m_pc&0x01);
+ output().set_value("PR", m_pr&0x01);
+ output().set_value("250", m_luz_250_rul&0x01);
+ output().set_value("1002", m_luz_100_rul&0x01);
+ output().set_value("50", m_luz_50_rlul&0x01);
+ output().set_value("252", m_luz_25_lrul&0x01);
+ output().set_value("25", m_luz_25_rrul&0x01);
+ output().set_value("FL", m_fl&0x01);
+ output().set_value("FC", m_fc&0x01);
+ output().set_value("FR", m_fr&0x01);
+ output().set_value("INSERTCOIN", m_insert_coin&0x01);
+ output().set_value("NOCAMBIO", m_no_cambio&0x01);
+ output().set_value("FUSE", m_fuse&0x01);
+ output().set_value("FALTA", m_falta&0x01);
+ //output().set_value("ANAG", m_anag&0x01); //unused
+ output().set_value("CL", m_cl&0x01);
+ output().set_value("CC", m_cc&0x01);
+ output().set_value("CR", m_cr&0x01);
+ output().set_value("PREMIOS", m_premio_s&0x01);
+ output().set_value("100", m_100&0x01);
+ output().set_value("200", m_200&0x01);
+ output().set_value("300", m_300&0x01);
+ output().set_value("500", m_500&0x01);
+ output().set_value("ML", m_ml&0x01);
+ output().set_value("MC", m_mc&0x01);
+ output().set_value("MR", m_mr&0x01);
/*
m_inh=BIT(data, 3);
m_printer=BIT(data, 6); //not_used
diff --git a/src/mame/drivers/mgolf.cpp b/src/mame/drivers/mgolf.cpp
index 7bc1788e9ae..af8917139df 100644
--- a/src/mame/drivers/mgolf.cpp
+++ b/src/mame/drivers/mgolf.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
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 8fd5c720568..59b3a27b162 100644
--- a/src/mame/drivers/micropin.cpp
+++ b/src/mame/drivers/micropin.cpp
@@ -189,8 +189,8 @@ WRITE8_MEMBER( micropin_state::p50a_w )
if (m_counter == 1)
{
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7448
- output_set_digit_value(m_row, patterns[data&15]);
- output_set_digit_value(m_row+20, patterns[data>>4]);
+ output().set_digit_value(m_row, patterns[data&15]);
+ output().set_digit_value(m_row+20, patterns[data>>4]);
}
}
@@ -200,8 +200,8 @@ WRITE8_MEMBER( micropin_state::p50b_w )
if (m_counter == 2)
{
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7448
- output_set_digit_value(m_row+40, patterns[data&15]);
- output_set_digit_value(m_row+60, patterns[data>>4]);
+ output().set_digit_value(m_row+40, patterns[data&15]);
+ output().set_digit_value(m_row+60, patterns[data>>4]);
}
}
@@ -213,7 +213,7 @@ WRITE_LINE_MEMBER( micropin_state::p50ca2_w )
char wordnum[8];
sprintf(wordnum,"led%d", m_row);
m_led_time[m_row] = 48; // 12 gives blinking leds; they blink in pinmame but is it correct?
- output_set_value(wordnum, 0); // turn on
+ output().set_value(wordnum, 0); // turn on
}
}
@@ -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);
}
@@ -259,7 +259,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( micropin_state::timer_a )
if (m_led_time[i] == 0)
{
sprintf(wordnum,"led%d", i);
- output_set_value(wordnum, 1); // turn off
+ output().set_value(wordnum, 1); // turn off
}
}
}
@@ -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/midas.cpp b/src/mame/drivers/midas.cpp
index b853c14e382..8fbe0890bef 100644
--- a/src/mame/drivers/midas.cpp
+++ b/src/mame/drivers/midas.cpp
@@ -178,7 +178,7 @@ WRITE16_MEMBER(midas_state::livequiz_coin_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x0001);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
}
#ifdef MAME_DEBUG
// popmessage("coin %04X", data);
@@ -234,8 +234,8 @@ WRITE16_MEMBER(midas_state::hammer_coin_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x0001);
- coin_counter_w(machine(), 1, data & 0x0002);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0002);
}
#ifdef MAME_DEBUG
// popmessage("coin %04X", data);
diff --git a/src/mame/drivers/midqslvr.cpp b/src/mame/drivers/midqslvr.cpp
index 08f997aa736..35dc9607862 100644
--- a/src/mame/drivers/midqslvr.cpp
+++ b/src/mame/drivers/midqslvr.cpp
@@ -40,13 +40,13 @@ public:
{
}
- UINT32 *m_bios_ram;
- UINT32 *m_bios_ext1_ram;
- UINT32 *m_bios_ext2_ram;
- UINT32 *m_bios_ext3_ram;
- UINT32 *m_bios_ext4_ram;
- UINT32 *m_isa_ram1;
- UINT32 *m_isa_ram2;
+ std::unique_ptr<UINT32[]> m_bios_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext1_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext2_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext3_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext4_ram;
+ std::unique_ptr<UINT32[]> m_isa_ram1;
+ std::unique_ptr<UINT32[]> m_isa_ram2;
UINT8 m_mtxc_config_reg[256];
UINT8 m_piix4_config_reg[4][256];
@@ -108,7 +108,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
case 0x59: // PAM0
{
if (data & 0x10) // enable RAM access to region 0xf0000 - 0xfffff
- state->membank("bios_bank")->set_base(state->m_bios_ram);
+ state->membank("bios_bank")->set_base(state->m_bios_ram.get());
else // disable RAM access (reads go to BIOS ROM)
state->membank("bios_bank")->set_base(state->memregion("bios")->base() + 0x70000);
break;
@@ -116,12 +116,12 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
case 0x5a: // PAM1
{
if (data & 0x1)
- state->membank("video_bank1")->set_base(state->m_isa_ram1);
+ state->membank("video_bank1")->set_base(state->m_isa_ram1.get());
else
state->membank("video_bank1")->set_base(state->memregion("video_bios")->base() + 0);
if (data & 0x10)
- state->membank("video_bank2")->set_base(state->m_isa_ram2);
+ state->membank("video_bank2")->set_base(state->m_isa_ram2.get());
else
state->membank("video_bank2")->set_base(state->memregion("video_bios")->base() + 0x4000);
@@ -130,12 +130,12 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
case 0x5e: // PAM5
{
if (data & 0x1)
- state->membank("bios_ext1")->set_base(state->m_bios_ext1_ram);
+ state->membank("bios_ext1")->set_base(state->m_bios_ext1_ram.get());
else
state->membank("bios_ext1")->set_base(state->memregion("bios")->base() + 0x60000);
if (data & 0x10)
- state->membank("bios_ext2")->set_base(state->m_bios_ext2_ram);
+ state->membank("bios_ext2")->set_base(state->m_bios_ext2_ram.get());
else
state->membank("bios_ext2")->set_base(state->memregion("bios")->base() + 0x64000);
@@ -144,12 +144,12 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
case 0x5f: // PAM6
{
if (data & 0x1)
- state->membank("bios_ext3")->set_base(state->m_bios_ext3_ram);
+ state->membank("bios_ext3")->set_base(state->m_bios_ext3_ram.get());
else
state->membank("bios_ext3")->set_base(state->memregion("bios")->base() + 0x68000);
if (data & 0x10)
- state->membank("bios_ext4")->set_base(state->m_bios_ext4_ram);
+ state->membank("bios_ext4")->set_base(state->m_bios_ext4_ram.get());
else
state->membank("bios_ext4")->set_base(state->memregion("bios")->base() + 0x6c000);
@@ -300,7 +300,7 @@ WRITE32_MEMBER(midqslvr_state::isa_ram1_w)
{
if (m_mtxc_config_reg[0x5a] & 0x2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_isa_ram1 + offset);
+ COMBINE_DATA(m_isa_ram1.get() + offset);
}
}
@@ -308,7 +308,7 @@ WRITE32_MEMBER(midqslvr_state::isa_ram2_w)
{
if (m_mtxc_config_reg[0x5a] & 0x2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_isa_ram2 + offset);
+ COMBINE_DATA(m_isa_ram2.get() + offset);
}
}
@@ -316,7 +316,7 @@ WRITE32_MEMBER(midqslvr_state::bios_ext1_ram_w)
{
if (m_mtxc_config_reg[0x5e] & 0x2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext1_ram + offset);
+ COMBINE_DATA(m_bios_ext1_ram.get() + offset);
}
}
@@ -325,7 +325,7 @@ WRITE32_MEMBER(midqslvr_state::bios_ext2_ram_w)
{
if (m_mtxc_config_reg[0x5e] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext2_ram + offset);
+ COMBINE_DATA(m_bios_ext2_ram.get() + offset);
}
}
@@ -334,7 +334,7 @@ WRITE32_MEMBER(midqslvr_state::bios_ext3_ram_w)
{
if (m_mtxc_config_reg[0x5f] & 0x2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext3_ram + offset);
+ COMBINE_DATA(m_bios_ext3_ram.get() + offset);
}
}
@@ -343,7 +343,7 @@ WRITE32_MEMBER(midqslvr_state::bios_ext4_ram_w)
{
if (m_mtxc_config_reg[0x5f] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext4_ram + offset);
+ COMBINE_DATA(m_bios_ext4_ram.get() + offset);
}
}
@@ -352,7 +352,7 @@ WRITE32_MEMBER(midqslvr_state::bios_ram_w)
{
if (m_mtxc_config_reg[0x59] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ram + offset);
+ COMBINE_DATA(m_bios_ram.get() + offset);
}
}
@@ -385,13 +385,13 @@ ADDRESS_MAP_END
void midqslvr_state::machine_start()
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
- m_bios_ext1_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_ext2_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_ext3_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_ext4_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_isa_ram1 = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_isa_ram2 = auto_alloc_array(machine(), UINT32, 0x4000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x10000/4);
+ m_bios_ext1_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_ext2_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_ext3_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_ext4_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_isa_ram1 = std::make_unique<UINT32[]>(0x4000/4);
+ m_isa_ram2 = std::make_unique<UINT32[]>(0x4000/4);
intel82439tx_init();
}
diff --git a/src/mame/drivers/midzeus.cpp b/src/mame/drivers/midzeus.cpp
index f221468faae..039e414411d 100644
--- a/src/mame/drivers/midzeus.cpp
+++ b/src/mame/drivers/midzeus.cpp
@@ -311,7 +311,7 @@ WRITE32_MEMBER(midzeus_state::crusnexo_leds_w)
case 1: /* controls lamps */
for (bit = 0; bit < 8; bit++)
- output_set_lamp_value(bit, (data >> bit) & 1);
+ output().set_lamp_value(bit, (data >> bit) & 1);
break;
case 2: /* sets state of selected LEDs */
@@ -319,13 +319,13 @@ WRITE32_MEMBER(midzeus_state::crusnexo_leds_w)
/* selection bits 4-6 select the 3 7-segment LEDs */
for (bit = 4; bit < 7; bit++)
if ((crusnexo_leds_select & (1 << bit)) == 0)
- output_set_digit_value(bit, ~data & 0xff);
+ output().set_digit_value(bit, ~data & 0xff);
/* selection bits 0-2 select the tachometer LEDs */
for (bit = 0; bit < 3; bit++)
if ((crusnexo_leds_select & (1 << bit)) == 0)
for (led = 0; led < 8; led++)
- output_set_led_value(bit * 8 + led, (~data >> led) & 1);
+ output().set_led_value(bit * 8 + led, (~data >> led) & 1);
break;
case 3: /* selects which set of LEDs we are addressing */
@@ -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/mikie.cpp b/src/mame/drivers/mikie.cpp
index a5cf578d288..fb6cc53262a 100644
--- a/src/mame/drivers/mikie.cpp
+++ b/src/mame/drivers/mikie.cpp
@@ -79,7 +79,7 @@ WRITE8_MEMBER(mikie_state::mikie_sh_irqtrigger_w)
WRITE8_MEMBER(mikie_state::mikie_coin_counter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
WRITE8_MEMBER(mikie_state::irq_mask_w)
diff --git a/src/mame/drivers/mil4000.cpp b/src/mame/drivers/mil4000.cpp
index 9ac2c37e375..04aa16514a6 100644
--- a/src/mame/drivers/mil4000.cpp
+++ b/src/mame/drivers/mil4000.cpp
@@ -297,15 +297,15 @@ WRITE16_MEMBER(mil4000_state::output_w)
int i;
for(i=0;i<3;i++)
- coin_counter_w(machine(), i, data & 0x2000);
-
- output_set_lamp_value(0, (data) & 1); /* HOLD1 */
- output_set_lamp_value(1, (data >> 1) & 1); /* HOLD2 */
- output_set_lamp_value(2, (data >> 2) & 1); /* HOLD3 */
- output_set_lamp_value(3, (data >> 3) & 1); /* HOLD4 */
- output_set_lamp_value(4, (data >> 4) & 1); /* HOLD5 */
- output_set_lamp_value(5, (data >> 5) & 1); /* START */
- output_set_lamp_value(6, (data >> 6) & 1); /* PREMIO */
+ machine().bookkeeping().coin_counter_w(i, data & 0x2000);
+
+ output().set_lamp_value(0, (data) & 1); /* HOLD1 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* HOLD2 */
+ output().set_lamp_value(2, (data >> 2) & 1); /* HOLD3 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* HOLD4 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* HOLD5 */
+ output().set_lamp_value(5, (data >> 5) & 1); /* START */
+ output().set_lamp_value(6, (data >> 6) & 1); /* PREMIO */
// popmessage("%04x\n",data);
}
diff --git a/src/mame/drivers/miniboy7.cpp b/src/mame/drivers/miniboy7.cpp
index 158f19c0ef7..461af99cb77 100644
--- a/src/mame/drivers/miniboy7.cpp
+++ b/src/mame/drivers/miniboy7.cpp
@@ -303,13 +303,13 @@ WRITE8_MEMBER(miniboy7_state::ay_pa_w)
data = data ^ 0xff;
-// output_set_lamp_value(0, (data) & 1); // [----x]
-// output_set_lamp_value(1, (data >> 1) & 1); // [---x-]
-// output_set_lamp_value(2, (data >> 2) & 1); // [--x--]
-// output_set_lamp_value(3, (data >> 3) & 1); // [-x---]
-// output_set_lamp_value(4, (data >> 4) & 1); // [x----]
+// output().set_lamp_value(0, (data) & 1); // [----x]
+// output().set_lamp_value(1, (data >> 1) & 1); // [---x-]
+// output().set_lamp_value(2, (data >> 2) & 1); // [--x--]
+// output().set_lamp_value(3, (data >> 3) & 1); // [-x---]
+// output().set_lamp_value(4, (data >> 4) & 1); // [x----]
- coin_counter_w(machine(), 0, data & 0x40); // counter
+ machine().bookkeeping().coin_counter_w(0, data & 0x40); // counter
// popmessage("Out Lamps: %02x", data);
// logerror("Out Lamps: %02x\n", data);
diff --git a/src/mame/drivers/minicom.cpp b/src/mame/drivers/minicom.cpp
index 5c7a77217c2..56a1ca2d0c9 100644
--- a/src/mame/drivers/minicom.cpp
+++ b/src/mame/drivers/minicom.cpp
@@ -87,7 +87,7 @@ void minicom_state::machine_reset()
m_display_data = 0;
for (int i=0; i<20; i++)
- output_set_digit_value(i, 0);
+ output().set_digit_value(i, 0);
}
READ8_MEMBER(minicom_state::minicom_io_r)
@@ -212,7 +212,7 @@ WRITE8_MEMBER(minicom_state::minicom_io_w)
if (BIT(changed,4) || BIT(changed,5))
{
- output_set_digit_value(m_digit_index, BITSWAP16(m_display_data, 9, 1, 3, 11, 12, 4, 2, 10, 14, 6, 7, 5, 0, 15, 13, 8) & 0x3FFF);
+ output().set_digit_value(m_digit_index, BITSWAP16(m_display_data, 9, 1, 3, 11, 12, 4, 2, 10, 14, 6, 7, 5, 0, 15, 13, 8) & 0x3FFF);
}
m_p[offset]=data;
}
diff --git a/src/mame/drivers/mirax.cpp b/src/mame/drivers/mirax.cpp
index 1a967193379..ec3bdaf751c 100644
--- a/src/mame/drivers/mirax.cpp
+++ b/src/mame/drivers/mirax.cpp
@@ -289,12 +289,12 @@ WRITE8_MEMBER(mirax_state::sound_cmd_w)
WRITE8_MEMBER(mirax_state::coin_counter0_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
WRITE8_MEMBER(mirax_state::coin_counter1_w)
{
- coin_counter_w(machine(), 1, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 1);
}
/* One address flips X, the other flips Y, but I can't tell which is which - Since the value is the same for the 2 addresses, it doesn't really matter */
diff --git a/src/mame/drivers/missile.cpp b/src/mame/drivers/missile.cpp
index 85bec34438a..bedc5cecea2 100644
--- a/src/mame/drivers/missile.cpp
+++ b/src/mame/drivers/missile.cpp
@@ -400,7 +400,6 @@ public:
DECLARE_WRITE8_MEMBER(missile_w);
DECLARE_READ8_MEMBER(missile_r);
DECLARE_CUSTOM_INPUT_MEMBER(get_vblank);
- DECLARE_DIRECT_UPDATE_MEMBER(missile_direct_handler);
DECLARE_DRIVER_INIT(missilem);
DECLARE_DRIVER_INIT(suprmatk);
virtual void machine_start() override;
@@ -729,11 +728,11 @@ WRITE8_MEMBER(missile_state::missile_w)
else if (offset < 0x4900)
{
m_flipscreen = ~data & 0x40;
- coin_counter_w(machine(), 0, data & 0x20);
- coin_counter_w(machine(), 1, data & 0x10);
- coin_counter_w(machine(), 2, data & 0x08);
- set_led_status(machine(), 1, ~data & 0x04);
- set_led_status(machine(), 0, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(1, data & 0x10);
+ machine().bookkeeping().coin_counter_w(2, data & 0x08);
+ output().set_led_value(1, ~data & 0x04);
+ output().set_led_value(0, ~data & 0x02);
m_ctrld = data & 1;
}
diff --git a/src/mame/drivers/mjsister.cpp b/src/mame/drivers/mjsister.cpp
index 07bc532a2c7..eb171d95a35 100644
--- a/src/mame/drivers/mjsister.cpp
+++ b/src/mame/drivers/mjsister.cpp
@@ -31,8 +31,8 @@ public:
m_dac(*this, "dac") { }
/* video-related */
- bitmap_ind16 *m_tmpbitmap0;
- bitmap_ind16 *m_tmpbitmap1;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap0;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap1;
int m_flip_screen;
int m_video_enable;
int m_screen_redraw;
@@ -90,8 +90,8 @@ protected:
void mjsister_state::video_start()
{
- m_tmpbitmap0 = auto_bitmap_ind16_alloc(machine(), 256, 256);
- m_tmpbitmap1 = auto_bitmap_ind16_alloc(machine(), 256, 256);
+ m_tmpbitmap0 = std::make_unique<bitmap_ind16>(256, 256);
+ m_tmpbitmap1 = std::make_unique<bitmap_ind16>(256, 256);
save_item(NAME(m_videoram0));
save_item(NAME(m_videoram1));
diff --git a/src/mame/drivers/mk1.cpp b/src/mame/drivers/mk1.cpp
index 04d7ddbb73f..ef66e66594c 100644
--- a/src/mame/drivers/mk1.cpp
+++ b/src/mame/drivers/mk1.cpp
@@ -156,8 +156,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(mk1_state::mk1_update_leds)
{
for (int i = 0; i < 4; i++)
{
- output_set_digit_value(i, m_led[i] >> 1);
- output_set_led_value(i, m_led[i] & 0x01);
+ output().set_digit_value(i, m_led[i] >> 1);
+ output().set_led_value(i, m_led[i] & 0x01);
m_led[i] = 0;
}
}
diff --git a/src/mame/drivers/mk14.cpp b/src/mame/drivers/mk14.cpp
index 2f6106c8e5e..6342689adc6 100644
--- a/src/mame/drivers/mk14.cpp
+++ b/src/mame/drivers/mk14.cpp
@@ -60,7 +60,7 @@ READ8_MEMBER( mk14_state::keyboard_r )
WRITE8_MEMBER( mk14_state::display_w )
{
if (offset < 8 )
- output_set_digit_value(offset, data);
+ output().set_digit_value(offset, data);
else
{
//logerror("write %02x to %02x\n",data,offset);
diff --git a/src/mame/drivers/mk2.cpp b/src/mame/drivers/mk2.cpp
index bd0277641fd..34c504a4d3e 100644
--- a/src/mame/drivers/mk2.cpp
+++ b/src/mame/drivers/mk2.cpp
@@ -119,12 +119,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(mk2_state::update_leds)
int i;
for (i=0; i<4; i++)
- output_set_digit_value(i, m_led[i]);
+ output().set_digit_value(i, m_led[i]);
- output_set_led_value(0, BIT(m_led[4], 3));
- output_set_led_value(1, BIT(m_led[4], 5));
- output_set_led_value(2, BIT(m_led[4], 4));
- output_set_led_value(3, BIT(m_led[4], 4) ? 0 : 1);
+ output().set_led_value(0, BIT(m_led[4], 3));
+ output().set_led_value(1, BIT(m_led[4], 5));
+ output().set_led_value(2, BIT(m_led[4], 4));
+ output().set_led_value(3, BIT(m_led[4], 4) ? 0 : 1);
m_led[0]= m_led[1]= m_led[2]= m_led[3]= m_led[4]= 0;
}
diff --git a/src/mame/drivers/mkit09.cpp b/src/mame/drivers/mkit09.cpp
index 4775835d973..b3ebef1b5cd 100644
--- a/src/mame/drivers/mkit09.cpp
+++ b/src/mame/drivers/mkit09.cpp
@@ -171,7 +171,7 @@ WRITE8_MEMBER( mkit09_state::pa_w )
data ^= 0xff;
if (m_keydata > 3)
{
- output_set_digit_value(m_keydata, BITSWAP8(data, 7, 0, 5, 6, 4, 2, 1, 3));
+ output().set_digit_value(m_keydata, BITSWAP8(data, 7, 0, 5, 6, 4, 2, 1, 3));
m_keydata = 0;
}
diff --git a/src/mame/drivers/mlanding.cpp b/src/mame/drivers/mlanding.cpp
index c50ca0ccd78..a4cb4078ec7 100644
--- a/src/mame/drivers/mlanding.cpp
+++ b/src/mame/drivers/mlanding.cpp
@@ -111,7 +111,7 @@ public:
required_device<palette_device> m_palette;
- UINT16 *m_dma_ram;
+ std::unique_ptr<UINT16[]> m_dma_ram;
UINT8 m_dma_cpu_bank;
UINT8 m_dma_busy;
UINT16 m_dsp_hold_signal;
@@ -172,11 +172,11 @@ protected:
void mlanding_state::machine_start()
{
// Allocate two DMA RAM banks
- m_dma_ram = auto_alloc_array(machine(), UINT16, c_dma_bank_words * 2);
- m_dma_bank->configure_entries(0, 2, m_dma_ram, c_dma_bank_words * 2);
+ m_dma_ram = std::make_unique<UINT16[]>(c_dma_bank_words * 2);
+ m_dma_bank->configure_entries(0, 2, m_dma_ram.get(), c_dma_bank_words * 2);
// Register state for saving
- save_pointer(NAME(m_dma_ram), c_dma_bank_words * 2);
+ save_pointer(NAME(m_dma_ram.get()), c_dma_bank_words * 2);
save_item(NAME(m_dma_cpu_bank));
save_item(NAME(m_dma_busy));
save_item(NAME(m_dsp_hold_signal));
diff --git a/src/mame/drivers/mmd1.cpp b/src/mame/drivers/mmd1.cpp
index 99c4f4569b0..690a58e2568 100644
--- a/src/mame/drivers/mmd1.cpp
+++ b/src/mame/drivers/mmd1.cpp
@@ -180,38 +180,38 @@ public:
WRITE8_MEMBER( mmd1_state::mmd1_port0_w )
{
- output_set_value("p0_7", BIT(data,7) ? 0 : 1);
- output_set_value("p0_6", BIT(data,6) ? 0 : 1);
- output_set_value("p0_5", BIT(data,5) ? 0 : 1);
- output_set_value("p0_4", BIT(data,4) ? 0 : 1);
- output_set_value("p0_3", BIT(data,3) ? 0 : 1);
- output_set_value("p0_2", BIT(data,2) ? 0 : 1);
- output_set_value("p0_1", BIT(data,1) ? 0 : 1);
- output_set_value("p0_0", BIT(data,0) ? 0 : 1);
+ output().set_value("p0_7", BIT(data,7) ? 0 : 1);
+ output().set_value("p0_6", BIT(data,6) ? 0 : 1);
+ output().set_value("p0_5", BIT(data,5) ? 0 : 1);
+ output().set_value("p0_4", BIT(data,4) ? 0 : 1);
+ output().set_value("p0_3", BIT(data,3) ? 0 : 1);
+ output().set_value("p0_2", BIT(data,2) ? 0 : 1);
+ output().set_value("p0_1", BIT(data,1) ? 0 : 1);
+ output().set_value("p0_0", BIT(data,0) ? 0 : 1);
}
WRITE8_MEMBER( mmd1_state::mmd1_port1_w )
{
- output_set_value("p1_7", BIT(data,7) ? 0 : 1);
- output_set_value("p1_6", BIT(data,6) ? 0 : 1);
- output_set_value("p1_5", BIT(data,5) ? 0 : 1);
- output_set_value("p1_4", BIT(data,4) ? 0 : 1);
- output_set_value("p1_3", BIT(data,3) ? 0 : 1);
- output_set_value("p1_2", BIT(data,2) ? 0 : 1);
- output_set_value("p1_1", BIT(data,1) ? 0 : 1);
- output_set_value("p1_0", BIT(data,0) ? 0 : 1);
+ output().set_value("p1_7", BIT(data,7) ? 0 : 1);
+ output().set_value("p1_6", BIT(data,6) ? 0 : 1);
+ output().set_value("p1_5", BIT(data,5) ? 0 : 1);
+ output().set_value("p1_4", BIT(data,4) ? 0 : 1);
+ output().set_value("p1_3", BIT(data,3) ? 0 : 1);
+ output().set_value("p1_2", BIT(data,2) ? 0 : 1);
+ output().set_value("p1_1", BIT(data,1) ? 0 : 1);
+ output().set_value("p1_0", BIT(data,0) ? 0 : 1);
}
WRITE8_MEMBER( mmd1_state::mmd1_port2_w )
{
- output_set_value("p2_7", BIT(data,7) ? 0 : 1);
- output_set_value("p2_6", BIT(data,6) ? 0 : 1);
- output_set_value("p2_5", BIT(data,5) ? 0 : 1);
- output_set_value("p2_4", BIT(data,4) ? 0 : 1);
- output_set_value("p2_3", BIT(data,3) ? 0 : 1);
- output_set_value("p2_2", BIT(data,2) ? 0 : 1);
- output_set_value("p2_1", BIT(data,1) ? 0 : 1);
- output_set_value("p2_0", BIT(data,0) ? 0 : 1);
+ output().set_value("p2_7", BIT(data,7) ? 0 : 1);
+ output().set_value("p2_6", BIT(data,6) ? 0 : 1);
+ output().set_value("p2_5", BIT(data,5) ? 0 : 1);
+ output().set_value("p2_4", BIT(data,4) ? 0 : 1);
+ output().set_value("p2_3", BIT(data,3) ? 0 : 1);
+ output().set_value("p2_2", BIT(data,2) ? 0 : 1);
+ output().set_value("p2_1", BIT(data,1) ? 0 : 1);
+ output().set_value("p2_0", BIT(data,0) ? 0 : 1);
}
// keyboard has a keydown and a keyup code. Keyup = last keydown + bit 7 set
@@ -394,7 +394,7 @@ WRITE8_MEMBER( mmd1_state::mmd2_scanlines_w )
WRITE8_MEMBER( mmd1_state::mmd2_digit_w )
{
if (m_digit < 9)
- output_set_digit_value(m_digit, data);
+ output().set_digit_value(m_digit, data);
}
READ8_MEMBER( mmd1_state::mmd2_kbd_r )
@@ -413,16 +413,16 @@ READ8_MEMBER( mmd1_state::mmd2_kbd_r )
WRITE8_MEMBER( mmd1_state::mmd2_status_callback )
{
// operate the HALT LED
- output_set_value("led_halt", ~data & I8085_STATUS_HLTA);
+ output().set_value("led_halt", ~data & I8085_STATUS_HLTA);
// operate the HOLD LED - this should connect to the HLDA pin,
// but it isn't emulated, using WO instead (whatever that does).
- output_set_value("led_hold", data & I8085_STATUS_WO);
+ output().set_value("led_hold", data & I8085_STATUS_WO);
}
WRITE_LINE_MEMBER( mmd1_state::mmd2_inte_callback )
{
// operate the INTE LED
- output_set_value("led_inte", state);
+ output().set_value("led_inte", state);
}
MACHINE_RESET_MEMBER(mmd1_state,mmd1)
diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp
index e1ff1b638e4..aa1b5b6a236 100644
--- a/src/mame/drivers/mmodular.cpp
+++ b/src/mame/drivers/mmodular.cpp
@@ -254,16 +254,16 @@ WRITE8_MEMBER(polgar_state::write_polgar_IO)
if (BIT(data,7) && BIT(data, 4)) {
for (i = 0;i < 8;i++)
- output_set_led_value(i,!BIT(latch_data,i));
+ output().set_led_value(i,!BIT(latch_data,i));
}
else if (BIT(data,6) && BIT(data,5)) {
for (i = 0;i < 8;i++)
- output_set_led_value(10+i,!BIT(latch_data,7-i));
+ output().set_led_value(10+i,!BIT(latch_data,7-i));
}
else if (!data && (!strcmp(machine().system().name,"milano"))) {
for (i=0;i<8;i++) {
- output_set_led_value(i,!BIT(latch_data,i));
- output_set_led_value(10+i,!BIT(latch_data,7-i));
+ output().set_led_value(i,!BIT(latch_data,i));
+ output().set_led_value(10+i,!BIT(latch_data,7-i));
}
}
@@ -407,8 +407,8 @@ WRITE16_MEMBER(polgar_state::diablo68_write_LCD)
WRITE8_MEMBER(polgar_state::milano_write_LED)
{
UINT8 LED_offset = 100;
- if (data == 0xff) output_set_led_value(LED_offset+offset,1);
- else output_set_led_value(LED_offset+offset,0);
+ if (data == 0xff) output().set_led_value(LED_offset+offset,1);
+ else output().set_led_value(LED_offset+offset,0);
//logerror("LEDs Offset = %d Data = %d\n",offset,data);
}
@@ -419,8 +419,8 @@ WRITE8_MEMBER(polgar_state::megaiv_write_LED)
m_beeper->set_state(1);
else
m_beeper->set_state(0);
- output_set_led_value(102,BIT(data,1)?1:0);
- output_set_led_value(107,BIT(data,6)?1:0);
+ output().set_led_value(102,BIT(data,1)?1:0);
+ output().set_led_value(107,BIT(data,6)?1:0);
// logerror("LEDs FUNC = %02x found = %d\n",data,found);
logerror("LED mask %d\n",data);
@@ -455,26 +455,26 @@ if (start == 1) {
*/
if ((data & 0x68) == 0x68) {
- output_set_led_value(103,BIT(data,4)?0:1); // POS
- output_set_led_value(107,BIT(data,7)?0:1); // white
+ output().set_led_value(103,BIT(data,4)?0:1); // POS
+ output().set_led_value(107,BIT(data,7)?0:1); // white
found = 1;
}
if ((data & 0x64) == 0x64) {
- output_set_led_value(102,BIT(data,4)?0:1); // MEM
- output_set_led_value(106,BIT(data,7)?0:1); // black
+ output().set_led_value(102,BIT(data,4)?0:1); // MEM
+ output().set_led_value(106,BIT(data,7)?0:1); // black
found = 1;
}
if ((data & 0xa2) == 0xa2) {
- output_set_led_value(101,BIT(data,4)?0:1); // INFO
- output_set_led_value(105,BIT(data,6)?0:1); // FUNC
+ output().set_led_value(101,BIT(data,4)?0:1); // INFO
+ output().set_led_value(105,BIT(data,6)?0:1); // FUNC
found = 1;
}
if ((data & 0xa1) == 0xa1) {
- output_set_led_value(100,BIT(data,4)?0:1); // TRN
- output_set_led_value(104,BIT(data,6)?0:1); // LVL
+ output().set_led_value(100,BIT(data,4)?0:1); // TRN
+ output().set_led_value(104,BIT(data,6)?0:1); // LVL
found = 1;
}
@@ -507,8 +507,8 @@ WRITE32_MEMBER(polgar_state::write_LED_BPL32)
data >>= 24;
for (i=0;i<8;i++) {
- output_set_led_value(i,BIT(data,i));
- output_set_led_value(10+i,!BIT(BPL32latch_data,7-i));
+ output().set_led_value(i,BIT(data,i));
+ output().set_led_value(10+i,!BIT(BPL32latch_data,7-i));
}
logerror("LEDs Offset = %d Data = %08x Latch = %08x\n",offset,data,BPL32latch_data);
@@ -528,7 +528,7 @@ WRITE8_MEMBER(polgar_state::polgar_write_LED)
led_status|=1<<offset;
}
- if (offset < 6) output_set_led_value(LED_offset+offset, led_status&1<<offset?1:0);
+ if (offset < 6) output().set_led_value(LED_offset+offset, led_status&1<<offset?1:0);
logerror("LEDs Offset = %d Data = %d\n",offset,data);
}
@@ -577,10 +577,10 @@ WRITE8_MEMBER(polgar_state::monteciv_write_LCD)
tempchar = 0;
}
if (whichchar == 4) {
- output_set_digit_value(0,charstodisplay[0]);
- output_set_digit_value(1,charstodisplay[1]);
- output_set_digit_value(2,charstodisplay[2]);
- output_set_digit_value(3,charstodisplay[3]);
+ output().set_digit_value(0,charstodisplay[0]);
+ output().set_digit_value(1,charstodisplay[1]);
+ output().set_digit_value(2,charstodisplay[2]);
+ output().set_digit_value(3,charstodisplay[3]);
whichchar = 0;
}
}
@@ -602,10 +602,10 @@ WRITE8_MEMBER(polgar_state::monteciv_write_LCD)
tempchar = 0;
}
if (whichchar == 4) {
- output_set_digit_value(4+0,charstodisplay[0]);
- output_set_digit_value(4+1,charstodisplay[1]);
- output_set_digit_value(4+2,charstodisplay[2]);
- output_set_digit_value(4+3,charstodisplay[3]);
+ output().set_digit_value(4+0,charstodisplay[0]);
+ output().set_digit_value(4+1,charstodisplay[1]);
+ output().set_digit_value(4+2,charstodisplay[2]);
+ output().set_digit_value(4+3,charstodisplay[3]);
whichchar = 0;
}
}
@@ -758,15 +758,15 @@ READ8_MEMBER(polgar_state::read_keys_board_monteciv)
data = ioport("BUTTONS_MONTE2")->read();
#if 0
if (data) {
- output_set_digit_value(0,64);
- output_set_digit_value(1,113+128);
- output_set_digit_value(2,190);
- output_set_digit_value(3,64);
-
- output_set_digit_value(4,246-128);
- output_set_digit_value(5,247-128);
- output_set_digit_value(6,219-128);
- output_set_digit_value(7,249-128);
+ output().set_digit_value(0,64);
+ output().set_digit_value(1,113+128);
+ output().set_digit_value(2,190);
+ output().set_digit_value(3,64);
+
+ output().set_digit_value(4,246-128);
+ output().set_digit_value(5,247-128);
+ output().set_digit_value(6,219-128);
+ output().set_digit_value(7,249-128);
}
#endif
} else {
@@ -1536,7 +1536,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 +1606,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))
diff --git a/src/mame/drivers/model1.cpp b/src/mame/drivers/model1.cpp
index 3d40fe656ff..9fd1950cc0d 100644
--- a/src/mame/drivers/model1.cpp
+++ b/src/mame/drivers/model1.cpp
@@ -663,12 +663,12 @@ WRITE16_MEMBER(model1_state::io_w)
{
if(offset == 0x0f){
// tested in vr, vf, swa, wingwar
- set_led_status(machine(), 0, data & 0x4); // START (1)
- set_led_status(machine(), 1, data & 0x8); // VIEW1 (START2 - VF)
- set_led_status(machine(), 2, data & 0x10); // VIEW2 (VIEW - SWA)
- set_led_status(machine(), 3, data & 0x20); // VIEW3
- set_led_status(machine(), 4, data & 0x40); // VIEW4
- set_led_status(machine(), 5, data & 0x80); // RACE LEADER
+ output().set_led_value(0, data & 0x4); // START (1)
+ output().set_led_value(1, data & 0x8); // VIEW1 (START2 - VF)
+ output().set_led_value(2, data & 0x10); // VIEW2 (VIEW - SWA)
+ output().set_led_value(3, data & 0x20); // VIEW3
+ output().set_led_value(4, data & 0x40); // VIEW4
+ output().set_led_value(5, data & 0x80); // RACE LEADER
m_lamp_state = data;
return;
}
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp
index e57eaf78641..6f5f5ca2c56 100644
--- a/src/mame/drivers/model2.cpp
+++ b/src/mame/drivers/model2.cpp
@@ -372,8 +372,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(model2_state::model2_timer_cb)
MACHINE_START_MEMBER(model2_state,model2)
{
- m_copro_fifoin_data = auto_alloc_array_clear(machine(), UINT32, COPRO_FIFOIN_SIZE);
- m_copro_fifoout_data = auto_alloc_array_clear(machine(), UINT32, COPRO_FIFOOUT_SIZE);
+ m_copro_fifoin_data = make_unique_clear<UINT32[]>(COPRO_FIFOIN_SIZE);
+ m_copro_fifoout_data = make_unique_clear<UINT32[]>(COPRO_FIFOOUT_SIZE);
}
MACHINE_RESET_MEMBER(model2_state,model2_common)
diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp
index 69058990c3d..aca17b6ecfc 100644
--- a/src/mame/drivers/model3.cpp
+++ b/src/mame/drivers/model3.cpp
@@ -1670,7 +1670,7 @@ READ64_MEMBER(model3_state::network_r)
WRITE64_MEMBER(model3_state::network_w)
{
- COMBINE_DATA(m_network_ram + offset);
+ COMBINE_DATA(m_network_ram.get() + offset);
osd_printf_debug("network_w: %02X, %08X%08X at %08X\n", offset, (UINT32)(data >> 32), (UINT32)(data), space.device().safe_pc());
}
@@ -5607,8 +5607,8 @@ static void interleave_vroms(running_machine &machine)
int vrom_length = state->memregion("user3")->bytes();
UINT16 *vrom;
- state->m_vrom = auto_alloc_array(machine, UINT32, 0x4000000/4);
- vrom = (UINT16 *)state->m_vrom;
+ state->m_vrom = std::make_unique<UINT32[]>(0x4000000/4);
+ vrom = (UINT16 *)state->m_vrom.get();
if( vrom_length <= 0x1000000 ) {
start = 0x1000000;
@@ -5820,7 +5820,7 @@ DRIVER_INIT_MEMBER(model3_state,harley)
{
DRIVER_INIT_CALL(model3_20);
- m_network_ram = auto_alloc_array_clear(machine(), UINT64, 0x10000);
+ m_network_ram = make_unique_clear<UINT64[]>(0x10000);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc0000000, 0xc00fffff, read64_delegate(FUNC(model3_state::network_r),this), write64_delegate(FUNC(model3_state::network_w),this));
}
@@ -5828,7 +5828,7 @@ DRIVER_INIT_MEMBER(model3_state,harleya)
{
DRIVER_INIT_CALL(model3_20);
- m_network_ram = auto_alloc_array_clear(machine(), UINT64, 0x10000);
+ m_network_ram = make_unique_clear<UINT64[]>(0x10000);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc0000000, 0xc00fffff, read64_delegate(FUNC(model3_state::network_r),this), write64_delegate(FUNC(model3_state::network_w),this));
}
diff --git a/src/mame/drivers/molecular.cpp b/src/mame/drivers/molecular.cpp
index 440479c71bb..8915163ea43 100644
--- a/src/mame/drivers/molecular.cpp
+++ b/src/mame/drivers/molecular.cpp
@@ -72,8 +72,8 @@ public:
UINT8 *m_file_rom;
UINT8 *m_app_rom;
- UINT8 *m_file_ram;
- UINT8 *m_app_ram;
+ std::unique_ptr<UINT8[]> m_file_ram;
+ std::unique_ptr<UINT8[]> m_app_ram;
DECLARE_READ8_MEMBER(file_r);
DECLARE_WRITE8_MEMBER(file_w);
@@ -267,8 +267,8 @@ void molecula_state::machine_start()
m_file_rom = memregion("fileipl")->base();
m_app_rom = memregion("appipl")->base();
- m_file_ram = auto_alloc_array_clear(machine(), UINT8, 0x10000);
- m_app_ram = auto_alloc_array_clear(machine(), UINT8, 0x10000);
+ m_file_ram = make_unique_clear<UINT8[]>(0x10000);
+ m_app_ram = make_unique_clear<UINT8[]>(0x10000);
}
void molecula_state::machine_reset()
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/monzagp.cpp b/src/mame/drivers/monzagp.cpp
index 1c421b5bf22..6f08b216b86 100644
--- a/src/mame/drivers/monzagp.cpp
+++ b/src/mame/drivers/monzagp.cpp
@@ -32,6 +32,7 @@ Lower board (MGP_01):
#include "emu.h"
#include "cpu/mcs48/mcs48.h"
#include "machine/nvram.h"
+#include "video/resnet.h"
#include "monzagp.lh"
@@ -45,8 +46,11 @@ public:
m_palette(*this, "palette"),
m_nvram(*this, "nvram"),
m_gfx1(*this, "gfx1"),
+ m_gfx2(*this, "gfx2"),
+ m_gfx3(*this, "gfx3"),
m_tile_attr(*this, "unk1"),
m_proms(*this, "proms"),
+ m_steering_wheel(*this, "WHEEL"),
m_in0(*this, "IN0"),
m_in1(*this, "IN1"),
m_dsw(*this, "DSW")
@@ -57,7 +61,6 @@ public:
DECLARE_WRITE8_MEMBER(port1_w);
DECLARE_WRITE8_MEMBER(port2_w);
DECLARE_READ8_MEMBER(port2_r);
- DECLARE_WRITE8_MEMBER(port3_w);
virtual void video_start() override;
TIMER_DEVICE_CALLBACK_MEMBER(time_tick_timer);
DECLARE_PALETTE_INIT(monzagp);
@@ -67,8 +70,11 @@ public:
required_device<palette_device> m_palette;
required_device<nvram_device> m_nvram;
required_memory_region m_gfx1;
+ required_memory_region m_gfx2;
+ required_memory_region m_gfx3;
required_memory_region m_tile_attr;
required_memory_region m_proms;
+ required_ioport m_steering_wheel;
required_ioport m_in0;
required_ioport m_in1;
required_ioport m_dsw;
@@ -79,9 +85,11 @@ private:
UINT8 m_video_ctrl[2][8];
bool m_time_tick;
bool m_cp_ruote;
+ UINT8 m_collisions_ff;
+ UINT8 m_collisions_clk;
UINT8 m_mycar_pos;
- UINT8 *m_vram;
- UINT8 *m_score_ram;
+ std::unique_ptr<UINT8[]> m_vram;
+ std::unique_ptr<UINT8[]> m_score_ram;
};
@@ -93,19 +101,57 @@ TIMER_DEVICE_CALLBACK_MEMBER(monzagp_state::time_tick_timer)
PALETTE_INIT_MEMBER(monzagp_state, monzagp)
{
+ static const int r_resistances[3] = { 220, 1000, 3300 };
+ static const int g_resistances[3] = { 100, 470 , 1500 };
+ static const int b_resistances[3] = { 100, 470 , 1500 };
+ double rweights[3], gweights[3], bweights[3];
+
+ // compute the color output resistor weights
+ compute_resistor_weights(0, 255, -1.0,
+ 3, &r_resistances[0], rweights, 0, 0,
+ 3, &g_resistances[0], gweights, 0, 0,
+ 3, &b_resistances[0], bweights, 0, 0);
+
+ for (int i = 0; i < 0x100; i++)
+ {
+ int bit0 = 0, bit1 = 0, bit2 = 0;
+ UINT8 d = m_proms->base()[0x400 + i] ^ 0x0f;
+
+ if (d & 0x08)
+ {
+ bit1 = BIT(i, 0);
+ bit2 = BIT(i, 1);
+ }
+
+ // red component
+ bit0 = (d >> 2) & 0x01;
+ int r = combine_3_weights(rweights, bit0, bit1, bit2);
+
+ // green component
+ bit0 = (d >> 1) & 0x01;
+ int g = combine_3_weights(gweights, bit0, bit1, bit2);
+
+ // blue component
+ bit0 = (d >> 0) & 0x01;
+ int b = combine_3_weights(bweights, bit0, bit1, bit2);
+
+ palette.set_pen_color(i, rgb_t(r, g, b));
+ }
}
void monzagp_state::video_start()
{
- m_vram = auto_alloc_array(machine(), UINT8, 0x800);
- m_score_ram = auto_alloc_array(machine(), UINT8, 0x100);
+ m_vram = std::make_unique<UINT8[]>(0x800);
+ m_score_ram = std::make_unique<UINT8[]>(0x100);
m_time_tick = 0;
m_cp_ruote = 0;
- m_mycar_pos = 7*16;
- save_pointer(NAME(m_vram), 0x800);
- save_pointer(NAME(m_score_ram), 0x100);
+ m_mycar_pos = 0;
+ m_collisions_ff = 0;
+ m_collisions_clk = 0;
+ save_pointer(NAME(m_vram.get()), 0x800);
+ save_pointer(NAME(m_score_ram.get()), 0x100);
- m_nvram->set_base(m_score_ram, 0x100);
+ m_nvram->set_base(m_score_ram.get(), 0x100);
}
UINT32 monzagp_state::screen_update_monzagp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -123,59 +169,75 @@ UINT32 monzagp_state::screen_update_monzagp(screen_device &screen, bitmap_ind16
// background tilemap
UINT8 *tile_table = m_proms->base() + 0x100;
- UINT8 start_tile = m_video_ctrl[0][0] >> 5;
+ UINT8 *collisions_prom = m_proms->base() + 0x200;
- for(int y=0; y<8; y++)
+ UINT8 start_tile = m_video_ctrl[0][0] ^ 0xff;
+ UINT8 inv_counter = m_video_ctrl[0][1] ^ 0xff;
+ UINT8 mycar_y = m_mycar_pos;
+ bool inv = false;
+
+ for(int y=0; y<=256; y++, start_tile += inv ? -1 : +1)
{
- UINT16 start_x = ((m_video_ctrl[0][3] << 8) | m_video_ctrl[0][2]) ^ 0xffff;
- bool inv = y > 3;
+ if (inv_counter++ == 0xff)
+ inv = true;
+
+ UINT16 start_x = (((m_video_ctrl[0][3] << 8) | m_video_ctrl[0][2]) ^ 0xffff);
+ UINT8 mycar_x = m_video_ctrl[1][2];
- for(int x=0;x<64;x++)
+ for(int x=0; x<=256; x++, start_x++)
{
- UINT8 tile_attr = m_tile_attr->base()[((start_x >> 5) & 0x07) | (((start_x >> 8) & 0x3f) << 3) | ((start_x >> 6) & 0x200)];
+ UINT8 tile_attr = m_tile_attr->base()[((start_x >> 5) & 0x1ff) | ((m_video_ctrl[0][3] & 0x80) ? 0 : 0x200)];
//if (tile_attr & 0x10) printf("dark on\n");
//if (tile_attr & 0x20) printf("light on\n");
//if (tile_attr & 0x40) printf("bridge\n");
- int tile_idx = tile_table[((tile_attr & 0x0f) << 4) | (inv ? 0x08 : 0) | (start_tile & 0x07)];
- int tile = (tile_idx << 3) | (((start_x) >> 2) & 0x07);
+ int tile_idx = tile_table[((tile_attr & 0x0f) << 4) | (inv ? 0x08 : 0) | ((start_tile >> 5) & 0x07)];
- m_gfxdecode->gfx(2)->opaque(bitmap,cliprect,
- tile ^ 4,
- 0,
- 0, inv,
- x*4,y*32);
+ int bit_pos = 3 - (start_x & 3);
+ UINT8 tile_data = m_gfx3->base()[(tile_idx << 8) | (((start_x << 3) & 0xe0) ^ 0x80) | (start_tile & 0x1f)];
+ UINT8 tile_color = (BIT(tile_data, 4 + bit_pos) << 1) | BIT(tile_data, bit_pos);
+ int color = (tile_idx << 2) | tile_color;
- start_x += 4;
- }
- if (y < 3)
- start_tile++;
- else if (y > 3)
- start_tile--;
- }
+ // other cars sprites
+ bool othercars = false;
+ // TODO: other cars sprites
- // my car sprite
- if (m_video_ctrl[1][3] & 0x18)
- {
- int start_sprite = (((m_video_ctrl[1][3] & 0x18)) << 3) | (m_video_ctrl[1][3] & 0x06);
-
- if (m_cp_ruote && (m_video_ctrl[1][3] & 0x0e) == 0)
- start_sprite |= 0x02;
- for(int y=0; y<2; y++)
- for(int x=0; x<4*8; x+=4)
+ // my car sprite
+ bool mycar = false;
+ int mycar_size = m_video_ctrl[1][3] & 0x20 ? 16 : 32;
+ if ((m_video_ctrl[1][3] & 0x18) && x >= m_video_ctrl[1][2] && x < m_video_ctrl[1][2] + 4*8 && y > m_mycar_pos - mycar_size && y < m_mycar_pos + mycar_size)
{
- int sprite = start_sprite | ((x << 1) & 0x38);
-
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
- (sprite ^ 0x06) + y,
- 0,
- 0, 0,
- m_video_ctrl[1][2] + x, m_mycar_pos + (1 - y) * 16,
- 3);
+ int hpos = x - mycar_x;
+ int vpos = y > mycar_y ? ((y - mycar_y) ^ 0x1f) : mycar_y - y;
+ int sprite_idx = (((m_video_ctrl[1][3] & 0x18)) << 2) | (hpos & 0x1c) | (((m_video_ctrl[1][3] & 0x06) >> 1) ^ 0x03);
+
+ if (y <= mycar_y - 16 || y >= mycar_y + 16) sprite_idx ^= 0x61;
+ else if (m_cp_ruote && (m_video_ctrl[1][3] & 0x10)) sprite_idx ^= 0x01;
+
+ int bitpos = 3 - (hpos & 3);
+ UINT8 sprite_data = m_gfx2->base()[(sprite_idx << 5) | (vpos & 0x1f)];
+ UINT8 sprite_color = (BIT(sprite_data, 4 + bitpos) << 1) | BIT(sprite_data, bitpos);
+
+ if ((sprite_color & 3) != 3)
+ {
+ color = 0x100 + sprite_color;
+ if (y > mycar_y - 16 && y < mycar_y + 16)
+ mycar = true;
+ }
}
+
+ if (cliprect.contains(x, y))
+ bitmap.pix16(y, x) = color;
+
+ // collisions
+ UINT8 coll_prom_addr = BITSWAP8(tile_idx, 7, 6, 5, 4, 2, 0, 1, 3);
+ UINT8 collisions = collisions_prom[((mycar && othercars) ? 0 : 0x80) | (inv ? 0x40 : 0) | (coll_prom_addr << 2) | (mycar ? 0 : 0x02) | (tile_color & 0x01)];
+ m_collisions_ff |= ((m_collisions_clk ^ collisions) & collisions);
+ m_collisions_clk = collisions;
+ }
}
// characters
@@ -241,14 +303,7 @@ READ8_MEMBER(monzagp_state::port_r)
if (!(m_p1 & 0x80))
{
//printf("ext 7 r P1:%02x P2:%02x %02x\n", m_p1, m_p2, offset);
- data = 0;
- if(machine().input().code_pressed(KEYCODE_1_PAD)) data |= 0x01;
- if(machine().input().code_pressed(KEYCODE_2_PAD)) data |= 0x02;
- if(machine().input().code_pressed(KEYCODE_3_PAD)) data |= 0x04;
- if(machine().input().code_pressed(KEYCODE_4_PAD)) data |= 0x08;
-
- if (m_time_tick)
- data |= 0x10;
+ data = m_collisions_ff | (m_time_tick ? 0x10 : 0);
}
return data;
@@ -300,7 +355,7 @@ WRITE8_MEMBER(monzagp_state::port_w)
{
// 74LS47 BCD-to-Seven-Segment Decoder
static UINT8 bcd2hex[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x49, 0x78, 0x00 };
- output_set_digit_value(ram_offset >> 3, bcd2hex[data & 0x0f]);
+ output().set_digit_value(ram_offset >> 3, bcd2hex[data & 0x0f]);
}
}
if (!(m_p1 & 0x80))
@@ -308,6 +363,22 @@ WRITE8_MEMBER(monzagp_state::port_w)
//printf("ext 7 w P1:%02x P2:%02x, %02x = %02x\n", m_p1, m_p2, offset, data);
m_video_ctrl[0][(offset>>0) & 0x07] = data;
m_video_ctrl[1][(offset>>3) & 0x07] = data;
+
+ if (((offset>>0) & 0x07) == 0x04) m_collisions_ff = 0;
+ if (((offset>>3) & 0x07) == 0x04) m_mycar_pos = 0xbf;
+
+ if ((m_video_ctrl[1][3] & 1) == 0)
+ {
+ if (((offset>>3) & 0x07) == 0x00) m_mycar_pos++;
+ if (((offset>>3) & 0x07) == 0x01) m_mycar_pos--;
+ }
+
+ if ((offset & 0x80) && (m_video_ctrl[1][3] & 0x01))
+ {
+ UINT8 steering_wheel = m_steering_wheel->read();
+ if (steering_wheel & 0x01) m_mycar_pos--;
+ if (steering_wheel & 0x02) m_mycar_pos++;
+ }
}
}
@@ -336,6 +407,10 @@ static ADDRESS_MAP_START( monzagp_io, AS_IO, 8, monzagp_state )
ADDRESS_MAP_END
static INPUT_PORTS_START( monzagp )
+ PORT_START("WHEEL")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+
PORT_START("IN0")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_TILT )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp
index 4366184a820..36eecbdc9a6 100644
--- a/src/mame/drivers/mpf1.cpp
+++ b/src/mame/drivers/mpf1.cpp
@@ -237,12 +237,12 @@ INPUT_PORTS_END
TIMER_CALLBACK_MEMBER(mpf1_state::led_refresh)
{
- if (BIT(m_lednum, 5)) output_set_digit_value(0, param);
- if (BIT(m_lednum, 4)) output_set_digit_value(1, param);
- if (BIT(m_lednum, 3)) output_set_digit_value(2, param);
- if (BIT(m_lednum, 2)) output_set_digit_value(3, param);
- if (BIT(m_lednum, 1)) output_set_digit_value(4, param);
- if (BIT(m_lednum, 0)) output_set_digit_value(5, param);
+ if (BIT(m_lednum, 5)) output().set_digit_value(0, param);
+ if (BIT(m_lednum, 4)) output().set_digit_value(1, param);
+ if (BIT(m_lednum, 3)) output().set_digit_value(2, param);
+ if (BIT(m_lednum, 2)) output().set_digit_value(3, param);
+ if (BIT(m_lednum, 1)) output().set_digit_value(4, param);
+ if (BIT(m_lednum, 0)) output().set_digit_value(5, param);
}
READ8_MEMBER( mpf1_state::ppi_pa_r )
@@ -291,7 +291,7 @@ WRITE8_MEMBER( mpf1_state::ppi_pc_w )
}
/* bit 7, tape output, tone and led */
- set_led_status(machine(), 0, !BIT(data, 7));
+ output().set_led_value(0, !BIT(data, 7));
m_speaker->level_w(BIT(data, 7));
m_cassette->output( BIT(data, 7) ? 1.0 : -1.0);
}
@@ -312,7 +312,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mpf1_state::check_halt_callback)
// halt-LED; the red one, is turned on when the processor is halted
// TODO: processor seems to halt, but restarts(?) at 0x0000 after a while -> fix
INT64 led_halt = m_maincpu->state_int(Z80_HALT);
- set_led_status(machine(), 1, led_halt);
+ output().set_led_value(1, led_halt);
}
void mpf1_state::machine_start()
diff --git a/src/mame/drivers/mpu3.cpp b/src/mame/drivers/mpu3.cpp
index 3c83986c401..97c65cdc8e9 100644
--- a/src/mame/drivers/mpu3.cpp
+++ b/src/mame/drivers/mpu3.cpp
@@ -133,51 +133,50 @@ class mpu3_state : public driver_device
public:
mpu3_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_vfd(*this, "vfd"),
m_maincpu(*this, "maincpu"),
m_reel0(*this, "reel0"),
m_reel1(*this, "reel1"),
m_reel2(*this, "reel2"),
- m_reel3(*this, "reel3")
+ m_reel3(*this, "reel3"),
+ m_meters(*this, "meters"),
+ m_vfd(*this, "vfd")
{ }
- optional_device<roc10937_t> m_vfd;
-
-
-int m_triac_ic3;
-int m_triac_ic4;
-int m_triac_ic5;
-int m_ic3_data;
-int m_IC11G1;
-int m_IC11G2A;
-int m_IC11G2B;
-int m_IC11GC;
-int m_IC11GB;
-int m_IC11GA;
-
-int m_ic10_output;
-int m_ic11_active;
-int m_ic11_output;
-int m_disp_func;
-
-int m_ic4_input_a;
-int m_aux1_input;
-int m_aux2_input;
-int m_input_strobe; /* IC11 74LS138 A = CA2 IC3, B = CA2 IC4, C = CA2 IC5 */
-UINT8 m_lamp_strobe;
-UINT8 m_led_strobe;
-int m_signal_50hz;
-const mpu3_chr_table* m_current_chr_table;
-int m_prot_col;
-
-int m_optic_pattern;
+ int m_triac_ic3;
+ int m_triac_ic4;
+ int m_triac_ic5;
+ int m_ic3_data;
+ int m_IC11G1;
+ int m_IC11G2A;
+ int m_IC11G2B;
+ int m_IC11GC;
+ int m_IC11GB;
+ int m_IC11GA;
+
+ int m_ic10_output;
+ int m_ic11_active;
+ int m_ic11_output;
+ int m_disp_func;
+
+ int m_ic4_input_a;
+ int m_aux1_input;
+ int m_aux2_input;
+ int m_input_strobe; /* IC11 74LS138 A = CA2 IC3, B = CA2 IC4, C = CA2 IC5 */
+ UINT8 m_lamp_strobe;
+ UINT8 m_led_strobe;
+ int m_signal_50hz;
+
+ const mpu3_chr_table* m_current_chr_table;
+ int m_prot_col;
+
+ int m_optic_pattern;
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
-emu_timer *m_ic21_timer;
+ emu_timer *m_ic21_timer;
DECLARE_WRITE8_MEMBER(characteriser_w);
DECLARE_READ8_MEMBER(characteriser_r);
DECLARE_WRITE8_MEMBER(mpu3ptm_w);
@@ -219,6 +218,8 @@ emu_timer *m_ic21_timer;
required_device<stepper_device> m_reel1;
required_device<stepper_device> m_reel2;
required_device<stepper_device> m_reel3;
+ required_device<meters_device> m_meters;
+ optional_device<roc10937_t> m_vfd;
};
#define DISPLAY_PORT 0
@@ -234,7 +235,7 @@ void mpu3_state::update_triacs()
for (i = 0; i < 8; i++)
{
- output_set_indexed_value("triac", i, triacdata & (1 << i));
+ output().set_indexed_value("triac", i, triacdata & (1 << i));
}
}
@@ -452,7 +453,7 @@ WRITE8_MEMBER(mpu3_state::pia_ic4_porta_w)
if(m_led_strobe != m_input_strobe)
{
swizzle = ((m_ic4_input_a & 0x01) << 2)+(m_ic4_input_a & 0x02)+((m_ic4_input_a & 0x4) >> 2)+(m_ic4_input_a & 0x08)+((m_ic4_input_a & 0x10) << 2)+(m_ic4_input_a & 0x20)+((m_ic4_input_a & 0x40) >> 2);
- output_set_digit_value(7 - m_input_strobe,swizzle);
+ output().set_digit_value(7 - m_input_strobe,swizzle);
}
m_led_strobe = m_input_strobe;
}
@@ -462,7 +463,7 @@ WRITE8_MEMBER(mpu3_state::pia_ic4_porta_w)
for (meter = 0; meter < 6; meter ++)
{
swizzle = ((m_ic4_input_a ^ 0xff) & 0x3f);
- MechMtr_update(meter, (swizzle & (1 << meter)));
+ m_meters->update(meter, (swizzle & (1 << meter)));
}
break;
@@ -487,7 +488,7 @@ WRITE8_MEMBER(mpu3_state::pia_ic4_portb_w)
for (i = 0; i < 8; i++)
{
- output_set_lamp_value((8*m_input_strobe)+i, ((data & (1 << i)) !=0));
+ output().set_lamp_value((8*m_input_strobe)+i, ((data & (1 << i)) !=0));
}
m_lamp_strobe = m_input_strobe;
}
@@ -515,10 +516,10 @@ WRITE8_MEMBER(mpu3_state::pia_ic5_porta_w)
m_reel1->update((data>>2) & 0x03);
m_reel2->update((data>>4) & 0x03);
m_reel3->update((data>>6) & 0x03);
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
}
READ8_MEMBER(mpu3_state::pia_ic5_portb_r)
@@ -696,10 +697,6 @@ void mpu3_state::mpu3_config_common()
void mpu3_state::machine_start()
{
mpu3_config_common();
-
- /* setup 8 mechanical meters */
- MechMtr_config(machine(),8);
-
}
/*
Characteriser (CHR)
@@ -860,6 +857,9 @@ static MACHINE_CONFIG_START( mpu3base, mpu3_state )
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)
+
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_DEFAULT_LAYOUT(layout_mpu3)
diff --git a/src/mame/drivers/mpu4hw.cpp b/src/mame/drivers/mpu4hw.cpp
index 50a7d20ce98..cfda62b6a40 100644
--- a/src/mame/drivers/mpu4hw.cpp
+++ b/src/mame/drivers/mpu4hw.cpp
@@ -296,7 +296,7 @@ void mpu4_state::lamp_extend_small(int data)
{
for (i = 0; i < 5; i++)
{
- output_set_lamp_value((8*column)+i+128,((lamp_ext_data & (1 << i)) != 0));
+ output().set_lamp_value((8*column)+i+128,((lamp_ext_data & (1 << i)) != 0));
}
}
m_lamp_strobe_ext_persistence ++;
@@ -328,7 +328,7 @@ void mpu4_state::lamp_extend_large(int data,int column,int active)
{
for (i = 0; i < 8; i++)
{//CHECK, this includes bit 7
- output_set_lamp_value((8*column)+i+128+lampbase ,(data & (1 << i)) != 0);
+ output().set_lamp_value((8*column)+i+128+lampbase ,(data & (1 << i)) != 0);
}
m_lamp_strobe_ext = column;
}
@@ -358,9 +358,9 @@ void mpu4_state::led_write_latch(int latch, int data, int column)
}
for(j=0; j<8; j++)
{
- output_set_indexed_value("mpu4led",(8*column)+j,(data & (1 << j)) !=0);
+ output().set_indexed_value("mpu4led",(8*column)+j,(data & (1 << j)) !=0);
}
- output_set_digit_value(column * 8, data);
+ output().set_digit_value(column * 8, data);
m_last_latch = diff;
}
@@ -379,57 +379,57 @@ void mpu4_state::update_meters()
case FIVE_REEL_5TO8:
m_reel4->update(((data >> 4) & 0x0f));
data = (data & 0x0F); //Strip reel data from meter drives, leaving active elements
- awp_draw_reel("reel5", m_reel4);
+ awp_draw_reel(machine(),"reel5", m_reel4);
break;
case FIVE_REEL_8TO5:
m_reel4->update((((data & 0x01) + ((data & 0x08) >> 2) + ((data & 0x20) >> 3) + ((data & 0x80) >> 4)) & 0x0f)) ;
data = 0x00; //Strip all reel data from meter drives, nothing is connected
- awp_draw_reel("reel5", m_reel4);
+ awp_draw_reel(machine(),"reel5", m_reel4);
break;
case FIVE_REEL_3TO6:
m_reel4->update(((data >> 2) & 0x0f));
data = 0x00; //Strip all reel data from meter drives
- awp_draw_reel("reel5", m_reel4);
+ awp_draw_reel(machine(),"reel5", m_reel4);
break;
case SIX_REEL_1TO8:
m_reel4->update( data & 0x0f);
m_reel5->update((data >> 4) & 0x0f);
data = 0x00; //Strip all reel data from meter drives
- awp_draw_reel("reel5", m_reel4);
- awp_draw_reel("reel6", m_reel5);
+ awp_draw_reel(machine(),"reel5", m_reel4);
+ awp_draw_reel(machine(),"reel6", m_reel5);
break;
case SIX_REEL_5TO8:
m_reel4->update(((data >> 4) & 0x0f));
data = 0x00; //Strip all reel data from meter drives
- awp_draw_reel("reel5", m_reel4);
+ awp_draw_reel(machine(),"reel5", m_reel4);
break;
case SEVEN_REEL:
m_reel0->update((((data & 0x01) + ((data & 0x08) >> 2) + ((data & 0x20) >> 3) + ((data & 0x80) >> 4)) & 0x0f)) ;
data = 0x00; //Strip all reel data from meter drives
- awp_draw_reel("reel1", m_reel0);
+ awp_draw_reel(machine(),"reel1", m_reel0);
break;
case FLUTTERBOX: //The backbox fan assembly fits in a reel unit sized box, wired to the remote meter pin, so we can handle it here
- output_set_value("flutterbox", data & 0x80);
+ output().set_value("flutterbox", data & 0x80);
data &= ~0x80; //Strip flutterbox data from meter drives
break;
}
- MechMtr_update(7, (data & 0x80));
+ m_meters->update(7, (data & 0x80));
for (meter = 0; meter < 4; meter ++)
{
- MechMtr_update(meter, (data & (1 << meter)));
+ m_meters->update(meter, (data & (1 << meter)));
}
if (m_reel_mux == STANDARD_REEL)
{
for (meter = 4; meter < 7; meter ++)
{
- MechMtr_update(meter, (data & (1 << meter)));
+ m_meters->update(meter, (data & (1 << meter)));
}
}
}
@@ -570,7 +570,7 @@ WRITE8_MEMBER(mpu4_state::pia_ic3_porta_w)
for (i = 0; i < 8; i++)
{
- output_set_lamp_value((8*m_input_strobe)+i, ((data & (1 << i)) !=0));
+ output().set_lamp_value((8*m_input_strobe)+i, ((data & (1 << i)) !=0));
}
m_lamp_strobe = m_input_strobe;
}
@@ -588,7 +588,7 @@ WRITE8_MEMBER(mpu4_state::pia_ic3_portb_w)
{
for (i = 0; i < 8; i++)
{
- output_set_lamp_value((8*m_input_strobe)+i+64, ((data & (1 << i)) !=0));
+ output().set_lamp_value((8*m_input_strobe)+i+64, ((data & (1 << i)) !=0));
}
m_lamp_strobe2 = m_input_strobe;
}
@@ -605,12 +605,12 @@ WRITE8_MEMBER(mpu4_state::pia_ic3_portb_w)
for (i = 0; i < 8; i++)
{
- if (output_get_lamp_value(lamps1[i])) pled_segs[0] |= (1 << i);
- if (output_get_lamp_value(lamps2[i])) pled_segs[1] |= (1 << i);
+ if (output().get_lamp_value(lamps1[i])) pled_segs[0] |= (1 << i);
+ if (output().get_lamp_value(lamps2[i])) pled_segs[1] |= (1 << i);
}
- output_set_digit_value(8,pled_segs[0]);
- output_set_digit_value(9,pled_segs[1]);
+ output().set_digit_value(8,pled_segs[0]);
+ output().set_digit_value(9,pled_segs[1]);
}
}
}
@@ -717,9 +717,9 @@ WRITE8_MEMBER(mpu4_state::pia_ic4_porta_w)
{
for(i=0; i<8; i++)
{
- output_set_indexed_value("mpu4led",((7 - m_input_strobe) * 8) +i,(data & (1 << i)) !=0);
+ output().set_indexed_value("mpu4led",((7 - m_input_strobe) * 8) +i,(data & (1 << i)) !=0);
}
- output_set_digit_value(7 - m_input_strobe,data);
+ output().set_digit_value(7 - m_input_strobe,data);
}
m_led_strobe = m_input_strobe;
}
@@ -865,9 +865,9 @@ WRITE8_MEMBER(mpu4_state::pia_ic5_porta_w)
{
for(i=0; i<8; i++)
{
- output_set_indexed_value("mpu4led",((m_input_strobe + 8) * 8) +i,(data & (1 << i)) !=0);
+ output().set_indexed_value("mpu4led",((m_input_strobe + 8) * 8) +i,(data & (1 << i)) !=0);
}
- output_set_digit_value((m_input_strobe+8),data);
+ output().set_digit_value((m_input_strobe+8),data);
}
break;
@@ -888,9 +888,9 @@ WRITE8_MEMBER(mpu4_state::pia_ic5_porta_w)
{
for(i=0; i<8; i++)
{
- output_set_indexed_value("mpu4led",(((8*(m_last_b7 >>7))+ m_input_strobe) * 8) +i,(~data & (1 << i)) !=0);
+ output().set_indexed_value("mpu4led",(((8*(m_last_b7 >>7))+ m_input_strobe) * 8) +i,(~data & (1 << i)) !=0);
}
- output_set_digit_value(((8*(m_last_b7 >>7))+m_input_strobe),~data);
+ output().set_digit_value(((8*(m_last_b7 >>7))+m_input_strobe),~data);
}
break;
@@ -902,16 +902,16 @@ WRITE8_MEMBER(mpu4_state::pia_ic5_porta_w)
{
m_reel4->update( data &0x0F);
m_reel5->update((data >> 4)&0x0F);
- awp_draw_reel("reel5", m_reel4);
- awp_draw_reel("reel6", m_reel5);
+ awp_draw_reel(machine(),"reel5", m_reel4);
+ awp_draw_reel(machine(),"reel6", m_reel5);
}
else
if (m_reel_mux == SEVEN_REEL)
{
m_reel1->update( data &0x0F);
m_reel2->update((data >> 4)&0x0F);
- awp_draw_reel("reel2", m_reel1);
- awp_draw_reel("reel3", m_reel2);
+ awp_draw_reel(machine(),"reel2", m_reel1);
+ awp_draw_reel(machine(),"reel3", m_reel2);
}
if (core_stricmp(machine().system().name, "m4gambal") == 0)
@@ -1033,10 +1033,10 @@ READ8_MEMBER(mpu4_state::pia_ic5_portb_r)
}
LOG(("%s: IC5 PIA Read of Port B (coin input AUX2)\n",machine().describe_context()));
- coin_lockout_w(machine(), 0, (m_pia5->b_output() & 0x01) );
- coin_lockout_w(machine(), 1, (m_pia5->b_output() & 0x02) );
- coin_lockout_w(machine(), 2, (m_pia5->b_output() & 0x04) );
- coin_lockout_w(machine(), 3, (m_pia5->b_output() & 0x08) );
+ machine().bookkeeping().coin_lockout_w(0, (m_pia5->b_output() & 0x01) );
+ machine().bookkeeping().coin_lockout_w(1, (m_pia5->b_output() & 0x02) );
+ machine().bookkeeping().coin_lockout_w(2, (m_pia5->b_output() & 0x04) );
+ machine().bookkeeping().coin_lockout_w(3, (m_pia5->b_output() & 0x08) );
return m_aux2_port->read() | m_aux2_input;
}
@@ -1126,15 +1126,15 @@ WRITE8_MEMBER(mpu4_state::pia_ic6_portb_w)
{
m_reel3->update( data &0x0F);
m_reel4->update((data >> 4)&0x0F);
- awp_draw_reel("reel4", m_reel3);
- awp_draw_reel("reel5", m_reel4);
+ awp_draw_reel(machine(),"reel4", m_reel3);
+ awp_draw_reel(machine(),"reel5", m_reel4);
}
else if (m_reels)
{
m_reel0->update( data &0x0F);
m_reel1->update((data >> 4)&0x0F);
- awp_draw_reel("reel1", m_reel0);
- awp_draw_reel("reel2", m_reel1);
+ awp_draw_reel(machine(),"reel1", m_reel0);
+ awp_draw_reel(machine(),"reel2", m_reel1);
}
}
@@ -1182,15 +1182,15 @@ WRITE8_MEMBER(mpu4_state::pia_ic7_porta_w)
{
m_reel5->update( data &0x0F);
m_reel6->update((data >> 4)&0x0F);
- awp_draw_reel("reel6", m_reel5);
- awp_draw_reel("reel7", m_reel7);
+ awp_draw_reel(machine(),"reel6", m_reel5);
+ awp_draw_reel(machine(),"reel7", m_reel7);
}
else if (m_reels)
{
m_reel2->update( data &0x0F);
m_reel3->update((data >> 4)&0x0F);
- awp_draw_reel("reel3", m_reel2);
- awp_draw_reel("reel4", m_reel3);
+ awp_draw_reel(machine(),"reel3", m_reel2);
+ awp_draw_reel(machine(),"reel4", m_reel3);
}
}
@@ -1222,10 +1222,10 @@ all eight meters are driven from this port, giving the 8 line driver chip
//This may be overkill, but the meter sensing is VERY picky
- int combined_meter = MechMtr_GetActivity(0) | MechMtr_GetActivity(1) |
- MechMtr_GetActivity(2) | MechMtr_GetActivity(3) |
- MechMtr_GetActivity(4) | MechMtr_GetActivity(5) |
- MechMtr_GetActivity(6) | MechMtr_GetActivity(7);
+ int combined_meter = m_meters->GetActivity(0) | m_meters->GetActivity(1) |
+ m_meters->GetActivity(2) | m_meters->GetActivity(3) |
+ m_meters->GetActivity(4) | m_meters->GetActivity(5) |
+ m_meters->GetActivity(6) | m_meters->GetActivity(7);
if(combined_meter)
{
@@ -1280,7 +1280,7 @@ WRITE8_MEMBER(mpu4_state::pia_ic8_portb_w)
LOG_IC8(("%s: IC8 PIA Port B Set to %2x (OUTPUT PORT, TRIACS)\n", machine().describe_context(),data));
for (i = 0; i < 8; i++)
{
- output_set_indexed_value("triac", i, data & (1 << i));
+ output().set_indexed_value("triac", i, data & (1 << i));
}
}
@@ -2129,10 +2129,6 @@ void mpu4_state::mpu4_config_common()
{
m_ic24_timer = timer_alloc(TIMER_IC24);
m_lamp_strobe_ext_persistence = 0;
-
- /* setup 8 mechanical meters */
- MechMtr_config(machine(),8);
-
}
MACHINE_START_MEMBER(mpu4_state,mod2)
@@ -2639,6 +2635,9 @@ MACHINE_CONFIG_FRAGMENT( mpu4_common )
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)
+
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( mpu4_common2 )
diff --git a/src/mame/drivers/mpu4vid.cpp b/src/mame/drivers/mpu4vid.cpp
index 9fce43e5215..46cd8bb571c 100644
--- a/src/mame/drivers/mpu4vid.cpp
+++ b/src/mame/drivers/mpu4vid.cpp
@@ -441,7 +441,7 @@ VIDEO_START_MEMBER(mpu4vid_state,mpu4_vid)
assert(m_gfx_index != MAX_GFX_ELEMENTS);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_gfx_index+0, global_alloc(gfx_element(m_palette, mpu4_vid_char_8x8_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), NATIVE_ENDIAN_VALUE_LE_BE(8,0), m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index+0, std::make_unique<gfx_element>(m_palette, mpu4_vid_char_8x8_layout, reinterpret_cast<UINT8 *>(m_vid_vidram.target()), NATIVE_ENDIAN_VALUE_LE_BE(8,0), m_palette->entries() / 16, 0));
}
@@ -1216,9 +1216,6 @@ MACHINE_START_MEMBER(mpu4vid_state,mpu4_vid)
/* setup communications */
m_link7a_connected = 1;
- /* setup 8 mechanical meters */
- MechMtr_config(machine(),8);
-
/* Hook the reset line */
m_videocpu->set_reset_callback(write_line_delegate(FUNC(mpu4vid_state::mpu_video_reset),this));
}
diff --git a/src/mame/drivers/mpu5hw.cpp b/src/mame/drivers/mpu5hw.cpp
index c6065c3bf67..9062fc43c81 100644
--- a/src/mame/drivers/mpu5hw.cpp
+++ b/src/mame/drivers/mpu5hw.cpp
@@ -57,7 +57,7 @@ public:
m_maincpu(*this, "maincpu")
{ }
UINT32* m_cpuregion;
- UINT32* m_mainram;
+ std::unique_ptr<UINT32[]> m_mainram;
SEC sec;
UINT8 m_led_strobe_temp;
@@ -234,9 +234,9 @@ WRITE8_MEMBER(mpu5_state::asic_w8)
}
case 0x0b:
{
- output_set_value("statuslamp1", ((data&0x10) != 0));
+ output().set_value("statuslamp1", ((data&0x10) != 0));
- output_set_value("statuslamp2", ((data&0x20) != 0));
+ output().set_value("statuslamp2", ((data&0x20) != 0));
if (data & 0x40)
{
@@ -386,7 +386,7 @@ INPUT_PORTS_END
void mpu5_state::machine_start()
{
m_cpuregion = (UINT32*)memregion( "maincpu" )->base();
- m_mainram = (UINT32*)auto_alloc_array_clear(machine(), UINT32, 0x10000);
+ m_mainram = make_unique_clear<UINT32[]>(0x10000);
m_pic_output_bit =0;
}
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/mrgame.cpp b/src/mame/drivers/mrgame.cpp
index 2d2ec7abc0a..beb0a9e0bca 100644
--- a/src/mame/drivers/mrgame.cpp
+++ b/src/mame/drivers/mrgame.cpp
@@ -76,7 +76,7 @@ public:
DECLARE_READ8_MEMBER(rsw_r);
TIMER_DEVICE_CALLBACK_MEMBER(irq_timer);
UINT32 screen_update_mrgame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- bitmap_ind16 *m_tile_bitmap;
+ std::unique_ptr<bitmap_ind16> m_tile_bitmap;
required_device<palette_device> m_palette;
required_shared_ptr<UINT8> m_p_videoram;
required_shared_ptr<UINT8> m_p_objectram;
@@ -299,7 +299,7 @@ READ8_MEMBER( mrgame_state::portc_r )
void mrgame_state::machine_start()
{
- m_tile_bitmap=auto_bitmap_ind16_alloc(machine(),256,256);
+ m_tile_bitmap=std::make_unique<bitmap_ind16>(256,256);
}
void mrgame_state::machine_reset()
diff --git a/src/mame/drivers/ms32.cpp b/src/mame/drivers/ms32.cpp
index 33294d7c2af..a42790ee244 100644
--- a/src/mame/drivers/ms32.cpp
+++ b/src/mame/drivers/ms32.cpp
@@ -2185,7 +2185,7 @@ void ms32_state::configure_banks()
DRIVER_INIT_MEMBER(ms32_state,ms32_common)
{
- m_nvram_8 = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_nvram_8 = std::make_unique<UINT8[]>(0x2000);
configure_banks();
}
diff --git a/src/mame/drivers/msisaac.cpp b/src/mame/drivers/msisaac.cpp
index ef44297be33..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
/****************************************************************************
@@ -59,7 +59,7 @@ WRITE8_MEMBER(msisaac_state::flip_screen_w)
WRITE8_MEMBER(msisaac_state::msisaac_coin_counter_w)
{
- coin_counter_w(machine(), offset,data);
+ machine().bookkeeping().coin_counter_w(offset,data);
}
#endif
diff --git a/src/mame/drivers/msx.cpp b/src/mame/drivers/msx.cpp
index af263cb2708..2e8fa7fcc90 100644
--- a/src/mame/drivers/msx.cpp
+++ b/src/mame/drivers/msx.cpp
@@ -1921,7 +1921,7 @@ ROM_START (dpc200)
ROM_LOAD ("200han.rom", 0x8000, 0x4000, CRC(97478efb) SHA1(4421fa2504cbce18f7c84b5ea97f04e017007f07))
ROM_END
-static MACHINE_CONFIG_DERIVED( dpc200, msx_tms9918 )
+static MACHINE_CONFIG_DERIVED( dpc200, msx_ntsc )
// AY8910/YM2149?
// FDC: None, 0 drives
// 2 Cartridge slots
diff --git a/src/mame/drivers/multfish.cpp b/src/mame/drivers/multfish.cpp
index e0a46ede44c..f60695b574e 100644
--- a/src/mame/drivers/multfish.cpp
+++ b/src/mame/drivers/multfish.cpp
@@ -376,14 +376,14 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_hopper_w)
m_hopper_motor = data & 0x10;
- coin_lockout_w(machine(), 0, data & 0x01);
- coin_lockout_w(machine(), 1, data & 0x01);
- coin_lockout_w(machine(), 2, data & 0x01);
- coin_lockout_w(machine(), 3, data & 0x01);
- coin_lockout_w(machine(), 4, data & 0x04);
- coin_lockout_w(machine(), 5, data & 0x04);
- coin_lockout_w(machine(), 6, data & 0x04);
- coin_lockout_w(machine(), 7, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(2, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(3, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(4, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(5, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(6, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(7, data & 0x04);
}
WRITE8_MEMBER(igrosoft_gamble_state::rollfr_hopper_w)
@@ -394,14 +394,14 @@ WRITE8_MEMBER(igrosoft_gamble_state::rollfr_hopper_w)
m_hopper_motor = data & 0x10;
- coin_lockout_w(machine(), 0,~data & 0x01);
- coin_lockout_w(machine(), 1,~data & 0x01);
- coin_lockout_w(machine(), 2,~data & 0x01);
- coin_lockout_w(machine(), 3,~data & 0x01);
- coin_lockout_w(machine(), 4, data & 0x04);
- coin_lockout_w(machine(), 5, data & 0x04);
- coin_lockout_w(machine(), 6, data & 0x04);
- coin_lockout_w(machine(), 7, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(2,~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(3,~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(4, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(5, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(6, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(7, data & 0x04);
}
DRIVER_INIT_MEMBER(igrosoft_gamble_state,customl)
@@ -854,14 +854,14 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_lamps1_w)
-X-- ---- Start Lamp 34A
X--- ---- Bet/Double Lamp 29B
*/
- output_set_lamp_value(1, ((data) & 1)); /* Hold 1 Lamp */
- output_set_lamp_value(2, ((data >> 1) & 1)); /* Hold 2 Lamp */
- output_set_lamp_value(3, ((data >> 2) & 1)); /* Hold 3 Lamp */
- output_set_lamp_value(4, ((data >> 3) & 1)); /* Hold 4 Lamp */
- output_set_lamp_value(5, ((data >> 4) & 1)); /* Hold 5 Lamp */
- output_set_lamp_value(8, ((data >> 5) & 1)); /* Help Lamp */
- output_set_lamp_value(6, ((data >> 6) & 1)); /* Start Lamp */
- output_set_lamp_value(0, ((data >> 7) & 1)); /* Bet/Double Lamp */
+ output().set_lamp_value(1, ((data) & 1)); /* Hold 1 Lamp */
+ output().set_lamp_value(2, ((data >> 1) & 1)); /* Hold 2 Lamp */
+ output().set_lamp_value(3, ((data >> 2) & 1)); /* Hold 3 Lamp */
+ output().set_lamp_value(4, ((data >> 3) & 1)); /* Hold 4 Lamp */
+ output().set_lamp_value(5, ((data >> 4) & 1)); /* Hold 5 Lamp */
+ output().set_lamp_value(8, ((data >> 5) & 1)); /* Help Lamp */
+ output().set_lamp_value(6, ((data >> 6) & 1)); /* Start Lamp */
+ output().set_lamp_value(0, ((data >> 7) & 1)); /* Bet/Double Lamp */
}
WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_lamps2_w)
@@ -874,10 +874,10 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_lamps2_w)
---- -X-- Maxbet Lamp 30B
---X ---- Upper Lamp Green 25B (Demo Mode)
*/
- output_set_lamp_value(9, ((data) & 1)); /* Payout Lamp */
- output_set_lamp_value(12, ((data >> 1) & 1)); /* Upper Lamp Yellow */
- output_set_lamp_value(7, ((data >> 2) & 1)); /* Maxbet Lamp */
- output_set_lamp_value(10, ((data >> 4) & 1)); /* Upper Lamp Green */
+ output().set_lamp_value(9, ((data) & 1)); /* Payout Lamp */
+ output().set_lamp_value(12, ((data >> 1) & 1)); /* Upper Lamp Yellow */
+ output().set_lamp_value(7, ((data >> 2) & 1)); /* Maxbet Lamp */
+ output().set_lamp_value(10, ((data >> 4) & 1)); /* Upper Lamp Green */
}
WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_lamps3_w)
@@ -887,7 +887,7 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_lamps3_w)
7654 3210
---- --X- Upper Lamp Red 26B (Service Mode)
*/
- output_set_lamp_value(11, ((data >> 1) & 1)); /* Upper Lamp Red */
+ output().set_lamp_value(11, ((data >> 1) & 1)); /* Upper Lamp Red */
}
WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_counters_w)
@@ -902,12 +902,12 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_counters_w)
-X-- ---- Key Out Counter 27A
X--- ---- Total Bet Counter 28B
*/
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 2, data & 0x04);
- coin_counter_w(machine(), 3, data & 0x10);
- coin_counter_w(machine(), 4, data & 0x40);
- coin_counter_w(machine(), 5, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(2, data & 0x04);
+ machine().bookkeeping().coin_counter_w(3, data & 0x10);
+ machine().bookkeeping().coin_counter_w(4, data & 0x40);
+ machine().bookkeeping().coin_counter_w(5, data & 0x80);
}
WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_f3_w)
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/multigam.cpp b/src/mame/drivers/multigam.cpp
index 92cb75e24b1..2a1c7772b6c 100644
--- a/src/mame/drivers/multigam.cpp
+++ b/src/mame/drivers/multigam.cpp
@@ -123,8 +123,8 @@ public:
required_device<cpu_device> m_maincpu;
required_device<ppu2c0x_device> m_ppu;
- UINT8* m_nt_ram;
- UINT8* m_vram;
+ std::unique_ptr<UINT8[]> m_nt_ram;
+ std::unique_ptr<UINT8[]> m_vram;
UINT8* m_nt_page[4];
UINT32 m_in_0;
UINT32 m_in_1;
@@ -138,7 +138,7 @@ public:
int m_multigam3_mmc3_banks[2];
int m_multigam3_mmc3_4screen;
int m_multigam3_mmc3_last_bank;
- UINT8* m_multigmc_mmc3_6000_ram;
+ std::unique_ptr<UINT8[]> m_multigmc_mmc3_6000_ram;
UINT8* m_multigam3_mmc3_prg_base;
int m_multigam3_mmc3_prg_size;
int m_multigam3_mmc3_chr_bank_base;
@@ -212,29 +212,29 @@ void multigam_state::set_mirroring(int mirroring)
switch(mirroring)
{
case PPU_MIRROR_LOW:
- m_nt_page[0] = m_nt_page[1] = m_nt_page[2] = m_nt_page[3] = m_nt_ram;
+ m_nt_page[0] = m_nt_page[1] = m_nt_page[2] = m_nt_page[3] = m_nt_ram.get();
break;
case PPU_MIRROR_HIGH:
- m_nt_page[0] = m_nt_page[1] = m_nt_page[2] = m_nt_page[3] = m_nt_ram + 0x400;
+ m_nt_page[0] = m_nt_page[1] = m_nt_page[2] = m_nt_page[3] = m_nt_ram.get() + 0x400;
break;
case PPU_MIRROR_HORZ:
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram;
- m_nt_page[2] = m_nt_ram + 0x400;
- m_nt_page[3] = m_nt_ram + 0x400;
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get();
+ m_nt_page[2] = m_nt_ram.get() + 0x400;
+ m_nt_page[3] = m_nt_ram.get() + 0x400;
break;
case PPU_MIRROR_VERT:
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram;
- m_nt_page[3] = m_nt_ram + 0x400;
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get();
+ m_nt_page[3] = m_nt_ram.get() + 0x400;
break;
case PPU_MIRROR_NONE:
default:
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram + 0x800;
- m_nt_page[3] = m_nt_ram + 0xc00;
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get() + 0x800;
+ m_nt_page[3] = m_nt_ram.get() + 0xc00;
break;
}
}
@@ -274,7 +274,7 @@ void multigam_state::set_videoram_bank( int start, int count, int bank, int bank
/* count determines the size of the area mapped in KB */
for (i = 0; i < count; i++, offset += 0x400)
{
- membank(banknames[i + start])->set_base(m_vram + offset);
+ membank(banknames[i + start])->set_base(m_vram.get() + offset);
}
}
@@ -554,7 +554,7 @@ WRITE8_MEMBER(multigam_state::multigam3_mmc3_rom_switch_w)
case 0x2001: /* enable ram at $6000 */
if (data & 0x80)
{
- membank("bank10")->set_base(m_multigmc_mmc3_6000_ram);
+ membank("bank10")->set_base(m_multigmc_mmc3_6000_ram.get());
}
else
{
@@ -591,7 +591,7 @@ void multigam_state::multigam_init_mmc3(UINT8 *prg_base, int prg_size, int chr_b
// Tom & Jerry in Super Game III enables 6000 ram, but does not read/write it
// however, it expects ROM from 6000 there (code jumps to $6xxx)
- memcpy(m_multigmc_mmc3_6000_ram, dst + 0x6000, 0x2000);
+ memcpy(m_multigmc_mmc3_6000_ram.get(), dst + 0x6000, 0x2000);
memcpy(&dst[0x8000], prg_base + (prg_size - 0x4000), 0x4000);
memcpy(&dst[0xc000], prg_base + (prg_size - 0x4000), 0x4000);
@@ -899,7 +899,7 @@ void multigam_state::supergm3_set_bank()
// VRAM
m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x1fff, "bank1");
m_ppu->space(AS_PROGRAM).install_write_bank(0x0000, 0x1fff, "bank1");
- membank("bank1")->set_base(m_vram);
+ membank("bank1")->set_base(m_vram.get());
if (m_supergm3_chr_bank == 0x40)
set_mirroring(PPU_MIRROR_VERT);
@@ -1158,11 +1158,11 @@ MACHINE_RESET_MEMBER(multigam_state,multigm3)
void multigam_state::machine_start()
{
- m_nt_ram = auto_alloc_array(machine(), UINT8, 0x1000);
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram + 0x800;
- m_nt_page[3] = m_nt_ram + 0xc00;
+ m_nt_ram = std::make_unique<UINT8[]>(0x1000);
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get() + 0x800;
+ m_nt_page[3] = m_nt_ram.get() + 0xc00;
m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(multigam_state::multigam_nt_r),this), write8_delegate(FUNC(multigam_state::multigam_nt_w),this));
m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x1fff, "bank1");
@@ -1171,11 +1171,11 @@ void multigam_state::machine_start()
MACHINE_START_MEMBER(multigam_state,multigm3)
{
- m_nt_ram = auto_alloc_array(machine(), UINT8, 0x1000);
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram + 0x800;
- m_nt_page[3] = m_nt_ram + 0xc00;
+ m_nt_ram = std::make_unique<UINT8[]>(0x1000);
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get() + 0x800;
+ m_nt_page[3] = m_nt_ram.get() + 0xc00;
m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(multigam_state::multigam_nt_r),this), write8_delegate(FUNC(multigam_state::multigam_nt_w),this));
@@ -1193,16 +1193,16 @@ MACHINE_START_MEMBER(multigam_state,multigm3)
MACHINE_START_MEMBER(multigam_state,supergm3)
{
- m_nt_ram = auto_alloc_array(machine(), UINT8, 0x1000);
- m_nt_page[0] = m_nt_ram;
- m_nt_page[1] = m_nt_ram + 0x400;
- m_nt_page[2] = m_nt_ram + 0x800;
- m_nt_page[3] = m_nt_ram + 0xc00;
+ m_nt_ram = std::make_unique<UINT8[]>(0x1000);
+ m_nt_page[0] = m_nt_ram.get();
+ m_nt_page[1] = m_nt_ram.get() + 0x400;
+ m_nt_page[2] = m_nt_ram.get() + 0x800;
+ m_nt_page[3] = m_nt_ram.get() + 0xc00;
m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(multigam_state::multigam_nt_r),this), write8_delegate(FUNC(multigam_state::multigam_nt_w),this));
- m_vram = auto_alloc_array(machine(), UINT8, 0x2000);
- m_multigmc_mmc3_6000_ram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_vram = std::make_unique<UINT8[]>(0x2000);
+ m_multigmc_mmc3_6000_ram = std::make_unique<UINT8[]>(0x2000);
}
static MACHINE_CONFIG_START( multigam, multigam_state )
@@ -1406,7 +1406,7 @@ DRIVER_INIT_MEMBER(multigam_state,multigm3)
multigm3_decrypt(memregion("maincpu")->base(), memregion("maincpu")->bytes(), decode );
multigm3_decrypt(memregion("user1")->base(), memregion("user1")->bytes(), decode );
- m_multigmc_mmc3_6000_ram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_multigmc_mmc3_6000_ram = std::make_unique<UINT8[]>(0x2000);
multigam_switch_prg_rom(space, 0x0, 0x01);
}
diff --git a/src/mame/drivers/mvme350.cpp b/src/mame/drivers/mvme350.cpp
index 2fd9b056f40..64f66ee8418 100644
--- a/src/mame/drivers/mvme350.cpp
+++ b/src/mame/drivers/mvme350.cpp
@@ -155,10 +155,10 @@ mvme350_state(const machine_config &mconfig, device_type type, const char *tag)
{
}
-DECLARE_READ16_MEMBER (vme_a24_r);
-DECLARE_WRITE16_MEMBER (vme_a24_w);
-DECLARE_READ16_MEMBER (vme_a16_r);
-DECLARE_WRITE16_MEMBER (vme_a16_w);
+//DECLARE_READ16_MEMBER (vme_a24_r);
+//DECLARE_WRITE16_MEMBER (vme_a24_w);
+//DECLARE_READ16_MEMBER (vme_a16_r);
+//DECLARE_WRITE16_MEMBER (vme_a16_w);
virtual void machine_start () override;
virtual void machine_reset () override;
protected:
diff --git a/src/mame/drivers/mw18w.cpp b/src/mame/drivers/mw18w.cpp
index edeca7e1a22..1b49a28f3f6 100644
--- a/src/mame/drivers/mw18w.cpp
+++ b/src/mame/drivers/mw18w.cpp
@@ -55,7 +55,7 @@ WRITE8_MEMBER(mw18w_state::mw18w_sound0_w)
// d5: crash sound
// d6-d7: brake sound
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
WRITE8_MEMBER(mw18w_state::mw18w_sound1_w)
@@ -64,7 +64,7 @@ WRITE8_MEMBER(mw18w_state::mw18w_sound1_w)
// d6: bell sound
// d7: backdrop lamp dim control
- output_set_lamp_value(80, data >> 7 & 1);
+ output().set_lamp_value(80, data >> 7 & 1);
}
WRITE8_MEMBER(mw18w_state::mw18w_lamps_w)
@@ -77,7 +77,7 @@ WRITE8_MEMBER(mw18w_state::mw18w_lamps_w)
// refresh lamp status
for (int i = 0; i < 5; i++)
- output_set_lamp_value(col * 10 + i, rows >> i & 1);
+ output().set_lamp_value(col * 10 + i, rows >> i & 1);
/* lamps info:
@@ -142,7 +142,7 @@ WRITE8_MEMBER(mw18w_state::mw18w_led_display_w)
// d4-7: 7442 (BCD to decimal) -> pick digit panel
if ((data & 0xf0) > 0x90) return;
- output_set_digit_value(data >> 4, _7448_map[data & 0xf]);
+ output().set_digit_value(data >> 4, _7448_map[data & 0xf]);
}
WRITE8_MEMBER(mw18w_state::mw18w_irq0_clear_w)
diff --git a/src/mame/drivers/mw8080bw.cpp b/src/mame/drivers/mw8080bw.cpp
index 3dd1d71383c..007071ee3f2 100644
--- a/src/mame/drivers/mw8080bw.cpp
+++ b/src/mame/drivers/mw8080bw.cpp
@@ -300,7 +300,7 @@ WRITE8_MEMBER(mw8080bw_state::seawolf_explosion_lamp_w)
{
UINT8 bits_for_lamp = bits_for_lamps[i];
- output_set_value(lamp_names[i], (data & bits_for_lamp) == bits_for_lamp);
+ output().set_value(lamp_names[i], (data & bits_for_lamp) == bits_for_lamp);
}
}
@@ -310,14 +310,14 @@ WRITE8_MEMBER(mw8080bw_state::seawolf_periscope_lamp_w)
/* the schematics and the connecting diagrams show the
torpedo light order differently, but this order is
confirmed by the software */
- output_set_value("TORP_LAMP_4", (data >> 0) & 0x01);
- output_set_value("TORP_LAMP_3", (data >> 1) & 0x01);
- output_set_value("TORP_LAMP_2", (data >> 2) & 0x01);
- output_set_value("TORP_LAMP_1", (data >> 3) & 0x01);
+ output().set_value("TORP_LAMP_4", (data >> 0) & 0x01);
+ output().set_value("TORP_LAMP_3", (data >> 1) & 0x01);
+ output().set_value("TORP_LAMP_2", (data >> 2) & 0x01);
+ output().set_value("TORP_LAMP_1", (data >> 3) & 0x01);
- output_set_value("READY_LAMP", (data >> 4) & 0x01);
+ output().set_value("READY_LAMP", (data >> 4) & 0x01);
- output_set_value("RELOAD_LAMP", (data >> 5) & 0x01);
+ output().set_value("RELOAD_LAMP", (data >> 5) & 0x01);
}
@@ -896,8 +896,8 @@ MACHINE_START_MEMBER(mw8080bw_state,maze)
WRITE8_MEMBER(mw8080bw_state::maze_coin_counter_w)
{
/* the data is not used, just pulse the counter */
- coin_counter_w(machine(), 0, 0);
- coin_counter_w(machine(), 0, 1);
+ machine().bookkeeping().coin_counter_w(0, 0);
+ machine().bookkeeping().coin_counter_w(0, 1);
}
@@ -2108,7 +2108,7 @@ MACHINE_CONFIG_END
TIMER_DEVICE_CALLBACK_MEMBER(mw8080bw_state::spcenctr_strobe_timer_callback)
{
- output_set_value("STROBE", param && m_spcenctr_strobe_state);
+ output().set_value("STROBE", param && m_spcenctr_strobe_state);
}
@@ -2369,35 +2369,35 @@ READ8_MEMBER(mw8080bw_state::bowler_shift_result_r)
WRITE8_MEMBER(mw8080bw_state::bowler_lights_1_w)
{
- output_set_value("200_LEFT_LIGHT", (data >> 0) & 0x01);
+ output().set_value("200_LEFT_LIGHT", (data >> 0) & 0x01);
- output_set_value("400_LEFT_LIGHT", (data >> 1) & 0x01);
+ output().set_value("400_LEFT_LIGHT", (data >> 1) & 0x01);
- output_set_value("500_LEFT_LIGHT", (data >> 2) & 0x01);
+ output().set_value("500_LEFT_LIGHT", (data >> 2) & 0x01);
- output_set_value("700_LIGHT", (data >> 3) & 0x01);
+ output().set_value("700_LIGHT", (data >> 3) & 0x01);
- output_set_value("500_RIGHT_LIGHT", (data >> 4) & 0x01);
+ output().set_value("500_RIGHT_LIGHT", (data >> 4) & 0x01);
- output_set_value("400_RIGHT_LIGHT", (data >> 5) & 0x01);
+ output().set_value("400_RIGHT_LIGHT", (data >> 5) & 0x01);
- output_set_value("200_RIGHT_LIGHT", (data >> 6) & 0x01);
+ output().set_value("200_RIGHT_LIGHT", (data >> 6) & 0x01);
- output_set_value("X_LEFT_LIGHT", (data >> 7) & 0x01);
- output_set_value("X_RIGHT_LIGHT", (data >> 7) & 0x01);
+ output().set_value("X_LEFT_LIGHT", (data >> 7) & 0x01);
+ output().set_value("X_RIGHT_LIGHT", (data >> 7) & 0x01);
}
WRITE8_MEMBER(mw8080bw_state::bowler_lights_2_w)
{
- output_set_value("REGULATION_GAME_LIGHT", ( data >> 0) & 0x01);
- output_set_value("FLASH_GAME_LIGHT", (~data >> 0) & 0x01);
+ output().set_value("REGULATION_GAME_LIGHT", ( data >> 0) & 0x01);
+ output().set_value("FLASH_GAME_LIGHT", (~data >> 0) & 0x01);
- output_set_value("STRAIGHT_BALL_LIGHT", ( data >> 1) & 0x01);
+ output().set_value("STRAIGHT_BALL_LIGHT", ( data >> 1) & 0x01);
- output_set_value("HOOK_BALL_LIGHT", ( data >> 2) & 0x01);
+ output().set_value("HOOK_BALL_LIGHT", ( data >> 2) & 0x01);
- output_set_value("SELECT_GAME_LIGHT", ( data >> 3) & 0x01);
+ output().set_value("SELECT_GAME_LIGHT", ( data >> 3) & 0x01);
/* D4-D7 are not connected */
}
@@ -2505,7 +2505,7 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::invaders_coin_input_r)
{
UINT32 ret = ioport(INVADERS_COIN_INPUT_PORT_TAG)->read();
- coin_counter_w(machine(), 0, !ret);
+ machine().bookkeeping().coin_counter_w(0, !ret);
return ret;
}
@@ -2712,7 +2712,7 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::blueshrk_coin_input_r)
{
UINT32 ret = ioport(BLUESHRK_COIN_INPUT_PORT_TAG)->read();
- coin_counter_w(machine(), 0, !ret);
+ machine().bookkeeping().coin_counter_w(0, !ret);
return ret;
}
diff --git a/src/mame/drivers/mwsub.cpp b/src/mame/drivers/mwsub.cpp
index 0dd9e3aed4a..348572cda82 100644
--- a/src/mame/drivers/mwsub.cpp
+++ b/src/mame/drivers/mwsub.cpp
@@ -67,7 +67,7 @@ WRITE8_MEMBER(submar_state::submar_motor_w)
// d6: stir water
// d7: n/c
for (int i = 0; i < 8; i++)
- output_set_indexed_value("motor", i, data >> i & 1);
+ output().set_indexed_value("motor", i, data >> i & 1);
}
WRITE8_MEMBER(submar_state::submar_lamp_w)
@@ -81,7 +81,7 @@ WRITE8_MEMBER(submar_state::submar_lamp_w)
// d6: front ship hit
// d7: scenery
for (int i = 0; i < 8; i++)
- output_set_lamp_value(i, data >> i & 1);
+ output().set_lamp_value(i, data >> i & 1);
}
WRITE8_MEMBER(submar_state::submar_solenoid_w)
@@ -89,7 +89,7 @@ WRITE8_MEMBER(submar_state::submar_solenoid_w)
// d0-d4: ship1-5
// d5-d7: n/c
for (int i = 0; i < 8; i++)
- output_set_indexed_value("solenoid", i, data >> i & 1);
+ output().set_indexed_value("solenoid", i, data >> i & 1);
}
WRITE8_MEMBER(submar_state::submar_sound_w)
@@ -111,8 +111,8 @@ WRITE8_MEMBER(submar_state::submar_led_w)
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 };
// 2 digits per write. port 4: time, port 5: score
- output_set_digit_value((offset << 1 & 2) | 0, _7447_map[data >> 4]);
- output_set_digit_value((offset << 1 & 2) | 1, _7447_map[data & 0x0f]);
+ output().set_digit_value((offset << 1 & 2) | 0, _7447_map[data >> 4]);
+ output().set_digit_value((offset << 1 & 2) | 1, _7447_map[data & 0x0f]);
}
WRITE8_MEMBER(submar_state::submar_irq_clear_w)
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 63641ba66e9..071f3034f8f 100644
--- a/src/mame/drivers/mz2500.cpp
+++ b/src/mame/drivers/mz2500.cpp
@@ -93,12 +93,12 @@ public:
floppy_image_device *m_floppy;
- UINT8 *m_main_ram;
+ std::unique_ptr<UINT8[]> m_main_ram;
UINT8 *m_ipl_rom;
UINT8 *m_kanji_rom;
UINT8 *m_kanji2_rom;
- UINT8 *m_pcg_ram;
- UINT8 *m_emm_ram;
+ std::unique_ptr<UINT8[]> m_pcg_ram;
+ std::unique_ptr<UINT8[]> m_emm_ram;
UINT8 *m_dic_rom;
UINT8 *m_phone_rom;
UINT8 *m_iplpro_rom;
@@ -216,7 +216,6 @@ public:
DECLARE_WRITE8_MEMBER(mz2500_portc_w);
DECLARE_WRITE8_MEMBER(mz2500_pio1_porta_w);
DECLARE_READ8_MEMBER(mz2500_pio1_porta_r);
- DECLARE_READ8_MEMBER(mz2500_pio1_portb_r);
DECLARE_READ8_MEMBER(opn_porta_r);
DECLARE_WRITE8_MEMBER(opn_porta_w);
DECLARE_WRITE_LINE_MEMBER(pit8253_clk0_irq);
@@ -292,7 +291,7 @@ void mz2500_state::mz2500_draw_pixel(bitmap_ind16 &bitmap,int x,int y,UINT16 pe
void mz2500_state::draw_80x25(bitmap_ind16 &bitmap,const rectangle &cliprect,UINT16 map_addr)
{
- UINT8 *vram = m_main_ram; // TODO
+ UINT8 *vram = m_main_ram.get(); // TODO
int x,y,count,xi,yi;
UINT8 *gfx_data;
UINT8 y_step;
@@ -317,7 +316,7 @@ void mz2500_state::draw_80x25(bitmap_ind16 &bitmap,const rectangle &cliprect,UIN
int inv_col = (attr & 0x40) >> 6;
if(gfx_sel & 8) // Xevious, PCG 8 colors have priority above kanji roms
- gfx_data = m_pcg_ram;
+ gfx_data = m_pcg_ram.get();
else if(gfx_sel == 0x80)
{
gfx_data = m_kanji_rom;
@@ -335,7 +334,7 @@ void mz2500_state::draw_80x25(bitmap_ind16 &bitmap,const rectangle &cliprect,UIN
}
else
{
- gfx_data = m_pcg_ram;
+ gfx_data = m_pcg_ram.get();
}
for(yi=0;yi<8*y_step;yi++)
@@ -381,7 +380,7 @@ void mz2500_state::draw_80x25(bitmap_ind16 &bitmap,const rectangle &cliprect,UIN
void mz2500_state::draw_40x25(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,UINT16 map_addr)
{
- UINT8 *vram = m_main_ram; // TODO
+ UINT8 *vram = m_main_ram.get(); // TODO
int x,y,count,xi,yi;
UINT8 *gfx_data;
UINT8 y_step;
@@ -407,7 +406,7 @@ void mz2500_state::draw_40x25(bitmap_ind16 &bitmap,const rectangle &cliprect,int
int inv_col = (attr & 0x40) >> 6;
if(gfx_sel & 8) // Xevious, PCG 8 colors have priority above kanji roms
- gfx_data = m_pcg_ram;
+ gfx_data = m_pcg_ram.get();
else if(gfx_sel == 0x80)
{
gfx_data = m_kanji_rom;
@@ -425,7 +424,7 @@ void mz2500_state::draw_40x25(bitmap_ind16 &bitmap,const rectangle &cliprect,int
}
else
{
- gfx_data = m_pcg_ram;
+ gfx_data = m_pcg_ram.get();
}
for(yi=0;yi<8*y_step;yi++)
@@ -472,7 +471,7 @@ void mz2500_state::draw_40x25(bitmap_ind16 &bitmap,const rectangle &cliprect,int
void mz2500_state::draw_cg4_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri)
{
UINT32 count;
- UINT8 *vram = m_main_ram; // TODO
+ UINT8 *vram = m_main_ram.get(); // TODO
UINT8 pen,pen_bit[2];
int x,y,xi,pen_i;
int res_x,res_y;
@@ -513,7 +512,7 @@ void mz2500_state::draw_cg4_screen(bitmap_ind16 &bitmap,const rectangle &cliprec
void mz2500_state::draw_cg16_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,int x_size,int pri)
{
UINT32 count;
- UINT8 *vram = m_main_ram; //TODO
+ UINT8 *vram = m_main_ram.get(); //TODO
UINT8 pen,pen_bit[4];
int x,y,xi,pen_i;
UINT32 wa_reg;
@@ -570,7 +569,7 @@ void mz2500_state::draw_cg16_screen(bitmap_ind16 &bitmap,const rectangle &clipre
void mz2500_state::draw_cg256_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,int pri)
{
UINT32 count;
- UINT8 *vram = m_main_ram;
+ UINT8 *vram = m_main_ram.get();
UINT8 pen,pen_bit[8];
int x,y,xi,pen_i;
UINT32 wa_reg;
@@ -801,7 +800,7 @@ UINT8 mz2500_state::mz2500_cg_latch_compare()
UINT8 mz2500_state::mz2500_ram_read(UINT16 offset, UINT8 bank_num)
{
- UINT8 *ram = m_main_ram; // TODO
+ UINT8 *ram = m_main_ram.get(); // TODO
UINT8 cur_bank = m_bank_val[bank_num];
switch(cur_bank)
@@ -859,7 +858,7 @@ UINT8 mz2500_state::mz2500_ram_read(UINT16 offset, UINT8 bank_num)
void mz2500_state::mz2500_ram_write(UINT16 offset, UINT8 data, UINT8 bank_num)
{
- UINT8 *ram = m_main_ram; // TODO
+ UINT8 *ram = m_main_ram.get(); // TODO
UINT8 cur_bank = m_bank_val[bank_num];
// if(cur_bank >= 0x30 && cur_bank <= 0x33)
@@ -1361,7 +1360,7 @@ WRITE8_MEMBER(mz2500_state::mz2500_cg_data_w)
if((m_cg_reg_index & 0x1f) == 0x05 && (m_cg_reg[0x05] & 0xc0) == 0x80) //clear bitmap buffer
{
UINT32 i;
- UINT8 *vram = m_main_ram; // TODO
+ UINT8 *vram = m_main_ram.get(); // TODO
UINT32 layer_bank;
layer_bank = (m_cg_reg[0x0e] & 0x80) ? 0x10000 : 0x00000;
@@ -1756,23 +1755,23 @@ static const gfx_layout mz2500_pcg_layout_3bpp =
void mz2500_state::machine_start()
{
/* TODO: main RAM actually needs to be splitted */
- m_main_ram = auto_alloc_array_clear(machine(), UINT8, 0x80000);
- m_pcg_ram = auto_alloc_array_clear(machine(), UINT8, 0x2000);
+ m_main_ram = make_unique_clear<UINT8[]>(0x80000);
+ m_pcg_ram = make_unique_clear<UINT8[]>(0x2000);
m_ipl_rom = memregion("ipl")->base();
m_kanji_rom = memregion("kanji")->base();
m_kanji2_rom = memregion("kanji2")->base();
- m_emm_ram = auto_alloc_array_clear(machine(), UINT8, 0x100000);
+ m_emm_ram = make_unique_clear<UINT8[]>(0x100000);
m_dic_rom = memregion("dictionary")->base();
m_phone_rom = memregion("phone")->base();
m_iplpro_rom = memregion("iplpro")->base();
- save_pointer(NAME(m_main_ram), 0x80000);
- save_pointer(NAME(m_pcg_ram), 0x2000);
- save_pointer(NAME(m_emm_ram), 0x100000);
+ save_pointer(NAME(m_main_ram.get()), 0x80000);
+ save_pointer(NAME(m_pcg_ram.get()), 0x2000);
+ save_pointer(NAME(m_emm_ram.get()), 0x100000);
/* TODO: gfx[4] crashes as per now */
- m_gfxdecode->set_gfx(3, global_alloc(gfx_element(m_palette, mz2500_pcg_layout_1bpp, (UINT8 *)m_pcg_ram, 0, 0x10, 0)));
- m_gfxdecode->set_gfx(4, global_alloc(gfx_element(m_palette, mz2500_pcg_layout_3bpp, (UINT8 *)m_pcg_ram, 0, 4, 0)));
+ m_gfxdecode->set_gfx(3, std::make_unique<gfx_element>(m_palette, mz2500_pcg_layout_1bpp, m_pcg_ram.get(), 0, 0x10, 0));
+ m_gfxdecode->set_gfx(4, std::make_unique<gfx_element>(m_palette, mz2500_pcg_layout_3bpp, m_pcg_ram.get(), 0, 4, 0));
}
void mz2500_state::machine_reset()
@@ -1807,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;
@@ -2141,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 d81e75d8510..308148718cf 100644
--- a/src/mame/drivers/mz3500.cpp
+++ b/src/mame/drivers/mz3500.cpp
@@ -67,8 +67,8 @@ public:
UINT8 *m_ipl_rom;
UINT8 *m_basic_rom;
- UINT8 *m_work_ram;
- UINT8 *m_shared_ram;
+ std::unique_ptr<UINT8[]> m_work_ram;
+ std::unique_ptr<UINT8[]> m_shared_ram;
UINT8 *m_char_rom;
UINT8 m_ma,m_mo,m_ms,m_me2,m_me1;
@@ -741,8 +741,8 @@ void mz3500_state::machine_start()
m_ipl_rom = memregion("ipl")->base();
m_basic_rom = memregion("basic")->base();
m_char_rom = memregion("gfx1")->base();
- m_work_ram = auto_alloc_array_clear(machine(), UINT8, 0x40000);
- m_shared_ram = auto_alloc_array_clear(machine(), UINT8, 0x800);
+ m_work_ram = make_unique_clear<UINT8[]>(0x40000);
+ m_shared_ram = make_unique_clear<UINT8[]>(0x800);
static const char *const m_fddnames[4] = { "upd765a:0", "upd765a:1", "upd765a:2", "upd765a:3"};
@@ -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/namcofl.cpp b/src/mame/drivers/namcofl.cpp
index fac0b6a60dc..7291f72ff69 100644
--- a/src/mame/drivers/namcofl.cpp
+++ b/src/mame/drivers/namcofl.cpp
@@ -188,13 +188,13 @@ WRITE32_MEMBER(namcofl_state::namcofl_sysreg_w)
{
if (data == 0) // RAM at 00000000, ROM at 10000000
{
- membank("bank1")->set_base(m_workram );
+ membank("bank1")->set_base(m_workram.get());
membank("bank2")->set_base(memregion("maincpu")->base() );
}
else // ROM at 00000000, RAM at 10000000
{
membank("bank1")->set_base(memregion("maincpu")->base() );
- membank("bank2")->set_base(m_workram );
+ membank("bank2")->set_base(m_workram.get());
}
}
}
@@ -571,9 +571,9 @@ MACHINE_RESET_MEMBER(namcofl_state,namcofl)
machine().scheduler().timer_set(m_screen->time_until_pos(m_screen->visible_area().max_y + 1), timer_expired_delegate(FUNC(namcofl_state::vblank_interrupt_callback),this));
membank("bank1")->set_base(memregion("maincpu")->base() );
- membank("bank2")->set_base(m_workram );
+ membank("bank2")->set_base(m_workram.get() );
- memset(m_workram, 0x00, 0x100000);
+ memset(m_workram.get(), 0x00, 0x100000);
}
@@ -790,10 +790,10 @@ ROM_END
void namcofl_state::common_init()
{
- m_workram = auto_alloc_array(machine(), UINT32, 0x100000/4);
+ m_workram = std::make_unique<UINT32[]>(0x100000/4);
membank("bank1")->set_base(memregion("maincpu")->base() );
- membank("bank2")->set_base(m_workram );
+ membank("bank2")->set_base(m_workram.get());
}
DRIVER_INIT_MEMBER(namcofl_state,speedrcr)
diff --git a/src/mame/drivers/namcoic.cpp b/src/mame/drivers/namcoic.cpp
index 8790639cfe7..2044ca756a9 100644
--- a/src/mame/drivers/namcoic.cpp
+++ b/src/mame/drivers/namcoic.cpp
@@ -22,7 +22,7 @@ static struct
* 0x30/2 color
*/
tilemap_t *tmap[6];
- UINT16 *videoram;
+ std::unique_ptr<UINT16[]> videoram;
int gfxbank;
UINT8 *maskBaseAddr;
void (*cb)( running_machine &machine, UINT16 code, int *gfx, int *mask);
@@ -59,7 +59,7 @@ void namcos2_shared_state::namco_tilemap_init( int gfxbank, void *maskBaseAddr,
mTilemapInfo.gfxbank = gfxbank;
mTilemapInfo.maskBaseAddr = (UINT8 *)maskBaseAddr;
mTilemapInfo.cb = cb;
- mTilemapInfo.videoram = auto_alloc_array(machine(), UINT16, 0x10000 );
+ mTilemapInfo.videoram = std::make_unique<UINT16[]>( 0x10000 );
/* four scrolling tilemaps */
mTilemapInfo.tmap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,64);
diff --git a/src/mame/drivers/namcops2.cpp b/src/mame/drivers/namcops2.cpp
index c82d30c59ff..a0eec46f766 100644
--- a/src/mame/drivers/namcops2.cpp
+++ b/src/mame/drivers/namcops2.cpp
@@ -1369,8 +1369,11 @@ ROM_START( rrvac )
ROM_LOAD( "rrv3vera.ic002", 0x000000, 0x800000, CRC(dd20c4a2) SHA1(07bddaac958ac62d9fc29671fc83bd1e3b27f4b8) )
ROM_LOAD( "rrv3vera_spr.ic002", 0x800000, 0x040000, CRC(712e0e9a) SHA1(d396aaf918036ff7f909a84daefe8f651fdf9b05) )
- ROM_REGION(0x4010, "jvsio", 0) // Namco "FCA" JVS I/O board PIC16F84 code (see namcos23.c for FCA details)
+ ROM_REGION(0xc000, "jvsio", 0) // Namco "FCA" JVS I/O board PIC16F84 code (see namcos23.c for FCA details)
ROM_LOAD( "fcap11.ic2", 0x000000, 0x004010, CRC(1b2592ce) SHA1(a1a487361053af564f6ec67e545413e370a3b38c) )
+ // Fujitsu MB90F574 code, partial dumps, only last 48KB of 256KB flash was extracted
+ ROM_LOAD( "fcaf11.ic4", 0x000000, 0x00c000, BAD_DUMP CRC(9794f16b) SHA1(94e1c036a6d23d39b2ad69dd1ad2cfa6163287e0) ) // almost good dump, all JVS related code and data is in place
+ ROM_LOAD( "fcb1_io-0b.ic4", 0x000000, 0x00c000, BAD_DUMP CRC(5e25b73f) SHA1(fa805a422ff8793989b0ce901cc868ec1a87c7ac) ) // most JVS handling code is in undumped area
ROM_REGION(0x80000, "steering", 0) // Steering I/O board MB90242A code (see namcos23.c for steering board details)
ROM_LOAD( "rrv3_str-0a.ic16", 0x000000, 0x080000, CRC(df8b6cac) SHA1(d45e150678218084925673e1d77edefc04135035) )
@@ -1387,8 +1390,11 @@ ROM_START( rrvac2 )
ROM_LOAD( "rrv2vera.ic002", 0x000000, 0x800000, CRC(4666f6b5) SHA1(974ed4f6c5869ecf879c0d3540db6ea576225c04) )
ROM_LOAD( "rrv2vera_spr.ic002", 0x800000, 0x040000, CRC(8d98ef04) SHA1(3f33046a8283b918226301fcf5538729be84bfbe) )
- ROM_REGION(0x4010, "jvsio", 0) // Namco "FCA" JVS I/O board PIC16F84 code (see namcos23.c for FCA details)
+ ROM_REGION(0xc000, "jvsio", 0) // Namco "FCA" JVS I/O board PIC16F84 code (see namcos23.c for FCA details)
ROM_LOAD( "fcap11.ic2", 0x000000, 0x004010, CRC(1b2592ce) SHA1(a1a487361053af564f6ec67e545413e370a3b38c) )
+ // Fujitsu MB90F574 code, partial dumps, only last 48KB of 256KB flash was extracted
+ ROM_LOAD( "fcaf11.ic4", 0x000000, 0x00c000, BAD_DUMP CRC(9794f16b) SHA1(94e1c036a6d23d39b2ad69dd1ad2cfa6163287e0) ) // almost good dump, all JVS related code and data is in place
+ ROM_LOAD( "fcb1_io-0b.ic4", 0x000000, 0x00c000, BAD_DUMP CRC(5e25b73f) SHA1(fa805a422ff8793989b0ce901cc868ec1a87c7ac) ) // most JVS handling code is in undumped area
ROM_REGION(0x80000, "steering", 0) // Steering I/O board MB90242A code (see namcos23.c for steering board details)
ROM_LOAD( "rrv3_str-0a.ic16", 0x000000, 0x080000, CRC(df8b6cac) SHA1(d45e150678218084925673e1d77edefc04135035) )
@@ -1406,8 +1412,11 @@ ROM_START( rrvac1 )
ROM_LOAD( "rrv1vera.ic002", 0x000000, 0x800000, CRC(e28bb0be) SHA1(9683ddc228e9aedd338cf2eb4d4373faeaea5b75) )
ROM_LOAD( "rrv1vera_spr.ic002", 0x800000, 0x040000, CRC(81c370b7) SHA1(7693c03b544c79fa3b6e536abb32ad34cf14dfbf) )
- ROM_REGION(0x4010, "jvsio", 0) // Namco "FCA" JVS I/O board PIC16F84 code (see namcos23.c for FCA details)
+ ROM_REGION(0xc000, "jvsio", 0) // Namco "FCA" JVS I/O board PIC16F84 code (see namcos23.c for FCA details)
ROM_LOAD( "fcap11.ic2", 0x000000, 0x004010, CRC(1b2592ce) SHA1(a1a487361053af564f6ec67e545413e370a3b38c) )
+ // Fujitsu MB90F574 code, partial dumps, only last 48KB of 256KB flash was extracted
+ ROM_LOAD( "fcaf11.ic4", 0x000000, 0x00c000, BAD_DUMP CRC(9794f16b) SHA1(94e1c036a6d23d39b2ad69dd1ad2cfa6163287e0) ) // almost good dump, all JVS related code and data is in place
+ ROM_LOAD( "fcb1_io-0b.ic4", 0x000000, 0x00c000, BAD_DUMP CRC(5e25b73f) SHA1(fa805a422ff8793989b0ce901cc868ec1a87c7ac) ) // most JVS handling code is in undumped area
ROM_REGION(0x80000, "steering", 0) // Steering I/O board MB90242A code (see namcos23.c for steering board details)
ROM_LOAD( "rrv3_str-0a.ic16", 0x000000, 0x080000, CRC(df8b6cac) SHA1(d45e150678218084925673e1d77edefc04135035) )
diff --git a/src/mame/drivers/namcos1.cpp b/src/mame/drivers/namcos1.cpp
index af70533bc20..4fb045627b0 100644
--- a/src/mame/drivers/namcos1.cpp
+++ b/src/mame/drivers/namcos1.cpp
@@ -360,9 +360,9 @@ READ8_MEMBER(namcos1_state::dsw_r)
WRITE8_MEMBER(namcos1_state::coin_w)
{
- coin_lockout_global_w(machine(), ~data & 1);
- coin_counter_w(machine(), 0, data & 2);
- coin_counter_w(machine(), 1, data & 4);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 2);
+ machine().bookkeeping().coin_counter_w(1, data & 4);
}
void namcos1_state::update_DACs()
diff --git a/src/mame/drivers/namcos10.cpp b/src/mame/drivers/namcos10.cpp
index 8d7607972a7..8c39ab42bd8 100644
--- a/src/mame/drivers/namcos10.cpp
+++ b/src/mame/drivers/namcos10.cpp
@@ -702,7 +702,7 @@ static void decrypt_bios( running_machine &machine, const char *regionName, int
DRIVER_INIT_MEMBER(namcos10_state,mrdrilr2)
{
- int regSize = machine().root_device().memregion("user2")->bytes();
+ int regSize = machine().root_device().memregion("maincpu:rom")->bytes();
decrypt_bios(machine(), "maincpu:rom", 0, regSize, 0xc, 0xd, 0xf, 0xe, 0xb, 0xa, 0x9, 0x8, 0x7, 0x6, 0x4, 0x1, 0x2, 0x5, 0x0, 0x3);
}
diff --git a/src/mame/drivers/namcos11.cpp b/src/mame/drivers/namcos11.cpp
index 2f3426fb536..4942c555e69 100644
--- a/src/mame/drivers/namcos11.cpp
+++ b/src/mame/drivers/namcos11.cpp
@@ -381,10 +381,10 @@ WRITE16_MEMBER(namcos11_state::lightgun_w)
switch( offset )
{
case 0:
- output_set_value( "led0", !( data & 0x08 ) );
- output_set_value( "led1", !( data & 0x04 ) );
- output_set_value( "recoil0", !( data & 0x02 ) );
- output_set_value( "recoil1", !( data & 0x01 ) );
+ output().set_value( "led0", !( data & 0x08 ) );
+ output().set_value( "led1", !( data & 0x04 ) );
+ output().set_value( "recoil0", !( data & 0x02 ) );
+ output().set_value( "recoil1", !( data & 0x01 ) );
verboselog(1, "lightgun_w: outputs (%08x %08x)\n", data, mem_mask );
break;
diff --git a/src/mame/drivers/namcos12.cpp b/src/mame/drivers/namcos12.cpp
index 3fe46e15972..67f164a8835 100644
--- a/src/mame/drivers/namcos12.cpp
+++ b/src/mame/drivers/namcos12.cpp
@@ -1146,7 +1146,6 @@ public:
DECLARE_READ16_MEMBER(s12_mcu_jvs_p8_r);
DECLARE_READ16_MEMBER(s12_mcu_pa_r);
DECLARE_WRITE16_MEMBER(s12_mcu_pa_w);
- DECLARE_READ16_MEMBER(s12_mcu_rtc_r);
DECLARE_READ16_MEMBER(s12_mcu_portB_r);
DECLARE_WRITE16_MEMBER(s12_mcu_portB_w);
DECLARE_READ16_MEMBER(s12_mcu_gun_h_r);
@@ -1323,13 +1322,13 @@ WRITE16_MEMBER(namcos12_state::system11gun_w)
/* blowback 1 */
/* blowback 2 */
/* Note: output label has been changed for the Engrish Impaired ;-) */
- output_set_value("Player1_Gun_Recoil", (~data & 0x02)>>1);
- output_set_value("Player2_Gun_Recoil", (~data & 0x01));
+ output().set_value("Player1_Gun_Recoil", (~data & 0x02)>>1);
+ output().set_value("Player2_Gun_Recoil", (~data & 0x01));
/* start 1 */
- output_set_value("P2_Start_lamp", (~data & 0x08)>>3);
+ output().set_value("P2_Start_lamp", (~data & 0x08)>>3);
/* start 2 */
- output_set_value("P2_Start_lamp", (~data & 0x04)>>2);
+ output().set_value("P2_Start_lamp", (~data & 0x04)>>2);
verboselog(1, "system11gun_w: outputs (%08x %08x)\n", data, mem_mask );
break;
diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp
index 1b84d0ca76f..41410fcbf59 100644
--- a/src/mame/drivers/namcos2.cpp
+++ b/src/mame/drivers/namcos2.cpp
@@ -473,57 +473,57 @@ $a00000 checks have been seen on the Final Lap boards.
/* 68000/6809/63705 Shared memory area - DUAL PORT Memory */
/*************************************************************/
-static void GollyGhostUpdateLED_c4( int data )
+void namcos2_state::GollyGhostUpdateLED_c4( int data )
{
- output_set_value("zip100", data >> 4);
- output_set_value("zip10", data & 0x0f);
+ output().set_value("zip100", data >> 4);
+ output().set_value("zip10", data & 0x0f);
}
-static void GollyGhostUpdateLED_c6( int data )
+void namcos2_state::GollyGhostUpdateLED_c6( int data )
{
- output_set_value("zip1", data >> 4);
- output_set_value("time10", data & 0x0f);
+ output().set_value("zip1", data >> 4);
+ output().set_value("time10", data & 0x0f);
}
-static void GollyGhostUpdateLED_c8( int data )
+void namcos2_state::GollyGhostUpdateLED_c8( int data )
{
- output_set_value("time1", data >> 4);
- output_set_value("zap100", data & 0x0f);
+ output().set_value("time1", data >> 4);
+ output().set_value("zap100", data & 0x0f);
}
-static void GollyGhostUpdateLED_ca( int data )
+void namcos2_state::GollyGhostUpdateLED_ca( int data )
{
- output_set_value("zap10", data >> 4);
- output_set_value("zap1", data & 0x0f);
+ output().set_value("zap10", data >> 4);
+ output().set_value("zap1", data & 0x0f);
}
-static void GollyGhostUpdateDiorama_c0( int data )
+void namcos2_state::GollyGhostUpdateDiorama_c0( int data )
{
if (data & 0x80)
{
- output_set_value("dollhouse", 1); /* diorama is lit up */
+ output().set_value("dollhouse", 1); /* diorama is lit up */
/* dollhouse controller; solenoids control physical components */
- output_set_value("toybox", (data >> 0) & 1);
- output_set_value("bathroom", (data >> 1) & 1);
- output_set_value("bureau", (data >> 2) & 1);
- output_set_value("refrigerator",(data >> 3) & 1);
- output_set_value("porch", (data >> 4) & 1);
+ output().set_value("toybox", (data >> 0) & 1);
+ output().set_value("bathroom", (data >> 1) & 1);
+ output().set_value("bureau", (data >> 2) & 1);
+ output().set_value("refrigerator",(data >> 3) & 1);
+ output().set_value("porch", (data >> 4) & 1);
/* gun recoils */
- output_set_value("Player1_Gun_Recoil",(data & 0x20)>>5);
- output_set_value("Player2_Gun_Recoil",(data & 0x40)>>6);
+ output().set_value("Player1_Gun_Recoil",(data & 0x20)>>5);
+ output().set_value("Player2_Gun_Recoil",(data & 0x40)>>6);
}
else
{
- output_set_value("dollhouse",0);
- output_set_value("toybox", 0);
- output_set_value("bathroom", 0);
- output_set_value("bureau", 0);
- output_set_value("refrigerator", 0);
- output_set_value("porch", 0);
- output_set_value("Player1_Gun_Recoil",0);
- output_set_value("Player2_Gun_Recoil",0);
+ output().set_value("dollhouse",0);
+ output().set_value("toybox", 0);
+ output().set_value("bathroom", 0);
+ output().set_value("bureau", 0);
+ output().set_value("refrigerator", 0);
+ output().set_value("porch", 0);
+ output().set_value("Player1_Gun_Recoil",0);
+ output().set_value("Player2_Gun_Recoil",0);
}
}
@@ -2809,12 +2809,12 @@ ROM_START( finallapjc )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c1", 0x080000, CRC(b0efec87) SHA1(6d042f35942c2bdbf5aeb31358d3837ee9c8e5fa) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c2", 0x100000, CRC(263b8e31) SHA1(e2665edd89f7bb8c699e61df6de6a2e8e0698092) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c3", 0x180000, CRC(c2c56743) SHA1(3f338599ffd2e13452cdc3dbf3697fd8aa04bcd2) )
- NAMCOS2_GFXROM_LOAD_128K( "fl2-c4", 0x200000, CRC(83c77a50) SHA1(a3c19de25819586bdecae46326836090e80a92ee) )
+ NAMCOS2_GFXROM_LOAD_128K( "fl1-c4", 0x200000, CRC(cdc1de2e) SHA1(701dcc4fc25e7b6118947a5accabd43c0475ebe9) ) // Japan specific (was labeled fl2 - seems like fl1 is correct, fl2 is the english version?)
NAMCOS2_GFXROM_LOAD_128K( "fl1-c5", 0x280000, CRC(ab89da77) SHA1(5cbead4289269a832c0d44d0ded79b58fcc4cc17) )
- NAMCOS2_GFXROM_LOAD_128K( "fl2-c6", 0x300000, CRC(239bd9a0) SHA1(729abe89bea31b4e21161c69579df775b1cba6fe) )
+ NAMCOS2_GFXROM_LOAD_128K( "fl1-c6", 0x300000, CRC(8e78a3c3) SHA1(d1cd7fad038d52430f933b3ee2440554d2aeade9) ) // Japan specific (was labeled fl2 - seems like fl1 is correct, fl2 is the english version?)
ROM_REGION( 0x080000, "gfx4", 0 ) /* Mask shape */
- NAMCOS2_GFXROM_LOAD_128K( "fl2-sha", 0x000000, CRC(5fda0b6d) SHA1(92c0410e159977ea73a8e8c0cb1321c3056f6c2f) )
+ NAMCOS2_GFXROM_LOAD_128K( "fl1_sha.bin", 0x000000, CRC(b7e1c7a3) SHA1(b82f9b340d95b80a12286647adba8c139b4d081a) )
ROM_REGION16_BE( 0x200000, "data_rom", ROMREGION_ERASEFF ) /* Shared data roms */
/* No DAT files present in ZIP archive */
@@ -2864,9 +2864,9 @@ ROM_START( finallapjb )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c1", 0x080000, CRC(b0efec87) SHA1(6d042f35942c2bdbf5aeb31358d3837ee9c8e5fa) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c2", 0x100000, CRC(263b8e31) SHA1(e2665edd89f7bb8c699e61df6de6a2e8e0698092) )
NAMCOS2_GFXROM_LOAD_128K( "fl1-c3", 0x180000, CRC(c2c56743) SHA1(3f338599ffd2e13452cdc3dbf3697fd8aa04bcd2) )
- NAMCOS2_GFXROM_LOAD_128K( "fl2-c4", 0x200000, CRC(cdc1de2e) SHA1(701dcc4fc25e7b6118947a5accabd43c0475ebe9) )
+ NAMCOS2_GFXROM_LOAD_128K( "fl1-c4", 0x200000, CRC(cdc1de2e) SHA1(701dcc4fc25e7b6118947a5accabd43c0475ebe9) ) // Japan specific (was labeled fl2 - seems like fl1 is correct, fl2 is the english version?)
NAMCOS2_GFXROM_LOAD_128K( "fl1-c5", 0x280000, CRC(ab89da77) SHA1(5cbead4289269a832c0d44d0ded79b58fcc4cc17) )
- NAMCOS2_GFXROM_LOAD_128K( "fl2-c6", 0x300000, CRC(8e78a3c3) SHA1(d1cd7fad038d52430f933b3ee2440554d2aeade9) )
+ NAMCOS2_GFXROM_LOAD_128K( "fl1-c6", 0x300000, CRC(8e78a3c3) SHA1(d1cd7fad038d52430f933b3ee2440554d2aeade9) ) // Japan specific (was labeled fl2 - seems like fl1 is correct, fl2 is the english version?)
ROM_REGION( 0x080000, "gfx4", 0 ) /* Mask shape */
NAMCOS2_GFXROM_LOAD_128K( "fl1_sha.bin", 0x000000, CRC(b7e1c7a3) SHA1(b82f9b340d95b80a12286647adba8c139b4d081a) )
@@ -2973,18 +2973,19 @@ ROM_START( finalap2j )
ROM_LOAD( "fl2obj5", 0x300000, 0x80000, CRC(d74ae0d3) SHA1(96c9798378da7bdc127ed7d02a4dd14dfd142550) )
ROM_LOAD( "fl2obj7", 0x380000, 0x80000, CRC(5ca68c93) SHA1(fa326992338843ccfa458a5b85ba58537da666d0) )
+ // The Japanese version should not be using the same ROMs as the World version here, causes corrupt text in attract mode should probably be fls1
ROM_REGION( 0x200000, "gfx2", 0 ) /* Tiles */
- ROM_LOAD( "fls2chr0", 0x000000, 0x40000, CRC(7bbda499) SHA1(cf6ff072a40063cbe41eae1f60b29447a0020926) )
- ROM_LOAD( "fls2chr1", 0x040000, 0x40000, CRC(ac8940e5) SHA1(449687d38cf830445df713ed4d675ed94ca5b375) )
- ROM_LOAD( "fls2chr2", 0x080000, 0x40000, CRC(1756173d) SHA1(c912163979098387aea9a0580e9ca55c1f7275f3) )
- ROM_LOAD( "fls2chr3", 0x0c0000, 0x40000, CRC(69032785) SHA1(cfcd12bea730f724444188c206adcdb5e755eb7d) )
- ROM_LOAD( "fls2chr4", 0x100000, 0x40000, CRC(8216cf42) SHA1(79820435584d769b63649b554574486dbcd6f468) )
- ROM_LOAD( "fls2chr5", 0x140000, 0x40000, CRC(dc3e8e1c) SHA1(a7968cfa0ca2639364507b42526f10cf1b2000f4) )
- ROM_LOAD( "fls2chr6", 0x180000, 0x40000, CRC(1ef4bdde) SHA1(ceb36c021450efa4cb0fee278fa0b9d65f7d1f05) )
- ROM_LOAD( "fls2chr7", 0x1c0000, 0x40000, CRC(53dafcde) SHA1(f9d9460349b34bda95b8c206af7ce2347c951214) )
+ ROM_LOAD( "fls2chr0", 0x000000, 0x40000, BAD_DUMP CRC(7bbda499) SHA1(cf6ff072a40063cbe41eae1f60b29447a0020926) )
+ ROM_LOAD( "fls2chr1", 0x040000, 0x40000, BAD_DUMP CRC(ac8940e5) SHA1(449687d38cf830445df713ed4d675ed94ca5b375) )
+ ROM_LOAD( "fls2chr2", 0x080000, 0x40000, BAD_DUMP CRC(1756173d) SHA1(c912163979098387aea9a0580e9ca55c1f7275f3) )
+ ROM_LOAD( "fls2chr3", 0x0c0000, 0x40000, BAD_DUMP CRC(69032785) SHA1(cfcd12bea730f724444188c206adcdb5e755eb7d) )
+ ROM_LOAD( "fls2chr4", 0x100000, 0x40000, BAD_DUMP CRC(8216cf42) SHA1(79820435584d769b63649b554574486dbcd6f468) )
+ ROM_LOAD( "fls2chr5", 0x140000, 0x40000, BAD_DUMP CRC(dc3e8e1c) SHA1(a7968cfa0ca2639364507b42526f10cf1b2000f4) )
+ ROM_LOAD( "fls2chr6", 0x180000, 0x40000, BAD_DUMP CRC(1ef4bdde) SHA1(ceb36c021450efa4cb0fee278fa0b9d65f7d1f05) )
+ ROM_LOAD( "fls2chr7", 0x1c0000, 0x40000, BAD_DUMP CRC(53dafcde) SHA1(f9d9460349b34bda95b8c206af7ce2347c951214) )
ROM_REGION( 0x080000, "gfx4", 0 ) /* Mask shape */
- NAMCOS2_GFXROM_LOAD_256K( "fls2sha", 0x000000, CRC(f7b40a85) SHA1(a458a1cc0dae757fe8a15cb5f5ae46d3c033df00) )
+ NAMCOS2_GFXROM_LOAD_256K( "fls2sha", 0x000000, BAD_DUMP CRC(f7b40a85) SHA1(a458a1cc0dae757fe8a15cb5f5ae46d3c033df00) )
ROM_REGION16_BE( 0x200000, "data_rom", 0 ) /* Shared data roms */
NAMCOS2_DATA_LOAD_E_256K( "fls2dat0", 0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp
index 819d139dfbc..4a9b4f51038 100644
--- a/src/mame/drivers/namcos21.cpp
+++ b/src/mame/drivers/namcos21.cpp
@@ -811,7 +811,7 @@ int namcos21_state::init_dsp()
pMem[0x8000] = 0xFF80;
pMem[0x8001] = 0x0000;
- m_mpDspState = auto_alloc_clear(machine(), dsp_state);
+ m_mpDspState = make_unique_clear<dsp_state>();
return 0;
}
@@ -2448,7 +2448,7 @@ ROM_END
void namcos21_state::init(int game_type)
{
m_gametype = game_type;
- m_pointram = auto_alloc_array(machine(), UINT8, PTRAM_SIZE);
+ m_pointram = std::make_unique<UINT8[]>(PTRAM_SIZE);
init_dsp();
m_mbNeedsKickstart = 20;
if( game_type==NAMCOS21_CYBERSLED )
@@ -2464,10 +2464,10 @@ DRIVER_INIT_MEMBER(namcos21_state,winrun)
pMem[pc++] = 0xff80; /* b */
pMem[pc++] = 0;
- m_winrun_dspcomram = auto_alloc_array(machine(), UINT16, 0x1000*2);
+ m_winrun_dspcomram = std::make_unique<UINT16[]>(0x1000*2);
m_gametype = NAMCOS21_WINRUN91;
- m_pointram = auto_alloc_array(machine(), UINT8, PTRAM_SIZE);
+ m_pointram = std::make_unique<UINT8[]>(PTRAM_SIZE);
m_pointram_idx = 0;
m_mbNeedsKickstart = 0;
}
@@ -2505,9 +2505,9 @@ DRIVER_INIT_MEMBER(namcos21_state,driveyes)
int pc = 0;
pMem[pc++] = 0xff80; /* b */
pMem[pc++] = 0;
- m_winrun_dspcomram = auto_alloc_array(machine(), UINT16, 0x1000*2);
+ m_winrun_dspcomram = std::make_unique<UINT16[]>(0x1000*2);
m_gametype = NAMCOS21_DRIVERS_EYES;
- m_pointram = auto_alloc_array(machine(), UINT8, PTRAM_SIZE);
+ m_pointram = std::make_unique<UINT8[]>(PTRAM_SIZE);
m_pointram_idx = 0;
m_mbNeedsKickstart = 0;
}
diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp
index 64000211811..c361e74a74d 100644
--- a/src/mame/drivers/namcos22.cpp
+++ b/src/mame/drivers/namcos22.cpp
@@ -1700,7 +1700,7 @@ WRITE16_MEMBER(namcos22_state::namcos22_cpuleds_w)
// on system 22: two rows of 4 red leds
// on super system 22: GYRGYRGY green/yellow/red
for (int i = 0; i < 8; i++)
- output_set_lamp_value(i, (~data << i & 0x80) ? 0 : 1);
+ output().set_lamp_value(i, (~data << i & 0x80) ? 0 : 1);
}
WRITE32_MEMBER(namcos22_state::namcos22s_chipselect_w)
@@ -2975,8 +2975,8 @@ WRITE8_MEMBER(namcos22_state::propcycle_mcu_port5_w)
// prop cycle outputs:
// bit 1 = fan
// bit 2 = button light
- output_set_value("fan0", data & 1);
- set_led_status(machine(), 0, data & 2);
+ output().set_value("fan0", data & 1);
+ output().set_led_value(0, data & 2);
}
static ADDRESS_MAP_START( propcycl_io_map, AS_IO, 8, namcos22_state )
@@ -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/namcos23.cpp b/src/mame/drivers/namcos23.cpp
index 0bda3aa8cb0..1494bcd520f 100644
--- a/src/mame/drivers/namcos23.cpp
+++ b/src/mame/drivers/namcos23.cpp
@@ -1384,7 +1384,7 @@ struct c404_t
struct render_t
{
- namcos23_renderer *polymgr;
+ std::unique_ptr<namcos23_renderer> polymgr;
int cur;
int poly_count;
int count[2];
@@ -1534,7 +1534,6 @@ public:
DECLARE_WRITE16_MEMBER(mcu_p8_w);
DECLARE_READ16_MEMBER(mcu_pa_r);
DECLARE_WRITE16_MEMBER(mcu_pa_w);
- DECLARE_READ16_MEMBER(mcu_rtc_r);
DECLARE_READ16_MEMBER(mcu_pb_r);
DECLARE_WRITE16_MEMBER(mcu_pb_w);
DECLARE_READ16_MEMBER(mcu_p6_r);
@@ -1575,7 +1574,6 @@ public:
void c435_matrix_set();
void c435_vector_set();
void c435_matrix_vector_mul();
- void c435_vector_matrix_mul();
void c435_state_set();
void c435_scaling_set();
void c435_render();
@@ -2380,7 +2378,7 @@ VIDEO_START_MEMBER(namcos23_state,s23)
m_bgtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos23_state::TextTilemapGetInfo),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
m_bgtilemap->set_transparent_pen(0xf);
m_bgtilemap->set_scrolldx(860, 860);
- m_render.polymgr = auto_alloc(machine(), namcos23_renderer(*this));
+ m_render.polymgr = std::make_unique<namcos23_renderer>(*this);
}
@@ -2768,7 +2766,7 @@ WRITE16_MEMBER(namcos23_state::ctl_w)
if(m_ctl_led != (data & 0xff)) {
m_ctl_led = data & 0xff;
for(int i = 0; i < 8; i++)
- output_set_lamp_value(i, (~data<<i & 0x80) ? 0 : 1);
+ output().set_lamp_value(i, (~data<<i & 0x80) ? 0 : 1);
}
break;
diff --git a/src/mame/drivers/namcos86.cpp b/src/mame/drivers/namcos86.cpp
index 8d04e7e758a..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);
}
@@ -273,22 +273,22 @@ WRITE8_MEMBER(namcos86_state::watchdog2_w)
WRITE8_MEMBER(namcos86_state::coin_w)
{
- coin_lockout_global_w(machine(), data & 1);
- coin_counter_w(machine(), 0,~data & 2);
- coin_counter_w(machine(), 1,~data & 4);
+ machine().bookkeeping().coin_lockout_global_w(data & 1);
+ machine().bookkeeping().coin_counter_w(0,~data & 2);
+ machine().bookkeeping().coin_counter_w(1,~data & 4);
}
WRITE8_MEMBER(namcos86_state::led_w)
{
- set_led_status(machine(), 0,data & 0x08);
- set_led_status(machine(), 1,data & 0x10);
+ output().set_led_value(0,data & 0x08);
+ output().set_led_value(1,data & 0x10);
}
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 3269ce30db1..de906fba250 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
@@ -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,15 @@ 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
- }
-
- return U64(0xffffffffffffffff);
+ /*
+ 0x00600280 r 0000dcba
+ a/b/c/d - coin inputs 1-4, active low
+ (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 +1885,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 couner
+ b - 2P coin couner
+ 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 +2592,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 +2631,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
@@ -7958,6 +7963,20 @@ ROM_START( puyofev )
ROM_LOAD("317-0375-com.pic", 0x00, 0x4000, CRC(52b56b52) SHA1(221590efbb09824621714cb163bda51a921d7d54) )
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
@@ -8698,6 +8717,95 @@ ROM_START( inidv3ca )
ROM_END
/**********************************************
+*
+* Naomi 2 network DVD-ROM defines
+*
+*********************************************/
+
+ROM_START( wccf212e )
+ NAOMIGD_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "cdv-10002", 0, SHA1(66b383d764eff39687de123e3e0833171c35e3b0) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ //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 )
+ NAOMIGD_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "cdv-10008", 0, SHA1(80f73b07fca1979e0161f670147d5f8a37dbeda8) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ //PIC16C621A (317-0369-JPN)
+ //(sticker 253-5508-0369J)
+ ROM_LOAD("317-0369-jpn.pic", 0x00, 0x4000, CRC(fb3672ba) SHA1(4b3c096e1e83da13fc967ca8c95d558c1cdf5817) )
+ROM_END
+
+ROM_START( wccf310j )
+ NAOMIGD_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "cdv-10013", 0, SHA1(4d58b44e39659d816d25d295ad2a1d4ec0ee0ab1) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ //PIC16C621A (317-0419-JPN)
+ //(sticker 253-5508-0419J)
+ ROM_LOAD("317-0419-jpn.pic", 0x00, 0x4000, CRC(04fae86b) SHA1(95663183c24a8a492afab8ebba084bb31fa5a312) )
+ROM_END
+
+ROM_START( wccf331e )
+ NAOMIGD_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "cdv-10015", 0, SHA1(46228791b59441d02d1170bc319b4643fad862c3) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ //PIC16C621A (317-0419-EXP)
+ //(sticker 253-5508-0419E)
+ ROM_LOAD("317-0419-exp.pic", 0x00, 0x4000, CRC(3f5e1445) SHA1(184731633c0264e2104baa006ac80d3927c3e6e5) )
+ROM_END
+
+ROM_START( wccf322e )
+ NAOMIGD_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "cdv-10015p", 0, SHA1(5187b442b42fc10cd6565176563e4b709d28b749) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ //PIC16C621A (317-0419-EXP)
+ //(sticker 253-5508-0419E)
+ ROM_LOAD("317-0419-exp.pic", 0x00, 0x4000, CRC(3f5e1445) SHA1(184731633c0264e2104baa006ac80d3927c3e6e5) )
+ROM_END
+
+ROM_START( wccf420e )
+ NAOMIGD_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "cdv-10027", 0, SHA1(c7d94f2134798efea5feb2a1b494f308fc0b81be) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ //PIC16C621A (317-0456-EXP)
+ //(sticker 253-5508-0456E)
+ ROM_LOAD("317-0456-exp.pic", 0x00, 0x4000, CRC(fb7dd592) SHA1(25e4927c83afc7ae26092ec192c40588a74a39b0) )
+ROM_END
+
+/**********************************************
*
* Atomiswave cart defines
*
@@ -9175,18 +9283,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) )
@@ -9346,12 +9474,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 */
@@ -9380,76 +9508,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 Dragon Treasure 2 (Rev A) (GDS-0037A)
// 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 )
@@ -9458,18 +9587,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 )
@@ -9477,15 +9606,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 )
@@ -9494,11 +9623,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 )
@@ -9507,14 +9636,15 @@ 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 CD - World Club Champion Football Serie A 2002-2003 Ver.2.12 (Sega, 2004)
-// 10008 DVD - World Club Champion Football Serie A 2002-2003 Ver.2.34 (Sega, 2004)
-// 10013 CD - World Club Champion Football European Clubs 2004-2005 (Sega, 2005)
-// 10015 CD - World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Sega, 2005)
-// 10015P CD - World Club Champion Football European Clubs 2004-2005 Ver.3.22 (Sega, 2005)
-// 10027 CD - World Club Champion Football European Clubs 2005-2006 (Sega, 2006)
+/* 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 )
+/* 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)
// ????? ??? - World Club Champion Football Serie A 2001-2002 Ver.2 (Sega, 2003)
@@ -9531,32 +9661,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/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp
index 8e4f7480517..74692366d81 100644
--- a/src/mame/drivers/nbmj8688.cpp
+++ b/src/mame/drivers/nbmj8688.cpp
@@ -163,8 +163,8 @@ ADDRESS_MAP_END
WRITE8_MEMBER(nbmj8688_state::barline_output_w)
{
- coin_lockout_w(machine(), 0,~data & 0x80);
- coin_counter_w(machine(), 0,data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x80);
+ machine().bookkeeping().coin_counter_w(0,data & 0x02);
}
static ADDRESS_MAP_START( barline_io_map, AS_IO, 8, nbmj8688_state )
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/nemesis.cpp b/src/mame/drivers/nemesis.cpp
index b58f3dfaaa0..90954e866a4 100644
--- a/src/mame/drivers/nemesis.cpp
+++ b/src/mame/drivers/nemesis.cpp
@@ -105,7 +105,7 @@ WRITE16_MEMBER(nemesis_state::gx400_irq1_enable_word_w)
m_irq1_on = data & 0x0001;
if (ACCESSING_BITS_8_15)
- coin_lockout_w(machine(), 1, data & 0x0100);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x0100);
}
WRITE16_MEMBER(nemesis_state::gx400_irq2_enable_word_w)
@@ -114,7 +114,7 @@ WRITE16_MEMBER(nemesis_state::gx400_irq2_enable_word_w)
m_irq2_on = data & 0x0001;
if (ACCESSING_BITS_8_15)
- coin_lockout_w(machine(), 0, data & 0x0100);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x0100);
}
WRITE16_MEMBER(nemesis_state::gx400_irq4_enable_word_w)
@@ -129,7 +129,7 @@ WRITE16_MEMBER(nemesis_state::nemesis_irq_enable_word_w)
m_irq_on = data & 0xff;
if (ACCESSING_BITS_8_15)
- coin_lockout_global_w(machine(), data & 0x0100);
+ machine().bookkeeping().coin_lockout_global_w(data & 0x0100);
}
WRITE16_MEMBER(nemesis_state::konamigt_irq_enable_word_w)
@@ -138,7 +138,7 @@ WRITE16_MEMBER(nemesis_state::konamigt_irq_enable_word_w)
m_irq_on = data & 0xff;
if (ACCESSING_BITS_8_15)
- coin_lockout_w(machine(), 1, data & 0x0100);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x0100);
}
WRITE16_MEMBER(nemesis_state::konamigt_irq2_enable_word_w)
@@ -147,7 +147,7 @@ WRITE16_MEMBER(nemesis_state::konamigt_irq2_enable_word_w)
m_irq2_on = data & 0xff;
if (ACCESSING_BITS_8_15)
- coin_lockout_w(machine(), 0, data & 0x0100);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x0100);
}
diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp
index 738a16aae9d..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:
@@ -1012,15 +1014,15 @@ void neogeo_state::set_outputs( )
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x58,0x4c,0x62,0x69,0x78,0x00 };
/* EL */
- output_set_digit_value(0, led_map[m_el_value]);
+ output().set_digit_value(0, led_map[m_el_value]);
/* LED1 */
- output_set_digit_value(1, led_map[m_led1_value >> 4]);
- output_set_digit_value(2, led_map[m_led1_value & 0x0f]);
+ output().set_digit_value(1, led_map[m_led1_value >> 4]);
+ output().set_digit_value(2, led_map[m_led1_value & 0x0f]);
/* LED2 */
- output_set_digit_value(3, led_map[m_led2_value >> 4]);
- output_set_digit_value(4, led_map[m_led2_value & 0x0f]);
+ output().set_digit_value(3, led_map[m_led2_value >> 4]);
+ output().set_digit_value(4, led_map[m_led2_value & 0x0f]);
}
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/nes.cpp b/src/mame/drivers/nes.cpp
index 96292db4b15..bfce851aae6 100644
--- a/src/mame/drivers/nes.cpp
+++ b/src/mame/drivers/nes.cpp
@@ -184,7 +184,7 @@ void nes_state::setup_disk(nes_disksys_device *slot)
slot->vram_alloc(0x2000);
slot->prgram_alloc(0x8000);
- slot->pcb_start(machine(), m_ciram, FALSE);
+ slot->pcb_start(machine(), m_ciram.get(), FALSE);
m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(device_nes_cart_interface::chr_r),(device_nes_cart_interface *)slot), write8_delegate(FUNC(device_nes_cart_interface::chr_w),(device_nes_cart_interface *)slot));
m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(device_nes_cart_interface::nt_r),(device_nes_cart_interface *)slot), write8_delegate(FUNC(device_nes_cart_interface::nt_w),(device_nes_cart_interface *)slot));
m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),(device_nes_cart_interface *)slot));
@@ -196,13 +196,13 @@ void nes_state::setup_disk(nes_disksys_device *slot)
MACHINE_START_MEMBER( nes_state, fds )
{
- m_ciram = auto_alloc_array(machine(), UINT8, 0x800);
+ m_ciram = std::make_unique<UINT8[]>(0x800);
m_io_disksel = ioport("FLIPDISK");
setup_disk(m_disk);
// register saves
save_item(NAME(m_last_frame_flip));
- save_pointer(NAME(m_ciram), 0x800);
+ save_pointer(NAME(m_ciram.get()), 0x800);
}
MACHINE_RESET_MEMBER( nes_state, fds )
diff --git a/src/mame/drivers/newbrain.cpp b/src/mame/drivers/newbrain.cpp
index 84699034a75..df6c71fb59b 100644
--- a/src/mame/drivers/newbrain.cpp
+++ b/src/mame/drivers/newbrain.cpp
@@ -472,7 +472,7 @@ WRITE8_MEMBER( newbrain_state::cop_d_w )
m_keydata = m_key_row[m_keylatch]->read();
- output_set_digit_value(m_keylatch, m_segment_data[m_keylatch]);
+ output().set_digit_value(m_keylatch, m_segment_data[m_keylatch]);
}
}
diff --git a/src/mame/drivers/ng_aes.cpp b/src/mame/drivers/ng_aes.cpp
index c4f2fbc7620..994dfbef4e5 100644
--- a/src/mame/drivers/ng_aes.cpp
+++ b/src/mame/drivers/ng_aes.cpp
@@ -151,9 +151,6 @@ public:
// neoCD
- UINT8 neogeoReadTransfer(UINT32 sekAddress, int is_byte_transfer);
- void neogeoWriteTransfer(UINT32 sekAddress, UINT8 byteValue, int is_byte_transfer);
-
INT32 nActiveTransferArea;
INT32 nSpriteTransferBank;
INT32 nADPCMTransferBank;
@@ -195,7 +192,7 @@ public:
IRQ_CALLBACK_MEMBER(neocd_int_callback);
- UINT8 *m_meminternal_data;
+ std::unique_ptr<UINT8[]> m_meminternal_data;
protected:
required_ioport m_io_in2;
required_ioport m_io_in0;
@@ -1055,9 +1052,9 @@ MACHINE_START_MEMBER(ng_aes_state,neocd)
/* initialize the memcard data structure */
/* NeoCD doesn't have memcard slots, rather, it has a larger internal memory which works the same */
- m_meminternal_data = auto_alloc_array_clear(machine(), UINT8, 0x2000);
- machine().device<nvram_device>("saveram")->set_base(m_meminternal_data, 0x2000);
- save_pointer(NAME(m_meminternal_data), 0x2000);
+ m_meminternal_data = make_unique_clear<UINT8[]>(0x2000);
+ machine().device<nvram_device>("saveram")->set_base(m_meminternal_data.get(), 0x2000);
+ save_pointer(NAME(m_meminternal_data.get()), 0x2000);
//m_bank_vectors->set_entry(0); // default to the BIOS vectors
m_use_cart_vectors = 0;
diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp
index c4365edd318..2720f071051 100644
--- a/src/mame/drivers/nightgal.cpp
+++ b/src/mame/drivers/nightgal.cpp
@@ -81,20 +81,12 @@ public:
DECLARE_READ8_MEMBER(blitter_status_r);
DECLARE_WRITE8_MEMBER(nsc_true_blitter_w);
DECLARE_WRITE8_MEMBER(sexygal_nsc_true_blitter_w);
- DECLARE_WRITE8_MEMBER(nsc_latch_w);
- DECLARE_READ8_MEMBER(nsc_latch_r);
- DECLARE_WRITE8_MEMBER(z80_latch_w);
- DECLARE_READ8_MEMBER(z80_latch_r);
- DECLARE_WRITE8_MEMBER(blitter_w);
- DECLARE_READ8_MEMBER(nsc_blit_r);
DECLARE_WRITE8_MEMBER(royalqn_blitter_0_w);
DECLARE_WRITE8_MEMBER(royalqn_blitter_1_w);
DECLARE_WRITE8_MEMBER(royalqn_blitter_2_w);
DECLARE_READ8_MEMBER(royalqn_nsc_blit_r);
DECLARE_READ8_MEMBER(royalqn_comm_r);
DECLARE_WRITE8_MEMBER(royalqn_comm_w);
- DECLARE_WRITE8_MEMBER(blit_vregs_w);
- DECLARE_READ8_MEMBER(blit_vregs_r);
DECLARE_WRITE8_MEMBER(blit_true_vregs_w);
DECLARE_WRITE8_MEMBER(mux_w);
DECLARE_READ8_MEMBER(input_1p_r);
diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp
index 2944bc5ff16..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)
{
- 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);
+ ++end;
+ }
+
+ if (end - start)
+ {
+ m_pcm->start_raw(0, &m_sampledata[start], end - start, NE555_FREQUENCY);
+ }
+ else
+ {
+ 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)
@@ -1116,6 +1148,35 @@ ROM_START( ninjakd2b )
ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) // 9.6d unsigned 8-bit pcm samples
ROM_END
+ROM_START( ninjakd2c )
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "1.3U", 0x00000, 0x8000, CRC(06096412) SHA1(4a84a9326248ff899a04f32950b4c4a5ff58cf75) )
+ ROM_LOAD( "2.3T", 0x10000, 0x8000, CRC(9ed9a994) SHA1(ec95e09066ad51cf4514e269384b7609d6c345d9) ) // banked at 8000-bfff
+ ROM_LOAD( "nk2_03.rom", 0x18000, 0x8000, CRC(ad275654) SHA1(7d29a17132adb19aeee9b98be5b76bd6e91f308e) )
+ ROM_LOAD( "nk2_04.rom", 0x20000, 0x8000, CRC(e7692a77) SHA1(84beb8b02c564bffa9cc00313214e8f109bd40f9) )
+ ROM_LOAD( "5.3M", 0x28000, 0x8000, CRC(800d4951) SHA1(878516bd03a61ac970cd9e8c35116f8ec3020e79) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "nk2_06.rom", 0x00000, 0x10000, CRC(d3a18a79) SHA1(e4df713f89d8a8b43ef831b14864c50ec9b53f0b) ) // encrypted
+
+ ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */
+ ROM_LOAD( "ninjakd2.key", 0x0000, 0x2000, CRC(ec25318f) SHA1(619da3f69f9919e1457f79ee1d38e7ec80c4ebb0) )
+
+ ROM_REGION( 0x08000, "gfx1", 0 ) // fg tiles (need lineswapping)
+ ROM_LOAD( "nk2_12.rom", 0x00000, 0x08000, CRC(db5657a9) SHA1(abbb033edb9a5a0c66ee5981d1e4df1ab334a82d) )
+
+ ROM_REGION( 0x20000, "gfx2", 0 ) // sprites (need lineswapping)
+ ROM_LOAD( "nk2_08.rom", 0x00000, 0x10000, CRC(1b79c50a) SHA1(8954bc51cb9fbbe16b09381f35c84ccc56a803f3) )
+ ROM_LOAD( "nk2_07.rom", 0x10000, 0x10000, CRC(0be5cd13) SHA1(8f94a8fef6668aaf13329715fee81302dbd6c685) )
+
+ ROM_REGION( 0x20000, "gfx3", 0 ) // bg tiles (need lineswapping)
+ ROM_LOAD( "nk2_11.rom", 0x00000, 0x10000, CRC(41a714b3) SHA1(b05f48d71a9837914c12c13e0b479c8a6dc8c25e) )
+ ROM_LOAD( "nk2_10.rom", 0x10000, 0x10000, CRC(c913c4ab) SHA1(f822c5621b3e32c1a284f6367bdcace81c1c74b3) )
+
+ ROM_REGION( 0x10000, "pcm", 0 )
+ ROM_LOAD( "nk2_09.rom", 0x0000, 0x10000, CRC(c1d2d170) SHA1(0f325815086fde90fd85360d3660042b0b68ba96) ) // unsigned 8-bit pcm samples
+ROM_END
+
ROM_START( rdaction )
ROM_REGION( 0x30000, "maincpu", 0 )
ROM_LOAD( "1.3u", 0x00000, 0x8000, CRC(5c475611) SHA1(2da88a95b5d68b259c8ae48af1438a82a1d601c1) )
@@ -1556,6 +1617,7 @@ DRIVER_INIT_MEMBER(ninjakd2_state,robokidj)
GAME( 1987, ninjakd2, 0, ninjakd2, ninjakd2, ninjakd2_state, ninjakd2, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, ninjakd2a, ninjakd2, ninjakd2, ninjakd2, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, ninjakd2b, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ninjakd2c, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 4)", MACHINE_SUPPORTS_SAVE ) // close to set 3
GAME( 1987, rdaction, ninjakd2, ninjakd2, rdaction, ninjakd2_state, ninjakd2, ROT0, "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", MACHINE_SUPPORTS_SAVE )
GAME( 1987, jt104, ninjakd2, ninjakd2, rdaction, ninjakd2_state, bootleg, ROT0, "UPL (United Amusements license)", "JT-104 (title screen modification of Rad Action)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, mnight, 0, mnight, mnight, ninjakd2_state, mnight, ROT0, "UPL (Kawakus license)", "Mutant Night", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/niyanpai.cpp b/src/mame/drivers/niyanpai.cpp
index 81bbe457dcc..87dfcc07f85 100644
--- a/src/mame/drivers/niyanpai.cpp
+++ b/src/mame/drivers/niyanpai.cpp
@@ -118,8 +118,8 @@ WRITE16_MEMBER(niyanpai_state::tmp68301_parallel_port_w)
// bit 8-9 video page select?
m_motor_on = data & 4;
- coin_counter_w(machine(),0,data & 1);
- coin_lockout_w(machine(),0,data & 0x08);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
+ machine().bookkeeping().coin_lockout_w(0,data & 0x08);
}
CUSTOM_INPUT_MEMBER(niyanpai_state::musobana_outcoin_flag_r)
diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp
index 7aa921a775b..fb08ffee84d 100644
--- a/src/mame/drivers/nmk16.cpp
+++ b/src/mame/drivers/nmk16.cpp
@@ -3834,8 +3834,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::nmk16_scanline)
if (scanline == SPRDMA_SCANLINE)
{
// 2 buffers confirmed on PCB
- memcpy(m_spriteram_old2,m_spriteram_old, 0x1000);
- memcpy(m_spriteram_old, m_mainram + m_sprdma_base / 2, 0x1000);
+ memcpy(m_spriteram_old2.get(),m_spriteram_old.get(), 0x1000);
+ memcpy(m_spriteram_old.get(), m_mainram + m_sprdma_base / 2, 0x1000);
}
/* Vblank-in irq, Vandyke definitely relies that irq fires at scanline ~0 instead of 112 (as per previous
@@ -4596,7 +4596,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::manybloc_scanline)
if (scanline == 248)
{
// only a single buffer
- memcpy(m_spriteram_old2, m_mainram + m_sprdma_base / 2, 0x1000);
+ memcpy(m_spriteram_old2.get(), m_mainram + m_sprdma_base / 2, 0x1000);
}
/* This is either vblank-in or sprite dma irq complete */
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/norautp.cpp b/src/mame/drivers/norautp.cpp
index 849a198e2d9..1ab2f70a566 100644
--- a/src/mame/drivers/norautp.cpp
+++ b/src/mame/drivers/norautp.cpp
@@ -567,7 +567,7 @@
void norautp_state::video_start()
{
- m_np_vram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_np_vram = make_unique_clear<UINT16[]>(0x1000/2);
}
@@ -645,14 +645,14 @@ WRITE8_MEMBER(norautp_state::mainlamps_w)
-x-- ---- * HOLD 5 lamp.
x--- ---- * CANCEL lamp.
*/
- output_set_lamp_value(0, (data >> 0) & 1); /* CHANGE CARD lamp */
- output_set_lamp_value(1, (data >> 1) & 1); /* SAVE / HALF GAMBLE lamp */
- output_set_lamp_value(2, (data >> 2) & 1); /* HOLD 1 lamp */
- output_set_lamp_value(3, (data >> 3) & 1); /* HOLD 2 lamp */
- output_set_lamp_value(4, (data >> 4) & 1); /* HOLD 3 lamp */
- output_set_lamp_value(5, (data >> 5) & 1); /* HOLD 4 lamp */
- output_set_lamp_value(6, (data >> 6) & 1); /* HOLD 5 lamp */
- output_set_lamp_value(7, (data >> 7) & 1); /* CANCEL lamp */
+ output().set_lamp_value(0, (data >> 0) & 1); /* CHANGE CARD lamp */
+ output().set_lamp_value(1, (data >> 1) & 1); /* SAVE / HALF GAMBLE lamp */
+ output().set_lamp_value(2, (data >> 2) & 1); /* HOLD 1 lamp */
+ output().set_lamp_value(3, (data >> 3) & 1); /* HOLD 2 lamp */
+ output().set_lamp_value(4, (data >> 4) & 1); /* HOLD 3 lamp */
+ output().set_lamp_value(5, (data >> 5) & 1); /* HOLD 4 lamp */
+ output().set_lamp_value(6, (data >> 6) & 1); /* HOLD 5 lamp */
+ output().set_lamp_value(7, (data >> 7) & 1); /* CANCEL lamp */
// popmessage("lamps: %02x", data);
}
@@ -670,8 +670,8 @@ WRITE8_MEMBER(norautp_state::soundlamps_w)
xxxx ---- * Discrete Sound Lines.
*/
- output_set_lamp_value(8, (data >> 0) & 1); /* DEAL / DRAW lamp */
- output_set_lamp_value(9, (data >> 1) & 1); /* BET / COLLECT lamp */
+ output().set_lamp_value(8, (data >> 0) & 1); /* DEAL / DRAW lamp */
+ output().set_lamp_value(9, (data >> 1) & 1); /* BET / COLLECT lamp */
/* the 4 MSB are for discrete sound */
m_discrete->write(space, NORAUTP_SND_EN, (data >> 7) & 0x01);
@@ -695,12 +695,12 @@ WRITE8_MEMBER(norautp_state::counterlamps_w)
-x-- ---- + Coin counter related.
x--- ---- + DEFLECT (always activated).
*/
- output_set_lamp_value(10, (data >> 0) & 1); /* HI lamp */
- output_set_lamp_value(11, (data >> 1) & 1); /* LO lamp */
+ output().set_lamp_value(10, (data >> 0) & 1); /* HI lamp */
+ output().set_lamp_value(11, (data >> 1) & 1); /* LO lamp */
- coin_counter_w(machine(), 0, data & 0x10); /* Coin1/3 counter */
- coin_counter_w(machine(), 1, data & 0x20); /* Coin2 counter */
- coin_counter_w(machine(), 2, data & 0x08); /* Payout pulse */
+ machine().bookkeeping().coin_counter_w(0, data & 0x10); /* Coin1/3 counter */
+ machine().bookkeeping().coin_counter_w(1, data & 0x20); /* Coin2 counter */
+ machine().bookkeeping().coin_counter_w(2, data & 0x08); /* Payout pulse */
}
diff --git a/src/mame/drivers/nova2001.cpp b/src/mame/drivers/nova2001.cpp
index 8f10665d9d0..125f2dbe48c 100644
--- a/src/mame/drivers/nova2001.cpp
+++ b/src/mame/drivers/nova2001.cpp
@@ -60,6 +60,8 @@ Notes:
- nova2001 is VERY sensitive to coin inputs, if the coin isn't held down long
enough, or is held down too long the game will reset, likewise if coins are
inserted too quickly. This only happens in nova2001 and not in nova2001u.
+ (the nova2001h set seems to be an unofficial fix for this issue, presumably
+ it's so sensitive it would reset sometimes in the original cabinet?)
- Nova 2001 draws black bars on the sides of the screen so the visible area becomes
240x192, however the physical resolution is still 256x192, the game probably does
@@ -816,6 +818,26 @@ ROM_START( nova2001 )
ROM_LOAD( "nova2001.clr", 0x0000, 0x0020, CRC(a2fac5cd) SHA1(ad14aa2be57722d1f48b47171fe72f96091423b6) )
ROM_END
+ROM_START( nova2001h )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ // roms 1 and 2 had green stickers, but looks like an unofficial mod, bytes have been added in empty space to fix game checksum after mods were made to code.
+ // one of the mods fixes the game resetting if the coin input is held down for too short / long of a period, the purpose of the other is unknown.
+ ROM_LOAD( "1(green).6c", 0x0000, 0x2000, CRC(1a8731b3) SHA1(a865d1cb070686dfa19e0da887c599455692a860) )
+ ROM_LOAD( "2(green).6d", 0x2000, 0x2000, CRC(bc4e442b) SHA1(6e1dca5dde442db95403377bf49aaad2a337813e) ) // not actually modified?
+ ROM_LOAD( "3.6f", 0x4000, 0x2000, CRC(b2849038) SHA1(b56c7c03ef7c677cc6df0280a485f9cda3435b23) )
+ ROM_LOAD( "4.6g", 0x6000, 0x1000, CRC(6b5bb12d) SHA1(74aee3d08a7ee1f98eaec4a4b3062aa9d17948ec) )
+ ROM_RELOAD( 0x7000, 0x1000 ) // half size ROM, mirrored
+
+ ROM_REGION( 0x8000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "5.12s", 0x0000, 0x2000, CRC(54198941) SHA1(fe762a0bbcf10b13ece87ded2ea730257cfbe7d3) )
+ ROM_LOAD16_BYTE( "6.12p", 0x0001, 0x2000, CRC(cbd90dca) SHA1(7eacde832f5783f4389fb98d6bf6b26dd494665d) )
+ ROM_LOAD16_BYTE( "7.12n", 0x4000, 0x2000, CRC(9ebd8806) SHA1(26b6caa0d0a7ae52a182070ecc7bc696c12038b3) )
+ ROM_LOAD16_BYTE( "8.12l", 0x4001, 0x2000, CRC(d1b18389) SHA1(2d808fee774f1bb4cec42e23cfef36b54eee0efa) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "nova2001.clr", 0x0000, 0x0020, CRC(a2fac5cd) SHA1(ad14aa2be57722d1f48b47171fe72f96091423b6) )
+ROM_END
+
ROM_START( nova2001u )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "nova2001.1", 0x0000, 0x2000, CRC(b79461bd) SHA1(7fac3313bc76612f66a6518450d0fed32fe70c45) )
@@ -995,8 +1017,11 @@ 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, 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 )
GAME( 1985, pkunwar, 0, pkunwar, pkunwar, nova2001_state, pkunwar, ROT0, "UPL", "Penguin-Kun Wars (US)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/nsm.cpp b/src/mame/drivers/nsm.cpp
index aef59d371cf..9a20fa20ee4 100644
--- a/src/mame/drivers/nsm.cpp
+++ b/src/mame/drivers/nsm.cpp
@@ -103,7 +103,7 @@ WRITE8_MEMBER( nsm_state::cru_w )
for (j = 0; j < 5; j++)
{
segments = m_cru_data[8-j]^0xff;
- output_set_digit_value(j * 10 + i, BITSWAP16(segments, 8, 8, 8, 8, 8, 8, 0, 0, 1, 1, 2, 3, 4, 5, 6, 7));
+ output().set_digit_value(j * 10 + i, BITSWAP16(segments, 8, 8, 8, 8, 8, 8, 0, 0, 1, 1, 2, 3, 4, 5, 6, 7));
}
}
}
diff --git a/src/mame/drivers/nsmpoker.cpp b/src/mame/drivers/nsmpoker.cpp
index 5e37cfa247c..823ee38b70e 100644
--- a/src/mame/drivers/nsmpoker.cpp
+++ b/src/mame/drivers/nsmpoker.cpp
@@ -81,7 +81,6 @@ public:
tilemap_t *m_bg_tilemap;
DECLARE_WRITE8_MEMBER(nsmpoker_videoram_w);
DECLARE_WRITE8_MEMBER(nsmpoker_colorram_w);
- DECLARE_WRITE8_MEMBER(debug_w);
DECLARE_READ8_MEMBER(debug_r);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start() override;
diff --git a/src/mame/drivers/nss.cpp b/src/mame/drivers/nss.cpp
index 580d4e8cb86..0497f3e01d0 100644
--- a/src/mame/drivers/nss.cpp
+++ b/src/mame/drivers/nss.cpp
@@ -315,7 +315,7 @@ public:
optional_device<palette_device> m_palette;
UINT8 m_wram_wp_flag;
- UINT8 *m_wram;
+ std::unique_ptr<UINT8[]> m_wram;
UINT8 m_nmi_enable;
UINT8 m_cart_sel;
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -599,8 +599,8 @@ WRITE8_MEMBER(nss_state::port_03_w)
WRITE8_MEMBER(nss_state::port_04_w)
{
- coin_counter_w(machine(), 0, (data >> 0) & 1);
- coin_counter_w(machine(), 1, (data >> 1) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 0) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 1) & 1);
}
WRITE8_MEMBER(nss_state::port_07_w)
@@ -623,7 +623,7 @@ void nss_state::machine_start()
snes_state::machine_start();
m_is_nss = 1;
- m_wram = auto_alloc_array_clear(machine(), UINT8, 0x1000);
+ m_wram = make_unique_clear<UINT8[]>(0x1000);
}
diff --git a/src/mame/drivers/nwk-tr.cpp b/src/mame/drivers/nwk-tr.cpp
index dd836131e8f..3d4719b95f1 100644
--- a/src/mame/drivers/nwk-tr.cpp
+++ b/src/mame/drivers/nwk-tr.cpp
@@ -304,8 +304,8 @@ public:
int m_fpga_uploaded;
int m_lanc2_ram_r;
int m_lanc2_ram_w;
- UINT8 *m_lanc2_ram;
- UINT32 *m_sharc_dataram;
+ std::unique_ptr<UINT8[]> m_lanc2_ram;
+ std::unique_ptr<UINT32[]> m_sharc_dataram;
DECLARE_WRITE32_MEMBER(paletteram32_w);
DECLARE_READ32_MEMBER(sysreg_r);
DECLARE_WRITE32_MEMBER(sysreg_w);
@@ -443,7 +443,7 @@ void nwktr_state::lanc2_init()
m_fpga_uploaded = 0;
m_lanc2_ram_r = 0;
m_lanc2_ram_w = 0;
- m_lanc2_ram = auto_alloc_array(machine(), UINT8, 0x8000);
+ m_lanc2_ram = std::make_unique<UINT8[]>(0x8000);
}
READ32_MEMBER(nwktr_state::lanc1_r)
@@ -841,7 +841,7 @@ DRIVER_INIT_MEMBER(nwktr_state, nwktr)
{
machine().device<konppc_device>("konppc")->set_cgboard_texture_bank(0, "bank5", memregion("user5")->base());
- m_sharc_dataram = auto_alloc_array(machine(), UINT32, 0x100000/4);
+ m_sharc_dataram = std::make_unique<UINT32[]>(0x100000/4);
m_led_reg0 = m_led_reg1 = 0x7f;
lanc2_init();
diff --git a/src/mame/drivers/ohmygod.cpp b/src/mame/drivers/ohmygod.cpp
index ce3040bd926..22bd57f4f5f 100644
--- a/src/mame/drivers/ohmygod.cpp
+++ b/src/mame/drivers/ohmygod.cpp
@@ -34,8 +34,8 @@ WRITE16_MEMBER(ohmygod_state::ohmygod_ctrl_w)
}
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x1000);
- coin_counter_w(machine(), 1, data & 0x2000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x1000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x2000);
}
}
diff --git a/src/mame/drivers/ojankohs.cpp b/src/mame/drivers/ojankohs.cpp
index f9d1ca50faa..2a64f82ff83 100644
--- a/src/mame/drivers/ojankohs.cpp
+++ b/src/mame/drivers/ojankohs.cpp
@@ -180,12 +180,12 @@ READ8_MEMBER(ojankohs_state::ccasino_dipsw4_r)
WRITE8_MEMBER(ojankohs_state::ojankoy_coinctr_w)
{
- coin_counter_w(machine(), 0, BIT(data, 0));
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
}
WRITE8_MEMBER(ojankohs_state::ccasino_coinctr_w)
{
- coin_counter_w(machine(), 0, BIT(data, 1));
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 1));
}
diff --git a/src/mame/drivers/omegrace.cpp b/src/mame/drivers/omegrace.cpp
index d3c8e871588..acf7aae26de 100644
--- a/src/mame/drivers/omegrace.cpp
+++ b/src/mame/drivers/omegrace.cpp
@@ -322,14 +322,14 @@ READ8_MEMBER(omegrace_state::omegrace_spinner1_r)
WRITE8_MEMBER(omegrace_state::omegrace_leds_w)
{
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
/* bits 2 to 5 are the start leds (4 and 5 cocktail only) */
- set_led_status(machine(), 0,~data & 0x04);
- set_led_status(machine(), 1,~data & 0x08);
- set_led_status(machine(), 2,~data & 0x10);
- set_led_status(machine(), 3,~data & 0x20);
+ output().set_led_value(0,~data & 0x04);
+ output().set_led_value(1,~data & 0x08);
+ output().set_led_value(2,~data & 0x10);
+ output().set_led_value(3,~data & 0x20);
/* bit 6 flips screen (not supported) */
}
diff --git a/src/mame/drivers/onetwo.cpp b/src/mame/drivers/onetwo.cpp
index 603d5edd9e5..35b54cbd5b8 100644
--- a/src/mame/drivers/onetwo.cpp
+++ b/src/mame/drivers/onetwo.cpp
@@ -137,8 +137,8 @@ WRITE8_MEMBER(onetwo_state::onetwo_cpubank_w)
WRITE8_MEMBER(onetwo_state::onetwo_coin_counters_w)
{
machine().watchdog_reset();
- coin_counter_w(machine(), 0, BIT(data, 1));
- coin_counter_w(machine(), 1, BIT(data, 2));
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 1));
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 2));
}
WRITE8_MEMBER(onetwo_state::onetwo_soundlatch_w)
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/orbit.cpp b/src/mame/drivers/orbit.cpp
index ee9af4fd8af..248d818c497 100644
--- a/src/mame/drivers/orbit.cpp
+++ b/src/mame/drivers/orbit.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -76,11 +76,11 @@ void orbit_state::update_misc_flags(address_space &space, UINT8 val)
m_discrete->write(space, ORBIT_WARNING_EN, BIT(m_misc_flags, 7));
- set_led_status(machine(), 0, BIT(m_misc_flags, 3));
- set_led_status(machine(), 1, BIT(m_misc_flags, 6));
+ output().set_led_value(0, BIT(m_misc_flags, 3));
+ output().set_led_value(1, BIT(m_misc_flags, 6));
- coin_lockout_w(machine(), 0, !BIT(m_misc_flags, 1));
- coin_lockout_w(machine(), 1, !BIT(m_misc_flags, 1));
+ machine().bookkeeping().coin_lockout_w(0, !BIT(m_misc_flags, 1));
+ machine().bookkeeping().coin_lockout_w(1, !BIT(m_misc_flags, 1));
}
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/othunder.cpp b/src/mame/drivers/othunder.cpp
index da2ab7faf6b..caebeaaed1e 100644
--- a/src/mame/drivers/othunder.cpp
+++ b/src/mame/drivers/othunder.cpp
@@ -367,8 +367,8 @@ WRITE16_MEMBER(othunder_state::othunder_tc0220ioc_w)
x0000000 eeprom out data */
/* Recoil Piston Motor Status */
- output_set_value("Player1_Recoil_Piston", data & 0x1 );
- output_set_value("Player2_Recoil_Piston", (data & 0x2) >>1 );
+ output().set_value("Player1_Recoil_Piston", data & 0x1 );
+ output().set_value("Player2_Recoil_Piston", (data & 0x2) >>1 );
if (data & 4)
popmessage("OBPRI SET!");
diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp
index f7dca2c4844..c611c2b32eb 100644
--- a/src/mame/drivers/overdriv.cpp
+++ b/src/mame/drivers/overdriv.cpp
@@ -97,9 +97,9 @@ WRITE16_MEMBER(overdriv_state::cpuA_ctrl_w)
/* bit 1 is clear during service mode - function unknown */
- set_led_status(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 0, data & 0x10);
- coin_counter_w(machine(), 1, data & 0x20);
+ output().set_led_value(0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
//logerror("%06x: write %04x to cpuA_ctrl_w\n",space.device().safe_pc(),data);
}
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/pacland.cpp b/src/mame/drivers/pacland.cpp
index acc515b1554..697ec5bb9da 100644
--- a/src/mame/drivers/pacland.cpp
+++ b/src/mame/drivers/pacland.cpp
@@ -228,15 +228,15 @@ READ8_MEMBER(pacland_state::input_r)
WRITE8_MEMBER(pacland_state::coin_w)
{
- coin_lockout_global_w(machine(), data & 1);
- coin_counter_w(machine(), 0, ~data & 2);
- coin_counter_w(machine(), 1, ~data & 4);
+ machine().bookkeeping().coin_lockout_global_w(data & 1);
+ machine().bookkeeping().coin_counter_w(0, ~data & 2);
+ machine().bookkeeping().coin_counter_w(1, ~data & 4);
}
WRITE8_MEMBER(pacland_state::led_w)
{
- set_led_status(machine(), 0, data & 0x08);
- set_led_status(machine(), 1, data & 0x10);
+ output().set_led_value(0, data & 0x08);
+ output().set_led_value(1, data & 0x10);
}
WRITE8_MEMBER(pacland_state::irq_1_ctrl_w)
diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp
index aa820df5c13..053604c4e22 100644
--- a/src/mame/drivers/pacman.cpp
+++ b/src/mame/drivers/pacman.cpp
@@ -28,13 +28,13 @@
* Porky
* MTV Rock-N-Roll Trivia (Part 2)
* Woodpecker
- * Pacman Club / Club Lambada
+ * Pacman Club / Club Lambada
Known issues:
* Mystery items in Ali Baba don't work correctly because of protection.
- * Pacman Club controls need to be demultiplexed for 2-players simultaneous mode.
- Also need 4-players extra inputs.
+ * Pacman Club controls need to be demultiplexed for 2-players simultaneous mode.
+ Also need 4-players extra inputs.
Known to exist but dumps needed
* Eeeek!
@@ -503,19 +503,19 @@ WRITE8_MEMBER(pacman_state::nmouse_interrupt_vector_w)
WRITE8_MEMBER(pacman_state::pacman_leds_w)
{
- set_led_status(machine(), offset,data & 1);
+ output().set_led_value(offset,data & 1);
}
WRITE8_MEMBER(pacman_state::pacman_coin_counter_w)
{
- coin_counter_w(machine(), offset,data & 1);
+ machine().bookkeeping().coin_counter_w(offset,data & 1);
}
WRITE8_MEMBER(pacman_state::pacman_coin_lockout_global_w)
{
- coin_lockout_global_w(machine(), ~data & 0x01);
+ machine().bookkeeping().coin_lockout_global_w(~data & 0x01);
}
@@ -4135,7 +4135,49 @@ ROM_START( clubpacm )
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
+ // 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( 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) )
@@ -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/pandoras.cpp b/src/mame/drivers/pandoras.cpp
index d00b436de6e..2a424001b12 100644
--- a/src/mame/drivers/pandoras.cpp
+++ b/src/mame/drivers/pandoras.cpp
@@ -67,9 +67,9 @@ WRITE8_MEMBER(pandoras_state::pandoras_int_control_w)
m_maincpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
m_irq_enable_a = data;
break;
- case 0x02: coin_counter_w(machine(), 0,data & 0x01);
+ case 0x02: machine().bookkeeping().coin_counter_w(0,data & 0x01);
break;
- case 0x03: coin_counter_w(machine(), 1,data & 0x01);
+ case 0x03: machine().bookkeeping().coin_counter_w(1,data & 0x01);
break;
case 0x05: pandoras_flipscreen_w(space, 0, data);
break;
diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp
index c5fd69f4342..9229541b9ed 100644
--- a/src/mame/drivers/panicr.cpp
+++ b/src/mame/drivers/panicr.cpp
@@ -97,8 +97,8 @@ public:
tilemap_t *m_txttilemap;
int m_scrollx;
- bitmap_ind16 *m_temprender;
- bitmap_ind16 *m_tempbitmap_1;
+ std::unique_ptr<bitmap_ind16> m_temprender;
+ std::unique_ptr<bitmap_ind16> m_tempbitmap_1;
rectangle m_tempbitmap_clip;
DECLARE_READ8_MEMBER(collision_r);
@@ -109,10 +109,7 @@ public:
DECLARE_WRITE8_MEMBER(t5182shared_w);
TILE_GET_INFO_MEMBER(get_bgtile_info);
- TILE_GET_INFO_MEMBER(get_infotile_info);
TILE_GET_INFO_MEMBER(get_infotile_info_2);
- TILE_GET_INFO_MEMBER(get_infotile_info_3);
- TILE_GET_INFO_MEMBER(get_infotile_info_4);
TILE_GET_INFO_MEMBER(get_txttile_info);
DECLARE_DRIVER_INIT(panicr);
@@ -402,8 +399,8 @@ WRITE8_MEMBER(panicr_state::scrollx_hi_w)
WRITE8_MEMBER(panicr_state::output_w)
{
// d6, d7: play counter? (it only triggers on 1st coin)
- coin_counter_w(machine(), 0, (data & 0x40) ? 1 : 0);
- coin_counter_w(machine(), 1, (data & 0x80) ? 1 : 0);
+ machine().bookkeeping().coin_counter_w(0, (data & 0x40) ? 1 : 0);
+ machine().bookkeeping().coin_counter_w(1, (data & 0x80) ? 1 : 0);
logerror("output_w %02x\n", data);
@@ -821,8 +818,8 @@ DRIVER_INIT_MEMBER(panicr_state,panicr)
}
}
- m_tempbitmap_1 = auto_bitmap_ind16_alloc(machine(),256,256);
- m_temprender = auto_bitmap_ind16_alloc(machine(),256,256);
+ m_tempbitmap_1 = std::make_unique<bitmap_ind16>(256,256);
+ m_temprender = std::make_unique<bitmap_ind16>(256,256);
m_tempbitmap_clip.set(0, 256-1, 0, 256-1);
m_tempbitmap_1->fill(0, m_tempbitmap_clip);
diff --git a/src/mame/drivers/paradise.cpp b/src/mame/drivers/paradise.cpp
index 07dd95971ab..e146a22f1a9 100644
--- a/src/mame/drivers/paradise.cpp
+++ b/src/mame/drivers/paradise.cpp
@@ -120,7 +120,7 @@ WRITE8_MEMBER(paradise_state::paradise_okibank_w)
WRITE8_MEMBER(paradise_state::torus_coin_counter_w)
{
- coin_counter_w(machine(), 0, data ^ 0xff);
+ machine().bookkeeping().coin_counter_w(0, data ^ 0xff);
}
static ADDRESS_MAP_START( base_map, AS_PROGRAM, 8, paradise_state )
diff --git a/src/mame/drivers/parodius.cpp b/src/mame/drivers/parodius.cpp
index da90e5be579..ad9a6ec7c61 100644
--- a/src/mame/drivers/parodius.cpp
+++ b/src/mame/drivers/parodius.cpp
@@ -46,8 +46,8 @@ WRITE8_MEMBER(parodius_state::parodius_3fc0_w)
logerror("%04x: 3fc0 = %02x\n",space.device().safe_pc(),data);
/* bit 0/1 = coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 3 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
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/paso1600.cpp b/src/mame/drivers/paso1600.cpp
index 094846bb015..a9f5f025a9a 100644
--- a/src/mame/drivers/paso1600.cpp
+++ b/src/mame/drivers/paso1600.cpp
@@ -41,11 +41,9 @@ public:
DECLARE_WRITE8_MEMBER(paso1600_6845_data_w);
DECLARE_READ8_MEMBER(paso1600_6845_data_r);
DECLARE_READ8_MEMBER(paso1600_6845_status_r);
- DECLARE_READ8_MEMBER(test_r);
DECLARE_READ8_MEMBER(key_r);
DECLARE_WRITE8_MEMBER(key_w);
DECLARE_READ16_MEMBER(test_hi_r);
- DECLARE_WRITE_LINE_MEMBER(paso1600_set_int_line);
UINT8 m_crtc_vreg[0x100],m_crtc_index;
UINT8 *m_p_chargen;
UINT8 *m_p_pcg;
@@ -62,7 +60,6 @@ public:
virtual void machine_reset() override;
virtual void video_start() override;
UINT32 screen_update_paso1600(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- IRQ_CALLBACK_MEMBER(paso1600_irq_callback);
};
#define mc6845_h_char_total (m_crtc_vreg[0])
diff --git a/src/mame/drivers/pasopia.cpp b/src/mame/drivers/pasopia.cpp
index e22b0a09f67..aa65d9979b9 100644
--- a/src/mame/drivers/pasopia.cpp
+++ b/src/mame/drivers/pasopia.cpp
@@ -42,8 +42,6 @@ public:
required_device<mc6845_device> m_crtc;
required_device<palette_device> m_palette;
- DECLARE_READ8_MEMBER(pasopia_romram_r);
- DECLARE_WRITE8_MEMBER(pasopia_ram_w);
DECLARE_WRITE8_MEMBER(pasopia_ctrl_w);
DECLARE_WRITE8_MEMBER(vram_addr_lo_w);
DECLARE_WRITE8_MEMBER(vram_latch_w);
@@ -52,11 +50,6 @@ public:
DECLARE_WRITE8_MEMBER(vram_addr_hi_w);
DECLARE_WRITE8_MEMBER(screen_mode_w);
DECLARE_READ8_MEMBER(rombank_r);
- DECLARE_READ8_MEMBER(testa_r);
- DECLARE_READ8_MEMBER(testb_r);
- DECLARE_WRITE_LINE_MEMBER(testa_w);
- DECLARE_WRITE_LINE_MEMBER(testb_w);
- DECLARE_WRITE8_MEMBER(kbd_put);
DECLARE_READ8_MEMBER(mux_r);
DECLARE_READ8_MEMBER(keyb_r);
DECLARE_WRITE8_MEMBER(mux_w);
diff --git a/src/mame/drivers/pasopia7.cpp b/src/mame/drivers/pasopia7.cpp
index 7ae3c96a8f2..2a9ec18114d 100644
--- a/src/mame/drivers/pasopia7.cpp
+++ b/src/mame/drivers/pasopia7.cpp
@@ -88,7 +88,7 @@ public:
DECLARE_READ8_MEMBER(nmi_portb_r);
UINT8 m_vram_sel;
UINT8 m_mio_sel;
- UINT8 *m_p7_pal;
+ std::unique_ptr<UINT8[]> m_p7_pal;
UINT8 m_bank_reg;
UINT16 m_cursor_addr;
UINT8 m_cursor_blink;
@@ -136,7 +136,7 @@ TIMER_CALLBACK_MEMBER(pasopia7_state::pio_timer)
VIDEO_START_MEMBER(pasopia7_state,pasopia7)
{
- m_p7_pal = auto_alloc_array(machine(), UINT8, 0x10);
+ m_p7_pal = std::make_unique<UINT8[]>(0x10);
}
void pasopia7_state::draw_cg4_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int width)
diff --git a/src/mame/drivers/patinho_feio.cpp b/src/mame/drivers/patinho_feio.cpp
index 884f4c8f4c2..e40274c884a 100644
--- a/src/mame/drivers/patinho_feio.cpp
+++ b/src/mame/drivers/patinho_feio.cpp
@@ -10,16 +10,16 @@
class patinho_feio_state : public driver_device
{
public:
- patinho_feio_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- //,m_maincpu(*this, "maincpu")
- { }
-
- DECLARE_DRIVER_INIT(patinho_feio);
- DECLARE_READ16_MEMBER(rc_r);
- void load_tape(const char* name);
- void load_raw_data(const char* name, unsigned int start_address, unsigned int data_length);
- virtual void machine_start() override;
+ patinho_feio_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ //,m_maincpu(*this, "maincpu")
+ { }
+
+ DECLARE_DRIVER_INIT(patinho_feio);
+ DECLARE_READ16_MEMBER(rc_r);
+ void load_tape(const char* name);
+ void load_raw_data(const char* name, unsigned int start_address, unsigned int data_length);
+ virtual void machine_start() override;
// virtual void machine_reset();
// required_device<patinho_feio_cpu_device> m_maincpu;
};
@@ -33,84 +33,84 @@ DRIVER_INIT_MEMBER(patinho_feio_state, patinho_feio)
READ16_MEMBER(patinho_feio_state::rc_r)
{
- return ioport("RC_HIGH")->read() << 8 | ioport("RC_LOW")->read();
+ return ioport("RC_HIGH")->read() << 8 | ioport("RC_LOW")->read();
}
void patinho_feio_state::load_tape(const char* name){
- UINT8 *RAM = (UINT8 *) memshare("maincpu:internalram")->ptr();
- UINT8 *data = memregion(name)->base();
- unsigned int data_length = data[0];
- unsigned int start_address = data[1]*256 + data[2];
- INT8 expected_checksum = data[data_length + 3];
- INT8 checksum = 0;
-
- for (int i = 0; i < data_length + 3; i++){
- checksum -= (INT8) data[i];
- }
-
- if (checksum != expected_checksum){
- printf("[WARNING] Tape \"%s\": checksum = 0x%02X (expected 0x%02X)\n",
- name, (unsigned char) checksum, (unsigned char) expected_checksum);
- }
-
- memcpy(&RAM[start_address], &data[3], data_length);
+ UINT8 *RAM = (UINT8 *) memshare("maincpu:internalram")->ptr();
+ UINT8 *data = memregion(name)->base();
+ unsigned int data_length = data[0];
+ unsigned int start_address = data[1]*256 + data[2];
+ INT8 expected_checksum = data[data_length + 3];
+ INT8 checksum = 0;
+
+ for (int i = 0; i < data_length + 3; i++){
+ checksum -= (INT8) data[i];
+ }
+
+ if (checksum != expected_checksum){
+ printf("[WARNING] Tape \"%s\": checksum = 0x%02X (expected 0x%02X)\n",
+ name, (unsigned char) checksum, (unsigned char) expected_checksum);
+ }
+
+ memcpy(&RAM[start_address], &data[3], data_length);
}
void patinho_feio_state::load_raw_data(const char* name, unsigned int start_address, unsigned int data_length){
- UINT8 *RAM = (UINT8 *) memshare("maincpu:internalram")->ptr();
- UINT8 *data = memregion(name)->base();
+ UINT8 *RAM = (UINT8 *) memshare("maincpu:internalram")->ptr();
+ UINT8 *data = memregion(name)->base();
- memcpy(&RAM[start_address], data, data_length);
+ memcpy(&RAM[start_address], data, data_length);
}
void patinho_feio_state::machine_start(){
- // Copy some programs directly into RAM.
- // This is a hack for setting up the computer
- // while we don't support loading programs
- // from punched tape rolls...
-
- //"absolute program example" from page 16.7
- // Prints "PATINHO FEIO" on the DECWRITER:
- load_tape("exemplo_16.7");
-
- //"absolute program example" from appendix G:
- // Allows users to load programs from the
- // console into the computer memory.
- load_raw_data("hexam", 0xE00, 0x0D5);
+ // Copy some programs directly into RAM.
+ // This is a hack for setting up the computer
+ // while we don't support loading programs
+ // from punched tape rolls...
+
+ //"absolute program example" from page 16.7
+ // Prints "PATINHO FEIO" on the DECWRITER:
+ load_tape("exemplo_16.7");
+
+ //"absolute program example" from appendix G:
+ // Allows users to load programs from the
+ // console into the computer memory.
+ load_raw_data("hexam", 0xE00, 0x0D5);
}
static INPUT_PORTS_START( patinho_feio )
- PORT_START("RC_LOW")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 0") PORT_CODE(KEYCODE_EQUALS) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 1") PORT_CODE(KEYCODE_MINUS) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 2") PORT_CODE(KEYCODE_0) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 3") PORT_CODE(KEYCODE_9) PORT_TOGGLE
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 4") PORT_CODE(KEYCODE_8) PORT_TOGGLE
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 5") PORT_CODE(KEYCODE_7) PORT_TOGGLE
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 6") PORT_CODE(KEYCODE_6) PORT_TOGGLE
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 7") PORT_CODE(KEYCODE_5) PORT_TOGGLE
-
- PORT_START("RC_HIGH")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 8") PORT_CODE(KEYCODE_4) PORT_TOGGLE
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 7") PORT_CODE(KEYCODE_3) PORT_TOGGLE
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 10") PORT_CODE(KEYCODE_2) PORT_TOGGLE
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 11") PORT_CODE(KEYCODE_1) PORT_TOGGLE
+ PORT_START("RC_LOW")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 0") PORT_CODE(KEYCODE_EQUALS) PORT_TOGGLE
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 1") PORT_CODE(KEYCODE_MINUS) PORT_TOGGLE
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 2") PORT_CODE(KEYCODE_0) PORT_TOGGLE
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 3") PORT_CODE(KEYCODE_9) PORT_TOGGLE
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 4") PORT_CODE(KEYCODE_8) PORT_TOGGLE
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 5") PORT_CODE(KEYCODE_7) PORT_TOGGLE
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 6") PORT_CODE(KEYCODE_6) PORT_TOGGLE
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 7") PORT_CODE(KEYCODE_5) PORT_TOGGLE
+
+ PORT_START("RC_HIGH")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 8") PORT_CODE(KEYCODE_4) PORT_TOGGLE
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 7") PORT_CODE(KEYCODE_3) PORT_TOGGLE
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 10") PORT_CODE(KEYCODE_2) PORT_TOGGLE
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RC bit 11") PORT_CODE(KEYCODE_1) PORT_TOGGLE
INPUT_PORTS_END
static MACHINE_CONFIG_START( patinho_feio, patinho_feio_state )
- /* basic machine hardware */
- /* CPU @ approx. 500 kHz (memory cycle time is 2usec) */
- MCFG_CPU_ADD("maincpu", PATINHO_FEIO, 500000)
- MCFG_PATINHO_RC_READ_CB(READ16(patinho_feio_state, rc_r))
+ /* basic machine hardware */
+ /* CPU @ approx. 500 kHz (memory cycle time is 2usec) */
+ MCFG_CPU_ADD("maincpu", PATINHO_FEIO, 500000)
+ MCFG_PATINHO_RC_READ_CB(READ16(patinho_feio_state, rc_r))
MACHINE_CONFIG_END
ROM_START( patinho )
- ROM_REGION( 0x0d5, "hexam", 0 )
- ROM_LOAD( "apendice_g__hexam.bin", 0x000, 0x0d5, CRC(c6addc59) SHA1(126bc97247eac45c58708eaac216c2438e9e4af9) )
+ ROM_REGION( 0x0d5, "hexam", 0 )
+ ROM_LOAD( "apendice_g__hexam.bin", 0x000, 0x0d5, CRC(c6addc59) SHA1(126bc97247eac45c58708eaac216c2438e9e4af9) )
- ROM_REGION( 0x0d5, "exemplo_16.7", 0 )
- ROM_LOAD( "exemplo_16.7.bin", 0x000, 0x028, CRC(0a87ac8d) SHA1(7c35ac3eed9ed239f2ef56c26e6f0c59f635e1ac) )
+ ROM_REGION( 0x0d5, "exemplo_16.7", 0 )
+ ROM_LOAD( "exemplo_16.7.bin", 0x000, 0x028, CRC(0a87ac8d) SHA1(7c35ac3eed9ed239f2ef56c26e6f0c59f635e1ac) )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1972, patinho, 0, 0, patinho_feio, patinho_feio, patinho_feio_state, patinho_feio, "Escola Politécnica - Universidade de São Paulo", "Patinho Feio" , MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING)
+COMP( 1972, patinho, 0, 0, patinho_feio, patinho_feio, patinho_feio_state, patinho_feio, "Escola Politecnica - Universidade de Sao Paulo", "Patinho Feio" , MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/pb1000.cpp b/src/mame/drivers/pb1000.cpp
index e6e9beea7df..f2f2151fe07 100644
--- a/src/mame/drivers/pb1000.cpp
+++ b/src/mame/drivers/pb1000.cpp
@@ -57,7 +57,6 @@ public:
memory_region *m_card2_reg;
virtual void machine_start() override;
- UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE16_MEMBER( gatearray_w );
DECLARE_WRITE8_MEMBER( lcd_control );
DECLARE_READ8_MEMBER( lcd_data_r );
@@ -505,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/pc1500.cpp b/src/mame/drivers/pc1500.cpp
index dd55597784a..a916c5658b4 100644
--- a/src/mame/drivers/pc1500.cpp
+++ b/src/mame/drivers/pc1500.cpp
@@ -99,20 +99,20 @@ UINT32 pc1500_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
}
}
- output_set_value("BUSY", BIT(m_lcd_data[0x4e], 0));
- output_set_value("SHIFT", BIT(m_lcd_data[0x4e], 1));
- output_set_value("SML", BIT(m_lcd_data[0x4e], 2));
- output_set_value("SMALL", BIT(m_lcd_data[0x4e], 3));
- output_set_value("III", BIT(m_lcd_data[0x4e], 4));
- output_set_value("II", BIT(m_lcd_data[0x4e], 5));
- output_set_value("I", BIT(m_lcd_data[0x4e], 6));
- output_set_value("DEF", BIT(m_lcd_data[0x4e], 7));
- output_set_value("DE", BIT(m_lcd_data[0x4f], 0));
- output_set_value("G", BIT(m_lcd_data[0x4f], 1));
- output_set_value("RAD", BIT(m_lcd_data[0x4f], 2));
- output_set_value("RESERVE", BIT(m_lcd_data[0x4f], 4));
- output_set_value("PRO", BIT(m_lcd_data[0x4f], 5));
- output_set_value("RUN", BIT(m_lcd_data[0x4f], 6));
+ output().set_value("BUSY", BIT(m_lcd_data[0x4e], 0));
+ output().set_value("SHIFT", BIT(m_lcd_data[0x4e], 1));
+ output().set_value("SML", BIT(m_lcd_data[0x4e], 2));
+ output().set_value("SMALL", BIT(m_lcd_data[0x4e], 3));
+ output().set_value("III", BIT(m_lcd_data[0x4e], 4));
+ output().set_value("II", BIT(m_lcd_data[0x4e], 5));
+ output().set_value("I", BIT(m_lcd_data[0x4e], 6));
+ output().set_value("DEF", BIT(m_lcd_data[0x4e], 7));
+ output().set_value("DE", BIT(m_lcd_data[0x4f], 0));
+ output().set_value("G", BIT(m_lcd_data[0x4f], 1));
+ output().set_value("RAD", BIT(m_lcd_data[0x4f], 2));
+ output().set_value("RESERVE", BIT(m_lcd_data[0x4f], 4));
+ output().set_value("PRO", BIT(m_lcd_data[0x4f], 5));
+ output().set_value("RUN", BIT(m_lcd_data[0x4f], 6));
return 0;
}
diff --git a/src/mame/drivers/pc2000.cpp b/src/mame/drivers/pc2000.cpp
index b5aec6f6b9f..152ee648b28 100644
--- a/src/mame/drivers/pc2000.cpp
+++ b/src/mame/drivers/pc2000.cpp
@@ -255,10 +255,10 @@ SED1520_UPDATE_CB(gl3000s_screen_update_left)
else if ((x == 75 || x == 77 || x == 79) && yi == 5) points[y][dpos] |= (state << 4);
else if ((x == 75 || x == 77 || x == 79) && yi == 6) points[y][dpos] |= (state << 3);
- else if (y == 1 && x >= 65 && x <= 68 && yi == 7) output_set_indexed_value("LEV", x - 64, state);
- else if (x >= 59 && x <= 60 && yi == 7) output_set_indexed_value("TRY", x - 58 + (y ? 0 : 1), state);
- else if (y == 1 && x >= 61 && x <= 64 && yi == 7) output_set_indexed_value("TICK", x - 59, state);
- else if (y == 0 && x >= 61 && x <= 64 && yi == 7) output_set_indexed_value("TICK", 62 - x + (x >= 63 ? 8 : 0), state);
+ else if (y == 1 && x >= 65 && x <= 68 && yi == 7) device.machine().output().set_indexed_value("LEV", x - 64, state);
+ else if (x >= 59 && x <= 60 && yi == 7) device.machine().output().set_indexed_value("TRY", x - 58 + (y ? 0 : 1), state);
+ else if (y == 1 && x >= 61 && x <= 64 && yi == 7) device.machine().output().set_indexed_value("TICK", x - 59, state);
+ else if (y == 0 && x >= 61 && x <= 64 && yi == 7) device.machine().output().set_indexed_value("TICK", 62 - x + (x >= 63 ? 8 : 0), state);
else if (x < 74 && yi < 7)
{
@@ -270,9 +270,9 @@ SED1520_UPDATE_CB(gl3000s_screen_update_left)
for(int i=0; i < 3; i++)
{
- output_set_indexed_value("TIME", i, sec[i]);
- output_set_indexed_value("P1", i, points[1][i]);
- output_set_indexed_value("P2", i, points[0][i]);
+ device.machine().output().set_indexed_value("TIME", i, sec[i]);
+ device.machine().output().set_indexed_value("P1", i, points[1][i]);
+ device.machine().output().set_indexed_value("P2", i, points[0][i]);
}
return gl3000s_sed1520_screen_update(device, bitmap, cliprect, vram, start_line, adc, 58);
@@ -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,11 +848,13 @@ 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")
MCFG_GENERIC_LOAD(pc2000_state, pc2000_cart)
+
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pc1000_cart", "pc1000")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gl2000, pc2000 )
@@ -933,6 +933,12 @@ static MACHINE_CONFIG_DERIVED_CLASS( misterx, pc2000, pc1000_state )
MCFG_SOFTWARE_LIST_ADD("cart_list", "misterx")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( pc1000, misterx )
+ MCFG_SOFTWARE_LIST_REMOVE("cart_list")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "pc1000")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
+MACHINE_CONFIG_END
+
/* ROM definition */
ROM_START( pc2000 )
ROM_REGION( 0x40000, "bios", 0 )
@@ -1009,6 +1015,11 @@ ROM_START( misterx )
ROM_LOAD( "27-00882-001.bin", 0x000000, 0x020000, CRC(30e0dc94) SHA1(2f4675746a41399b3d9e3e8001a9b4a0dcc5b620))
ROM_END
+ROM_START( ordisava )
+ ROM_REGION( 0x20000, "bios", 0 )
+ ROM_LOAD( "27-00874-001.u4", 0x000000, 0x020000, CRC(5e40764e) SHA1(636ea61d3d675e51c20f610aae6824369c01a804))
+ROM_END
+
ROM_START( lexipcm )
ROM_REGION( 0x200000, "bios", 0 )
ROM_LOAD( "epoxy.u3", 0x00000, 0x100000, CRC(0a410790) SHA1(be04d5f74208a2f3b200daed75e04e966f64b545) )
@@ -1018,8 +1029,9 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1988, pc1000, 0, 0, misterx, pc1000, driver_device, 0, "Video Technology", "PreComputer 1000", MACHINE_NOT_WORKING)
+COMP( 1988, pc1000, 0, 0, pc1000, pc1000, driver_device, 0, "Video Technology", "PreComputer 1000", MACHINE_NOT_WORKING)
COMP( 1988, misterx, 0, 0, misterx, pc1000, driver_device, 0, "Video Technology / Yeno", "MisterX", MACHINE_NOT_WORKING)
+COMP( 1988, ordisava, 0, 0, pc1000, pc1000, driver_device, 0, "Video Technology", "Ordisavant (France)", MACHINE_NOT_WORKING)
COMP( 1993, pc2000, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "PreComputer 2000", MACHINE_NOT_WORKING)
COMP( 1993, gl2000, 0, 0, gl2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 2000", MACHINE_NOT_WORKING)
COMP( 1994, gl2000c, gl2000, 0, gl2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 2000 Compact", MACHINE_NOT_WORKING)
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/pc6001.cpp b/src/mame/drivers/pc6001.cpp
index ad5243e5df6..0372eec0460 100644
--- a/src/mame/drivers/pc6001.cpp
+++ b/src/mame/drivers/pc6001.cpp
@@ -303,9 +303,6 @@ protected:
UINT8 check_joy_press();
UINT8 check_keyboard_press();
void vram_bank_change(UINT8 vram_bank);
- ATTR_CONST UINT8 pc6001_get_attributes(UINT8 c,int scanline, int pos);
- const UINT8 *pc6001_get_video_ram(int scanline);
- UINT8 pc6001_get_char_rom(UINT8 ch, int line);
};
diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp
index 1809fbf0039..091d394d1d2 100644
--- a/src/mame/drivers/pc8801.cpp
+++ b/src/mame/drivers/pc8801.cpp
@@ -324,10 +324,10 @@ public:
required_device<ym2203_device> m_opn;
required_device<palette_device> m_palette;
- UINT8 *m_work_ram;
- UINT8 *m_hi_work_ram;
- UINT8 *m_ext_work_ram;
- UINT8 *m_gvram;
+ std::unique_ptr<UINT8[]> m_work_ram;
+ std::unique_ptr<UINT8[]> m_hi_work_ram;
+ std::unique_ptr<UINT8[]> m_ext_work_ram;
+ std::unique_ptr<UINT8[]> m_gvram;
UINT8 *m_n80rom;
UINT8 *m_n88rom;
UINT8 *m_kanji_rom;
@@ -407,8 +407,6 @@ public:
DECLARE_WRITE8_MEMBER(pc8801_gfx_ctrl_w);
DECLARE_READ8_MEMBER(pc8801_vram_select_r);
DECLARE_WRITE8_MEMBER(pc8801_vram_select_w);
- DECLARE_WRITE8_MEMBER(i8214_irq_level_w);
- DECLARE_WRITE8_MEMBER(i8214_irq_mask_w);
DECLARE_WRITE8_MEMBER(pc8801_irq_level_w);
DECLARE_WRITE8_MEMBER(pc8801_irq_mask_w);
DECLARE_READ8_MEMBER(pc8801_window_bank_r);
@@ -469,7 +467,6 @@ public:
void pc8801_draw_char(bitmap_ind16 &bitmap,int x,int y,int pal,UINT8 gfx_mode,UINT8 reverse,UINT8 secret,
UINT8 blink,UINT8 upper,UINT8 lower,int y_size,int width, UINT8 non_special);
void draw_text(bitmap_ind16 &bitmap,int y_size, UINT8 width);
- void fdc_irq_w(bool state);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_PALETTE_INIT(pc8801);
@@ -489,12 +486,9 @@ public:
DECLARE_WRITE8_MEMBER(cpu_8255_c_w);
DECLARE_READ8_MEMBER(fdc_8255_c_r);
DECLARE_WRITE8_MEMBER(fdc_8255_c_w);
- DECLARE_WRITE_LINE_MEMBER(pic_int_w);
- DECLARE_WRITE_LINE_MEMBER(pic_enlg_w);
DECLARE_READ8_MEMBER(opn_porta_r);
DECLARE_READ8_MEMBER(opn_portb_r);
IRQ_CALLBACK_MEMBER(pc8801_irq_callback);
- void pc8801_raise_irq(UINT8 irq,UINT8 state);
DECLARE_WRITE_LINE_MEMBER(pc8801_sound_irq);
};
@@ -689,7 +683,7 @@ UINT8 pc8801_state::calc_cursor_pos(int x,int y,int yi)
UINT8 pc8801_state::extract_text_attribute(UINT32 address,int x, UINT8 width, UINT8 &non_special)
{
- UINT8 *vram = m_work_ram;
+ UINT8 *vram = m_work_ram.get();
int i;
int fifo_size;
int offset;
@@ -728,7 +722,7 @@ UINT8 pc8801_state::extract_text_attribute(UINT32 address,int x, UINT8 width, UI
void pc8801_state::pc8801_draw_char(bitmap_ind16 &bitmap,int x,int y,int pal,UINT8 gfx_mode,UINT8 reverse,UINT8 secret,UINT8 blink,UINT8 upper,UINT8 lower,int y_size,int width, UINT8 non_special)
{
int xi,yi;
- UINT8 *vram = m_work_ram;
+ UINT8 *vram = m_work_ram.get();
UINT8 is_cursor;
UINT8 y_height, y_double;
UINT8 y_step;
@@ -2400,19 +2394,19 @@ void pc8801_state::machine_start()
m_rtc->cs_w(1);
m_rtc->oe_w(1);
- m_work_ram = auto_alloc_array_clear(machine(), UINT8, 0x10000);
- m_hi_work_ram = auto_alloc_array_clear(machine(), UINT8, 0x1000);
- m_ext_work_ram = auto_alloc_array_clear(machine(), UINT8, 0x8000*0x100);
- m_gvram = auto_alloc_array_clear(machine(), UINT8, 0xc000);
+ m_work_ram = make_unique_clear<UINT8[]>(0x10000);
+ m_hi_work_ram = make_unique_clear<UINT8[]>(0x1000);
+ m_ext_work_ram = make_unique_clear<UINT8[]>(0x8000*0x100);
+ m_gvram = make_unique_clear<UINT8[]>(0xc000);
m_n80rom = memregion("n80rom")->base();
m_n88rom = memregion("n88rom")->base();
m_kanji_rom = memregion("kanji")->base();
m_cg_rom = memregion("cgrom")->base();
- save_pointer(NAME(m_work_ram), 0x10000);
- save_pointer(NAME(m_hi_work_ram), 0x1000);
- save_pointer(NAME(m_ext_work_ram), 0x8000*0x100);
- save_pointer(NAME(m_gvram), 0xc000);
+ save_pointer(NAME(m_work_ram.get()), 0x10000);
+ save_pointer(NAME(m_hi_work_ram.get()), 0x1000);
+ save_pointer(NAME(m_ext_work_ram.get()), 0x8000*0x100);
+ save_pointer(NAME(m_gvram.get()), 0xc000);
}
void pc8801_state::machine_reset()
@@ -2454,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
@@ -2646,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/pc88va.cpp b/src/mame/drivers/pc88va.cpp
index be409fbc60c..a7f2590a698 100644
--- a/src/mame/drivers/pc88va.cpp
+++ b/src/mame/drivers/pc88va.cpp
@@ -131,7 +131,6 @@ public:
DECLARE_WRITE16_MEMBER(video_pri_w);
DECLARE_READ8_MEMBER(backupram_dsw_r);
DECLARE_WRITE8_MEMBER(sys_port1_w);
- DECLARE_WRITE8_MEMBER(fdc_irq_vector_w);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp
index e24ba892e97..433e8346858 100644
--- a/src/mame/drivers/pc9801.cpp
+++ b/src/mame/drivers/pc9801.cpp
@@ -457,7 +457,8 @@ public:
m_sasi_data_out(*this, "sasi_data_out"),
m_sasi_data_in(*this, "sasi_data_in"),
m_sasi_ctrl_in(*this, "sasi_ctrl_in"),
- m_ide(*this, "ide"),
+ m_ide1(*this, "ide1"),
+ m_ide2(*this, "ide2"),
m_video_ram_1(*this, "video_ram_1"),
m_video_ram_2(*this, "video_ram_2"),
m_ext_gvram(*this, "ext_gvram"),
@@ -485,10 +486,11 @@ public:
optional_device<output_latch_device> m_sasi_data_out;
optional_device<input_buffer_device> m_sasi_data_in;
optional_device<input_buffer_device> m_sasi_ctrl_in;
- optional_device<ata_interface_device> m_ide;
+ optional_device<ata_interface_device> m_ide1;
+ optional_device<ata_interface_device> m_ide2;
required_shared_ptr<UINT16> m_video_ram_1;
required_shared_ptr<UINT16> m_video_ram_2;
- optional_shared_ptr<UINT16> m_ext_gvram;
+ optional_shared_ptr<UINT32> m_ext_gvram;
required_device<beep_device> m_beeper;
optional_device<ram_device> m_ram;
required_device<gfxdecode_device> m_gfxdecode;
@@ -516,7 +518,7 @@ public:
UINT8 m_txt_scroll_reg[8];
UINT8 m_pal_clut[4];
- UINT16 *m_tvram;
+ std::unique_ptr<UINT16[]> m_tvram;
UINT16 m_font_addr;
UINT8 m_font_line;
@@ -598,7 +600,18 @@ public:
UINT16 egc_blit_r(UINT32 offset, UINT16 mem_mask);
UINT32 pc9801_286_a20(bool state);
- DECLARE_READ8_MEMBER(ide_hack_r);
+ DECLARE_READ8_MEMBER(ide_ctrl_r);
+ DECLARE_WRITE8_MEMBER(ide_ctrl_w);
+ DECLARE_READ16_MEMBER(ide_cs0_r);
+ DECLARE_WRITE16_MEMBER(ide_cs0_w);
+ DECLARE_READ16_MEMBER(ide_cs1_r);
+ DECLARE_WRITE16_MEMBER(ide_cs1_w);
+ DECLARE_WRITE_LINE_MEMBER(ide1_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(ide2_irq_w);
+
+ UINT8 m_ide_sel;
+ bool m_ide1_irq, m_ide2_irq;
+
DECLARE_WRITE8_MEMBER(sasi_data_w);
DECLARE_READ8_MEMBER(sasi_data_r);
DECLARE_WRITE_LINE_MEMBER(write_sasi_io);
@@ -749,7 +762,7 @@ void pc9801_state::device_timer(emu_timer &timer, device_timer_id id, int param,
void pc9801_state::video_start()
{
- m_tvram = auto_alloc_array(machine(), UINT16, 0x2000);
+ m_tvram = std::make_unique<UINT16[]>(0x2000);
// find memory regions
m_char_rom = memregion("chargen")->base();
@@ -772,32 +785,24 @@ UPD7220_DISPLAY_PIXELS_MEMBER( pc9801_state::hgdc_display_pixels )
int xi;
int res_x,res_y;
UINT8 pen;
- UINT8 interlace_on;
UINT8 colors16_mode;
if(m_video_ff[DISPLAY_REG] == 0) //screen is off
return;
-// popmessage("%02x %d",m_video_ff[INTERLACE_REG],machine().first_screen()->visible_area().max_y + 1);
-// interlace_on = ((machine().first_screen()->visible_area().max_y + 1) >= 400) ? 1 : 0;
- interlace_on = m_video_ff[INTERLACE_REG];
colors16_mode = (m_ex_video_ff[ANALOG_16_MODE]) ? 16 : 8;
if(m_ex_video_ff[ANALOG_256_MODE])
{
+ UINT8 *ext_gvram = (UINT8 *)m_ext_gvram.target();
for(xi=0;xi<16;xi++)
{
res_x = x + xi;
res_y = y;
- if(!m_screen->visible_area().contains(res_x, res_y*2+0))
- return;
-
- pen = m_ext_gvram[((address*16+xi)+(m_vram_disp*0x40000)) >> 1];
+ pen = ext_gvram[(address >> 1)*16+xi+(m_vram_disp*0x20000)];
- bitmap.pix32(res_y*2+0, res_x) = palette[pen + 0x20];
- if(m_screen->visible_area().contains(res_x, res_y*2+1))
- bitmap.pix32(res_y*2+1, res_x) = palette[pen + 0x20];
+ bitmap.pix32(res_y, res_x) = palette[pen + 0x20];
}
}
else
@@ -812,17 +817,7 @@ UPD7220_DISPLAY_PIXELS_MEMBER( pc9801_state::hgdc_display_pixels )
pen|= ((m_video_ram_2[((address & 0x7fff) + (0x18000) + (m_vram_disp*0x20000)) >> 1] >> xi) & 1) ? 4 : 0;
if(m_ex_video_ff[ANALOG_16_MODE])
pen|= ((m_video_ram_2[((address & 0x7fff) + (0) + (m_vram_disp*0x20000)) >> 1] >> xi) & 1) ? 8 : 0;
-
- if(interlace_on)
- {
- if(m_screen->visible_area().contains(res_x, res_y*2+0))
- bitmap.pix32(res_y*2+0, res_x) = palette[pen + colors16_mode];
- /* TODO: it looks like that PC-98xx can only display even lines ... */
- if(m_screen->visible_area().contains(res_x, res_y*2+1))
- bitmap.pix32(res_y*2+1, res_x) = palette[pen + colors16_mode];
- }
- else
- bitmap.pix32(res_y, res_x) = palette[pen + colors16_mode];
+ bitmap.pix32(res_y, res_x) = palette[pen + colors16_mode];
}
}
}
@@ -945,7 +940,7 @@ UPD7220_DRAW_TEXT_LINE_MEMBER( pc9801_state::hgdc_draw_text )
}
if(reverse) { tile_data^=0xff; }
- if(u_line && yi == 7) { tile_data = 0xff; }
+ if(u_line && yi == lr-1) { tile_data = 0xff; }
if(v_line) { tile_data|=8; }
/* TODO: proper blink rate for these two */
@@ -1604,12 +1599,50 @@ WRITE16_MEMBER(pc9801_state::upd7220_grcg_w)
}
}
-READ8_MEMBER(pc9801_state::ide_hack_r)
+READ8_MEMBER(pc9801_state::ide_ctrl_r)
{
address_space &ram = m_maincpu->space(AS_PROGRAM);
// this makes the ide driver not do 512 to 256 byte sector translation, the 9821 looks for bit 6 of offset 0xac403 of the kanji ram to set this, the rs unknown
ram.write_byte(0x457, ram.read_byte(0x457) | 0xc0);
- return 0xff;
+ return m_ide_sel;
+}
+
+WRITE8_MEMBER(pc9801_state::ide_ctrl_w)
+{
+ if(!(data & 0x80))
+ m_ide_sel = data & 1;
+}
+
+READ16_MEMBER(pc9801_state::ide_cs0_r)
+{
+ return (m_ide_sel ? m_ide2 : m_ide1)->read_cs0(space, offset, mem_mask);
+}
+
+WRITE16_MEMBER(pc9801_state::ide_cs0_w)
+{
+ (m_ide_sel ? m_ide2 : m_ide1)->write_cs0(space, offset, data, mem_mask);
+}
+
+READ16_MEMBER(pc9801_state::ide_cs1_r)
+{
+ return (m_ide_sel ? m_ide2 : m_ide1)->read_cs1(space, offset, mem_mask);
+}
+
+WRITE16_MEMBER(pc9801_state::ide_cs1_w)
+{
+ (m_ide_sel ? m_ide2 : m_ide1)->write_cs1(space, offset, data, mem_mask);
+}
+
+WRITE_LINE_MEMBER(pc9801_state::ide1_irq_w)
+{
+ m_ide1_irq = state ? true : false;
+ m_pic2->ir1_w((state || m_ide2_irq) ? ASSERT_LINE : CLEAR_LINE);
+}
+
+WRITE_LINE_MEMBER(pc9801_state::ide2_irq_w)
+{
+ m_ide2_irq = state ? true : false;
+ m_pic2->ir1_w((state || m_ide1_irq) ? ASSERT_LINE : CLEAR_LINE);
}
READ8_MEMBER( pc9801_state::sasi_data_r )
@@ -2226,9 +2259,10 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pc9801rs_io, AS_IO, 16, pc9801_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0050, 0x0053) AM_WRITE8(pc9801rs_nmi_w, 0xffff)
- AM_RANGE(0x0430, 0x0433) AM_READ8(ide_hack_r, 0x00ff)
- AM_RANGE(0x0640, 0x064f) AM_DEVREADWRITE("ide", ata_interface_device, read_cs0, write_cs0)
- AM_RANGE(0x0740, 0x074f) AM_DEVREADWRITE("ide", ata_interface_device, read_cs1, write_cs1)
+ 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(0xbfd8, 0xbfdf) AM_WRITE8(pc9801rs_mouse_freq_w, 0xffff)
AM_RANGE(0xe0d0, 0xe0d3) AM_READ8(pc9801rs_midi_r, 0xffff)
AM_IMPORT_FROM(pc9801ux_io)
@@ -2457,15 +2491,15 @@ static ADDRESS_MAP_START( pc9821_io, AS_IO, 32, pc9801_state )
AM_RANGE(0x00f0, 0x00ff) AM_READWRITE8(a20_ctrl_r, a20_ctrl_w, 0x00ff00ff)
// AM_RANGE(0x0188, 0x018f) AM_READWRITE8(pc9801_opn_r, pc9801_opn_w, 0xffffffff) //ym2203 opn / <undefined>
// AM_RANGE(0x018c, 0x018f) YM2203 OPN extended ports / <undefined>
- AM_RANGE(0x0430, 0x0433) AM_READ8(ide_hack_r, 0x000000ff)
+ AM_RANGE(0x0430, 0x0433) AM_READWRITE8(ide_ctrl_r, ide_ctrl_w, 0x00ff00ff)
AM_RANGE(0x0438, 0x043b) AM_READWRITE8(pc9801rs_access_ctrl_r,pc9801rs_access_ctrl_w,0xffffffff)
// AM_RANGE(0x043d, 0x043d) ROM/RAM bank (NEC)
AM_RANGE(0x043c, 0x043f) AM_WRITE8(pc9801rs_bank_w, 0xffffffff) //ROM/RAM bank (EPSON)
AM_RANGE(0x0460, 0x0463) AM_READWRITE8(pc9821_window_bank_r,pc9821_window_bank_w, 0xffffffff)
AM_RANGE(0x04a0, 0x04af) AM_WRITE16(egc_w, 0xffffffff)
// AM_RANGE(0x04be, 0x04be) FDC "RPM" register
- AM_RANGE(0x0640, 0x064f) AM_DEVREADWRITE16("ide", ata_interface_device, read_cs0, write_cs0, 0xffffffff)
- AM_RANGE(0x0740, 0x074f) AM_DEVREADWRITE16("ide", ata_interface_device, read_cs1, write_cs1, 0xffffffff)
+ AM_RANGE(0x0640, 0x064f) AM_READWRITE16(ide_cs0_r, ide_cs0_w, 0xffffffff)
+ AM_RANGE(0x0740, 0x074f) AM_READWRITE16(ide_cs1_r, ide_cs1_w, 0xffffffff)
// AM_RANGE(0x08e0, 0x08ea) <undefined> / EMM SIO registers
AM_RANGE(0x09a0, 0x09a3) AM_READWRITE8(pc9821_ext2_video_ff_r, pc9821_ext2_video_ff_w, 0x000000ff) // GDC extended register r/w
// AM_RANGE(0x09a8, 0x09a8) GDC 31KHz register r/w
@@ -3068,7 +3102,7 @@ MACHINE_START_MEMBER(pc9801_state,pc9821ap2)
MACHINE_RESET_MEMBER(pc9801_state,pc9801_common)
{
- memset(m_tvram, 0, sizeof(UINT16) * 0x2000);
+ memset(m_tvram.get(), 0, sizeof(UINT16) * 0x2000);
/* this looks like to be some kind of backup ram, system will boot with green colors otherwise */
{
int i;
@@ -3082,7 +3116,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;
@@ -3122,6 +3155,8 @@ MACHINE_RESET_MEMBER(pc9801_state,pc9801rs)
m_rom_bank = 0;
m_fdc_ctrl = 3;
m_access_ctrl = 0;
+ m_ide_sel = 0;
+ m_ide1_irq = m_ide2_irq = false;
m_keyb_press = 0xff; // temp kludge, for PC-9821 booting
// m_has_opna = ioport("SOUND_CONFIG")->read() & 1;
m_maincpu->set_input_line(INPUT_LINE_A20, m_gate_a20);
@@ -3145,7 +3180,7 @@ MACHINE_RESET_MEMBER(pc9801_state,pc9821)
void pc9801_state::device_reset_after_children()
{
driver_device::device_reset_after_children();
- ata_mass_storage_device *ide0 = machine().device<ata_mass_storage_device>("ide:0:hdd");
+ ata_mass_storage_device *ide0 = machine().device<ata_mass_storage_device>("ide1:0:hdd");
if(ide0)
ide0->identify_device_buffer()[47] = 0;
}
@@ -3229,8 +3264,10 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( pc9801_ide )
- MCFG_ATA_INTERFACE_ADD("ide", ata_devices, "hdd", nullptr, false)
- MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir1_w))
+ 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_IRQ_HANDLER(WRITELINE(pc9801_state, ide2_irq_w))
MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( pc9801_common )
@@ -3303,7 +3340,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/pcat_nit.cpp b/src/mame/drivers/pcat_nit.cpp
index 0987b296837..25b02276175 100644
--- a/src/mame/drivers/pcat_nit.cpp
+++ b/src/mame/drivers/pcat_nit.cpp
@@ -99,7 +99,7 @@ public:
m_uart(*this, "ns16450_0"),
m_microtouch(*this, "microtouch") { }
- UINT8 *m_banked_nvram;
+ std::unique_ptr<UINT8[]> m_banked_nvram;
required_device<ns16450_device> m_uart;
required_device<microtouch_device> m_microtouch;
@@ -140,7 +140,7 @@ WRITE8_MEMBER(pcat_nit_state::pcat_nit_rombank_w)
space.install_readwrite_bank(0x000d8000, 0x000d9fff, "nvrambank" );
- membank("nvrambank")->set_base(m_banked_nvram);
+ membank("nvrambank")->set_base(m_banked_nvram.get());
}
}
@@ -413,8 +413,8 @@ ROM_END
DRIVER_INIT_MEMBER(pcat_nit_state,pcat_nit)
{
- m_banked_nvram = auto_alloc_array(machine(), UINT8, 0x2000);
- machine().device<nvram_device>("nvram")->set_base(m_banked_nvram, 0x2000);
+ m_banked_nvram = std::make_unique<UINT8[]>(0x2000);
+ machine().device<nvram_device>("nvram")->set_base(m_banked_nvram.get(), 0x2000);
}
GAME( 1993, streetg, 0, pcat_nit, pcat_nit, pcat_nit_state, pcat_nit, ROT0, "New Image Technologies", "Street Games (Revision 4)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp
index 5247700b56d..a721f4420e7 100644
--- a/src/mame/drivers/pce220.cpp
+++ b/src/mame/drivers/pce220.cpp
@@ -163,24 +163,24 @@ UINT32 pce220_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
memset(lcd_symbols, 0, sizeof(lcd_symbols));
}
- output_set_value("BUSY" , (lcd_symbols[0] & 0x01) ? 1 : 0);
- output_set_value("CAPS" , (lcd_symbols[0] & 0x02) ? 1 : 0);
- output_set_value("KANA" , (lcd_symbols[0] & 0x04) ? 1 : 0);
- output_set_value("SYO" , (lcd_symbols[0] & 0x08) ? 1 : 0);
- output_set_value("2ndF" , (lcd_symbols[0] & 0x10) ? 1 : 0);
- output_set_value("TEXT" , (lcd_symbols[1] & 0x08) ? 1 : 0);
- output_set_value("CASL" , (lcd_symbols[1] & 0x10) ? 1 : 0);
- output_set_value("PRO" , (lcd_symbols[1] & 0x20) ? 1 : 0);
- output_set_value("RUN" , (lcd_symbols[1] & 0x40) ? 1 : 0);
- output_set_value("BATT" , (lcd_symbols[2] & 0x01) ? 1 : 0);
- output_set_value("E" , (lcd_symbols[2] & 0x02) ? 1 : 0);
- output_set_value("M" , (lcd_symbols[2] & 0x04) ? 1 : 0);
- output_set_value("CONST", (lcd_symbols[2] & 0x08) ? 1 : 0);
- output_set_value("RAD" , (lcd_symbols[2] & 0x10) ? 1 : 0);
- output_set_value("G" , (lcd_symbols[2] & 0x20) ? 1 : 0);
- output_set_value("DE" , (lcd_symbols[2] & 0x40) ? 1 : 0);
- output_set_value("STAT" , (lcd_symbols[3] & 0x20) ? 1 : 0);
- output_set_value("PRINT", (lcd_symbols[3] & 0x40) ? 1 : 0);
+ output().set_value("BUSY" , (lcd_symbols[0] & 0x01) ? 1 : 0);
+ output().set_value("CAPS" , (lcd_symbols[0] & 0x02) ? 1 : 0);
+ output().set_value("KANA" , (lcd_symbols[0] & 0x04) ? 1 : 0);
+ output().set_value("SYO" , (lcd_symbols[0] & 0x08) ? 1 : 0);
+ output().set_value("2ndF" , (lcd_symbols[0] & 0x10) ? 1 : 0);
+ output().set_value("TEXT" , (lcd_symbols[1] & 0x08) ? 1 : 0);
+ output().set_value("CASL" , (lcd_symbols[1] & 0x10) ? 1 : 0);
+ output().set_value("PRO" , (lcd_symbols[1] & 0x20) ? 1 : 0);
+ output().set_value("RUN" , (lcd_symbols[1] & 0x40) ? 1 : 0);
+ output().set_value("BATT" , (lcd_symbols[2] & 0x01) ? 1 : 0);
+ output().set_value("E" , (lcd_symbols[2] & 0x02) ? 1 : 0);
+ output().set_value("M" , (lcd_symbols[2] & 0x04) ? 1 : 0);
+ output().set_value("CONST", (lcd_symbols[2] & 0x08) ? 1 : 0);
+ output().set_value("RAD" , (lcd_symbols[2] & 0x10) ? 1 : 0);
+ output().set_value("G" , (lcd_symbols[2] & 0x20) ? 1 : 0);
+ output().set_value("DE" , (lcd_symbols[2] & 0x40) ? 1 : 0);
+ output().set_value("STAT" , (lcd_symbols[3] & 0x20) ? 1 : 0);
+ output().set_value("PRINT", (lcd_symbols[3] & 0x40) ? 1 : 0);
return 0;
}
@@ -245,23 +245,23 @@ UINT32 pcg850v_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
memset(lcd_symbols, 0, sizeof(lcd_symbols));
}
- output_set_value("RUN" , (lcd_symbols[0] & 0x02) ? 1 : 0);
- output_set_value("PRO" , (lcd_symbols[0] & 0x08) ? 1 : 0);
- output_set_value("TEXT" , (lcd_symbols[0] & 0x40) ? 1 : 0);
- output_set_value("CASL" , (lcd_symbols[1] & 0x08) ? 1 : 0);
- output_set_value("STAT" , (lcd_symbols[2] & 0x01) ? 1 : 0);
- output_set_value("2ndF" , (lcd_symbols[2] & 0x20) ? 1 : 0);
- output_set_value("M" , (lcd_symbols[2] & 0x80) ? 1 : 0);
- output_set_value("CAPS" , (lcd_symbols[3] & 0x04) ? 1 : 0);
- output_set_value("KANA" , (lcd_symbols[3] & 0x80) ? 1 : 0);
- output_set_value("SYO" , (lcd_symbols[4] & 0x02) ? 1 : 0);
- output_set_value("DE" , (lcd_symbols[4] & 0x10) ? 1 : 0);
- output_set_value("G" , (lcd_symbols[4] & 0x40) ? 1 : 0);
- output_set_value("RAD" , (lcd_symbols[5] & 0x01) ? 1 : 0);
- output_set_value("CONST", (lcd_symbols[5] & 0x04) ? 1 : 0);
- output_set_value("PRINT", (lcd_symbols[5] & 0x10) ? 1 : 0);
- output_set_value("BUSY" , (lcd_symbols[5] & 0x40) ? 1 : 0);
- output_set_value("BATT" , (lcd_symbols[5] & 0x80) ? 1 : 0);
+ output().set_value("RUN" , (lcd_symbols[0] & 0x02) ? 1 : 0);
+ output().set_value("PRO" , (lcd_symbols[0] & 0x08) ? 1 : 0);
+ output().set_value("TEXT" , (lcd_symbols[0] & 0x40) ? 1 : 0);
+ output().set_value("CASL" , (lcd_symbols[1] & 0x08) ? 1 : 0);
+ output().set_value("STAT" , (lcd_symbols[2] & 0x01) ? 1 : 0);
+ output().set_value("2ndF" , (lcd_symbols[2] & 0x20) ? 1 : 0);
+ output().set_value("M" , (lcd_symbols[2] & 0x80) ? 1 : 0);
+ output().set_value("CAPS" , (lcd_symbols[3] & 0x04) ? 1 : 0);
+ output().set_value("KANA" , (lcd_symbols[3] & 0x80) ? 1 : 0);
+ output().set_value("SYO" , (lcd_symbols[4] & 0x02) ? 1 : 0);
+ output().set_value("DE" , (lcd_symbols[4] & 0x10) ? 1 : 0);
+ output().set_value("G" , (lcd_symbols[4] & 0x40) ? 1 : 0);
+ output().set_value("RAD" , (lcd_symbols[5] & 0x01) ? 1 : 0);
+ output().set_value("CONST", (lcd_symbols[5] & 0x04) ? 1 : 0);
+ output().set_value("PRINT", (lcd_symbols[5] & 0x10) ? 1 : 0);
+ output().set_value("BUSY" , (lcd_symbols[5] & 0x40) ? 1 : 0);
+ output().set_value("BATT" , (lcd_symbols[5] & 0x80) ? 1 : 0);
return 0;
}
@@ -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 69e014290f8..e99040f1991 100644
--- a/src/mame/drivers/pcxt.cpp
+++ b/src/mame/drivers/pcxt.cpp
@@ -106,7 +106,6 @@ public:
DECLARE_WRITE8_MEMBER(pc_dma_write_byte);
DECLARE_READ8_MEMBER(dma_page_select_r);
DECLARE_WRITE8_MEMBER(dma_page_select_w);
- DECLARE_WRITE8_MEMBER(tetriskr_bg_bank_w);
DECLARE_WRITE_LINE_MEMBER(ibm5150_pit8253_out2_changed);
DECLARE_READ8_MEMBER(port_a_r);
DECLARE_READ8_MEMBER(port_b_r);
@@ -123,7 +122,6 @@ public:
DECLARE_DRIVER_INIT(tetriskr);
DECLARE_DRIVER_INIT(filetto);
virtual void machine_reset() override;
- UINT32 screen_update_tetriskr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
UINT8 pcxt_speaker_get_spk();
void pcxt_speaker_set_spkrdata(UINT8 data);
required_device<cpu_device> m_maincpu;
@@ -411,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/pengo.cpp b/src/mame/drivers/pengo.cpp
index 2a921f26e2b..c47fb18f97f 100644
--- a/src/mame/drivers/pengo.cpp
+++ b/src/mame/drivers/pengo.cpp
@@ -115,7 +115,7 @@ public:
WRITE8_MEMBER(pengo_state::pengo_coin_counter_w)
{
- coin_counter_w(machine(), offset, data & 1);
+ machine().bookkeeping().coin_counter_w(offset, data & 1);
}
WRITE8_MEMBER(pengo_state::irq_mask_w)
diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp
index 48d583654c6..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, global_alloc(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 fde6361bcd3..216996c1464 100644
--- a/src/mame/drivers/peplus.cpp
+++ b/src/mame/drivers/peplus.cpp
@@ -143,7 +143,8 @@ Super PE+
XPnnnnnn Poker Programs. Different options for each set, but all use the same XnnnnnnP data roms
XnnnnnnP Poker Data. Contains poker game + paytable percentages
Data roms will not work with every Program rom. Incompatible combos report: Incompatible Data EPROM
- X000055P is a good example, it works with 19 XP000xxx Program roms. Others may be as few as 2.
+ X000055P is a good example, it works with most XP000xxx Program roms. Others may be as few as two due
+ to specific requirements of the game. Examples are Jackpot Poker and games with mid game bonus payouts.
XMPnnnnn Multi-Poker Programs. Different options for each set, but all use the same XMnnnnnP data
XMP00002 through XMP00006, XMP00020 & XMP00024 Use the XM000xxP Multi-Poker Data
XMP00014, XMP00017 & XMP00030 Use the WING Board add-on and use the XnnnnnnP Poker Data (Not all are compatible!)
@@ -163,6 +164,13 @@ NOTE: Do NOT use the CG+CAP combos listed below as THE definitive absolute refe
worked to produce correct card graphics plus paytable information for many sets. So the combos listed below
may not always be the "official" combo and a better or more correct combo may exist.
+NOTE: Sets marked PSR Verified use official IGT CG+CAP combo as documented in a IGT PSR (Program Summary Report)
+ Stardard PE+ sets marked as PSR Verified means the build version is correctly matched to the CG+CAP combo
+ Sets marked as PSR Verified on superboards means the XP000xxx poker program is correctly matched to the
+ CG+CAP combo. Except for specialty games the CG set is determined by XP000xxx Poker Program. However,
+ where specialty games are involved the X00xxxxP DATA rom determines the CG set due to specific needs.
+ PSR Verified does not gaurantee or imply that other XP000xxx programs are incompatible with said DATA rom.
+
NOTE: International PP0xxx sets support a Tournament mode. You can toggle back and forth between standard and
Tournament mode by pressing and holding Jackpot Reset (L key) and pressing Change Request (Y key)
@@ -256,8 +264,8 @@ public:
UINT16 door_wait;
UINT8 m_jumper_e16_e17;
UINT16 m_vid_address;
- UINT8 *m_palette_ram;
- UINT8 *m_palette_ram2;
+ std::unique_ptr<UINT8[]> m_palette_ram;
+ std::unique_ptr<UINT8[]> m_palette_ram2;
UINT64 m_last_cycles;
UINT8 m_coin_state;
UINT64 m_last_door;
@@ -448,14 +456,14 @@ WRITE8_MEMBER(peplus_state::peplus_cmos_w)
WRITE8_MEMBER(peplus_state::peplus_output_bank_a_w)
{
- output_set_value("pe_bnka0",(data >> 0) & 1); /* Coin Lockout */
- output_set_value("pe_bnka1",(data >> 1) & 1); /* Diverter */
- output_set_value("pe_bnka2",(data >> 2) & 1); /* Bell */
- output_set_value("pe_bnka3",(data >> 3) & 1); /* N/A */
- output_set_value("pe_bnka4",(data >> 4) & 1); /* Hopper 1 */
- output_set_value("pe_bnka5",(data >> 5) & 1); /* Hopper 2 */
- output_set_value("pe_bnka6",(data >> 6) & 1); /* specific to a kind of machine */
- output_set_value("pe_bnka7",(data >> 7) & 1); /* specific to a kind of machine */
+ output().set_value("pe_bnka0",(data >> 0) & 1); /* Coin Lockout */
+ output().set_value("pe_bnka1",(data >> 1) & 1); /* Diverter */
+ output().set_value("pe_bnka2",(data >> 2) & 1); /* Bell */
+ output().set_value("pe_bnka3",(data >> 3) & 1); /* N/A */
+ output().set_value("pe_bnka4",(data >> 4) & 1); /* Hopper 1 */
+ output().set_value("pe_bnka5",(data >> 5) & 1); /* Hopper 2 */
+ output().set_value("pe_bnka6",(data >> 6) & 1); /* specific to a kind of machine */
+ output().set_value("pe_bnka7",(data >> 7) & 1); /* specific to a kind of machine */
m_coin_out_state = 0;
if(((data >> 4) & 1) || ((data >> 5) & 1))
@@ -464,26 +472,26 @@ WRITE8_MEMBER(peplus_state::peplus_output_bank_a_w)
WRITE8_MEMBER(peplus_state::peplus_output_bank_b_w)
{
- output_set_value("pe_bnkb0",(data >> 0) & 1); /* specific to a kind of machine */
- output_set_value("pe_bnkb1",(data >> 1) & 1); /* Deal Spin Start */
- output_set_value("pe_bnkb2",(data >> 2) & 1); /* Cash Out */
- output_set_value("pe_bnkb3",(data >> 3) & 1); /* specific to a kind of machine */
- output_set_value("pe_bnkb4",(data >> 4) & 1); /* Bet 1 / Bet Max */
- output_set_value("pe_bnkb5",(data >> 5) & 1); /* Change Request */
- output_set_value("pe_bnkb6",(data >> 6) & 1); /* Door Open */
- output_set_value("pe_bnkb7",(data >> 7) & 1); /* specific to a kind of machine */
+ output().set_value("pe_bnkb0",(data >> 0) & 1); /* specific to a kind of machine */
+ output().set_value("pe_bnkb1",(data >> 1) & 1); /* Deal Spin Start */
+ output().set_value("pe_bnkb2",(data >> 2) & 1); /* Cash Out */
+ output().set_value("pe_bnkb3",(data >> 3) & 1); /* specific to a kind of machine */
+ output().set_value("pe_bnkb4",(data >> 4) & 1); /* Bet 1 / Bet Max */
+ output().set_value("pe_bnkb5",(data >> 5) & 1); /* Change Request */
+ output().set_value("pe_bnkb6",(data >> 6) & 1); /* Door Open */
+ output().set_value("pe_bnkb7",(data >> 7) & 1); /* specific to a kind of machine */
}
WRITE8_MEMBER(peplus_state::peplus_output_bank_c_w)
{
- output_set_value("pe_bnkc0",(data >> 0) & 1); /* Coin In Meter */
- output_set_value("pe_bnkc1",(data >> 1) & 1); /* Coin Out Meter */
- output_set_value("pe_bnkc2",(data >> 2) & 1); /* Coin Drop Meter */
- output_set_value("pe_bnkc3",(data >> 3) & 1); /* Jackpot Meter */
- output_set_value("pe_bnkc4",(data >> 4) & 1); /* Bill Acceptor Enabled */
- output_set_value("pe_bnkc5",(data >> 5) & 1); /* SDS Out */
- output_set_value("pe_bnkc6",(data >> 6) & 1); /* N/A */
- output_set_value("pe_bnkc7",(data >> 7) & 1); /* Game Meter */
+ output().set_value("pe_bnkc0",(data >> 0) & 1); /* Coin In Meter */
+ output().set_value("pe_bnkc1",(data >> 1) & 1); /* Coin Out Meter */
+ output().set_value("pe_bnkc2",(data >> 2) & 1); /* Coin Drop Meter */
+ output().set_value("pe_bnkc3",(data >> 3) & 1); /* Jackpot Meter */
+ output().set_value("pe_bnkc4",(data >> 4) & 1); /* Bill Acceptor Enabled */
+ output().set_value("pe_bnkc5",(data >> 5) & 1); /* SDS Out */
+ output().set_value("pe_bnkc6",(data >> 6) & 1); /* N/A */
+ output().set_value("pe_bnkc7",(data >> 7) & 1); /* Game Meter */
m_bv_enable_state = (data >> 4) & 1;
}
@@ -903,10 +911,10 @@ TILE_GET_INFO_MEMBER(peplus_state::get_bg_tile_info)
void peplus_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(peplus_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 40, 25);
- m_palette_ram = auto_alloc_array(machine(), UINT8, 0x3000);
- memset(m_palette_ram, 0, 0x3000);
- m_palette_ram2 = auto_alloc_array(machine(), UINT8, 0x3000);
- memset(m_palette_ram2, 0, 0x3000);
+ m_palette_ram = std::make_unique<UINT8[]>(0x3000);
+ memset(m_palette_ram.get(), 0, 0x3000);
+ m_palette_ram2 = std::make_unique<UINT8[]>(0x3000);
+ memset(m_palette_ram2.get(), 0, 0x3000);
}
UINT32 peplus_state::screen_update_peplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -1419,6 +1427,34 @@ ROM_START( peset004 ) /* Normal board : Set Chip (Set004) - PE+ Set Denomination
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
+ROM_START( peset012 ) /* Normal board : Set Chip (Set012) - PE+ Set Denomination / Enable Validator */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "set012.u68", 0x00000, 0x10000, CRC(761d2799) SHA1(eab8d7f1eb05f2657b007ecfe3b1f2b38658bcf1) )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
+ ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
+ ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
+ ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
+ROM_START( peset022 ) /* Normal board : Set Chip (Set022) - PE+ Set Denomination / Enable Validator */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "set022.u68", 0x00000, 0x10000, CRC(bf470acc) SHA1(2a219246d70e46dea62a0b5ca828b543b453ce03) )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
+ ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
+ ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
+ ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
/* Known to exsist SET033 - PE+ Set Denomination / Enable Validator / SAS 4.0 */
ROM_START( peset038 ) /* Normal board : Set Chip (Set038) - PE+ Set Denomination / Enable Validator */
@@ -1435,6 +1471,34 @@ ROM_START( peset038 ) /* Normal board : Set Chip (Set038) - PE+ Set Denomination
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
+ROM_START( peset100 ) /* Normal board : Set Chip (Set100) - PE+ Set Denomination / Enable Validator */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "set100.u68", 0x00000, 0x10000, CRC(9c97a3b7) SHA1(0e22c9019ee02f8634436d8f3e1ba5ee2db0267c) )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
+ ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
+ ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
+ ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
+ROM_START( peset117 ) /* Normal board : Set Chip (Set100) - PE+ Set Denomination / Enable Validator */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "set117.u68", 0x00000, 0x10000, CRC(91f6e10e) SHA1(905ea19b2d031cdb4b4a51578ca42008c29c3e19) )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
+ ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
+ ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
+ ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
ROM_START( peivc006 ) /* Normal board : Clear Chip (IVC006) - PE+ Clear CMOS / E-Square */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "ivc006.u68", 0x00000, 0x8000, CRC(9a408727) SHA1(cc2d9ba66c461ae81f9fae1e068981d8de093416) ) /* 27C256 EPROM */
@@ -2107,7 +2171,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "cap435.u37", 0x0000, 0x0100, CRC(038cabc6) SHA1(c6514b4f9dbed6ab2631f563f7e00648661ebdbb) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0002 ) /* Normal board : Standard Draw Poker (PP0002) */
+ROM_START( pepp0002 ) /* Normal board : Standard Draw Poker (PP0002) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2119,16 +2183,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0002_a45-a74.u68", 0x00000, 0x10000, CRC(921ce116) SHA1(a3b83b6fcfa27cca7e392efc62568eb6495c136a) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0002a ) /* Normal board : Standard Draw Poker (PP0002) - Multi Regional / Multi Currency - Tournament Mode capable */
+ROM_START( pepp0002a ) /* Normal board : Standard Draw Poker (PP0002) - Multi Regional / Multi Currency - Tournament Mode capable - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2195,7 +2259,7 @@ This program set is superseded by PP0060
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0010 ) /* Normal board : Standard Draw Poker (PP0010) */
+ROM_START( pepp0010 ) /* Normal board : Standard Draw Poker (PP0010) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2207,16 +2271,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0010_a45-a74.u68", 0x00000, 0x10000, CRC(39440afb) SHA1(b2ca246d6854008cf5b7081e9842be6f6f0666b0) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0014 ) /* Normal board : Standard Draw Poker (PP0014) - Multi Regional / Multi Currency - Tournament Mode capable */
+ROM_START( pepp0014 ) /* Normal board : Standard Draw Poker (PP0014) - Multi Regional / Multi Currency - Tournament Mode capable - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2234,7 +2298,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "mxo-cg1348.u75", 0x18000, 0x8000, CRC(cdd8485f) SHA1(4af2f270ed40955bb11f0e427f4ad614fcb3157c) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0014a ) /* Normal board : Standard Draw Poker (PP0014) - 100 Coins In */
@@ -2304,7 +2368,7 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0038 ) /* Normal board : Standard Draw Poker (PP0038) */
+ROM_START( pepp0038 ) /* Normal board : Standard Draw Poker (PP0038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2316,16 +2380,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0038_a45-a74.u68", 0x00000, 0x10000, CRC(85fe387e) SHA1(a0aa4cb422c04066d61d665943eced30b2eaf5b2) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg821.u72", 0x00000, 0x8000, CRC(e91f1192) SHA1(1a00027b681fad6b350366b2dff7411445a07f05) )
- ROM_LOAD( "mgo-cg821.u73", 0x08000, 0x8000, CRC(fa417bbc) SHA1(8c59d9156fb52099bf76b0a7e0da3a27518d6f19) )
- ROM_LOAD( "mbo-cg821.u74", 0x10000, 0x8000, CRC(4229457a) SHA1(aa1f26792279a834ed2025d6be58fa7ea38329fd) )
- ROM_LOAD( "mxo-cg821.u75", 0x18000, 0x8000, CRC(2da9729a) SHA1(3a5cf4c794e0057bdb705e0c7da541c3c8b48591) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0040 ) /* Normal board : Standard Draw Poker (PP0040) */
+ROM_START( pepp0040 ) /* Normal board : Standard Draw Poker (PP0040) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2337,16 +2401,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0040_a45-a74.u68", 0x00000, 0x10000, CRC(df3675b3) SHA1(668f33c97fa1c0b69a8601da02bd07e3c5df81b4) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0040a ) /* Normal board : Standard Draw Poker (PP0040) */
+ROM_START( pepp0040a ) /* Normal board : Standard Draw Poker (PP0040) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2358,13 +2422,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0040_979-a0c.u68", 0x00000, 0x10000, CRC(fef4fbfe) SHA1(9f07a2bee990181c9eb40e40b957aa9555ae2586) ) /* Game Version: 979, Library Version: A0C */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0040b ) /* Normal board : Standard Draw Poker (PP0040) - Multi Regional / Multi Currency - Tournament Mode capable */
@@ -2388,7 +2452,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0041 ) /* Normal board : Standard Draw Poker (PP0041) */
+ROM_START( pepp0041 ) /* Normal board : Standard Draw Poker (PP0041) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2400,16 +2464,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0041_a45-a74.u68", 0x00000, 0x10000, CRC(406c8193) SHA1(006b9bf57263fb84ed752f0a44603837a68a2d71) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0042 ) /* Normal board : 10's or Better (PP0042) */
+ROM_START( pepp0042 ) /* Normal board : 10's or Better (PP0042) - PSR Verified */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2421,13 +2485,13 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0042_979-a0c.u68", 0x00000, 0x10000, CRC(2f4f4e59) SHA1(ba74de70cf455f7e0b13d4757632d27af64a573b) ) /* Game Version: 979, Library Version: A0C */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0042a ) /* Normal board : 10's or Better (PP0042) - Auto Hold & Progressive */
@@ -2451,7 +2515,7 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0043 ) /* Normal board : 10's or Better (PP0043) */
+ROM_START( pepp0043 ) /* Normal board : 10's or Better (PP0043) - PSR Verified */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2463,13 +2527,13 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0043_a45-a74.u68", 0x00000, 0x10000, CRC(04051a88) SHA1(e7a9ec2ab7f6f575245d47ee10a03f39c887d1b3) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0043a ) /* Normal board : 10's or Better (PP0043) - Multi Regional / Multi Currency - Tournament Mode capable */
@@ -2514,7 +2578,7 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0045 ) /* Normal board : 10's or Better (PP0045) */
+ROM_START( pepp0045 ) /* Normal board : 10's or Better (PP0045) - PSR Verified */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2526,13 +2590,13 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0045_a45-a74.u68", 0x00000, 0x10000, CRC(9c7cf6d7) SHA1(3da9829678b853d85146b66b40800257a8eaa151) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0045a ) /* Normal board : 10's or Better (PP0045) */
@@ -2621,7 +2685,7 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap881.u50", 0x0000, 0x0100, CRC(e51990d5) SHA1(41946722b61e955d37808761d451fc894e6adc8a) )
ROM_END
-ROM_START( pepp0046 ) /* Normal board : 10's or Better (PP0046) */
+ROM_START( pepp0046 ) /* Normal board : 10's or Better (PP0046) - PSR Verified */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2633,16 +2697,16 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0046_a45-a74.u68", 0x00000, 0x10000, CRC(fe5903f2) SHA1(963d1ade6051da19bb40b313221037c0fdfc0fc9) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0046a ) /* Normal board : 10's or Better (PP0046) - Multi Regional / Multi Currency - Tournament Mode capable */
+ROM_START( pepp0046a ) /* Normal board : 10's or Better (PP0046) - Multi Regional / Multi Currency - Tournament Mode capable - PSR Verified */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2734,7 +2798,7 @@ Superseded by PP0428 (Non Double-up) / PP0459
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0053 ) /* Normal board : Joker Poker (Aces or Better) (PP0053) */
+ROM_START( pepp0053 ) /* Normal board : Joker Poker (Aces or Better) (PP0053) - PSR Verified */
/*
w/J w/oJ
PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -2747,16 +2811,16 @@ PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "pp0053_a45-a74.u68", 0x00000, 0x10000, CRC(0657b8a7) SHA1(4fb9762d84ef0e02dbab9f9da5a1dfdd9be2e86e) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0055 ) /* Normal board : Deuces Wild Poker (PP0055) */
+ROM_START( pepp0055 ) /* Normal board : Deuces Wild Poker (PP0055) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -2769,16 +2833,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0055_961-984.u68", 0x00000, 0x10000, CRC(c6b897cc) SHA1(9ba200652db58e602f388c21aaf9b3f837412385) ) /* Game Version: 961, Library Version: 984 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0055a ) /* Normal board : Deuces Wild Poker (PP0055) */
+ROM_START( pepp0055a ) /* Normal board : Deuces Wild Poker (PP0055) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -2791,13 +2855,13 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0055_a47-a76.u68", 0x00000, 0x10000, CRC(adff06ea) SHA1(098409bd4474a69217e3cd17ee8c650005cc3e17) ) /* Game Version: A47, Library Version: A76 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
+ ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
+ ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) )
+ ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
ROM_START( pepp0055b ) /* Normal board : Deuces Wild Poker (PP0055) */
@@ -2845,7 +2909,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0057 ) /* Normal board : Deuces Wild Poker (PP0057) */
+ROM_START( pepp0057 ) /* Normal board : Deuces Wild Poker (PP0057) PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -2858,13 +2922,13 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0057_a47-a76.u68", 0x00000, 0x10000, CRC(44ebb68d) SHA1(4864ba62c225a3ecd576d1a82fcbe1e30d65244d) ) /* Game Version: A47, Library Version: A76 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
+ ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
+ ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) )
+ ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
ROM_START( pepp0057a ) /* Normal board : Deuces Wild Poker (PP0057) */
@@ -2890,7 +2954,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0059 ) /* Normal board : Two Pair or Better (PP0059) */
+ROM_START( pepp0059 ) /* Normal board : Two Pair or Better (PP0059) - PSR Verified */
/*
PayTable 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------
@@ -2902,13 +2966,13 @@ PayTable 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0059_a45-a74.u68", 0x00000, 0x10000, CRC(6ff02f25) SHA1(b4a8476251044d0a7e3f232fa1ef4e31d8ef6775) ) /* Game Version: A45, Library Version: A75 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0059a ) /* Normal board : Two Pair or Better (PP0059) */
@@ -2933,7 +2997,7 @@ PayTable 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0060 ) /* Normal board : Standard Draw Poker (PP0060) */
+ROM_START( pepp0060 ) /* Normal board : Standard Draw Poker (PP0060) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2945,16 +3009,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0060_a45-a74.u68", 0x00000, 0x10000, CRC(5d9e6c2f) SHA1(e1199a1fa57d84223ca87ea5b6ce4fda9afa0e1f) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0060a ) /* Normal board : Standard Draw Poker (PP0060) */
+ROM_START( pepp0060a ) /* Normal board : Standard Draw Poker (PP0060) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -2966,13 +3030,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0060_979-a0c.u68", 0x00000, 0x10000, CRC(adedfcfd) SHA1(f974a9c51d4e53c2c44a4c5214d39557d3a36d99) ) /* Game Version: 979, Library Version: A0C */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0060b ) /* Normal board : Standard Draw Poker (PP0060) */
@@ -3004,6 +3068,9 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
GA 1 2 3 4 5 6 25 50 250 800
% Range: 91.0-93.0% Optimum: 95.0% Hit Frequency: 45.5%
Programs Available: PP0060, X000060P & PP0420 - Non Double-up Only
+
+NOTE: As found but PSR for build A6H-A8H shows CG2004 with CAP740
+
*/
ROM_REGION( 0x10000, "maincpu", 0 ) /* 11/13/97 @IGT CRUIS */
ROM_LOAD( "pp0060_a6h-a8h.u68", 0x00000, 0x10000, CRC(81963084) SHA1(2493bb040b9d0ea5cfe77f8d07546d3a3ac3716a) ) /* Game Version: A6H, Library Version: A8H - 11/13/97 IGT CRUIS */
@@ -3014,9 +3081,8 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "mbo-cg2002.u74", 0x10000, 0x8000, CRC(7362f7f3) SHA1(fce4ce2cdd836e37382d39d8b167019cfc4c6166) )
ROM_LOAD( "mxo-cg2002.u75", 0x18000, 0x8000, CRC(4560fdec) SHA1(63ec67afd378a06d74084bba72fbbe9be12e24d3) )
- ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx770.u50", 0x0000, 0x0200, NO_DUMP )
- ROM_LOAD( "capx904.u50", 0x0000, 0x0200, CRC(c4b8e04c) SHA1(5565777b5fb2029a3bde6adca379631766bcd156) )
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0063 ) /* Normal board : 10's or Better (PP0063) */
@@ -3157,7 +3223,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0094 ) /* Normal board : Standard Draw Poker (PP0094) */
+ROM_START( pepp0094 ) /* Normal board : Standard Draw Poker (PP0094) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -3169,13 +3235,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0094_a45-a74.u68", 0x00000, 0x10000, CRC(249280bc) SHA1(1f50dfc1192212b880ff9cd83f15eefd4414d36a) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0103 ) /* Normal board : Deuces Wild Poker 1-100 Coin (PP0103) */
@@ -3343,7 +3409,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0126 ) /* Normal board : Deuces Wild Poker (PP0126) */
+ROM_START( pepp0126 ) /* Normal board : Deuces Wild Poker (PP0126) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -3356,16 +3422,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0126_961-984.u68", 0x00000, 0x10000, CRC(aadb62ef) SHA1(85979d5932ef254241c363414c2093cc943e88a5) ) /* Game Version: 961, Library Version: 984 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0127 ) /* Normal board : Deuces Joker Wild Poker (PP0127) */
+ROM_START( pepp0127 ) /* Normal board : Deuces Joker Wild Poker (PP0127) - PSR Verified */
/*
With w/o w/o With
Wild JKR Wild JKR
@@ -3379,13 +3445,13 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF 4D (Bonus)
ROM_LOAD( "pp0127_a47-a76.u68", 0x00000, 0x10000, CRC(2997aaac) SHA1(b52525154f4ae39a341ecf829c33449f31a8ce07) ) /* Game Version: A47, Library Version: A76 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
+ ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
+ ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) )
+ ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
ROM_START( pepp0127a ) /* Normal board : Deuces Joker Wild Poker (PP0127) - Multi Regional / Multi Currency - Tournament Mode capable */
@@ -3435,7 +3501,7 @@ Internally the program erroneously reports a 95.50% return, same as X000550P doe
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0130 ) /* Normal board : Aces & Faces (PP0130) */
+ROM_START( pepp0130 ) /* Normal board : Aces & Faces (PP0130) - PSR Verified */
/*
2-10 J-K
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -3454,10 +3520,11 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2135.u75", 0x18000, 0x8000, CRC(dc905cdc) SHA1(2c7032841d322a7e280a385a652f203e2fb8042e) )
ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1292.u50", 0x0000, 0x0100, NO_DUMP ) /* Should be CAP1292 */
ROM_LOAD( "cap953.u50", 0x0000, 0x0100, CRC(6ece50ad) SHA1(bc5761303b09625850ba50263607d11871ea3ed3) )
ROM_END
-ROM_START( pepp0132 ) /* Normal board : Standard Draw Poker (PP0132) - requires SET chip to set denomination */
+ROM_START( pepp0132 ) /* Normal board : Standard Draw Poker (PP0132) - requires SET chip to set denomination - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
---------------------------------------------------------
@@ -3469,16 +3536,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0132_896-914.u68", 0x00000, 0x10000, CRC(ad888692) SHA1(cbc78c546b8f4dc136cc376a0b7aed10faacbac6) ) /* Game Version: 896, Library Version: 914 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2002.u72", 0x00000, 0x8000, CRC(d9d03979) SHA1(9729cbb2e5472eb652f8f549dd85047abe11cae0) ) /* 08/30/94 @IGT */
+ ROM_LOAD( "mgo-cg2002.u73", 0x08000, 0x8000, CRC(ad5bd2cd) SHA1(e5dacd2827f14dd9811311552b7e3816a36b9284) )
+ ROM_LOAD( "mbo-cg2002.u74", 0x10000, 0x8000, CRC(7362f7f3) SHA1(fce4ce2cdd836e37382d39d8b167019cfc4c6166) )
+ ROM_LOAD( "mxo-cg2002.u75", 0x18000, 0x8000, CRC(4560fdec) SHA1(63ec67afd378a06d74084bba72fbbe9be12e24d3) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0150 ) /* Normal board : Standard Draw Poker (PP0150) */
+ROM_START( pepp0150 ) /* Normal board : Standard Draw Poker (PP0150) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -3490,16 +3557,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0150_a45-a74.u68", 0x00000, 0x10000, CRC(8848dc4b) SHA1(121e885d253aa3c2a72de9e14d64e20d794e53bf) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0158 ) /* Normal board : 4 of a Kind Bonus Poker (PP0158) - 03/17/97 @ IGT L97-0628 */
+ROM_START( pepp0158 ) /* Normal board : 4 of a Kind Bonus Poker (PP0158) - 03/17/97 @ IGT L97-0628 - Tournament Mode capable - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -3518,7 +3585,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2108.u75", 0x18000, 0x8000, CRC(b04d317b) SHA1(5c181fb0a58b216db511572e531cd0eea7a061f4) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap944.u50", 0x0000, 0x0100, CRC(8700bc0a) SHA1(71b0bea067fb4885b19145146149eafd01d87ad0) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0158a ) /* Normal board : 4 of a Kind Bonus Poker (PP0158) - 10/23/95 @ IGT L95-2438 */
@@ -3530,7 +3597,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
% Range: 95.2-97.2% Optimum: 99.2% Hit Frequency: 45.5%
Programs Available: PP0158, X000158P
-NOTE: This set also found with CG2003+CAP904
+NOTE: As found but PSR for build A46-A75 shows CG2003 with CAP904
*/
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -3546,7 +3613,7 @@ NOTE: This set also found with CG2003+CAP904
ROM_LOAD( "cap1046.u50", 0x0000, 0x0100, CRC(883fa6a4) SHA1(76aa42912d3180dc0466be95f30d6d760996713b) ) /* Uses CAP1046 as stated or really CAP1047?? */
ROM_END
-ROM_START( pepp0158b ) /* Normal board : 4 of a Kind Bonus Poker (PP0158) - 04/16/94 @ IGT L94-1044 */
+ROM_START( pepp0158b ) /* Normal board : 4 of a Kind Bonus Poker (PP0158) - 04/16/94 @ IGT L94-1044 - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -3565,7 +3632,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
ROM_START( pepp0158c ) /* Normal board : 4 of a Kind Bonus Poker (PP0158) */
@@ -3615,7 +3682,7 @@ NOTE: While this is a 32K version, it does require DOOR OPEN cycling and isn't c
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0159 ) /* Normal board : Standard Draw Poker (PP0159) - Multi Regional / Multi Currency - Tournament Mode capable */
+ROM_START( pepp0159 ) /* Normal board : Standard Draw Poker (PP0159) - Multi Regional / Multi Currency - Tournament Mode capable - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -3636,7 +3703,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0171 ) /* Normal board : Joker Poker (PP0171) */
+ROM_START( pepp0171 ) /* Normal board : Joker Poker (PP0171) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -3649,17 +3716,16 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "pp0171_a45-a74.u68", 0x00000, 0x10000, CRC(7a68ee4b) SHA1(298ca0c87229929b61ddfdf8c0bac82e9df17e83) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
-
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0171a ) /* Normal board : Joker Poker (PP0171) - Multi Regional / Multi Currency - Tournament Mode capable */
+ROM_START( pepp0171a ) /* Normal board : Joker Poker (PP0171) - Multi Regional / Multi Currency - Tournament Mode capable - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -3747,7 +3813,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0188a ) /* Normal board : Standard Draw Poker (PP0188) */
+ROM_START( pepp0188a ) /* Normal board : Standard Draw Poker (PP0188) - Tournament Mode capable - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -3759,13 +3825,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0188_a66-a8h.u68", 0x00000, 0x10000, CRC(72740894) SHA1(5b7109b6cbe67e0a951fd48b4daf09875abb75fc) ) /* Game Version: A66, Library Version: A8H */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0189 ) /* Normal board : Standard Draw Poker (PP0189) */
@@ -3789,7 +3855,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0190 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0190) - 11/13/95 @ IGT L99-0100 */
+ROM_START( pepp0190 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0190) - 11/13/95 @ IGT L99-0100 - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -3804,16 +3870,16 @@ NOTE: This later build works with CG1215 (and later Deuces Wild) graphics roms a
ROM_LOAD( "pp0190_a47-a76.u68", 0x00000, 0x10000, CRC(974f9d7a) SHA1(8fe65c568246fbf97b20cd2b05cccb23022dff65) ) /* Game Version: A47, Library Version: A76 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
+ ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
+ ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) )
+ ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0190a ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0190) - requires SET001 chip to set denomination */
+ROM_START( pepp0190a ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0190) - requires SET001 chip to set denomination - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -3828,6 +3894,10 @@ Internally the program erroneously reports a 94.00% return.
ROM_LOAD( "pp0190_934-953.u68", 0x00000, 0x10000, CRC(f8cac3a5) SHA1(b4ddcad1d3f414b5e494b43baffe6b45fe2bec37) ) /* Game Version: 934, Library Version: 953 */
ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2024.u72", 0x00000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mgo-cg2024.u73", 0x08000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mbo-cg2024.u74", 0x10000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mxo-cg2024.u75", 0x18000, 0x8000, NO_DUMP )
ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
@@ -3903,7 +3973,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0197a ) /* Normal board : Standard Draw Poker (PP0197) - 07/29/96 @ IGT L96-1219 */
+ROM_START( pepp0197a ) /* Normal board : Standard Draw Poker (PP0197) - 07/29/96 @ IGT L96-1219 - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -3915,17 +3985,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0197_a14-a2n.u68", 0x00000, 0x10000, CRC(ef472672) SHA1(785ce02b13894e5cb7575e75533451b96e3f4e6d) ) /* Game Version: A14, Library Version: A2N */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
-
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0197b ) /* Normal board : Standard Draw Poker (PP0197) */
+ROM_START( pepp0197b ) /* Normal board : Standard Draw Poker (PP0197) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -3937,17 +4006,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0197_979-a0c.u68", 0x00000, 0x10000, CRC(ae817534) SHA1(b2454609e8275aab00797966c0f4e68eae2911cd) ) /* Game Version: 979, Library Version: A0C */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
-
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0197c ) /* Normal board : Standard Draw Poker (PP0197) - requires SET chip to set denomination */
+ROM_START( pepp0197c ) /* Normal board : Standard Draw Poker (PP0197) - requires SET chip to set denomination - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -3959,14 +4027,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0197_896-914.u68", 0x00000, 0x10000, CRC(5967dbdf) SHA1(6e736a7d84716b289284a4cf9749324b0efdf89e) ) /* Game Version: 896, Library Version: 914 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
-
+ ROM_LOAD( "mro-cg2002.u72", 0x00000, 0x8000, CRC(d9d03979) SHA1(9729cbb2e5472eb652f8f549dd85047abe11cae0) ) /* 08/30/94 @IGT */
+ ROM_LOAD( "mgo-cg2002.u73", 0x08000, 0x8000, CRC(ad5bd2cd) SHA1(e5dacd2827f14dd9811311552b7e3816a36b9284) )
+ ROM_LOAD( "mbo-cg2002.u74", 0x10000, 0x8000, CRC(7362f7f3) SHA1(fce4ce2cdd836e37382d39d8b167019cfc4c6166) )
+ ROM_LOAD( "mxo-cg2002.u75", 0x18000, 0x8000, CRC(4560fdec) SHA1(63ec67afd378a06d74084bba72fbbe9be12e24d3) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0197d ) /* Normal board : Standard Draw Poker (Auto Hold in options) (PP0197) */
@@ -3991,7 +4058,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0197e ) /* Normal board : Standard Draw Poker (PP0197) - Cruise version - Tournament Mode capable */
+ROM_START( pepp0197e ) /* Normal board : Standard Draw Poker (PP0197) - Cruise version - Tournament Mode capable - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -4003,17 +4070,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0197_a6h-a8h.u68", 0x00000, 0x10000, CRC(c8825e06) SHA1(a26607b0aa4f76371a0b9d3fdd069e8ada204daf) ) /* Game Version: A6H, Library Version: A8H - 11/13/97 IGT L97-2583 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2002.u72", 0x00000, 0x8000, CRC(d9d03979) SHA1(9729cbb2e5472eb652f8f549dd85047abe11cae0) ) /* 08/30/94 @IGT CRUIS */
- ROM_LOAD( "mgo-cg2002.u73", 0x08000, 0x8000, CRC(ad5bd2cd) SHA1(e5dacd2827f14dd9811311552b7e3816a36b9284) )
- ROM_LOAD( "mbo-cg2002.u74", 0x10000, 0x8000, CRC(7362f7f3) SHA1(fce4ce2cdd836e37382d39d8b167019cfc4c6166) )
- ROM_LOAD( "mxo-cg2002.u75", 0x18000, 0x8000, CRC(4560fdec) SHA1(63ec67afd378a06d74084bba72fbbe9be12e24d3) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
- ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx770.u50", 0x0000, 0x0200, NO_DUMP )
- ROM_LOAD( "capx904.u50", 0x0000, 0x0200, CRC(c4b8e04c) SHA1(5565777b5fb2029a3bde6adca379631766bcd156) )
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0203 ) /* Normal board : 4 of a Kind Bonus Poker (PP0203) - 10/23/95 @ IGT L95-2446 */
+ROM_START( pepp0203 ) /* Normal board : 4 of a Kind Bonus Poker (PP0203) - 10/23/95 @ IGT L95-2446 - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -4031,12 +4097,11 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mbo-cg2003.u74", 0x10000, 0x8000, CRC(8649dec0) SHA1(0024d3a8fd85279552910b14b69b225bda93957f) )
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
-
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0203a ) /* Normal board : 4 of a Kind Bonus Poker (PP0203) */
+ROM_START( pepp0203a ) /* Normal board : 4 of a Kind Bonus Poker (PP0203) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -4056,7 +4121,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
ROM_START( pepp0203b ) /* Normal board : 4 of a Kind Bonus Poker (PP0203) */
@@ -4103,7 +4168,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0203d ) /* Normal board : 4 of a Kind Bonus Poker (PP0203) - Multi Regional / Multi Currency - Tournament Mode capable */
+ROM_START( pepp0203d ) /* Normal board : 4 of a Kind Bonus Poker (PP0203) - Multi Regional / Multi Currency - Tournament Mode capable - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -4122,7 +4187,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg1348.u75", 0x18000, 0x8000, CRC(cdd8485f) SHA1(4af2f270ed40955bb11f0e427f4ad614fcb3157c) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
ROM_START( pepp0203e ) /* Normal board : 4 of a Kind Bonus Poker (PP0203) */
@@ -4171,7 +4236,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0221 ) /* Normal board : Standard Draw Poker (PP0221) */
+ROM_START( pepp0221 ) /* Normal board : Standard Draw Poker (PP0221) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -4183,16 +4248,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0221_979-a0c.u68", 0x00000, 0x10000, CRC(c45fb8f1) SHA1(fba8dce2954beb168624ba94b2a4fdd3b260da46) ) /* Game Version: 979, Library Version: A0C */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0221a ) /* Normal board : Standard Draw Poker (PP0221) - requires SET chip to set denomination */
+ROM_START( pepp0221a ) /* Normal board : Standard Draw Poker (PP0221) - requires SET chip to set denomination - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -4204,13 +4269,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0221_896-914.u68", 0x00000, 0x10000, CRC(14d50334) SHA1(281c4467f57f91d0da98242b085973c06193085a) ) /* Game Version: 896, Library Version: 914 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2002.u72", 0x00000, 0x8000, CRC(d9d03979) SHA1(9729cbb2e5472eb652f8f549dd85047abe11cae0) ) /* 08/30/94 @IGT */
+ ROM_LOAD( "mgo-cg2002.u73", 0x08000, 0x8000, CRC(ad5bd2cd) SHA1(e5dacd2827f14dd9811311552b7e3816a36b9284) )
+ ROM_LOAD( "mbo-cg2002.u74", 0x10000, 0x8000, CRC(7362f7f3) SHA1(fce4ce2cdd836e37382d39d8b167019cfc4c6166) )
+ ROM_LOAD( "mxo-cg2002.u75", 0x18000, 0x8000, CRC(4560fdec) SHA1(63ec67afd378a06d74084bba72fbbe9be12e24d3) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0221b ) /* Normal board : Standard Draw Poker (Auto Hold in options) (PP0221) - requires SET chip to set denomination */
@@ -4259,7 +4324,7 @@ Internally the program erroneously reports a 92.80% return. Superseded by PP0812
ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0224 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0224) */
+ROM_START( pepp0224 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0224) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4272,16 +4337,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0224_a47-a76.u68", 0x00000, 0x10000, CRC(5d6881ad) SHA1(38953ffadea04df614b14c70177736039495c408) ) /* Game Version: A47, Library Version: A76 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
+ ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
+ ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) )
+ ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0224a ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0224) */
+ROM_START( pepp0224a ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0224) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4294,13 +4359,13 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0224_961-984.u68", 0x00000, 0x10000, CRC(71d5e112) SHA1(528f06ad7ea7e1e297939c7b3ca0bb7faa8ce8c1) ) /* Game Version: 961, Library Version: 984 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
ROM_START( pepp0230 ) /* Normal board : Standard Draw Poker (PP0230) */
@@ -4372,7 +4437,7 @@ Superseded by PP0469
ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0250 ) /* Normal board : Double Down Stud Poker (PP0250) */
+ROM_START( pepp0250 ) /* Normal board : Double Down Stud Poker (PP0250) - PSR Verified */
/*
PayTable 6s-10s Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
------------------------------------------------------------------
@@ -4392,7 +4457,7 @@ NOTE: Newer version with DBV support and requires newer CG2015 instead of CG1019
ROM_LOAD( "mxo-cg2015.u75", 0x18000, 0x8000, CRC(0c96b7fc) SHA1(adde93f08db0b957daf77d57a7ab60af3b667f25) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0250a ) /* Normal board : Double Down Stud Poker (PP0250) */
@@ -4415,10 +4480,10 @@ NOTE: No DBV option and requires CG1019
ROM_LOAD( "mxo-cg1019.u75", 0x18000, 0x8000, CRC(064a5c80) SHA1(4d21a7a424258f74d4a1e78c123288799e316228) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0265 ) /* Normal board : 4 of a Kind Bonus Poker (PP0265) */
+ROM_START( pepp0265 ) /* Normal board : 4 of a Kind Bonus Poker (PP0265) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -4437,10 +4502,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0265a ) /* Normal board : 4 of a Kind Bonus Poker (PP0265) */
+ROM_START( pepp0265a ) /* Normal board : 4 of a Kind Bonus Poker (PP0265) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -4459,7 +4524,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
ROM_START( pepp0265b ) /* Normal board : 4 of a Kind Bonus Poker (PP0265) */
@@ -4551,7 +4616,7 @@ Spanish version of PP0150
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0290 ) /* Normal board : Deuces Wild Poker (PP0290) */
+ROM_START( pepp0290 ) /* Normal board : Deuces Wild Poker (PP0290) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4564,16 +4629,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0290_a47-a76.u68", 0x00000, 0x10000, CRC(907f9e80) SHA1(295953427c621c961e2f7241b074ecf87669351e) ) /* Game Version: A47, Library Version: A76 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
+ ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
+ ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) )
+ ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0290a ) /* Normal board : Deuces Wild Poker (PP0290) */
+ROM_START( pepp0290a ) /* Normal board : Deuces Wild Poker (PP0290) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4586,16 +4651,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0290_a0v-a2d.u68", 0x00000, 0x10000, CRC(e2e6451c) SHA1(fa83b7a6d6c4ba1b3ee95b48ab6c3594477e536d) ) /* Game Version: A0V, Library Version: A2D */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0291 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0291) */
+ROM_START( pepp0291 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0291) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4608,16 +4673,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0291_a0v-a2d.u68", 0x00000, 0x10000, CRC(4eabac97) SHA1(dc849bca8ac90536c361cd576ee81c50afd7071b) ) /* Game Version: A0V, Library Version: A2D */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0291a ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0291) */
+ROM_START( pepp0291a ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0291) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4630,13 +4695,13 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0291_961-984.u68", 0x00000, 0x10000, CRC(64c83e70) SHA1(1c75c7c37a359d07b170ab644ebb98d4bce2affe) ) /* Game Version: 961, Library Version: 984 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
ROM_START( pepp0401 ) /* Normal board : 4 of a Kind Bonus Poker (No Double-up) (PP0401) */
@@ -4683,7 +4748,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0410 ) /* Normal board : 4 of a Kind Bonus Poker (No Double-up) (PP0410) */
+ROM_START( pepp0410 ) /* Normal board : 4 of a Kind Bonus Poker (No Double-up) (PP0410) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -4702,10 +4767,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0410a ) /* Normal board : 4 of a Kind Bonus Poker (No Double-up) (PP0410) */
+ROM_START( pepp0410a ) /* Normal board : 4 of a Kind Bonus Poker (No Double-up) (PP0410) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -4724,10 +4789,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0417 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0417) */
+ROM_START( pepp0417 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0417) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4740,16 +4805,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0417_a0v-a2d.u68", 0x00000, 0x10000, CRC(3681e606) SHA1(e8e9105247b144ce1050464cb6b0594c9e483f84) ) /* Game Version: A0V, Library Version: A2D */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
- ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
- ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) ) /* Supersedes CG1215 graphics set */
- ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0417a ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0417) */
+ROM_START( pepp0417a ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0417) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4762,16 +4827,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0417_961-984.u68", 0x00000, 0x10000, CRC(4a1e7899) SHA1(b6f243d275da70841482843e05c1be22fd80c25c) ) /* Game Version: 961, Library Version: 984 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
- ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
- ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) ) /* Supersedes CG1215 graphics set */
- ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0418 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0418) */
+ROM_START( pepp0418 ) /* Normal board : Deuces Wild Poker (No Double-up) (PP0418) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -4781,16 +4846,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0125, PP0418, X000291P & PP0291 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "pp0418_a46-a75.u68", 0x00000, 0x10000, CRC(a0725de3) SHA1(fb2e7570862b48608041c833fc5c7c7198cbb041) ) /* Game Version: A46, Library Version: A75 - 11/13/95 IGT LA */
+ ROM_LOAD( "pp0418_a47-a76.u68", 0x00000, 0x10000, CRC(a0725de3) SHA1(fb2e7570862b48608041c833fc5c7c7198cbb041) ) /* Game Version: A47, Library Version: A76 - 11/13/95 IGT LA */
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
- ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) ) /* Supersedes CG1215 graphics set */
+ ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) )
ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
ROM_START( pepp0419 ) /* Normal board : Standard Draw Poker (Auto Hold in options) (No Double-up) (PP0419) */
@@ -4814,7 +4879,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0420 ) /* Normal board : Standard Draw Poker (No Double-up) (PP0420) - requires SET chip to set denomination */
+ROM_START( pepp0420 ) /* Normal board : Standard Draw Poker (No Double-up) (PP0420) - requires SET chip to set denomination - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -4826,16 +4891,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0420_896-914.u68", 0x00000, 0x10000, CRC(cdd923d2) SHA1(f7548159ea3c36c3fce481156ab0293d00f0fd0f) ) /* Game Version: 896, Library Version: 914 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2002.u72", 0x00000, 0x8000, CRC(d9d03979) SHA1(9729cbb2e5472eb652f8f549dd85047abe11cae0) ) /* 08/30/94 @IGT */
+ ROM_LOAD( "mgo-cg2002.u73", 0x08000, 0x8000, CRC(ad5bd2cd) SHA1(e5dacd2827f14dd9811311552b7e3816a36b9284) )
+ ROM_LOAD( "mbo-cg2002.u74", 0x10000, 0x8000, CRC(7362f7f3) SHA1(fce4ce2cdd836e37382d39d8b167019cfc4c6166) )
+ ROM_LOAD( "mxo-cg2002.u75", 0x18000, 0x8000, CRC(4560fdec) SHA1(63ec67afd378a06d74084bba72fbbe9be12e24d3) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0423 ) /* Normal board : Standard Draw Poker (No Double-up) (PP0423) */
+ROM_START( pepp0423 ) /* Normal board : Standard Draw Poker (No Double-up) (PP0423) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -4847,16 +4912,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0423_a45-a74.u68", 0x00000, 0x10000, CRC(b717bb0f) SHA1(89243bec0dc5b2c3907ef6579dfc3fdd28977971) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0423a ) /* Normal board : Standard Draw Poker (No Double-up) (PP0423) - requires SET chip to set denomination */
+ROM_START( pepp0423a ) /* Normal board : Standard Draw Poker (No Double-up) (PP0423) - requires SET chip to set denomination - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -4868,13 +4933,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0423_896-914.u68", 0x00000, 0x10000, CRC(c996c539) SHA1(3874c294f4d223596ab537634aaf52bc0494ff85) ) /* Game Version: 896, Library Version: 914 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2002.u72", 0x00000, 0x8000, CRC(d9d03979) SHA1(9729cbb2e5472eb652f8f549dd85047abe11cae0) ) /* 08/30/94 @IGT */
+ ROM_LOAD( "mgo-cg2002.u73", 0x08000, 0x8000, CRC(ad5bd2cd) SHA1(e5dacd2827f14dd9811311552b7e3816a36b9284) )
+ ROM_LOAD( "mbo-cg2002.u74", 0x10000, 0x8000, CRC(7362f7f3) SHA1(fce4ce2cdd836e37382d39d8b167019cfc4c6166) )
+ ROM_LOAD( "mxo-cg2002.u75", 0x18000, 0x8000, CRC(4560fdec) SHA1(63ec67afd378a06d74084bba72fbbe9be12e24d3) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0423b ) /* Normal board : Standard Draw Poker (No Double-up) (PP0423) */
@@ -4919,7 +4984,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0426 ) /* Normal board : Joker Poker (No Double-up) (PP0426) */
+ROM_START( pepp0426 ) /* Normal board : Joker Poker (No Double-up) (PP0426) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -4941,7 +5006,7 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0428 ) /* Normal board : Joker Poker (No Double-up) (PP0428) */
+ROM_START( pepp0428 ) /* Normal board : Joker Poker (No Double-up) (PP0428) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -4963,7 +5028,7 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0429 ) /* Normal board : Joker Poker (Aces or Better) (No Double-up) (PP0429) */
+ROM_START( pepp0429 ) /* Normal board : Joker Poker (Aces or Better) (No Double-up) (PP0429) - PSR Verified */
/*
w/J w/oJ
PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -4985,7 +5050,7 @@ PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0429a ) /* Normal board : Joker Poker (Aces or Better) (No Double-up) (PP0429) - Must use a SET chip to set denomination*/
+ROM_START( pepp0429a ) /* Normal board : Joker Poker (Aces or Better) (No Double-up) (PP0429) - Must use a SET chip to set denomination - PSR Verified */
/*
w/J w/oJ
PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -4998,16 +5063,16 @@ PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "pp0429_896-914.u68", 0x00000, 0x10000, CRC(f6de62b2) SHA1(6cc9c5dd83afbe0724b4c3905e231b50925b649a) ) /* Game Version: 896, Library Version: 914 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
- ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
- ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
+ ROM_LOAD( "mro-cg2002.u72", 0x00000, 0x8000, CRC(d9d03979) SHA1(9729cbb2e5472eb652f8f549dd85047abe11cae0) ) /* 08/30/94 @IGT */
+ ROM_LOAD( "mgo-cg2002.u73", 0x08000, 0x8000, CRC(ad5bd2cd) SHA1(e5dacd2827f14dd9811311552b7e3816a36b9284) )
+ ROM_LOAD( "mbo-cg2002.u74", 0x10000, 0x8000, CRC(7362f7f3) SHA1(fce4ce2cdd836e37382d39d8b167019cfc4c6166) )
+ ROM_LOAD( "mxo-cg2002.u75", 0x18000, 0x8000, CRC(4560fdec) SHA1(63ec67afd378a06d74084bba72fbbe9be12e24d3) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0430 ) /* Normal board : Deuces Joker Wild Poker (PP0430) */
+ROM_START( pepp0430 ) /* Normal board : Deuces Joker Wild Poker (PP0430) - PSR Verified */
/*
With w/o w/o With
Wild JKR Wild JKR
@@ -5021,13 +5086,13 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF 4D (Bonus)
ROM_LOAD( "pp0430_a0v-a2d.u68", 0x00000, 0x10000, CRC(afcc183a) SHA1(613608b27b730445379ee9312a625085dba942ae) ) /* Game Version: A0V, Library Version: A2D */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2023.u72", 0x00000, 0x8000, CRC(06f11ac6) SHA1(c9b111ffef75257b88d8500e77b09565c5ccbc54) )
+ ROM_LOAD( "mgo-cg2023.u73", 0x08000, 0x8000, CRC(58db7723) SHA1(8cc10f9ed8c7da0d9aae780b9c2204d7c5890d83) )
+ ROM_LOAD( "mbo-cg2023.u74", 0x10000, 0x8000, CRC(bbd02472) SHA1(ef05af64502cc7833fe69b0b1bffe4efbc50e6fa) )
+ ROM_LOAD( "mxo-cg2023.u75", 0x18000, 0x8000, CRC(21028c83) SHA1(76c3d0811332ca9b3cdb19952dbe6897531f562d) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
ROM_START( pepp0431 ) /* Normal board : Deuces Joker Wild Poker (PP0431) - Multi Regional / Multi Currency - Tournament Mode capable */
@@ -5074,7 +5139,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0447 ) /* Normal board : Standard Draw Poker (PP0447) */
+ROM_START( pepp0447 ) /* Normal board : Standard Draw Poker (PP0447) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
---------------------------------------------------------
@@ -5088,14 +5153,14 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0447a ) /* Normal board : Standard Draw Poker (PP0447) */
+ROM_START( pepp0447a ) /* Normal board : Standard Draw Poker (PP0447) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
---------------------------------------------------------
@@ -5116,7 +5181,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0449 ) /* Normal board : Standard Draw Poker (PP0449) */
+ROM_START( pepp0449 ) /* Normal board : Standard Draw Poker (PP0449) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -5130,14 +5195,14 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0449a ) /* Normal board : Standard Draw Poker (PP0449) - Multi Regional / Multi Currency in English / Spanish - Tournament Mode capable */
+ROM_START( pepp0449a ) /* Normal board : Standard Draw Poker (PP0449) - Multi Regional / Multi Currency in English / Spanish - Tournament Mode capable - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -5155,7 +5220,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "mxo-cg1426.u75", 0x18000, 0x8000, CRC(74bc1556) SHA1(9afc00ec4643baa448e0131e1c7aeb3da4739f59) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
ROM_START( pepp0452 ) /* Normal board : Double Deuces Wild Poker (PP0452) */
@@ -5201,7 +5266,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0454a ) /* Normal board : Bonus Poker Deluxe (PP0454) */
+ROM_START( pepp0454a ) /* Normal board : Bonus Poker Deluxe (PP0454) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -5213,16 +5278,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0454_944-964.u68", 0x00000, 0x10000, CRC(87aa2ac7) SHA1(55042c8dbb44c3ec24713c2c6844d64b5c2b8474) ) /* Game Version: 944, Library Version: 964 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2003.u72", 0x00000, 0x8000, CRC(0d425f48) SHA1(b60aaf3f4bd76f75f72f6e8dda724bdf795cb521) ) /* 08/30/94 @ IGT L95-0145 */
- ROM_LOAD( "mgo-cg2003.u73", 0x08000, 0x8000, CRC(add0afc4) SHA1(0519bf2f36cb67140933b2c533e625544f27d16b) )
- ROM_LOAD( "mbo-cg2003.u74", 0x10000, 0x8000, CRC(8649dec0) SHA1(0024d3a8fd85279552910b14b69b225bda93957f) )
- ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0455 ) /* Normal board : Joker Poker (PP0455) */
+ROM_START( pepp0455 ) /* Normal board : Joker Poker (PP0455) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -5237,14 +5302,14 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0458 ) /* Normal board : Joker Poker (Aces or Better) (PP0458) */
+ROM_START( pepp0458 ) /* Normal board : Joker Poker (Aces or Better) (PP0458) - PSR Verified */
/*
w/J w/oJ
PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -5259,14 +5324,14 @@ PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0459 ) /* Normal board : Joker Poker (PP0459) */
+ROM_START( pepp0459 ) /* Normal board : Joker Poker (PP0459) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -5310,12 +5375,13 @@ ROM_END
ROM_START( pepp0488 ) /* Normal board : Standard Draw Poker (PP0488) - 01/12/95 @ IGT L95-0175 */
/*
-PayTable Js+ TP 3K STR FL FH 4K SF RF (Bonus)
---------------------------------------------------------
- ???? 1 1 2 4 5 8 25 50 250 1000
+PayTable Js+ TP 3K STR FL FH 4K 4A SF RF (Bonus)
+-----------------------------------------------------------
+ ???? 1 1 3 4 5 8 25 250 50 250 800
% Range: 98.4-100.4% Optimum: 102.4% Hit Frequency: ???
-NOTE: Will work with the standard CG740 + CAP740 graphics for a non-localized game.
+NOTE: This build / version is exclusive to Arizona Charlies
+ Use CG2004 + CAP740 graphics for a non-localized game
*/
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "pp0488_a30-a4v.u68", 0x00000, 0x10000, CRC(99849f5d) SHA1(643a303beda1c4a4619803071df5e612ab922eb9) ) /* Game Version: A30, Library Version: A4V */
@@ -5394,7 +5460,7 @@ PayTable Js+ TP 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0514 ) /* Normal board : Double Bonus Poker (PP0514) */
+ROM_START( pepp0514 ) /* Normal board : Double Bonus Poker (PP0514) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -5413,7 +5479,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
ROM_START( pepp0514a ) /* Normal board : Double Bonus Poker (PP0514) */
@@ -5460,7 +5526,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0515 ) /* Normal board : Double Bonus Poker (PP0515) */
+ROM_START( pepp0515 ) /* Normal board : Double Bonus Poker (PP0515) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -5479,10 +5545,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0515a ) /* Normal board : Double Bonus Poker (PP0515) */
+ROM_START( pepp0515a ) /* Normal board : Double Bonus Poker (PP0515) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -5501,7 +5567,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
ROM_START( pepp0515b ) /* Normal board : Double Bonus Poker (PP0515) */
@@ -5548,7 +5614,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0516 ) /* Normal board : Double Bonus Poker (PP0516) */
+ROM_START( pepp0516 ) /* Normal board : Double Bonus Poker (PP0516) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -5567,7 +5633,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
ROM_START( pepp0516a ) /* Normal board : Double Bonus Poker (PP0516) */
@@ -5592,7 +5658,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0516b ) /* Normal board : Double Bonus Poker (PP0516) - Multi Regional / Multi Currency - Tournament Mode capable */
+ROM_START( pepp0516b ) /* Normal board : Double Bonus Poker (PP0516) - Multi Regional / Multi Currency - Tournament Mode capable - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -5611,7 +5677,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg1348.u75", 0x18000, 0x8000, CRC(cdd8485f) SHA1(4af2f270ed40955bb11f0e427f4ad614fcb3157c) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0526 ) /* Normal board : Deuces Wild Poker (Auto Hold in options) (PP0526) */
@@ -5636,7 +5702,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0531 ) /* Normal board : Joker Poker (PP0531) */
+ROM_START( pepp0531 ) /* Normal board : Joker Poker (PP0531) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -5658,7 +5724,7 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0536 ) /* Normal board : Joker Poker (PP0536) */
+ROM_START( pepp0536 ) /* Normal board : Joker Poker (PP0536) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -5673,14 +5739,14 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0538 ) /* Normal board : Double Bonus Poker (No Double-up) (PP0538) */
+ROM_START( pepp0538 ) /* Normal board : Double Bonus Poker (No Double-up) (PP0538) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -5699,7 +5765,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
ROM_START( pepp0540 ) /* Normal board : Double Bonus Poker (No Double-up) (PP0540) */
@@ -5768,7 +5834,7 @@ PayTable As 2PR 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0550 ) /* Normal board : Joker Poker (Two Pair or Better) (PP0550) */
+ROM_START( pepp0550 ) /* Normal board : Joker Poker (Two Pair or Better) (PP0550) - PSR Verified */
/*
w/J w/oJ
PayTable 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -5783,11 +5849,11 @@ PayTable 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0550a ) /* Normal board : Joker Poker (Two Pair or Better) (PP0550) */
@@ -5879,7 +5945,7 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0568 ) /* Normal board : Joker Poker (PP0568) */
+ROM_START( pepp0568 ) /* Normal board : Joker Poker (PP0568) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -5894,11 +5960,11 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
ROM_START( pepp0585 ) /* Normal board : Standard Draw Poker (No Double-up) (PP0585) */
@@ -5923,7 +5989,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
-ROM_START( pepp0587 ) /* Normal board : Standard Draw Poker (PP0587) */
+ROM_START( pepp0587 ) /* Normal board : Standard Draw Poker (PP0587) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
---------------------------------------------------------
@@ -5938,74 +6004,66 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0596 ) /* Normal board : Spades Sequential Royal Double Bonus Poker (Progressive Link ONLY) (PP0596) */
+ROM_START( pepp0596 ) /* Normal board : Spades Sequential Royal Double Bonus Poker (Progressive Link ONLY) (PP0596) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
----------------------------------------------------------------------
- ???? 1 1 3 4 6 8 50 80 160 100 250 Pregressive
+ ???? 1 1 3 4 6 8 50 80 160 100 * Pregressive
% Range: 92.3-94.3% Optimum: 96.3% Hit Frequency: 45.1%
Programs Available: PP0596
-Currently errors out with CCOM LINK DOWN
+* Payout for a Royal Flush is shown as "MINIMANIA" and for the named suited Sequential Royal it shows "POKERMANIA"
-CCOM linking is not supported
+Currently errors out with CCOM LINK DOWN as CCOM linking is not supported
*/
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "pp0596_a41-a5y.u68", 0x00000, 0x10000, CRC(18475dfe) SHA1(98b8dfd98ce163e78e5c6e80b31dcc58d3ee74e6) ) /* Game Version: A45, Library Version: A5Y, Video Lib Ver: A4N - 09/05/95 IGT NJ */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cgxxxx.u72", 0x00000, 0x8000, NO_DUMP ) /* Unknown set needed for correct paytable graphics */
- ROM_LOAD( "mgo-cgxxxx.u73", 0x08000, 0x8000, NO_DUMP )
- ROM_LOAD( "mbo-cgxxxx.u74", 0x10000, 0x8000, NO_DUMP )
- ROM_LOAD( "mxo-cgxxxx.u75", 0x18000, 0x8000, NO_DUMP )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) ) /* Place holder just so we can see something */
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+ ROM_LOAD( "mro-cg2093.u72", 0x00000, 0x8000, BAD_DUMP CRC(1380bfa6) SHA1(4c3512770afee29d1d9b384a2ea2ad59018f1d4e) ) /* corruption in some graphics */
+ ROM_LOAD( "mgo-cg2093.u73", 0x08000, 0x8000, BAD_DUMP CRC(8bf73e80) SHA1(25ee0a6fe61d1f92a47fd9408c36111b1ed73a56) )
+ ROM_LOAD( "mbo-cg2093.u74", 0x10000, 0x8000, BAD_DUMP CRC(907400f2) SHA1(56ceb960a08b2d3f87e4acb720675cbbfb39d012) )
+ ROM_LOAD( "mxo-cg2093.u75", 0x18000, 0x8000, BAD_DUMP CRC(b6c3e987) SHA1(97f71792cb584a659615d1fe78228ac11fe32571) )
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "cap779.u50", 0x0000, 0x0100, CRC(b04a98fd) SHA1(4788c7cb88aa692a55855ca65e092df43506e55a) )
ROM_END
-ROM_START( pepp0598 ) /* Normal board : Hearts Sequential Royal Double Bonus Poker (Progressive Link ONLY) (PP0598) */
+ROM_START( pepp0598 ) /* Normal board : Hearts Sequential Royal Double Bonus Poker (Progressive Link ONLY) (PP0598) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
----------------------------------------------------------------------
- ???? 1 1 3 4 6 8 50 80 160 100 250 Pregressive
+ ???? 1 1 3 4 6 8 50 80 160 100 * Pregressive
% Range: 92.3-94.3% Optimum: 96.3% Hit Frequency: 45.1%
Programs Available: PP0598
-Currently errors out with CCOM LINK DOWN
+* Payout for a Royal Flush is shown as "MINIMANIA" and for the named suited Sequential Royal it shows "POKERMANIA"
-CCOM linking is not supported
+Currently errors out with CCOM LINK DOWN as CCOM linking is not supported
*/
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "pp0598_a41-a96.u68", 0x00000, 0x10000, CRC(075295db) SHA1(7cb238d4df7be7e393dcfe7102aeffa13b1454d9) ) /* Game Version: A45, Library Version: A96, Video Lib Ver: A4N - 12/21/95 IGT MS */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cgxxxx.u72", 0x00000, 0x8000, NO_DUMP ) /* Unknown set needed for correct paytable graphics */
- ROM_LOAD( "mgo-cgxxxx.u73", 0x08000, 0x8000, NO_DUMP )
- ROM_LOAD( "mbo-cgxxxx.u74", 0x10000, 0x8000, NO_DUMP )
- ROM_LOAD( "mxo-cgxxxx.u75", 0x18000, 0x8000, NO_DUMP )
- ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) ) /* Place holder just so we can see something */
- ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
- ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
- ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
-
+ ROM_LOAD( "mro-cg2093.u72", 0x00000, 0x8000, BAD_DUMP CRC(1380bfa6) SHA1(4c3512770afee29d1d9b384a2ea2ad59018f1d4e) ) /* corruption in some graphics */
+ ROM_LOAD( "mgo-cg2093.u73", 0x08000, 0x8000, BAD_DUMP CRC(8bf73e80) SHA1(25ee0a6fe61d1f92a47fd9408c36111b1ed73a56) )
+ ROM_LOAD( "mbo-cg2093.u74", 0x10000, 0x8000, BAD_DUMP CRC(907400f2) SHA1(56ceb960a08b2d3f87e4acb720675cbbfb39d012) )
+ ROM_LOAD( "mxo-cg2093.u75", 0x18000, 0x8000, BAD_DUMP CRC(b6c3e987) SHA1(97f71792cb584a659615d1fe78228ac11fe32571) )
+
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "cap779.u50", 0x0000, 0x0100, CRC(b04a98fd) SHA1(4788c7cb88aa692a55855ca65e092df43506e55a) )
ROM_END
-ROM_START( pepp0711 ) /* Normal board : Bonus Poker Deluxe (No Double-up) (PP0711) */
+ROM_START( pepp0711 ) /* Normal board : Bonus Poker Deluxe (No Double-up) (PP0711) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -6017,16 +6075,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0713_a45-a74.u68", 0x00000, 0x10000, CRC(d3cfa1f2) SHA1(ddab79f559c33d7e2774c29dad12008df1343025) ) /* Game Version: A45, Library Version: A74 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2003.u72", 0x00000, 0x8000, CRC(0d425f48) SHA1(b60aaf3f4bd76f75f72f6e8dda724bdf795cb521) ) /* 08/30/94 @ IGT L95-0145 */
- ROM_LOAD( "mgo-cg2003.u73", 0x08000, 0x8000, CRC(add0afc4) SHA1(0519bf2f36cb67140933b2c533e625544f27d16b) )
- ROM_LOAD( "mbo-cg2003.u74", 0x10000, 0x8000, CRC(8649dec0) SHA1(0024d3a8fd85279552910b14b69b225bda93957f) )
- ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0713 ) /* Normal board : Bonus Poker Deluxe (No Double-up) (PP0713) */
+ROM_START( pepp0713 ) /* Normal board : Bonus Poker Deluxe (No Double-up) (PP0713) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -6038,16 +6096,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "pp0713_979-a0c.u68", 0x00000, 0x10000, CRC(f3413bc6) SHA1(9cad89a5ab4be1f969e9acbafe2016069d4ee307) ) /* Game Version: 979, Library Version: A0C */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2003.u72", 0x00000, 0x8000, CRC(0d425f48) SHA1(b60aaf3f4bd76f75f72f6e8dda724bdf795cb521) ) /* 08/30/94 @ IGT L95-0145 */
- ROM_LOAD( "mgo-cg2003.u73", 0x08000, 0x8000, CRC(add0afc4) SHA1(0519bf2f36cb67140933b2c533e625544f27d16b) )
- ROM_LOAD( "mbo-cg2003.u74", 0x10000, 0x8000, CRC(8649dec0) SHA1(0024d3a8fd85279552910b14b69b225bda93957f) )
- ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0725 ) /* Normal board : Double Bonus Poker (PP0725) */
+ROM_START( pepp0725 ) /* Normal board : Double Bonus Poker (PP0725) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -6066,10 +6124,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0725a ) /* Normal board : Double Bonus Poker (PP0725) */
+ROM_START( pepp0725a ) /* Normal board : Double Bonus Poker (PP0725) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -6088,10 +6146,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0726 ) /* Normal board : Double Bonus Poker (PP0726) */
+ROM_START( pepp0726 ) /* Normal board : Double Bonus Poker (PP0726) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -6110,10 +6168,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0728 ) /* Normal board : Double Bonus Poker (PP0728) - 11/30/95 @ IGT L96-0247 */
+ROM_START( pepp0728 ) /* Normal board : Double Bonus Poker (PP0728) - 11/30/95 @ IGT L96-0247 - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -6132,10 +6190,10 @@ P437A/4K/5 1 1 3 4 5 6 50 80 160 50 250 800
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0733 ) /* Normal board : Double Aces & Faces (PP0733) */
+ROM_START( pepp0733 ) /* Normal board : Double Aces & Faces (PP0733) - PSR Verified */
/*
2-10 J-K
@@ -6155,10 +6213,11 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2135.u75", 0x18000, 0x8000, CRC(dc905cdc) SHA1(2c7032841d322a7e280a385a652f203e2fb8042e) )
ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1292.u50", 0x0000, 0x0100, NO_DUMP ) /* Should be CAP1292 */
ROM_LOAD( "cap953.u50", 0x0000, 0x0100, CRC(6ece50ad) SHA1(bc5761303b09625850ba50263607d11871ea3ed3) )
ROM_END
-ROM_START( pepp0750 ) /* Normal board : Standard Draw Poker (PP0750) */
+ROM_START( pepp0750 ) /* Normal board : Standard Draw Poker (PP0750) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -6172,14 +6231,14 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
- ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0757 ) /* Normal board : Double Down Stud Joker Poker (Eights or Better) (PP0757) */
+ROM_START( pepp0757 ) /* Normal board : Double Down Stud Joker Poker (Eights or Better) (PP0757) - PSR Verified */
/*
w/J w/oJ
PayTable 8s+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -6198,10 +6257,10 @@ PayTable 8s+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "mxo-cg2015.u75", 0x18000, 0x8000, CRC(0c96b7fc) SHA1(adde93f08db0b957daf77d57a7ab60af3b667f25) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0760 ) /* Normal board : Double Down Stud Poker (PP0760) */
+ROM_START( pepp0760 ) /* Normal board : Double Down Stud Poker (PP0760) - PSR Verified */
/*
PayTable 8s-10s Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
------------------------------------------------------------------
@@ -6219,10 +6278,10 @@ PayTable 8s-10s Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "mxo-cg2015.u75", 0x18000, 0x8000, CRC(0c96b7fc) SHA1(adde93f08db0b957daf77d57a7ab60af3b667f25) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0763 ) /* Normal board : 4 of a Kind Bonus Poker (PP0763) */
+ROM_START( pepp0763 ) /* Normal board : 4 of a Kind Bonus Poker (PP0763) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -6241,10 +6300,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0764 ) /* Normal board : 4 of a Kind Bonus Poker (PP0764) */
+ROM_START( pepp0764 ) /* Normal board : 4 of a Kind Bonus Poker (PP0764) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -6263,10 +6322,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) )
ROM_END
-ROM_START( pepp0775 ) /* Normal board : Royal Deuces Poker or Royal Sevens Poker?? (PP0775) */
+ROM_START( pepp0775 ) /* Normal board : Royal Deuces Poker or Royal Sevens Poker?? (PP0775) - PSR Verified */
/*
Paytable for Royal Deuces lined up with paytable from PP0775:
@@ -6281,20 +6340,21 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "pp0775_a44-a73.u68", 0x00000, 0x10000, CRC(79a56642) SHA1(dfde6c12551e4f12a59e31c14fbfb9edb57e4fac) ) /* Game Version: A44, Library Version: A73 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2xxx.u72", 0x00000, 0x8000, NO_DUMP ) /* Unknown set needed for correct paytable graphics */
- ROM_LOAD( "mgo-cg2xxx.u73", 0x08000, 0x8000, NO_DUMP )
- ROM_LOAD( "mbo-cg2xxx.u74", 0x10000, 0x8000, NO_DUMP )
- ROM_LOAD( "mxo-cg2xxx.u75", 0x18000, 0x8000, NO_DUMP )
- ROM_LOAD( "mro-cg2312.u77", 0x00000, 0x8000, CRC(29a9d408) SHA1(af8c18833ea268b80fabf3b539f35c6782a0309d) ) /* WRONG?!?! Use until the correct set is verified! */
+ ROM_LOAD( "mro-cg2195.u72", 0x00000, 0x8000, NO_DUMP ) /* CG2195 set needed for correct paytable graphics */
+ ROM_LOAD( "mgo-cg2195.u73", 0x08000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mbo-cg2195.u74", 0x10000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mxo-cg2195.u75", 0x18000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mro-cg2312.u77", 0x00000, 0x8000, CRC(29a9d408) SHA1(af8c18833ea268b80fabf3b539f35c6782a0309d) ) /* WRONG?!?! Use until the correct set is dumped */
ROM_LOAD( "mgo-cg2312.u78", 0x08000, 0x8000, CRC(b5ea2602) SHA1(82ee6d45dbc53ccf2d2a956daa83f41bb4a27384) ) /* Gives full paytable, but the hands listed are wrong */
ROM_LOAD( "mbo-cg2312.u79", 0x10000, 0x8000, CRC(e349202c) SHA1(ef6a904112361425aef5824ae983c15d3456dc49) )
ROM_LOAD( "mxo-cg2312.u80", 0x18000, 0x8000, CRC(1e0d3df8) SHA1(716d6bd2b41ef41a7da393e805651c378a16e00e) ) /* These graphics don't seem to work with anything else */
ROM_REGION( 0x200, "proms", 0 )
+// ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* verified - For use with CG2195 when added */
ROM_LOAD( "capx2312.u43", 0x0000, 0x0200, CRC(66971da6) SHA1(6984a68bc2f01009ad6a7a0705c00e715c29bb65) )
ROM_END
-ROM_START( pepp0797 ) /* Normal board : One Eyed Jacks (PP0797) */
+ROM_START( pepp0797 ) /* Normal board : One Eyed Jacks (PP0797) - PSR Verified */
/*
With w/o
Wild Wild
@@ -6313,10 +6373,10 @@ PayTable As 2PR 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "mxo-cg2243.u75", 0x18000, 0x8000, CRC(fa6f300b) SHA1(ba72c3004e6fd4e78d8385a52ede566cf5143d10) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) )
ROM_END
-ROM_START( pepp0812 ) /* Normal board : Deuces Joker Wild Poker (PP0812) */
+ROM_START( pepp0812 ) /* Normal board : Deuces Joker Wild Poker (PP0812) - PSR Verified */
/*
With w/o w/o With
Wild JKR Wild JKR
@@ -6330,16 +6390,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF 4D (Bonus)
ROM_LOAD( "pp0812_a47-a76.u68", 0x00000, 0x10000, CRC(0de2a7ec) SHA1(fedb8da0608328a9d33e46af18de25004b1d03de) ) /* Game Version: A47, Library Version: A76 - 06/18/96 IGT L96-1818 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
- ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
- ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
- ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+ ROM_LOAD( "mro-cg2133.u72", 0x00000, 0x8000, CRC(b21a789f) SHA1(c49f9b5f51c29bbc0e1392e86d6602bd44e46380) ) /* 02/02/95 @ IGT L95-0276 */
+ ROM_LOAD( "mgo-cg2133.u73", 0x08000, 0x8000, CRC(2b7db148) SHA1(d5ff5dde3589d28937d13dc5c4c38caa1ebf2d56) )
+ ROM_LOAD( "mbo-cg2133.u74", 0x10000, 0x8000, CRC(6ed455b7) SHA1(e4f223606c19d09be501461f38520f423599e0a2) )
+ ROM_LOAD( "mxo-cg2133.u75", 0x18000, 0x8000, CRC(095ea26d) SHA1(9bdd8afe67da2370c4ca2d8418f3afdaf7b557ff) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ ROM_LOAD( "cap773.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
ROM_END
-ROM_START( pepp0816 ) /* Normal board : Treasure Chest Poker (PP0816) */
+ROM_START( pepp0816 ) /* Normal board : Treasure Chest Poker (PP0816) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K* SF RF (Bonus)
----------------------------------------------------------
@@ -6369,16 +6429,17 @@ Overall average for the 4 of a Kind bonus is 173.35 credits
ROM_LOAD( "pp0816_a5f-a7k.u68", 0x00000, 0x10000, CRC(a1e21b56) SHA1(aa0a730b2ed48612c3b20831b1aa698a45f557c0) ) /* Game Version: A5F, Library Version: A7K */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2xxx.u72", 0x00000, 0x8000, NO_DUMP ) /* Unknown set needed for Treasure Chest bonus round graphics */
- ROM_LOAD( "mgo-cg2xxx.u73", 0x08000, 0x8000, NO_DUMP )
- ROM_LOAD( "mbo-cg2xxx.u74", 0x10000, 0x8000, NO_DUMP )
- ROM_LOAD( "mxo-cg2xxx.u75", 0x18000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mro-cg2283.u72", 0x00000, 0x8000, NO_DUMP ) /* CG2283 set needed for Treasure Chest bonus round graphics */
+ ROM_LOAD( "mgo-cg2283.u73", 0x08000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mbo-cg2283.u74", 0x10000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mxo-cg2283.u75", 0x18000, 0x8000, NO_DUMP )
ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* WRONG CG set!! MAX Bet 4K "BONUS" graphics is missing and */
ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) ) /* all treasure chest graphics missing for bonus & attract screens */
ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) )
ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap2283.u50", 0x0000, 0x0100, NO_DUMP ) /* Should be CAP2283 */
ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
ROM_END
@@ -6848,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) )
@@ -6883,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) )
@@ -6975,7 +7042,7 @@ ROM_START( peke0004 ) /* Normal board : Keno 1-10 Spot (KE0004) */
ROM_LOAD( "mxo-cg1273.u75", 0x18000, 0x8000, CRC(fee165ed) SHA1(26f2c35f091a496bb61789c701795eabb3e5735e) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap1267.u50", 0x0000, 0x0100, CRC(7051db57) SHA1(76751a3cc47d506983205decb07e99ca0c178a42) )
+ ROM_LOAD( "cap797.u50", 0x0000, 0x0100, CRC(1ab81779) SHA1(17e037235bb8c3f4a420d84841bac734373bf6b8) )
ROM_END
ROM_START( peke0017 ) /* Normal board : Keno 1-10 Spot (KE0017) */
@@ -7499,7 +7566,7 @@ ROM_START( peps0722 ) /* Normal board : River Gambler Slots (PS0722) - Payout 90
ROM_LOAD( "cap2266.u50", 0x0000, 0x0100, CRC(5aaff103) SHA1(9cfda9c095cb77a8bb761c131a0f358e79b97abc) )
ROM_END
-ROM_START( pex0002p ) /* Superboard : Standard Draw Poker (X000002P+XP000038) */
+ROM_START( pex0002p ) /* Superboard : Standard Draw Poker (X000002P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -7508,22 +7575,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0002, X000002P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000002p.u66", 0x00000, 0x10000, CRC(17cee391) SHA1(173e5775c3e887e16b4f0330d21873331dfb7c33) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0002pa ) /* Superboard : Standard Draw Poker (X000002P+XP000109) */
+ROM_START( pex0002pa ) /* Superboard : Standard Draw Poker (X000002P+XP000006) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -7532,22 +7599,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0002, X000002P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000109.u67", 0x00000, 0x10000, CRC(2e3347a7) SHA1(ef4f1822389ff67c00065b2c04897deabee2eba1) ) /* Monaco Region */
+ ROM_LOAD( "xp000006.u67", 0x00000, 0x10000, CRC(a176af9e) SHA1(f1aebe6c899a758d0fee9ee69f7fea468688dd41) ) /* 03/23/95 @ IGT L95-0826 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000002p.u66", 0x00000, 0x10000, CRC(17cee391) SHA1(173e5775c3e887e16b4f0330d21873331dfb7c33) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2201.u77", 0x00000, 0x8000, CRC(8f82a114) SHA1(dc4aaaa12442a66386d9bef969afa60a7e2e386b) ) /* Monaco Region */
- ROM_LOAD( "mgo-cg2201.u78", 0x08000, 0x8000, CRC(71797c5b) SHA1(15dff00aad8006855af98a2ad39fe1a6e87d7d24) )
- ROM_LOAD( "mbo-cg2201.u79", 0x10000, 0x8000, CRC(27201cbf) SHA1(9d197e04c36e94ff08bd76c7200ea4e8f345b8ab) )
- ROM_LOAD( "mxo-cg2201.u80", 0x18000, 0x8000, CRC(b79b6d11) SHA1(dcc30465e4de104c54b19e95e7216023576d90c7) )
+ ROM_LOAD( "mro-cg2119.u77", 0x00000, 0x8000, CRC(1e671f88) SHA1(23c667ffb6d6f6e63f92aa8916bc4f862e924d87) )
+ ROM_LOAD( "mgo-cg2119.u78", 0x08000, 0x8000, CRC(3c65b8ef) SHA1(a26433ed0b0040b8bb8fa59802715cdb185f39ff) )
+ ROM_LOAD( "mbo-cg2119.u79", 0x10000, 0x8000, CRC(958d1b42) SHA1(3e8a1589b9a0c17237247e573d14a75fd09c2a88) )
+ ROM_LOAD( "mxo-cg2119.u80", 0x18000, 0x8000, CRC(f82f27a5) SHA1(81e7f8c0f31a8e8aeca8c0456ff59f9d2ec7d184) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0006p ) /* Superboard : Standard Draw Poker (X000006P+XP000038) */
+ROM_START( pex0006p ) /* Superboard : Standard Draw Poker (X000006P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -7556,22 +7623,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0006, X000006P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000006p.u66", 0x00000, 0x10000, CRC(0ee609a1) SHA1(57043ac2c6ff4377479dd7b66d7e379053f3f602) ) /* Standard Draw Poker - 03/23/95 @ IGT L95-0826 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0040p ) /* Superboard : Standard Draw Poker (X000040P+XP000038) */
+ROM_START( pex0040p ) /* Superboard : Standard Draw Poker (X000040P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -7580,22 +7647,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0040, X000040P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000040p.u66", 0x00000, 0x10000, CRC(f672c36e) SHA1(c44d78070b8f858cb2ef27c84b62acc8eec1bea8) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0042p ) /* Superboard : Standard Draw Poker (10's or Better) (X000042P+XP000038) */
+ROM_START( pex0042p ) /* Superboard : Standard Draw Poker (10's or Better) (X000042P+XP000038) - PSR Verified */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -7604,22 +7671,22 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0042, X000042P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000042p.u66", 0x00000, 0x10000, CRC(7f803cb5) SHA1(f8f2974c78c63a608a536f2c72cf7ccb7d1ba0eb) ) /* Standard Draw Poker (10's or Better) */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0045p ) /* Superboard : Standard Draw Poker (10's or Better) (X000045P+XP000038) */
+ROM_START( pex0045p ) /* Superboard : Standard Draw Poker (10's or Better) (X000045P+XP000038) - PSR Verified */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -7628,22 +7695,22 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0045, X000045P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000045p.u66", 0x00000, 0x10000, CRC(5412e1f9) SHA1(a962b7731df2f534ea79b6d3e376abf45104df37) ) /* Standard Draw Poker (10's or Better) */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0046p ) /* Superboard : Standard Draw Poker (10's or Better) (X000046P+XP000038) */
+ROM_START( pex0046p ) /* Superboard : Standard Draw Poker (10's or Better) (X000046P+XP000038) - PSR Verified */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -7652,22 +7719,22 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0046, X000046P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000046p.u66", 0x00000, 0x10000, CRC(f19cdab4) SHA1(4502a8660100be69625e215610cf918e3ffc5e4f) ) /* Standard Draw Poker (10's or Better) */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0053p ) /* Superboard : Joker Poker (X000053P+XP000038) */
+ROM_START( pex0053p ) /* Superboard : Joker Poker (X000053P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -7677,22 +7744,22 @@ PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0053, X000053P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000053p.u66", 0x00000, 0x10000, CRC(b247e455) SHA1(8d311956e46be62ee17de6fb2ae1594e623a78c0) ) /* Joker Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0054p ) /* Superboard : Deuces Wild Poker (X000054P+XP000038) */
+ROM_START( pex0054p ) /* Superboard : Deuces Wild Poker (X000054P+XP000038) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7702,22 +7769,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0054, X000054P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000054p.u66", 0x00000, 0x10000, CRC(820b3738) SHA1(dfa389df0d27b69072b5ece5b624ef97551f4af1) ) /* Deuces Wild Poker - 03/22/95 @ IGT L95-1142 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055p ) /* Superboard : Deuces Wild Poker (X000055P+XP000019) */
+ROM_START( pex0055p ) /* Superboard : Deuces Wild Poker (X000055P+XP000019) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7733,16 +7800,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2159.u77", 0x00000, 0x8000, CRC(7dce6da3) SHA1(4722f0b558b057e4cb934304d44509a2d651b128) ) /* 05/17/95 @ IGT L95-1308 */
+ ROM_LOAD( "mgo-cg2159.u78", 0x08000, 0x8000, CRC(febefa55) SHA1(ae4b23d18a9c7eff84fb9a36f2c403c0c98e723e) )
+ ROM_LOAD( "mbo-cg2159.u79", 0x10000, 0x8000, CRC(d1f5ceb7) SHA1(1505a0b835363a745a81ec9c8e45377c0f76226d) )
+ ROM_LOAD( "mxo-cg2159.u80", 0x18000, 0x8000, CRC(522e1e50) SHA1(ccca29559f03a23adcdaa39be65a27139185fd2f) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pa ) /* Superboard : Deuces Wild Poker (X000055P+XP000022) */
+ROM_START( pex0055pa ) /* Superboard : Deuces Wild Poker (X000055P+XP000022) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7758,16 +7825,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2291.u77", 0x00000, 0x8000, CRC(db4e491c) SHA1(e371e7b236962a0f30640c683d3a0a302c51aee9) ) /* Custom The Orleans card backs */
- ROM_LOAD( "mgo-cg2291.u78", 0x08000, 0x8000, CRC(17bb35f8) SHA1(ba9e8aa3ff42b17c7be6ee46c70db22d8e60e52c) ) /* Compatible with most "standard" game sets */
- ROM_LOAD( "mbo-cg2291.u79", 0x10000, 0x8000, CRC(de1036e4) SHA1(774bbcda301754dc4a606974248847a2264c3827) )
- ROM_LOAD( "mxo-cg2291.u80", 0x18000, 0x8000, CRC(7049403c) SHA1(3a29a00fb8dfdb30dba757c1536151827ea09068) )
+ ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
+ ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
+ ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
+ ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx2291.u43", 0x0000, 0x0200, CRC(6dfbb409) SHA1(10cd84e53344cb8502a268c41bdd41bc927e5544) )
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pb ) /* Superboard : Deuces Wild Poker (X000055P+XP000023) */
+ROM_START( pex0055pb ) /* Superboard : Deuces Wild Poker (X000055P+XP000023) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7783,17 +7850,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2399.u77", 0x00000, 0x8000, CRC(0424f4ba) SHA1(c8b192a6f63c8c9937cb3923d27b9ba2c39823cd) ) /* Custom The Fun Ships card backs */
- ROM_LOAD( "mgo-cg2399.u78", 0x08000, 0x8000, CRC(5848a2fa) SHA1(4173a473016b7a776d2b59bf3ded0be35bd43721) ) /* Also compatible with ACE$ Bonus Poker */
- ROM_LOAD( "mbo-cg2399.u79", 0x10000, 0x8000, CRC(5c3e16f6) SHA1(a4aa457f239527bffa6472e0d6f9d836f796b326) )
- ROM_LOAD( "mxo-cg2399.u80", 0x18000, 0x8000, CRC(bd7669d5) SHA1(4343a9764fd563e2e1cdd8558f2f53f77006b159) )
+ ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
+ ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
+ ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
+ ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx2399.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2399 */
- ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) /* Wrong!! Should be CAPX2399 */
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pc ) /* Superboard : Deuces Wild Poker (X000055P+XP000028) */
+ROM_START( pex0055pc ) /* Superboard : Deuces Wild Poker (X000055P+XP000028) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7809,16 +7875,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2374.u77", 0x00000, 0x8000, CRC(ceeb714d) SHA1(6de908d04bcaa243195943affa9ad0d725de5c81) ) /* Custom Horseshoe Casino card backs */
- ROM_LOAD( "mgo-cg2374.u78", 0x08000, 0x8000, CRC(d0fabad5) SHA1(438ebe074fa3eaa3073ef042f481449f416d0665) )
- ROM_LOAD( "mbo-cg2374.u79", 0x10000, 0x8000, CRC(9a0fbc8d) SHA1(aa39f47cbeaf8218fd2d753c9a350e9eab5df5d3) )
- ROM_LOAD( "mxo-cg2374.u80", 0x18000, 0x8000, CRC(99814562) SHA1(2d8e132f4cc4edd06332c0327927219513b22832) )
+ ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
+ ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
+ ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
+ ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx2374.u43", 0x0000, 0x0200, CRC(f922e1b8) SHA1(4aa5291c59431c022dc0561a6e3b38209f60286a) )
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pd ) /* Superboard : Deuces Wild Poker (X000055P+XP000035) */
+ROM_START( pex0055pd ) /* Superboard : Deuces Wild Poker (X000055P+XP000035) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7828,23 +7894,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0055, X000055P, PP0723
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000035.u67", 0x00000, 0x10000, CRC(aa16e53b) SHA1(5a37c7af2c09be26e8734b36da765fd408754771) ) /* 07/08/96 @ IGT L96-1587 */
+ ROM_LOAD( "xp000035.u67", 0x00000, 0x10000, CRC(aa16e53b) SHA1(5a37c7af2c09be26e8734b36da765fd408754771) ) /* 07/08/96 @ IGT L96-1587 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2389.u77", 0x00000, 0x8000, CRC(912d639f) SHA1(f66f5db847816754c4f1fbeb1171c4e6c1331039) ) /* Custom The Wild Wild West Casino card backs */
- ROM_LOAD( "mgo-cg2389.u78", 0x08000, 0x8000, CRC(87de1a4e) SHA1(4f8524eba297771d3292dd2fca9008546d0e3066) )
- ROM_LOAD( "mbo-cg2389.u79", 0x10000, 0x8000, CRC(7c248712) SHA1(4c2cfd7f46fa757438706095137ccf230c30f3a4) )
- ROM_LOAD( "mxo-cg2389.u80", 0x18000, 0x8000, CRC(4fdb7daf) SHA1(131d0a5c33f75f859522a4307c0e23273d5d4cb6) )
+ ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
+ ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
+ ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
+ ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx2389.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2389, but 2 PCBs had CAPX1321 */
- ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) /* Wrong!! Should be CAPX2389 */
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pe ) /* Superboard : Deuces Wild Poker (X000055P+XP000038) */
+ROM_START( pex0055pe ) /* Superboard : Deuces Wild Poker (X000055P+XP000038) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7854,22 +7919,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0055, X000055P, PP0723
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2354.u77", 0x00000, 0x8000, CRC(e7913f01) SHA1(43b99f347f0566949cad4172bdf1462dbc2ad860) ) /* Custom Sunset Station Hotel-Casino card backs */
- ROM_LOAD( "mgo-cg2354.u78", 0x08000, 0x8000, CRC(317381b8) SHA1(196794335a7a85fd50f4e0da00ceb5ba6a93b36c) )
- ROM_LOAD( "mbo-cg2354.u79", 0x10000, 0x8000, CRC(ccc643fa) SHA1(9ca9b35f2eed46824d11a8a3b937eb1b2afb639c) )
- ROM_LOAD( "mxo-cg2354.u80", 0x18000, 0x8000, CRC(b06a49b8) SHA1(822ab7e53247e27feecbe96491bef0efea05212d) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx2354.u43", 0x0000, 0x0200, CRC(c16e03ed) SHA1(59c0e98b40353e012f2dc2ce25dd46433449e8cc) )
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pf ) /* Superboard : Deuces Wild Poker (X000055P+XP000040) */
+ROM_START( pex0055pf ) /* Superboard : Deuces Wild Poker (X000055P+XP000040) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7879,22 +7944,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0055, X000055P, PP0723
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000040.u67", 0x00000, 0x10000, CRC(7b30b1d5) SHA1(394c964cf6269a4cd9b9debe8f4a5a0c96db06a7) ) /* 10/23/96 IGT L96-2682 */
+ ROM_LOAD( "xp000040.u67", 0x00000, 0x10000, CRC(7b30b1d5) SHA1(394c964cf6269a4cd9b9debe8f4a5a0c96db06a7) ) /* 10/23/96 IGT L96-2682 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pg ) /* Superboard : Deuces Wild Poker (X000055P+XP000053) */
+ROM_START( pex0055pg ) /* Superboard : Deuces Wild Poker (X000055P+XP000048) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7904,22 +7969,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0055, X000055P, PP0723
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000048.u67", 0x00000, 0x10000, CRC(917ab8e2) SHA1(0d4b6de86ada503fa579a6e1ba7d5b17b4f2c3b5) )
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055ph ) /* Superboard : Deuces Wild Poker (X000055P+XP000055) */
+ROM_START( pex0055ph ) /* Superboard : Deuces Wild Poker (X000055P+XP000055) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7935,16 +8000,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pi ) /* Superboard : Deuces Wild Poker (X000055P+XP000063) */
+ROM_START( pex0055pi ) /* Superboard : Deuces Wild Poker (X000055P+XP000063) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7954,22 +8019,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0055, X000055P, PP0723
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000063.u67", 0x00000, 0x10000, CRC(008dcaf9) SHA1(34203f602a531c1a58febdf31fe7a94c2c09fcb4) )
+ ROM_LOAD( "xp000063.u67", 0x00000, 0x10000, CRC(008dcaf9) SHA1(34203f602a531c1a58febdf31fe7a94c2c09fcb4) ) /* 03/31/97 @ IGT L97-0734 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pj ) /* Superboard : Deuces Wild Poker (X000055P+XP000075) */
+ROM_START( pex0055pj ) /* Superboard : Deuces Wild Poker (X000055P+XP000075) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -7984,17 +8049,17 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
- ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) ) /* Contains needed English / Spanish graphics */
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_REGION( 0x040000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2307.u77", 0x00000, 0x10000, CRC(9866888f) SHA1(8a367ca7398a66333c1ebf0ce98a4051092c3fac) ) /* 10/24/99 @ IGT VENE */
+ ROM_LOAD( "mgo-cg2307.u78", 0x10000, 0x10000, CRC(b0ecf23a) SHA1(3b948ebf70f8fefb6b59b0095b73db65f1b1f7ba) )
+ ROM_LOAD( "mbo-cg2307.u79", 0x20000, 0x10000, CRC(ef4490df) SHA1(549bbbc827c427a984ac9f7d15afca279d5691b1) )
+ ROM_LOAD( "mxo-cg2307.u80", 0x30000, 0x10000, CRC(d5e3274b) SHA1(66d1af73f3e901e50593138f1e699ef276091ee4) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
+ ROM_LOAD( "capx2307.u43", 0x0000, 0x0200, CRC(58d81338) SHA1(f0044ebbd0128d6fb74d850528ef02730c180f00) )
ROM_END
-ROM_START( pex0055pk ) /* Superboard : Deuces Wild Poker (X000055P+XP000079) */
+ROM_START( pex0055pk ) /* Superboard : Deuces Wild Poker (X000055P+XP000079) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8010,16 +8075,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pl ) /* Superboard : Deuces Wild Poker (X000055P+XP000094) */
+ROM_START( pex0055pl ) /* Superboard : Deuces Wild Poker (X000055P+XP000094) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8035,16 +8100,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pm ) /* Superboard : Deuces Wild Poker (X000055P+XP000095) */
+ROM_START( pex0055pm ) /* Superboard : Deuces Wild Poker (X000055P+XP000095) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8054,16 +8119,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0055, X000055P, PP0723
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000095.u67", 0x00000, 0x10000, CRC(6a1679ea) SHA1(421e8c9eacc8e397267a48cad7ae96f541b1c19a) ) /* 12/19/97 IGT L98-0197 */
+ ROM_LOAD( "xp000095.u67", 0x00000, 0x10000, CRC(6a1679ea) SHA1(421e8c9eacc8e397267a48cad7ae96f541b1c19a) ) /* 12/19/97 IGT L98-0197 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
@@ -8094,7 +8159,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055po ) /* Superboard : Deuces Wild Poker (X000055P+XP000102) */
+ROM_START( pex0055po ) /* Superboard : Deuces Wild Poker (X000055P+XP000102) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8104,22 +8169,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0055, X000055P, PP0723
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000102.u67", 0x00000, 0x10000, CRC(76d37639) SHA1(c7190ee3bff135b39ce42428eadef3ca067508b4) ) /* English / Spanish */
+ ROM_LOAD( "xp000102.u67", 0x00000, 0x10000, CRC(76d37639) SHA1(c7190ee3bff135b39ce42428eadef3ca067508b4) ) /* English / Spanish - 03/10/98 @ IGT VENE */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
- ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) ) /* Contains needed English / Spanish graphics */
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_REGION( 0x040000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2307.u77", 0x00000, 0x10000, CRC(9866888f) SHA1(8a367ca7398a66333c1ebf0ce98a4051092c3fac) ) /* 10/24/99 @ IGT VENE */
+ ROM_LOAD( "mgo-cg2307.u78", 0x10000, 0x10000, CRC(b0ecf23a) SHA1(3b948ebf70f8fefb6b59b0095b73db65f1b1f7ba) )
+ ROM_LOAD( "mbo-cg2307.u79", 0x20000, 0x10000, CRC(ef4490df) SHA1(549bbbc827c427a984ac9f7d15afca279d5691b1) )
+ ROM_LOAD( "mxo-cg2307.u80", 0x30000, 0x10000, CRC(d5e3274b) SHA1(66d1af73f3e901e50593138f1e699ef276091ee4) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
+ ROM_LOAD( "capx2307.u43", 0x0000, 0x0200, CRC(58d81338) SHA1(f0044ebbd0128d6fb74d850528ef02730c180f00) )
ROM_END
-ROM_START( pex0055pp ) /* Superboard : Deuces Wild Poker (X000055P+XP000104) */
+ROM_START( pex0055pp ) /* Superboard : Deuces Wild Poker (X000055P+XP000104) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8135,16 +8200,16 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pq ) /* Superboard : Deuces Wild Poker (X000055P+XP000112) */
+ROM_START( pex0055pq ) /* Superboard : Deuces Wild Poker (X000055P+XP000109) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8154,22 +8219,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0055, X000055P, PP0723
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000109.u67", 0x00000, 0x10000, CRC(2e3347a7) SHA1(ef4f1822389ff67c00065b2c04897deabee2eba1) )
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2201.u77", 0x00000, 0x8000, CRC(8f82a114) SHA1(dc4aaaa12442a66386d9bef969afa60a7e2e386b) )
+ ROM_LOAD( "mgo-cg2201.u78", 0x08000, 0x8000, CRC(71797c5b) SHA1(15dff00aad8006855af98a2ad39fe1a6e87d7d24) )
+ ROM_LOAD( "mbo-cg2201.u79", 0x10000, 0x8000, CRC(27201cbf) SHA1(9d197e04c36e94ff08bd76c7200ea4e8f345b8ab) )
+ ROM_LOAD( "mxo-cg2201.u80", 0x18000, 0x8000, CRC(b79b6d11) SHA1(dcc30465e4de104c54b19e95e7216023576d90c7) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0055pr ) /* Superboard : Deuces Wild Poker (X000055P+XP000126) */
+ROM_START( pex0055pr ) /* Superboard : Deuces Wild Poker (X000055P+XP000126) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8184,17 +8249,92 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
+ ROM_REGION( 0x040000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2430.u77", 0x00000, 0x10000, CRC(3df03923) SHA1(497951b02e192697fa06ea4f08885e140c767b41) ) /* English / Spanish */
+ ROM_LOAD( "mgo-cg2430.u78", 0x10000, 0x10000, CRC(8ba04eb8) SHA1(cfacb454a997738b5870054baaeb34efc189de6b) )
+ ROM_LOAD( "mbo-cg2430.u79", 0x20000, 0x10000, CRC(b5a15953) SHA1(ed88a23c4fbe2092856f623aea0a282cf4604f47) )
+ ROM_LOAD( "mxo-cg2430.u80", 0x30000, 0x10000, CRC(0f0cc2ed) SHA1(d381c0485da073f106ca1aab71c1c14fb2c0c49f) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2430.u43", 0x0000, 0x0200, CRC(f96c0685) SHA1(908a0ae2cfc24a68198eca30624f12993b5010dc) )
+ROM_END
+
+ROM_START( pex0055ps ) /* Superboard : Deuces Wild Poker (X000055P+XP000132) - Must set denomination with SET022 - PSR Verified */
+/*
+ w/D w/oD
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
+------------------------------------------------------------
+ P32A 1 2 2 3 4 10 15 25 200 250 800
+ % Range: 90.8-92.8% Optimum: 94.8% Hit Frequency: 45.1%
+ Programs Available: PP0055, X000055P, PP0723
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000132.u67", 0x00000, 0x10000, CRC(5bbc7ee4) SHA1(0e3e927c6b4ae96a11c6ecac5d3767eb6a725aca) )
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
+
+ ROM_REGION( 0x040000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2445.u77", 0x00000, 0x10000, CRC(f8a8882b) SHA1(378c47c71673b291e908ab8bc56242e6b9b676e5) ) /* English / Portuguese */
+ ROM_LOAD( "mgo-cg2445.u78", 0x10000, 0x10000, CRC(69a86b68) SHA1(9fb2cd36242afb37badd5ad4f4d445385f9f7a75) )
+ ROM_LOAD( "mbo-cg2445.u79", 0x20000, 0x10000, CRC(0476ee8a) SHA1(b92f23ff2691f4a218d748ac5a6755483b1299ca) )
+ ROM_LOAD( "mxo-cg2445.u80", 0x30000, 0x10000, CRC(31a48bda) SHA1(50f2ce8b4f07b9f18f10aa879ef40aa0fabfe84f) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2307.u43", 0x0000, 0x0200, CRC(58d81338) SHA1(f0044ebbd0128d6fb74d850528ef02730c180f00) )
+ROM_END
+
+ROM_START( pex0055pt ) /* Superboard : Deuces Wild Poker (X000055P+XP000137) - Must set denomination with SET100 - PSR Verified */
+/*
+ w/D w/oD
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
+------------------------------------------------------------
+ P32A 1 2 2 3 4 10 15 25 200 250 800
+ % Range: 90.8-92.8% Optimum: 94.8% Hit Frequency: 45.1%
+ Programs Available: PP0055, X000055P, PP0723
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000137.u67", 0x00000, 0x10000, CRC(dd396f99) SHA1(bbbf5877a0ba65c4b18a78a77516cae6e443c1c5) )
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
+
+ ROM_REGION( 0x040000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2425.u77", 0x00000, 0x10000, CRC(3decf667) SHA1(1a30cbe616b2a833d2cec6f24fc0f9abb1dda051) )
+ ROM_LOAD( "mgo-cg2425.u78", 0x10000, 0x10000, CRC(ace9cb0c) SHA1(dbb7a3b95bc303df3c7932422d1803502671d92c) )
+ ROM_LOAD( "mbo-cg2425.u79", 0x20000, 0x10000, CRC(6ec83d3a) SHA1(07acb0ed3bb0108b72ff27bbbfb5bcbb006a510e) )
+ ROM_LOAD( "mxo-cg2425.u80", 0x30000, 0x10000, CRC(4dbee1a7) SHA1(8281ce452c1d418f671ed8c5aa833f8d8ca3f247) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2367.u43", 0x0000, 0x0200, CRC(9631bfc9) SHA1(bdb4e5c069ed2a447c1709727cc74842a1b83a7c) )
+ROM_END
+
+ROM_START( pex0057p ) /* Superboard : Deuces Wild Poker (X000057P+XP000038) - PSR Verified */
+/*
+ w/D w/oD
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
+------------------------------------------------------------
+ P34A 1 2 2 3 5 9 15 25 200 250 800
+ % Range: 96.8-98.8% Optimum: 100.8% Hit Frequency: 45.3%
+ Programs Available: PP0057, X000057P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000057p.u66", 0x00000, 0x10000, CRC(2046710a) SHA1(3fcc7c3069ea54d0e4982814aca1d7b327bb2074) ) /* Deuces Wild Poker - 05/04/95 @ IGT L95-1143 */
+
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) ) /* Contains needed English / Spanish graphics */
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0057p ) /* Superboard : Deuces Wild Poker (X000057P+XP000038) */
+ROM_START( pex0057pa ) /* Superboard : Deuces Wild Poker (X000057P+XP000038) */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8204,22 +8344,124 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0057, X000057P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000057p.u66", 0x00000, 0x10000, CRC(2046710a) SHA1(3fcc7c3069ea54d0e4982814aca1d7b327bb2074) ) /* Deuces Wild Poker - 05/04/95 @ IGT L95-1143 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2291.u77", 0x00000, 0x8000, CRC(db4e491c) SHA1(e371e7b236962a0f30640c683d3a0a302c51aee9) ) /* Custom The Orleans card backs */
+ ROM_LOAD( "mgo-cg2291.u78", 0x08000, 0x8000, CRC(17bb35f8) SHA1(ba9e8aa3ff42b17c7be6ee46c70db22d8e60e52c) ) /* Compatible with most "standard" game sets */
+ ROM_LOAD( "mbo-cg2291.u79", 0x10000, 0x8000, CRC(de1036e4) SHA1(774bbcda301754dc4a606974248847a2264c3827) )
+ ROM_LOAD( "mxo-cg2291.u80", 0x18000, 0x8000, CRC(7049403c) SHA1(3a29a00fb8dfdb30dba757c1536151827ea09068) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
+ ROM_LOAD( "capx2291.u43", 0x0000, 0x0200, CRC(6dfbb409) SHA1(10cd84e53344cb8502a268c41bdd41bc927e5544) )
+ROM_END
+
+ROM_START( pex0057pb ) /* Superboard : Deuces Wild Poker (X000057P+XP000038) */
+/*
+ w/D w/oD
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
+------------------------------------------------------------
+ P34A 1 2 2 3 5 9 15 25 200 250 800
+ % Range: 96.8-98.8% Optimum: 100.8% Hit Frequency: 45.3%
+ Programs Available: PP0057, X000057P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000057p.u66", 0x00000, 0x10000, CRC(2046710a) SHA1(3fcc7c3069ea54d0e4982814aca1d7b327bb2074) ) /* Deuces Wild Poker - 05/04/95 @ IGT L95-1143 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2399.u77", 0x00000, 0x8000, CRC(0424f4ba) SHA1(c8b192a6f63c8c9937cb3923d27b9ba2c39823cd) ) /* Custom The Fun Ships card backs */
+ ROM_LOAD( "mgo-cg2399.u78", 0x08000, 0x8000, CRC(5848a2fa) SHA1(4173a473016b7a776d2b59bf3ded0be35bd43721) ) /* Compatible with most "standard" game sets */
+ ROM_LOAD( "mbo-cg2399.u79", 0x10000, 0x8000, CRC(5c3e16f6) SHA1(a4aa457f239527bffa6472e0d6f9d836f796b326) ) /* Also compatible with ACE$ Bonus Poker */
+ ROM_LOAD( "mxo-cg2399.u80", 0x18000, 0x8000, CRC(bd7669d5) SHA1(4343a9764fd563e2e1cdd8558f2f53f77006b159) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2399.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2399 */
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) /* Wrong!! Should be CAPX2399 */
+ROM_END
+
+ROM_START( pex0057pc ) /* Superboard : Deuces Wild Poker (X000057P+XP000038) */
+/*
+ w/D w/oD
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
+------------------------------------------------------------
+ P34A 1 2 2 3 5 9 15 25 200 250 800
+ % Range: 96.8-98.8% Optimum: 100.8% Hit Frequency: 45.3%
+ Programs Available: PP0057, X000057P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000057p.u66", 0x00000, 0x10000, CRC(2046710a) SHA1(3fcc7c3069ea54d0e4982814aca1d7b327bb2074) ) /* Deuces Wild Poker - 05/04/95 @ IGT L95-1143 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2374.u77", 0x00000, 0x8000, CRC(ceeb714d) SHA1(6de908d04bcaa243195943affa9ad0d725de5c81) ) /* Custom Horseshoe Casino card backs */
+ ROM_LOAD( "mgo-cg2374.u78", 0x08000, 0x8000, CRC(d0fabad5) SHA1(438ebe074fa3eaa3073ef042f481449f416d0665) ) /* Compatible with most "standard" game sets */
+ ROM_LOAD( "mbo-cg2374.u79", 0x10000, 0x8000, CRC(9a0fbc8d) SHA1(aa39f47cbeaf8218fd2d753c9a350e9eab5df5d3) )
+ ROM_LOAD( "mxo-cg2374.u80", 0x18000, 0x8000, CRC(99814562) SHA1(2d8e132f4cc4edd06332c0327927219513b22832) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2374.u43", 0x0000, 0x0200, CRC(f922e1b8) SHA1(4aa5291c59431c022dc0561a6e3b38209f60286a) )
+ROM_END
+
+ROM_START( pex0057pd ) /* Superboard : Deuces Wild Poker (X000057P+XP000038) */
+/*
+ w/D w/oD
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
+------------------------------------------------------------
+ P34A 1 2 2 3 5 9 15 25 200 250 800
+ % Range: 96.8-98.8% Optimum: 100.8% Hit Frequency: 45.3%
+ Programs Available: PP0057, X000057P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000057p.u66", 0x00000, 0x10000, CRC(2046710a) SHA1(3fcc7c3069ea54d0e4982814aca1d7b327bb2074) ) /* Deuces Wild Poker - 05/04/95 @ IGT L95-1143 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2389.u77", 0x00000, 0x8000, CRC(912d639f) SHA1(f66f5db847816754c4f1fbeb1171c4e6c1331039) ) /* Custom The Wild Wild West Casino card backs */
+ ROM_LOAD( "mgo-cg2389.u78", 0x08000, 0x8000, CRC(87de1a4e) SHA1(4f8524eba297771d3292dd2fca9008546d0e3066) ) /* Compatible with most "standard" game sets */
+ ROM_LOAD( "mbo-cg2389.u79", 0x10000, 0x8000, CRC(7c248712) SHA1(4c2cfd7f46fa757438706095137ccf230c30f3a4) )
+ ROM_LOAD( "mxo-cg2389.u80", 0x18000, 0x8000, CRC(4fdb7daf) SHA1(131d0a5c33f75f859522a4307c0e23273d5d4cb6) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2389.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2389, but 2 PCBs had CAPX1321 */
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) /* Wrong!! Should be CAPX2389 */
+ROM_END
+
+ROM_START( pex0057pe ) /* Superboard : Deuces Wild Poker (X000057P+XP000038) */
+/*
+ w/D w/oD
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
+------------------------------------------------------------
+ P34A 1 2 2 3 5 9 15 25 200 250 800
+ % Range: 96.8-98.8% Optimum: 100.8% Hit Frequency: 45.3%
+ Programs Available: PP0057, X000057P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000057p.u66", 0x00000, 0x10000, CRC(2046710a) SHA1(3fcc7c3069ea54d0e4982814aca1d7b327bb2074) ) /* Deuces Wild Poker - 05/04/95 @ IGT L95-1143 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2354.u77", 0x00000, 0x8000, CRC(e7913f01) SHA1(43b99f347f0566949cad4172bdf1462dbc2ad860) ) /* Custom Sunset Station Hotel-Casino card backs */
+ ROM_LOAD( "mgo-cg2354.u78", 0x08000, 0x8000, CRC(317381b8) SHA1(196794335a7a85fd50f4e0da00ceb5ba6a93b36c) ) /* Compatible with most "standard" game sets */
+ ROM_LOAD( "mbo-cg2354.u79", 0x10000, 0x8000, CRC(ccc643fa) SHA1(9ca9b35f2eed46824d11a8a3b937eb1b2afb639c) )
+ ROM_LOAD( "mxo-cg2354.u80", 0x18000, 0x8000, CRC(b06a49b8) SHA1(822ab7e53247e27feecbe96491bef0efea05212d) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2354.u43", 0x0000, 0x0200, CRC(c16e03ed) SHA1(59c0e98b40353e012f2dc2ce25dd46433449e8cc) )
ROM_END
-ROM_START( pex0060p ) /* Superboard : Standard Draw Poker (X000060P+XP000038) */
+ROM_START( pex0060p ) /* Superboard : Standard Draw Poker (X000060P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -8228,22 +8470,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0060, X000060P & PP0420 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000060p.u66", 0x00000, 0x10000, CRC(1ec1ad4d) SHA1(19bc46fe86e0ff23c43ffc072b1c461b60481f0f) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0124p ) /* Superboard : Deuces Wild Poker (X000124P+XP000053) */
+ROM_START( pex0124p ) /* Superboard : Deuces Wild Poker (X000124P+XP000038) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8253,22 +8495,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0124, X000124P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000124p.u66", 0x00000, 0x10000, CRC(08096310) SHA1(34d41a67ecdab93be3af0cd33fcdacfe75da6c08) ) /* Deuces Wild Poker - 05/09/95 @ IGT L95-1139 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0150p ) /* Superboard : Standard Draw Poker (X000150P+XP000038) */
+ROM_START( pex0150p ) /* Superboard : Standard Draw Poker (X000150P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -8277,22 +8519,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0150, X000150P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000150p.u66", 0x00000, 0x10000, CRC(d10759fa) SHA1(eae633d03ac9db86520a70825ac0a59ee9ebc819) ) /* Standard Draw Poker - 02/28/95 @ IGT L95-0609 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0158p ) /* Superboard : 4 of a Kind Bonus Poker (X000158P+XP000038) */
+ROM_START( pex0158p ) /* Superboard : 4 of a Kind Bonus Poker (X000158P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -8302,22 +8544,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0158, X000158P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000158p.u66", 0x00000, 0x10000, CRC(51a8a294) SHA1(f76992729ceaca18af82ab2fb3403dc5a48b7e8a) ) /* 4 of a Kind Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0171p ) /* Superboard : Joker Poker (X000171P+XP000038) */
+ROM_START( pex0171p ) /* Superboard : Joker Poker (X000171P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -8327,22 +8569,22 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0171, X000171P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000171p.u66", 0x00000, 0x10000, CRC(01e7a3f7) SHA1(a81018fd0b659b3d83cfdc9e6db1f387779bbe98) ) /* Joker Poker - 10/12/95 @ IGT L95-2264 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0188p ) /* Superboard : Standard Draw Poker (X000188P+XP000038) */
+ROM_START( pex0188p ) /* Superboard : Standard Draw Poker (X000188P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -8351,22 +8593,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0188, X000188P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000188p.u66", 0x00000, 0x10000, CRC(3eb7580e) SHA1(86f2280542fb8a55767efd391d0fb04a12ed9408) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0190p ) /* Superboard : Deuces Wild Poker (X000190P+XP000053) */
+ROM_START( pex0190p ) /* Superboard : Deuces Wild Poker (X000190P+XP000038) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8376,22 +8618,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0417, X000417P, X000190P & PP0190 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000190p.u66", 0x00000, 0x10000, CRC(17cc52f6) SHA1(90818df05c6bba3ffcbc2047c7eedea31abdc05a) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0197p ) /* Superboard : Standard Draw Poker (X000197P+XP000038) */
+ROM_START( pex0197p ) /* Superboard : Standard Draw Poker (X000197P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -8400,22 +8642,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0197, X000197P & PP0419 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000197p.u66", 0x00000, 0x10000, CRC(13394826) SHA1(c9325b2ed47267b2918a3bf365b90338134ce9c7) ) /* Standard Draw Poker - 10/31/94 @ IGT L94-2066 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0203p ) /* Superboard : 4 of a Kind Bonus Poker (X000203P+XP000038) */
+ROM_START( pex0203p ) /* Superboard : 4 of a Kind Bonus Poker (X000203P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -8425,22 +8667,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0203, X000203P, PP0590 & PP0409 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000203p.u66", 0x00000, 0x10000, CRC(8e5dc66e) SHA1(e3030598e42e7a76e608d5edfaf263aadc2caf85) ) /* 4 of a Kind Bonus Poker - 03/08/95 @ IGT L95-0745 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0224p ) /* Superboard : Deuces Wild Poker (X000224P+XP000053) */
+ROM_START( pex0224p ) /* Superboard : Deuces Wild Poker (X000224P+XP000038) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8450,22 +8692,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0290, X000224P & PP0224 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000224p.u66", 0x00000, 0x10000, CRC(69ca6ac7) SHA1(e6f119b69f769a1f484a4ced3eb4d9e5406f0b09) ) /* Deuces Wild Poker - 10/31/94 IGT L94-2065 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0225p ) /* Superboard : Dueces Joker Wild Poker 1-100 Coins (X000225P+XP000079) */
+ROM_START( pex0225p ) /* Superboard : Dueces Joker Wild Poker (X000225P+XP000079) - PSR Verified */
/*
With w/o w/o With
Wild JKR Wild JKR
@@ -8482,7 +8724,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF 4D (Bonus)
ROM_LOAD( "x000225p.u66", 0x00000, 0x10000, CRC(d965dd5e) SHA1(1f3e3acb9319e26fa8563f57d1c75940a4445959) ) /* Dueces Joker Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
@@ -8491,7 +8733,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF 4D (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0242p ) /* Superboard : Deuces Wild Poker (X000242P+XP000053) */
+ROM_START( pex0242p ) /* Superboard : Deuces Wild Poker (X000242P+XP000038) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8501,22 +8743,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0242, X000242P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000242p.u66", 0x00000, 0x10000, CRC(e0292d63) SHA1(8d8ec5dc1abaf8e8a8a7451d3a814023d8195fb5) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0265p ) /* Superboard : 4 of a Kind Bonus Poker (X000265P+XP000038) */
+ROM_START( pex0265p ) /* Superboard : 4 of a Kind Bonus Poker (X000265P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -8526,22 +8768,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0265, X000265P, PP0403 & PP0410 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000265p.u66", 0x00000, 0x10000, CRC(70a7ab9b) SHA1(3574f89406da12e6a48e5e2c45cad0ba7ee4caf3) ) /* 4 of a Kind Bonus Poker - 07/08/95 @ IGT L95-0746 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0291p ) /* Superboard : Deuces Wild Poker (X000291P+XP000053) */
+ROM_START( pex0291p ) /* Superboard : Deuces Wild Poker (X000291P+XP000053) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8551,22 +8793,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0418, X000291P & PP0291 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000291p.u66", 0x00000, 0x10000, CRC(7aa72bbd) SHA1(f754b85579720abd2efd57efa31091bca3c01425) ) /* Deuces Wild Poker - 05/04/95 @ IGT L95-1156 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0417p ) /* Superboard : Deuces Wild Poker (X000417P+XP000053) */
+ROM_START( pex0417p ) /* Superboard : Deuces Wild Poker (X000417P+XP000053) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8576,22 +8818,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0417, X000417P & PP0190 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000417p.u66", 0x00000, 0x10000, CRC(8c80433d) SHA1(508f49522fa391ca39523829c0dda6af7c99a5fe) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0426p ) /* Superboard : Joker Poker (X000426P+XP000038) */
+ROM_START( pex0426p ) /* Superboard : Joker Poker (X000426P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -8601,22 +8843,22 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0426, X000426P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000426p.u66", 0x00000, 0x10000, CRC(84a7a946) SHA1(e1e8ff3f16b0c51f723afba35d8f2b1a1451fa22) ) /* Joker Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0430p ) /* Superboard : Dueces Joker Wild Poker (X000430P+XP000079) */
+ROM_START( pex0430p ) /* Superboard : Dueces Joker Wild Poker (X000430P+XP000079) - PSR Verified */
/*
With w/o w/o With
Wild JKR Wild JKR
@@ -8633,7 +8875,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF 4D (Bonus)
ROM_LOAD( "x000430p.u66", 0x00000, 0x10000, CRC(905571e3) SHA1(fd506516fed22842df8e9dbb3683dcb4c459719b) ) /* Dueces Joker Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
@@ -8642,7 +8884,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF 4D (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0434p ) /* Superboard : Bonus Poker Deluxe (X000434P+XP000038) */
+ROM_START( pex0434p ) /* Superboard : Bonus Poker Deluxe (X000434P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -8651,22 +8893,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0434, X000434P & PP0713 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000434p.u66", 0x00000, 0x10000, CRC(5a3ad28b) SHA1(d4f103c7ce3c4f72728450ab015aca8ef10cd79c) ) /* Bonus Poker Deluxe */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0447p ) /* Superboard : Standard Draw Poker (X000447P+XP000038) */
+ROM_START( pex0447p ) /* Superboard : Standard Draw Poker (X000447P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
---------------------------------------------------------
@@ -8675,22 +8917,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0447, X000447P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000447p.u66", 0x00000, 0x10000, CRC(4d3ab095) SHA1(337255658242816dc552432aee328fa52e556793) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0449p ) /* Superboard : Standard Draw Poker (X000449P+XP000038) */
+ROM_START( pex0449p ) /* Superboard : Standard Draw Poker (X000449P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -8699,22 +8941,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0221, PP0449, X000449P & PP0585 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000449p.u66", 0x00000, 0x10000, CRC(6c22b0b3) SHA1(47cb1b8edb3e1d5d2055a7a31a1dfb46b4fd6391) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0451p ) /* Superboard : Bonus Poker Deluxe (X000451P+XP000038) */
+ROM_START( pex0451p ) /* Superboard : Bonus Poker Deluxe (X000451P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -8723,22 +8965,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0451, X000451P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000451p.u66", 0x00000, 0x10000, CRC(4f11e26c) SHA1(6cea3cbef530ef4ece2a4351cbd9ead5b66bb359) ) /* Bonus Poker Deluxe - 03/06/95 @ IGT L95-0775 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0452p ) /* Superboard : Double Deuces Wild Poker (X000452P+XP000038) */
+ROM_START( pex0452p ) /* Superboard : Double Deuces Wild Poker (X000452P+XP000038) - PSR Verified */
/*
w/D wo/D
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8748,22 +8990,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0452, X000452P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000452p.u66", 0x00000, 0x10000, CRC(a96c7a71) SHA1(6be1012e68035fbc9aa5e0e6ea3a6c54c1864b1b) ) /* Double Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0454p ) /* Superboard : Bonus Poker Deluxe (X000454P+XP000038) */
+ROM_START( pex0454p ) /* Superboard : Bonus Poker Deluxe (X000454P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -8772,22 +9014,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0454, X000454P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000454p.u66", 0x00000, 0x10000, CRC(93934ae4) SHA1(f243c66e23269e5509bf1306e9e37a579b08fda4) ) /* Bonus Poker Deluxe - 03/07/95 @ IGT L95-0773 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0455p ) /* Superboard : Joker Poker (X000455P+XP000038) */
+ROM_START( pex0455p ) /* Superboard : Joker Poker (X000455P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -8797,22 +9039,22 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0455, X000455P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000455p.u66", 0x00000, 0x10000, CRC(4992c51f) SHA1(8c70c59bdb16feba438230b30765076cebd44b53) ) /* Joker Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0458p ) /* Superboard : Joker Poker (X000458P+XP000038) */
+ROM_START( pex0458p ) /* Superboard : Joker Poker (X000458P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -8822,22 +9064,22 @@ PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0458, X000458P & PP0429 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000458p.u66", 0x00000, 0x10000, CRC(dcd20558) SHA1(22c99a265431b0ef8199d3cb69fbbc4aff822dc0) ) /* Joker Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0459p ) /* Superboard : Joker Poker (X000459P+XP000038) */
+ROM_START( pex0459p ) /* Superboard : Joker Poker (X000459P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -8847,16 +9089,16 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0459, X000459P & PP0428 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000459p.u66", 0x00000, 0x10000, CRC(03cef341) SHA1(3813c4781ca6d164880f6d06a7d6dbae29012e7d) ) /* Joker Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
@@ -8896,24 +9138,34 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
???? 1 1 2 3 4 5 6 12 15 100 400 1000 2000
% Range: 91.3-93.3% Optimum: 95.3% Hit Frequency: 45.3%
Programs Available: PP0489, X000489P
+
+NOTE: According to PSRs for XP000074 and XP000088, graphics set CG2342+CAPX1321 is required & SET014 to set the denomination
+
+XP000038 + CG2185 is currently used just to show something when the game boots up.
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* Errors with INCOMPATIBLE EPROM error, no dumped program works with this DATA set */
+ ROM_LOAD( "xp000074.u67", 0x00000, 0x10000, NO_DUMP ) /* required program XP000074 or XP000088 not dumped */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* Errors with INCOMPATIBLE EPROM error */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000489p.u66", 0x00000, 0x10000, CRC(73d21c66) SHA1(0f863037a34549f4255dedda70b4401d288eee01) ) /* Double Down Stud Deuces Wild Poker - 04/21/97 @ IGT MO */
ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2342.u77", 0x00000, 0x8000, NO_DUMP ) /* This set requires CG2342 which is not dumped */
+ ROM_LOAD( "mgo-cg2342.u78", 0x08000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mbo-cg2342.u79", 0x10000, 0x8000, NO_DUMP )
+ ROM_LOAD( "mxo-cg2342.u80", 0x18000, 0x8000, NO_DUMP )
ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) /* Correct CAPX chip for CG2342 */
ROM_END
-ROM_START( pex0508p ) /* Superboard : Loose Deuce Deuces Wild Poker (X000508P+XP000038) */
+ROM_START( pex0508p ) /* Superboard : Loose Deuce Deuces Wild Poker (X000508P+XP000038) - PSR Verified */
/*
w/D W/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -8923,22 +9175,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0508, X000508P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000508p.u66", 0x00000, 0x10000, CRC(5efde4b4) SHA1(ead7448464aecc03748f04e4d6e9f346d262cd96) ) /* Loose Deuce Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0514p ) /* Superboard : Double Bonus Poker (X000514P+XP000038) */
+ROM_START( pex0514p ) /* Superboard : Double Bonus Poker (X000514P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -8948,22 +9200,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0514, X000514P & PP0538 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000514p.u66", 0x00000, 0x10000, CRC(32cf8696) SHA1(83992695d3af4de10d0e53e01558faad18cdc221) ) /* Double Bonus Poker - 03/08/95 @ IGT L95-0747 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0515p ) /* Superboard : Double Bonus Poker (X000515P+XP000038) */
+ROM_START( pex0515p ) /* Superboard : Double Bonus Poker (X000515P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -8973,22 +9225,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0515, X000515P & PP0539 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000515p.u66", 0x00000, 0x10000, CRC(4311224a) SHA1(69e6657dacd6e09c2d1514417994adc561f63a83) ) /* Double Bonus Poker - 03/08/95 @ IGT L95-0748 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0516p ) /* Superboard : Double Bonus Poker (X000516P+XP000038) */
+ROM_START( pex0516p ) /* Superboard : Double Bonus Poker (X000516P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -8998,22 +9250,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0516, X000516P & PP0540 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000516p.u66", 0x00000, 0x10000, CRC(37f84ce7) SHA1(2e5157d02febec0ff31eb5a23254f7c49a486cf5) ) /* Double Bonus Poker - 03/08/95 @ IGT L95-0749 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0536p ) /* Superboard : Joker Poker (X000536P+XP000038) */
+ROM_START( pex0536p ) /* Superboard : Joker Poker (X000536P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -9023,22 +9275,22 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0536, X000536P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000536p.u66", 0x00000, 0x10000, CRC(0b18dc1b) SHA1(07350fe258441f8565bfd875342823149b7757f1) ) /* Joker Poker - 05/09/95 @ IGT L95-1314 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0537p ) /* Superboard : Standard Draw Poker (X000537P+XP000038) */
+ROM_START( pex0537p ) /* Superboard : Standard Draw Poker (X000537P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -9050,22 +9302,22 @@ Some call this a 4 of a Kind Bonus Poker with all 4K paying the same. Internally
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000537p.u66", 0x00000, 0x10000, CRC(a0c97fde) SHA1(a152b5e99a425127246b2200b7599c17e28479bd) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0550p ) /* Superboard : Joker Poker (X000550P+XP000055) */
+ROM_START( pex0550p ) /* Superboard : Joker Poker (X000550P+XP000055) - PSR Verified */
/*
w/J w/oJ
PayTable 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -9080,48 +9332,48 @@ NOTE: Same as X002338P, except MAX Coin (set to 5) CANNOT be changed - NJ jurisd
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000055.u67", 0x00000, 0x10000, CRC(339821e0) SHA1(127d4eff01136feaf1e3242d57433349afb7b6ca) )
+ ROM_LOAD( "xp000119.u67", 0x00000, 0x10000, CRC(f3e7b14c) SHA1(b225900afca61740e842743453346aaa7ed34687) ) /* 11/02/98 @ IGT NJ */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000550p.u66", 0x00000, 0x10000, CRC(8a320403) SHA1(751a83ba25ffdae4b8d745bdec6ecdebf351efa0) ) /* Joker Poker - 11/29/94 @ IGT NJ */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT NJ */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0557p ) /* Superboard : Standard Draw Poker (X000557P+XP000038) */
+ROM_START( pex0557p ) /* Superboard : Standard Draw Poker (X000557P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
WA 1 2 3 4 5 7 20 50 300 800
% Range: 91.0-93.0% Optimum: 95.0% Hit Frequency: 45.5%
Programs Available: X000557P
-
+
NOTE: Same as X000040P, except MAX Coin (set to 5) CANNOT be changed - NJ jurisdiction
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000119.u67", 0x00000, 0x10000, CRC(f3e7b14c) SHA1(b225900afca61740e842743453346aaa7ed34687) ) /* 11/02/98 @ IGT NJ */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000557p.u66", 0x00000, 0x10000, CRC(98c16858) SHA1(d428ae712b7ee45ce6e4f7d9b1c75687655be140) ) /* Standard Draw Poker - 03/21/95 @ IGT NJ */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT NJ */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0568p ) /* Superboard : Joker Poker (X000568P+XP000038) */
+ROM_START( pex0568p ) /* Superboard : Joker Poker (X000568P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -9131,22 +9383,22 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0568, X000568P & PP0426 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000568p.u66", 0x00000, 0x10000, CRC(570e941d) SHA1(db9227d044f55e8d038e3ea0ba72e42e68efcb30) ) /* Joker Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0578p ) /* Superboard : Standard Draw Poker (X000578P+XP000038) */
+ROM_START( pex0578p ) /* Superboard : Standard Draw Poker (X000578P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -9155,22 +9407,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: X000578P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000578p.u66", 0x00000, 0x10000, CRC(08f34909) SHA1(b6f2f5b0aab289bb51cb67c85f0db0411321a2ae) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0581p ) /* Superboard : 4 of a Kind Bonus Poker (X000581P+XP000038) */
+ROM_START( pex0581p ) /* Superboard : 4 of a Kind Bonus Poker (X000581P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9180,22 +9432,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X000581P, PP0581 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000581p.u66", 0x00000, 0x10000, CRC(a4cfecc3) SHA1(b2c805781ba43bda9e208d8c16578dc96b6f58f7) ) /* 4 of a Kind Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0588p ) /* Superboard : Joker Poker (X000588P+XP000038) */
+ROM_START( pex0588p ) /* Superboard : Joker Poker (X000588P+XP000038) - PSR Verified */
/*
w/J w/oJ
PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -9205,22 +9457,22 @@ PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
Programs Available: PP0588, X000588P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000588p.u66", 0x00000, 0x10000, CRC(baa448cc) SHA1(0f1da407304f7dafbe06119d068f7caf99404cb4) ) /* Joker Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0725p ) /* Superboard : Double Bonus Poker (X000725P+XP000038) */
+ROM_START( pex0725p ) /* Superboard : Double Bonus Poker (X000725P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9230,22 +9482,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0725, X000725P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000725p.u66", 0x00000, 0x10000, CRC(a56f3910) SHA1(06d0d4a8722e033ff1fbe0947135952ce8274725) ) /* Double Bonus Poker 03/13/95 IGT MSI S */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0726p ) /* Superboard : Double Bonus Poker (X000726P+XP000038) */
+ROM_START( pex0726p ) /* Superboard : Double Bonus Poker (X000726P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9255,22 +9507,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0726, X000726P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000726p.u66", 0x00000, 0x10000, CRC(800eb7e5) SHA1(cb4c2749d025ab093f26967909d5f366f1cc9cba) ) /* Double Bonus Poker - 03/13/95 @ IGT MS */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0727p ) /* Superboard : Double Bonus Poker (X000727P+XP000038) */
+ROM_START( pex0727p ) /* Superboard : Double Bonus Poker (X000727P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9280,22 +9532,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0727, X000727P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000727p.u66", 0x00000, 0x10000, CRC(4828474c) SHA1(9836b76113a71802df30ca15f7c9a5790e6f1c5b) ) /* Double Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0763p ) /* Superboard : 4 of a Kind Bonus Poker (X000763P+XP000038) */
+ROM_START( pex0763p ) /* Superboard : 4 of a Kind Bonus Poker (X000763P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9305,22 +9557,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0763, X000763P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000763p.u66", 0x00000, 0x10000, CRC(bf7dda7d) SHA1(1a6089d1159c199199e608f3dd2ba7b45a29b31c) ) /* 4 of a Kind Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex0764p ) /* Superboard : 4 of a Kind Bonus Poker (X000764P+XP000038) */
+ROM_START( pex0764p ) /* Superboard : 4 of a Kind Bonus Poker (X000764P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9330,22 +9582,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0764, X000764P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x000764p.u66", 0x00000, 0x10000, CRC(0a1213d7) SHA1(208262fa3e9642789dcedcd3551ad876e5390707) ) /* 4 of a Kind Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2010p ) /* Superboard : Nevada Bonus Poker (X002010P+XP000038) */
+ROM_START( pex2010p ) /* Superboard : Nevada Bonus Poker (X002010P+XP000038) - PSR Verified */
/*
2-K
PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
@@ -9355,22 +9607,22 @@ PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
Programs Available: X002010P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002010p.u66", 0x00000, 0x10000, CRC(1a76f22e) SHA1(a269391682d44fdaf4fd68fa3e3ca7366509ce92) ) /* Nevada Bonus Poker - 01/18/95 @ IGT L95-0154 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2016p ) /* Superboard : Fullhouse Bonus Poker (X002016P+XP000038) */
+ROM_START( pex2016p ) /* Superboard : Fullhouse Bonus Poker (X002016P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9380,22 +9632,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002016P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002016p.u66", 0x00000, 0x10000, CRC(77fcac28) SHA1(2d9ea5aea24295d74a3257a217717ddfe3b99736) ) /* Full House Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2017p ) /* Superboard : Fullhouse Bonus Poker (X002017P+XP000038) */
+ROM_START( pex2017p ) /* Superboard : Fullhouse Bonus Poker (X002017P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9405,22 +9657,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002017P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002017p.u66", 0x00000, 0x10000, CRC(16ac0b5b) SHA1(9d92b66cec4cea72bf2c04677691cc7343676d6f) ) /* Full House Bonus Poker - 01/25/95 @ IGT L95-0303 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2018p ) /* Superboard : Fullhouse Bonus Poker (X002018P+XP000038) */
+ROM_START( pex2018p ) /* Superboard : Fullhouse Bonus Poker (X002018P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9430,22 +9682,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002018P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002018p.u66", 0x00000, 0x10000, CRC(a7b79cfa) SHA1(89216fafffc64fda22a016a906483b76174c3f02) ) /* Full House Bonus Poker - 01/25/95 @ IGT L95-0304 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2021p ) /* Superboard : Lucky Deal Poker (X002021P+XP000112) */
+ROM_START( pex2021p ) /* Superboard : Lucky Deal Poker (X002021P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9458,22 +9710,22 @@ Straights or Better on the initial deal PAY DOUBLE!
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002021p.u66", 0x00000, 0x10000, CRC(bf7f6f41) SHA1(c04fcab15da546929f8e15037f33cd99da4ae286) ) /* Lucky Deal Poker - 03/07/95 @ IGT L95-0833 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2024p ) /* Superboard : Double Bonus Poker (X002024P+XP000038) */
+ROM_START( pex2024p ) /* Superboard : Double Bonus Poker (X002024P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9485,22 +9737,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
NOTE: Same as X000516P, except MAX Coin (set to 5) CANNOT be changed - NJ jurisdiction
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000119.u67", 0x00000, 0x10000, CRC(f3e7b14c) SHA1(b225900afca61740e842743453346aaa7ed34687) ) /* 11/02/98 @ IGT NJ */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002024p.u66", 0x00000, 0x10000, CRC(8f9ab38c) SHA1(703f1f5c5ca1ab7032019e41da6ffac6fc47929a) ) /* Double Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT NJ */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2025p ) /* Superboard : Deuces Wild Bonus Poker (X002025P+XP000019) */
+ROM_START( pex2025p ) /* Superboard : Deuces Wild Bonus Poker (X002025P+XP000019) - PSR Verified */
/*
w/D 6-K 3-5 w/A w/oD
PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
@@ -9516,16 +9768,16 @@ PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
ROM_LOAD( "x002025p.u66", 0x00000, 0x10000, CRC(f3dac423) SHA1(e9394d330deb3b8a1001e57e72a506cd9098f161) ) /* Deuces Wild Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2159.u77", 0x00000, 0x8000, CRC(7dce6da3) SHA1(4722f0b558b057e4cb934304d44509a2d651b128) ) /* 05/17/95 @ IGT L95-1308 */
+ ROM_LOAD( "mgo-cg2159.u78", 0x08000, 0x8000, CRC(febefa55) SHA1(ae4b23d18a9c7eff84fb9a36f2c403c0c98e723e) )
+ ROM_LOAD( "mbo-cg2159.u79", 0x10000, 0x8000, CRC(d1f5ceb7) SHA1(1505a0b835363a745a81ec9c8e45377c0f76226d) )
+ ROM_LOAD( "mxo-cg2159.u80", 0x18000, 0x8000, CRC(522e1e50) SHA1(ccca29559f03a23adcdaa39be65a27139185fd2f) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2026p ) /* Superboard : Deuces Wild Bonus Poker (X002026P+XP000019) */
+ROM_START( pex2026p ) /* Superboard : Deuces Wild Bonus Poker (X002026P+XP000019) - PSR Verified */
/*
w/D 6-K 3-5 w/A w/oD
PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
@@ -9541,16 +9793,16 @@ PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
ROM_LOAD( "x002026p.u66", 0x00000, 0x10000, CRC(7fcbc10a) SHA1(5d50b356ae1a3461a5916b469f85b690b086e675) ) /* Deuces Wild Bonus Poker - 04/06/95 IGT CO */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2159.u77", 0x00000, 0x8000, CRC(7dce6da3) SHA1(4722f0b558b057e4cb934304d44509a2d651b128) ) /* 05/17/95 @ IGT L95-1308 */
+ ROM_LOAD( "mgo-cg2159.u78", 0x08000, 0x8000, CRC(febefa55) SHA1(ae4b23d18a9c7eff84fb9a36f2c403c0c98e723e) )
+ ROM_LOAD( "mbo-cg2159.u79", 0x10000, 0x8000, CRC(d1f5ceb7) SHA1(1505a0b835363a745a81ec9c8e45377c0f76226d) )
+ ROM_LOAD( "mxo-cg2159.u80", 0x18000, 0x8000, CRC(522e1e50) SHA1(ccca29559f03a23adcdaa39be65a27139185fd2f) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2027p ) /* Superboard : Deuces Wild Bonus Poker (X002027P+XP000019) */
+ROM_START( pex2027p ) /* Superboard : Deuces Wild Bonus Poker (X002027P+XP000019) - PSR Verified */
/*
w/D 6-K 3-5 w/A w/oD
PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
@@ -9566,16 +9818,16 @@ PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
ROM_LOAD( "x002027p.u66", 0x00000, 0x10000, CRC(40dbc35a) SHA1(56bf79738e35a22d1f23d76cd6197c8949eba3fb) ) /* Deuces Wild Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2159.u77", 0x00000, 0x8000, CRC(7dce6da3) SHA1(4722f0b558b057e4cb934304d44509a2d651b128) ) /* 05/17/95 @ IGT L95-1308 */
+ ROM_LOAD( "mgo-cg2159.u78", 0x08000, 0x8000, CRC(febefa55) SHA1(ae4b23d18a9c7eff84fb9a36f2c403c0c98e723e) )
+ ROM_LOAD( "mbo-cg2159.u79", 0x10000, 0x8000, CRC(d1f5ceb7) SHA1(1505a0b835363a745a81ec9c8e45377c0f76226d) )
+ ROM_LOAD( "mxo-cg2159.u80", 0x18000, 0x8000, CRC(522e1e50) SHA1(ccca29559f03a23adcdaa39be65a27139185fd2f) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2028p ) /* Superboard : Deuces Wild Bonus Poker (X002028P+XP000019) */
+ROM_START( pex2028p ) /* Superboard : Deuces Wild Bonus Poker (X002028P+XP000019) - PSR Verified */
/*
w/D 6-K 3-5 w/A w/oD
PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
@@ -9591,16 +9843,16 @@ PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
ROM_LOAD( "x002028p.u66", 0x00000, 0x10000, CRC(4f4c43f1) SHA1(8aa731ebb7981cb8e481db8b9376073881a09db2) ) /* Deuces Wild Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2159.u77", 0x00000, 0x8000, CRC(7dce6da3) SHA1(4722f0b558b057e4cb934304d44509a2d651b128) ) /* 05/17/95 @ IGT L95-1308 */
+ ROM_LOAD( "mgo-cg2159.u78", 0x08000, 0x8000, CRC(febefa55) SHA1(ae4b23d18a9c7eff84fb9a36f2c403c0c98e723e) )
+ ROM_LOAD( "mbo-cg2159.u79", 0x10000, 0x8000, CRC(d1f5ceb7) SHA1(1505a0b835363a745a81ec9c8e45377c0f76226d) )
+ ROM_LOAD( "mxo-cg2159.u80", 0x18000, 0x8000, CRC(522e1e50) SHA1(ccca29559f03a23adcdaa39be65a27139185fd2f) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2029p ) /* Superboard : Deuces Wild Bonus Poker (X002029P+XP000019) */
+ROM_START( pex2029p ) /* Superboard : Deuces Wild Bonus Poker (X002029P+XP000019) - PSR Verified */
/*
w/D 6-K 3-5 w/A w/oD
PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
@@ -9616,16 +9868,16 @@ PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
ROM_LOAD( "x002029p.u66", 0x00000, 0x10000, CRC(e2f6fb89) SHA1(4b60b580b00b4268d1cb9065ffe0d21f8fa6a931) ) /* Deuces Wild Bonus Poker - 04/06/95 IGT L95-1001 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2159.u77", 0x00000, 0x8000, CRC(7dce6da3) SHA1(4722f0b558b057e4cb934304d44509a2d651b128) ) /* 05/17/95 @ IGT L95-1308 */
+ ROM_LOAD( "mgo-cg2159.u78", 0x08000, 0x8000, CRC(febefa55) SHA1(ae4b23d18a9c7eff84fb9a36f2c403c0c98e723e) )
+ ROM_LOAD( "mbo-cg2159.u79", 0x10000, 0x8000, CRC(d1f5ceb7) SHA1(1505a0b835363a745a81ec9c8e45377c0f76226d) )
+ ROM_LOAD( "mxo-cg2159.u80", 0x18000, 0x8000, CRC(522e1e50) SHA1(ccca29559f03a23adcdaa39be65a27139185fd2f) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2031p ) /* Superboard : Lucky Deal Poker (X002031P+XP000112) */
+ROM_START( pex2031p ) /* Superboard : Lucky Deal Poker (X002031P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9638,22 +9890,22 @@ Straights or Better on the initial deal PAY DOUBLE!
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002031p.u66", 0x00000, 0x10000, CRC(c883fbdd) SHA1(c0444ffdac1ffe542d0d6a65f3c810346e2b2e05) ) /* Lucky Deal Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2033p ) /* Superboard : White Hot Aces Poker (X002033P+XP000112) */
+ROM_START( pex2033p ) /* Superboard : White Hot Aces Poker (X002033P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9663,22 +9915,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002033P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002033p.u66", 0x00000, 0x10000, CRC(c1c8f279) SHA1(f159d1f2b8c1632538af51cfbd995c1c8ec61ff6) ) /* White Hot Aces Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2034p ) /* Superboard : White Hot Aces Poker (X002034P+XP000112) */
+ROM_START( pex2034p ) /* Superboard : White Hot Aces Poker (X002034P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9688,22 +9940,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002034P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002034p.u66", 0x00000, 0x10000, CRC(b1e6c19d) SHA1(fd8982bad9de099345a2570d44a603a885a68ed4) ) /* White Hot Aces Poker - 05/02/95 @ IGT L95-1148 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2035p ) /* Superboard : White Hot Aces Poker (X002035P+XP000112) */
+ROM_START( pex2035p ) /* Superboard : White Hot Aces Poker (X002035P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9713,22 +9965,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002035P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002035p.u66", 0x00000, 0x10000, CRC(dc3f0742) SHA1(d57cf3353b81f41895458019e47203f98645f17a) ) /* White Hot Aces Poker - 05/02/95 IGT CO */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2036p ) /* Superboard : White Hot Aces Poker (X002036P+XP000112) */
+ROM_START( pex2036p ) /* Superboard : White Hot Aces Poker (X002036P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -9738,22 +9990,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002036P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002036p.u66", 0x00000, 0x10000, CRC(69207baf) SHA1(fe038b969106ae5cdc8dde1c06497be9c7b5b8bf) ) /* White Hot Aces Poker - 05/02/95 IGT CO */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2037p ) /* Superboard : Nevada Bonus Poker (X002037P+XP000038) */
+ROM_START( pex2037p ) /* Superboard : Nevada Bonus Poker (X002037P+XP000038) - PSR Verified */
/*
2-K
PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
@@ -9763,22 +10015,22 @@ PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
Programs Available: X002037P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002037p.u66", 0x00000, 0x10000, CRC(12aea90e) SHA1(26ff0e7b81271252573739f26db9d20f35af274b) ) /* Nevada Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2038p ) /* Superboard : Nevada Bonus Poker (X002038P+XP000038) */
+ROM_START( pex2038p ) /* Superboard : Nevada Bonus Poker (X002038P+XP000038) - PSR Verified */
/*
2-K
PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
@@ -9788,22 +10040,22 @@ PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
Programs Available: X002038P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002038p.u66", 0x00000, 0x10000, CRC(58d01ba5) SHA1(6d4cde9c9e55967db2b661c7123cce9958a00639) ) /* Nevada Bonus Poker - 05/02/95 IGT LA */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2039p ) /* Superboard : Nevada Bonus Poker (X002039P+XP000038) */
+ROM_START( pex2039p ) /* Superboard : Nevada Bonus Poker (X002039P+XP000038) - PSR Verified */
/*
2-K
PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
@@ -9813,22 +10065,22 @@ PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
Programs Available: X002039P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002039p.u66", 0x00000, 0x10000, CRC(98cb0d98) SHA1(ff5d7b085c8b11987c32e6639f013304b55cb2bc) ) /* Nevada Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2040p ) /* Superboard : Nevada Bonus Poker (X002040P+XP000038) */
+ROM_START( pex2040p ) /* Superboard : Nevada Bonus Poker (X002040P+XP000038) - PSR Verified */
/*
2-K
PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
@@ -9838,122 +10090,122 @@ PayTable Js+ 2PR 3K 3A STR FL FH 4K 4A SF RF (Bonus)
Programs Available: X002040P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002040p.u66", 0x00000, 0x10000, CRC(38acb477) SHA1(894f5861ac84323e50e8972602251f2873988e6c) ) /* Nevada Bonus Poker - 05/02/95 @ IGT L95-1154 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2042p ) /* Superboard : Triple Bonus Poker (X002042P+XP000038) */
+ROM_START( pex2042p ) /* Superboard : Triple Bonus Poker (X002042P+XP000038) - PSR Verified */
/*
5-K 2-4
-PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
+PayTable Ks+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
-----------------------------------------------------------------
P604A 1 1 3 4 7 11 75 120 240 50 250 800
% Range: 95.6-97.6% Optimum: 99.6% Hit Frequency: 34.7%
Programs Available: X002042P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002042p.u66", 0x00000, 0x10000, CRC(12787a36) SHA1(4ef478cc5c23694ffa6733e2fc47c2b6f545c30a) ) /* Triple Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2043p ) /* Superboard : Triple Bonus Poker (X002043P+XP000038) */
+ROM_START( pex2043p ) /* Superboard : Triple Bonus Poker (X002043P+XP000038) - PSR Verified */
/*
5-K 2-4
-PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
+PayTable Ks+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
-----------------------------------------------------------------
P605A 1 1 3 4 7 10 75 120 240 50 250 800
% Range: 94.5-96.5% Optimum: 98.5% Hit Frequency: 34.7%
Programs Available: X002043P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002043p.u66", 0x00000, 0x10000, CRC(2cec81ab) SHA1(d28fa9075c63e49d34c463f19e7741609b0b3343) ) /* Triple Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2044p ) /* Superboard : Triple Bonus Poker (X002044P+XP000038) */
+ROM_START( pex2044p ) /* Superboard : Triple Bonus Poker (X002044P+XP000038) - PSR Verified */
/*
5-K 2-4
-PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
+PayTable Ks+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
-----------------------------------------------------------------
P606A 1 1 3 4 7 9 75 120 240 50 250 800
% Range: 93.5-95.5% Optimum: 97.5% Hit Frequency: 34.7%
Programs Available: X002044P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002044p.u66", 0x00000, 0x10000, CRC(158af97f) SHA1(452247d981f1202da8c44a31f0d3343184d3db41) ) /* Triple Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2045p ) /* Superboard : Triple Bonus Poker (X002045P+XP000038) */
+ROM_START( pex2045p ) /* Superboard : Triple Bonus Poker (X002045P+XP000038) - PSR Verified */
/*
5-K 2-4
-PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
+PayTable Ks+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
-----------------------------------------------------------------
P607A 1 1 3 4 6 9 75 120 240 50 250 800
% Range: 91.9-93.9% Optimum: 95.9% Hit Frequency: 32.5%
Programs Available: X002045P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002045p.u66", 0x00000, 0x10000, CRC(75fe81db) SHA1(980bcc06b54a1ef78e3beac1db83b73e17a04818) ) /* Triple Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2066p ) /* Superboard : Double Double Bonus Poker (X002066P+XP000038) */
+ROM_START( pex2066p ) /* Superboard : Double Double Bonus Poker (X002066P+XP000038) - PSR Verified */
/*
2-4
4K 4A
@@ -9965,16 +10217,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
Programs Available: X002066P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002066p.u66", 0x00000, 0x10000, CRC(01236011) SHA1(3edfee014705b3540386c5e42026ab93628b2597) ) /* Double Double Bonus Poker - 08/17/95 @ IGT L95-2085 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
@@ -9992,7 +10244,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
Programs Available: X002067P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002067p.u66", 0x00000, 0x10000, CRC(c62adf21) SHA1(25e037f91ef1860d1d45cae12f21bdd1c39ba264) ) /* Double Double Bonus Poker - 08/17/95 @ IGT L95-2086 */
@@ -10007,7 +10259,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2068p ) /* Superboard : Double Double Bonus Poker (X002068P+XP000038) */
+ROM_START( pex2068p ) /* Superboard : Double Double Bonus Poker (X002068P+XP000038) PSR Verified */
/*
2-4 4A
5-K 2-4 4K with
@@ -10018,22 +10270,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A with A 2-4 SF RF (Bonus)
Programs Available: X002068P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002068p.u66", 0x00000, 0x10000, CRC(a5e4279d) SHA1(c4dfd1e77a03a94d9911d1754b5874200bfe6c71) ) /* Double Double Bonus Poker - 08/17/95 @ IGT L95-2087 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2069p ) /* Superboard : Double Double Bonus Poker (X002069P+XP000038) */
+ROM_START( pex2069p ) /* Superboard : Double Double Bonus Poker (X002069P+XP000038) - PSR Verified */
/*
2-4
4K 4A
@@ -10045,22 +10297,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
Programs Available: X002069P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002069p.u66", 0x00000, 0x10000, CRC(875ecfcf) SHA1(80472cb43b36e518216e60a9b4883a81163718a2) ) /* Double Double Bonus Poker - 08/17/95 @ IGT L95-2088 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2070p ) /* Superboard : Double Double Bonus Poker (X002070P+XP000038) */
+ROM_START( pex2070p ) /* Superboard : Double Double Bonus Poker (X002070P+XP000038) - PSR Verified */
/*
2-4
4K 4A
@@ -10072,22 +10324,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
Programs Available: X002070P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002070p.u66", 0x00000, 0x10000, CRC(e7732ff9) SHA1(de1a68040d46e78831a6c806f26f253b4ab014b5) ) /* Double Double Bonus Poker - 08/17/95 @ IGT L95-2185 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2111p ) /* Superboard : 4 of a Kind Bonus Poker (X002111P+XP000038) */
+ROM_START( pex2111p ) /* Superboard : 4 of a Kind Bonus Poker (X002111P+XP000038) - PSR Verified */
/*
5-K 2-4 Seq
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF RF (Bonus)
@@ -10099,22 +10351,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF RF (Bonus)
NOTE: Royal Flush bonus is 800 x MAX bet, Sequential Royal Flush is 10000 x MAX bet
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002111p.u66", 0x00000, 0x10000, CRC(f19dd63e) SHA1(0fe16cd0c75a9759e34bf95ce428e5b2da236215) ) /* 4 of a Kind Bonus Poker with Sequential Royal Flush - 01/17/96 @ IGT L96-0184 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2121p ) /* Superboard : Standard Draw Poker (X002121P+XP000038) */
+ROM_START( pex2121p ) /* Superboard : Standard Draw Poker (X002121P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -10123,22 +10375,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: PP0038, X002121P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002121p.u66", 0x00000, 0x10000, CRC(53e5853b) SHA1(a66dc531ac762d8acd2ac5d4228c9c04fc9758df) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2121pa ) /* Superboard : Standard Draw Poker (X002121P+XP000037) */
+ROM_START( pex2121pa ) /* Superboard : Standard Draw Poker (X002121P+XP000037) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -10153,7 +10405,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "x002121p.u66", 0x00000, 0x10000, CRC(53e5853b) SHA1(a66dc531ac762d8acd2ac5d4228c9c04fc9758df) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2201.u77", 0x00000, 0x8000, CRC(8f82a114) SHA1(dc4aaaa12442a66386d9bef969afa60a7e2e386b) ) /* Monaco Region */
+ ROM_LOAD( "mro-cg2201.u77", 0x00000, 0x8000, CRC(8f82a114) SHA1(dc4aaaa12442a66386d9bef969afa60a7e2e386b) )
ROM_LOAD( "mgo-cg2201.u78", 0x08000, 0x8000, CRC(71797c5b) SHA1(15dff00aad8006855af98a2ad39fe1a6e87d7d24) )
ROM_LOAD( "mbo-cg2201.u79", 0x10000, 0x8000, CRC(27201cbf) SHA1(9d197e04c36e94ff08bd76c7200ea4e8f345b8ab) )
ROM_LOAD( "mxo-cg2201.u80", 0x18000, 0x8000, CRC(b79b6d11) SHA1(dcc30465e4de104c54b19e95e7216023576d90c7) )
@@ -10162,7 +10414,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2127p ) /* Superboard : Double Bonus Poker featuring "Your Property" Royals (X002127P+XP000043) */
+ROM_START( pex2127p ) /* Superboard : Double Bonus Poker featuring "Your Property" Royals (X002127P+XP000043) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -10176,9 +10428,12 @@ Bonus "Dealt" payouts per Coin In are:
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000031 + CG2244 + CAPX1321
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
+ ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002127p.u66", 0x00000, 0x10000, CRC(7e50b749) SHA1(37255823b7ccc2304875a46c6e798fee3b0ee4d1) ) /* Double Bonus Poker featuring "Your Property" Royals - 4/15/96 L96/0990 */
@@ -10193,7 +10448,7 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2134p ) /* Superboard : Faces 'n' Deuces Double Bonus Poker (X002134P+XP000043) */
+ROM_START( pex2134p ) /* Superboard : Faces 'n' Deuces Double Bonus Poker (X002134P+XP000043) - PSR Verified */
/*
with
5-K 2-4 Face
@@ -10208,9 +10463,12 @@ Bonus "Dealt" payouts per Coin In are:
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000031 + CG2244 + CAPX1321
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
+ ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002134p.u66", 0x00000, 0x10000, CRC(23c8bbad) SHA1(0a7b2836e180f5ac7900469550f28d2357fa1261) ) /* Faces 'n' Deuces Double Bonus - 4/15/96 L96/1375 */
@@ -10225,7 +10483,7 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2150p ) /* Superboard : 4 of a Kind Bonus Poker (X002105P+XP000038) - $1 Denominations Only */
+ROM_START( pex2150p ) /* Superboard : 4 of a Kind Bonus Poker (X002105P+XP000038) - $1 Denominations Only - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -10235,22 +10493,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002150P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002150p.u66", 0x00000, 0x10000, CRC(b4b531c4) SHA1(f5fa988d963cb0fe00aebc4eb99043d1b70f9516) ) /* 4 of a Kind Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2152p ) /* Superboard : Blackjack Poker (X002152P+XP000043) */
+ROM_START( pex2152p ) /* Superboard : Blackjack Poker (X002152P+XP000043) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
@@ -10266,9 +10524,12 @@ Bonus "Dealt" payouts per Coin In are:
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000031 + CG2244 + CAPX1321
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
+ ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002152p.u66", 0x00000, 0x10000, CRC(10befd5e) SHA1(b5c6bebed5e5ed4e610be9a3f27a5bbb19b697be) ) /* Blackjack Poker - 4/18/96 L96/0978 */
@@ -10283,7 +10544,7 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2172p ) /* Superboard : Ace$ Bonus Poker (X002172P+XP000112) */
+ROM_START( pex2172p ) /* Superboard : Ace$ Bonus Poker (X002172P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SA$ SF RF (Bonus)
@@ -10296,7 +10557,7 @@ SA$ - Sequential ACE$ pays the same as RF
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002172p.u66", 0x00000, 0x10000, CRC(d4c44409) SHA1(8082b76a51fa131751b8c2c446cb29fb04f531dc) ) /* Ace$ Bonus Poker - 05/09/96 @ IGT L96-1119 */
@@ -10311,7 +10572,7 @@ SA$ - Sequential ACE$ pays the same as RF
ROM_LOAD( "capx2172.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* Philips N82S147N */
ROM_END
-ROM_START( pex2172pa ) /* Superboard : Ace$ Bonus Poker (X002172P+XP000112) */
+ROM_START( pex2172pa ) /* Superboard : Ace$ Bonus Poker (X002172P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SA$ SF RF (Bonus)
@@ -10324,7 +10585,7 @@ SA$ - Sequential ACE$ pays the same as RF
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002172p.u66", 0x00000, 0x10000, CRC(d4c44409) SHA1(8082b76a51fa131751b8c2c446cb29fb04f531dc) ) /* Ace$ Bonus Poker - 05/09/96 @ IGT L96-1119 */
@@ -10340,7 +10601,7 @@ SA$ - Sequential ACE$ pays the same as RF
ROM_LOAD( "capx2172.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* Wrong!! Should be CAPX2399 - Philips N82S147N */
ROM_END
-ROM_START( pex2173p ) /* Superboard : Ace$ Bonus Poker (X002173P+XP000038) */
+ROM_START( pex2173p ) /* Superboard : Ace$ Bonus Poker (X002173P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SA$ SF RF (Bonus)
@@ -10353,7 +10614,7 @@ SA$ - Sequential ACE$ pays the same as RF
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002173p.u66", 0x00000, 0x10000, CRC(509e50e1) SHA1(db4ee11f29107ff48ee5f5410c9d0e1a6a6fd567) ) /* Ace$ Bonus Poker - 05/09/96 @ IGT L96-1120 */
@@ -10368,7 +10629,7 @@ SA$ - Sequential ACE$ pays the same as RF
ROM_LOAD( "capx2172.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* Philips N82S147N */
ROM_END
-ROM_START( pex2178p ) /* Superboard : Double Bonus Poker (X002178P+XP000119) */
+ROM_START( pex2178p ) /* Superboard : Double Bonus Poker (X002178P+XP000119) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -10380,22 +10641,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
NOTE: Same as X000725P, except MAX Coin (set to 5) CANNOT be changed - NJ jurisdiction
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000119.u67", 0x00000, 0x10000, CRC(f3e7b14c) SHA1(b225900afca61740e842743453346aaa7ed34687) )
+ ROM_LOAD( "xp000119.u67", 0x00000, 0x10000, CRC(f3e7b14c) SHA1(b225900afca61740e842743453346aaa7ed34687) ) /* 11/02/98 @ IGT NJ */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002178p.u66", 0x00000, 0x10000, CRC(7f610ac9) SHA1(2c279a2c9d739245a93786df6c948b0db4f268a2) ) /* Double Bonus Poker - 05/23/96 @ IGT NJ */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT NJ */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2179p ) /* Superboard : Double Bonus Poker (X002179P+XP000119) */
+ROM_START( pex2179p ) /* Superboard : Double Bonus Poker (X002179P+XP000119) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -10407,22 +10668,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
NOTE: Same as X000726P, except MAX Coin (set to 5) CANNOT be changed - NJ jurisdiction
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000119.u67", 0x00000, 0x10000, CRC(f3e7b14c) SHA1(b225900afca61740e842743453346aaa7ed34687) )
+ ROM_LOAD( "xp000119.u67", 0x00000, 0x10000, CRC(f3e7b14c) SHA1(b225900afca61740e842743453346aaa7ed34687) ) /* 11/02/98 @ IGT NJ */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002179p.u66", 0x00000, 0x10000, CRC(8bdbdb31) SHA1(4ce2a652fd14b830f4d56883358f5dcb9fd29e36) ) /* Double Bonus Poker - 05/23/96 @ IGT NJ */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT NJ */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2180p ) /* Superboard : Double Bonus Poker (X002180P+XP000038) */
+ROM_START( pex2180p ) /* Superboard : Double Bonus Poker (X002180P+XP000119) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -10434,22 +10695,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
NOTE: Same as X000728P, except MAX Coin (set to 5) CANNOT be changed - NJ jurisdiction
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000119.u67", 0x00000, 0x10000, CRC(f3e7b14c) SHA1(b225900afca61740e842743453346aaa7ed34687) ) /* 11/02/98 @ IGT NJ */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002180p.u66", 0x00000, 0x10000, CRC(c929b3a5) SHA1(6b47c67275f6894bfcd52640aa32fbe1270dba9c) ) /* Double Bonus Poker - 05/23/96 @ IGT NJ */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2211p ) /* Superboard : Double Double Bonus with 3 Jacks (X002211P+XP000043) */
+ROM_START( pex2211p ) /* Superboard : Double Double Bonus with 3 Jacks (X002211P+XP000043) - PSR Verified */
/*
2-4
4K 4A
@@ -10465,9 +10726,12 @@ Bonus "Dealt" payouts per Coin In are:
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000031 + CG2244 + CAPX1321
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
+ ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002211p.u66", 0x00000, 0x10000, CRC(ff677806) SHA1(e7d74c3de278df86c6900d6e2dbb3b12978fe969) ) /* Double Double Bonus with 3 Jacks - 08/9/96 L96/2013 */
@@ -10482,7 +10746,7 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2236p ) /* Superboard : Double Double Bonus with 3 Aces (X002236P+XP000043) */
+ROM_START( pex2236p ) /* Superboard : Double Double Bonus with 3 Aces (X002236P+XP000043) - PSR Verified */
/*
2-4
4K 4A
@@ -10498,9 +10762,12 @@ Bonus "Dealt" payouts per Coin In are:
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000031 + CG2244 + CAPX1321
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
+ ROM_LOAD( "xp000043.u67", 0x00000, 0x10000, CRC(630756ee) SHA1(b5582bdd0172ad926d4a7636c27afa3a0fbc0fd1) ) /* 8/5/96 L96/1960 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002236p.u66", 0x00000, 0x10000, CRC(44912158) SHA1(3c2323773277af31c220d7c3e6491694b9cfc5cc) ) /* Double Double Bonus with 3 Aces Poker */
@@ -10515,7 +10782,7 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2241p ) /* Superboard : 4 of a Kind Bonus Poker 1-100 Coins (X002241P+XP000079) */
+ROM_START( pex2241p ) /* Superboard : 4 of a Kind Bonus Poker (X002241P+XP000079) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -10530,7 +10797,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "x002241p.u66", 0x00000, 0x10000, CRC(c6b45cf4) SHA1(3d47e8ff5c915c4b35e4a2ffe20fcc950e838454) ) /* 4 of a Kind Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
@@ -10539,7 +10806,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2244p ) /* Superboard : Double Bonus Poker 1-100 Coins (X002244P+XP000079) */
+ROM_START( pex2244p ) /* Superboard : Double Bonus Poker (X002244P+XP000079) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -10554,7 +10821,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "x002244p.u66", 0x00000, 0x10000, CRC(06a3e60d) SHA1(8abeafab589406ff68898e8f90431c1a5f8d2de5) ) /* Double Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
@@ -10563,7 +10830,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2245p ) /* Superboard : Standard Draw Poker (X002245P+XP000055) */
+ROM_START( pex2245p ) /* Superboard : Standard Draw Poker (X002245P+XP000055) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -10578,7 +10845,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "x002245p.u66", 0x00000, 0x10000, CRC(df49a54c) SHA1(1c89d0a114e27e27117120c9e2fc36b124fe7761) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
@@ -10587,7 +10854,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2245pa ) /* Superboard : Standard Draw Poker (X002245P+XP000079) */
+ROM_START( pex2245pa ) /* Superboard : Standard Draw Poker (X002245P+XP000079) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -10602,16 +10869,16 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "x002245p.u66", 0x00000, 0x10000, CRC(df49a54c) SHA1(1c89d0a114e27e27117120c9e2fc36b124fe7761) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2247p ) /* Superboard : Standard Draw Poker (X002247P+XP000038) */
+ROM_START( pex2247p ) /* Superboard : Standard Draw Poker (X002247P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -10620,22 +10887,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: X002247P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002247p.u66", 0x00000, 0x10000, CRC(41aecb1a) SHA1(d4c5388b66b003e7f4449963d86f6b20f1954193) ) /* Standard Draw Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2250p ) /* Superboard : Shockwave Poker (X002250P+XP000050) */
+ROM_START( pex2250p ) /* Superboard : Shockwave Poker (X002250P+XP000050) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K* SF RF (Bonus)
---------------------------------------------------------
@@ -10646,6 +10913,11 @@ PayTable Js+ 2PR 3K STR FL FH 4K* SF RF (Bonus)
4K* - Getting a 4K hand sets the game in "Shockwave" mode for the next 10 dealt hands.
While in shockwave mode, 4K pays the same as RF
+Also compatible with:
+ XP000111 + CG2427 + CAPX2309
+ XP000117 + CG2309 + CAPX2309
+ XP000122 + CG2309 + CAPX2309
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "xp000050.u67", 0x00000, 0x10000, CRC(cf9e72d6) SHA1(fc5c679aae43df0bd563fbcc3e00a3274af1ed11) )
@@ -10663,7 +10935,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K* SF RF (Bonus)
ROM_LOAD( "capx2309.u43", 0x0000, 0x0200, CRC(5da912cc) SHA1(6294f8be682e70e9052c9ae5f6865467e9dba2e3) )
ROM_END
-ROM_START( pex2251p ) /* Superboard : Shockwave Poker (X002251P+XP000050) */
+ROM_START( pex2251p ) /* Superboard : Shockwave Poker (X002251P+XP000050) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K* SF RF (Bonus)
---------------------------------------------------------
@@ -10674,6 +10946,11 @@ PayTable Js+ 2PR 3K STR FL FH 4K* SF RF (Bonus)
4K* - Getting a 4K hand sets the game in "Shockwave" mode for the next 10 dealt hands.
While in shockwave mode, 4K pays the same as RF
+Also compatible with:
+ XP000111 + CG2427 + CAPX2309
+ XP000117 + CG2309 + CAPX2309
+ XP000122 + CG2309 + CAPX2309
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "xp000050.u67", 0x00000, 0x10000, CRC(cf9e72d6) SHA1(fc5c679aae43df0bd563fbcc3e00a3274af1ed11) )
@@ -10691,7 +10968,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K* SF RF (Bonus)
ROM_LOAD( "capx2309.u43", 0x0000, 0x0200, CRC(5da912cc) SHA1(6294f8be682e70e9052c9ae5f6865467e9dba2e3) )
ROM_END
-ROM_START( pex2270p ) /* Superboard : Jackpot Poker (X002270P+XP000053) */
+ROM_START( pex2270p ) /* Superboard : Jackpot Poker (X002270P+XP000053) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -10702,9 +10979,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
** 4K goes to a slot machine bonus routine. The average Jackpot Poker pay = 35.15 per Coin In
Possible payouts are: 30, 26, 40, 80 & 400 per Coin In
+Also compatible with:
+ XP000110 + CG2292 + CAPX2292
+ XP000112 + CG2292 + CAPX2292
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 @ IGT L97-0535 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002270p.u66", 0x00000, 0x10000, CRC(d3cffd4d) SHA1(6fcba550ee62d66f947aa5ab45b1e7dd66854475) ) /* Jackpot Poker */
@@ -10719,7 +11000,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "capx2292.u43", 0x0000, 0x0200, CRC(2836f00b) SHA1(c6ff79977ed2eb24fdbfa378c72d44b9ec05a40f) )
ROM_END
-ROM_START( pex2272p ) /* Superboard : Black Jack Bonus Poker (X002272P+XP000055) */
+ROM_START( pex2272p ) /* Superboard : Black Jack Bonus Poker (X002272P+XP000055) - PSR Verified */
/*
Black Jack as in Jack of Spades/Clubs, not 21 With With
BJ BJ With
@@ -10737,7 +11018,7 @@ PayTable Js+ 2PR STR FL FH 4K SF 4K 4K 4A 4K 4K 4A RF (Bonus)
ROM_LOAD( "x002272p.u66", 0x00000, 0x10000, CRC(ee4f27b9) SHA1(1ee105430358ea27badd943bb6b18663e4029388) ) /* Black Jack Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
+ ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) ) /* 12/19/96 @ IGT L97-0234 */
ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
@@ -10746,7 +11027,7 @@ PayTable Js+ 2PR STR FL FH 4K SF 4K 4K 4A 4K 4K 4A RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2275p ) /* Superboard : Black Jack Bonus Poker (X002275P+XP000055) */
+ROM_START( pex2275p ) /* Superboard : Black Jack Bonus Poker (X002275P+XP000055) - PSR Verified */
/*
Black Jack as in Jack of Spades/Clubs, not 21 With With
BJ BJ With
@@ -10764,7 +11045,7 @@ PayTable Js+ 2PR STR FL FH 4K SF 4K 4K 4A 4K 4K 4A RF (Bonus)
ROM_LOAD( "x002275p.u66", 0x00000, 0x10000, CRC(5ba4f5ab) SHA1(def069025ec4aa340646dfd7cfacc8ce836a210c) ) /* Black Jack Bonus Poker - 01/08/97 @ IGT L97-0232 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
+ ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) ) /* 12/19/96 @ IGT L97-0234 */
ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
@@ -10773,7 +11054,7 @@ PayTable Js+ 2PR STR FL FH 4K SF 4K 4K 4A 4K 4K 4A RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2276p ) /* Superboard : Black Jack Bonus Poker (X002276P+XP000055) */
+ROM_START( pex2276p ) /* Superboard : Black Jack Bonus Poker (X002276P+XP000055) - PSR Verified */
/*
Black Jack as in Jack of Spades/Clubs, not 21 With With
BJ BJ With
@@ -10791,7 +11072,7 @@ PayTable Js+ 2PR STR FL FH 4K SF 4K 4K 4A 4K 4K 4A RF (Bonus)
ROM_LOAD( "x002276p.u66", 0x00000, 0x10000, CRC(7a660f24) SHA1(d0b621a779bfc00668492cfb3dea65d1583fa4f1) ) /* Black Jack Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
+ ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) ) /* 12/19/96 @ IGT L97-0234 */
ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
@@ -10800,7 +11081,7 @@ PayTable Js+ 2PR STR FL FH 4K SF 4K 4K 4A 4K 4K 4A RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2279p ) /* Superboard : ACE$ Bonus (X002283P+XP000057) */
+ROM_START( pex2279p ) /* Superboard : ACE$ Bonus (X002283P+XP000057) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SA$ SF RF (Bonus)
@@ -10816,9 +11097,12 @@ Sequential ACE$ - 12000
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000076 + CG2325 + CAPX2325/CAPX2172
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) )
+ ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) ) /* 11/6/96 L96/2687 BBP also found as 01/28/97 @ IGT L97-0506 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002279p.u66", 0x00000, 0x10000, CRC(0b756bd8) SHA1(26622e588bf2e3f823f8baa66ddec05f135d4f6f) ) /* ACE$ Bonus - 01/15/97 L97/0507 */
@@ -10830,10 +11114,10 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "mxo-cg2325.u80", 0x18000, 0x8000, CRC(afae8fd5) SHA1(7c6380f21fe8444234ada8d88a46d3a4f1623b29) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "cap2325x.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* It is actually CAP2325X and the same data as CAPX2172 */
+ ROM_LOAD( "capx2325.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* Same data as CAPX2172 */
ROM_END
-ROM_START( pex2283p ) /* Superboard : Barbaric Deuces Wild / Dealt Deuces Wild Bonus Poker (X002283P+XP000057) */
+ROM_START( pex2283p ) /* Superboard : Barbaric Deuces Wild / Dealt Deuces Wild Bonus Poker (X002283P+XP000057) - PSR Verified */
/*
w/D 6-K 3-5 w/A w/oD
PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
@@ -10851,9 +11135,12 @@ Belly glass could be ordered as either Barbaric Deuces Wild or Dealt Deuces Wild
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000076 + CG2325 + CAPX2325/CAPX2172
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) )
+ ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) ) /* 11/6/96 L96/2687 BBP also found as 01/28/97 @ IGT L97-0506 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002283p.u66", 0x00000, 0x10000, CRC(90f7f7b3) SHA1(0c8460391303ed16f20c41472840d798950bb2c0) ) /* Barbaric Deuces Wild / Dealt Deuces Wild Bonus Poker */
@@ -10865,10 +11152,10 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "mxo-cg2325.u80", 0x18000, 0x8000, CRC(afae8fd5) SHA1(7c6380f21fe8444234ada8d88a46d3a4f1623b29) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "cap2325x.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* It is actually CAP2325X and the same data as CAPX2172 */
+ ROM_LOAD( "capx2325.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* Same data as CAPX2172 */
ROM_END
-ROM_START( pex2284p ) /* Superboard : Barbaric Deuces Wild / Dealt Deuces Wild Bonus Poker (X002284P+XP000057) */
+ROM_START( pex2284p ) /* Superboard : Barbaric Deuces Wild / Dealt Deuces Wild Bonus Poker (X002284P+XP000057) - PSR Verified */
/*
w/D 6-K 3-5 w/A w/oD
PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
@@ -10886,9 +11173,12 @@ Belly glass could be ordered as either Barbaric Deuces Wild or Dealt Deuces Wild
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000076 + CG2325 + CAPX2325/CAPX2172
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) )
+ ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) ) /* 11/6/96 L96/2687 BBP also found as 01/28/97 @ IGT L97-0506 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002284p.u66", 0x00000, 0x10000, CRC(2a3cb2a9) SHA1(76bfbf9a25913604454142716e1433ec73f0f0c9) ) /* Barbaric Deuces Wild / Dealt Deuces Wild Bonus Poker - 01/18/97 97/0527 */
@@ -10900,10 +11190,10 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "mxo-cg2325.u80", 0x18000, 0x8000, CRC(afae8fd5) SHA1(7c6380f21fe8444234ada8d88a46d3a4f1623b29) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "cap2325x.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* It is actually CAP2325X and the same data as CAPX2172 */
+ ROM_LOAD( "capx2325.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* Same data as CAPX2172 */
ROM_END
-ROM_START( pex2287p ) /* Superboard : No Faces Pay the Aces (X002287P+XP000057) */
+ROM_START( pex2287p ) /* Superboard : No Faces Pay the Aces (X002287P+XP000057) - PSR Verified */
/*
5-K 2-4
@@ -10922,9 +11212,12 @@ Bonus "Dealt" payouts per Coin In are:
Designed and co-created by Best Bet Products
+Also compatible with:
+ XP000076 + CG2325 + CAPX2325/CAPX2172
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) )
+ ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) ) /* 11/6/96 L96/2687 BBP also found as 01/28/97 @ IGT L97-0506 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002287p.u66", 0x00000, 0x10000, CRC(f5a8f485) SHA1(4bf9ad2a75acd5445e97661efe8a39ceb8b97549) ) /* No Faces Pay the Aces - 01/22/97 L97/0530 */
@@ -10936,10 +11229,10 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "mxo-cg2325.u80", 0x18000, 0x8000, CRC(afae8fd5) SHA1(7c6380f21fe8444234ada8d88a46d3a4f1623b29) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "cap2325x.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* It is actually CAP2325X and the same data as CAPX2172 */
+ ROM_LOAD( "capx2325.u43", 0x0000, 0x0200, CRC(c9b4f1da) SHA1(c911da564cfb33218441de0f91e67a02191d76c2) ) /* Same data as CAPX2172 */
ROM_END
-ROM_START( pex2297p ) /* Superboard : Jackpot Poker (X002297P+XP000053) */
+ROM_START( pex2297p ) /* Superboard : Jackpot Poker (X002297P+XP000053) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -10950,9 +11243,13 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
** 4K goes to a slot machine bonus routine. The average Jackpot Poker pay = 35.15 per Coin In
Possible payouts are: 30, 26, 40, 80 & 400 per Coin In
+Also compatible with:
+ XP000110 + CG2292 + CAPX2292
+ XP000112 + CG2292 + CAPX2292
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 @ IGT L97-0535 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002297p.u66", 0x00000, 0x10000, CRC(7ebe809e) SHA1(5aafdf499455b8c96f6d780894cc442ed21e0dc2) ) /* Jackpot Poker */
@@ -10967,7 +11264,39 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "capx2292.u43", 0x0000, 0x0200, CRC(2836f00b) SHA1(c6ff79977ed2eb24fdbfa378c72d44b9ec05a40f) )
ROM_END
-ROM_START( pex2302p ) /* Superboard : Bonus Poker Deluxe (X002302P+XP000038) */
+ROM_START( pex2297pa ) /* Superboard : Jackpot Poker (X002297P+XP000112) - PSR Verified */
+/*
+PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
+----------------------------------------------------------
+ P820AU 1 2 3 4 5 8 ** 50 250 800
+ % Range: 95.7-97.7% Optimum: 99.7% Hit Frequency: 45.5%
+ Programs Available: X002297P
+
+** 4K goes to a slot machine bonus routine. The average Jackpot Poker pay = 35.15 per Coin In
+ Possible payouts are: 30, 26, 40, 80 & 400 per Coin In
+
+Also compatible with:
+ XP000053 + CG2292 + CAPX2292
+ XP000110 + CG2292 + CAPX2292
+
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x002297p.u66", 0x00000, 0x10000, CRC(7ebe809e) SHA1(5aafdf499455b8c96f6d780894cc442ed21e0dc2) ) /* Jackpot Poker */
+
+ ROM_REGION( 0x040000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2292.u77", 0x00000, 0x10000, CRC(10da5df3) SHA1(0975acc2151957c0d9996d5cc77ded6deefbb41a) )
+ ROM_LOAD( "mgo-cg2292.u78", 0x10000, 0x10000, CRC(92fc6282) SHA1(8d765326dd604274dcf36e38440a1f9c404a020a) )
+ ROM_LOAD( "mbo-cg2292.u79", 0x20000, 0x10000, CRC(996ab79c) SHA1(54469ce8de6aa35d6be996fc87b677d75f7cfa68) )
+ ROM_LOAD( "mxo-cg2292.u80", 0x30000, 0x10000, CRC(d7efa5c9) SHA1(40aa7593b358c99f3f98c5d5ad11e186aff17b58) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2292.u43", 0x0000, 0x0200, CRC(2836f00b) SHA1(c6ff79977ed2eb24fdbfa378c72d44b9ec05a40f) )
+ROM_END
+
+ROM_START( pex2302p ) /* Superboard : Bonus Poker Deluxe (X002302P+XP000038) - PSR Verified */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
---------------------------------------------------------
@@ -10976,22 +11305,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
Programs Available: X002302P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002302p.u66", 0x00000, 0x10000, CRC(8e52646e) SHA1(f6722778eb7e2981a00f8e4e5ea32f71a35e20e5) ) /* Bonus Poker Deluxe */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2303p ) /* Superboard : White Hot Aces Poker (X002303P+XP000112) */
+ROM_START( pex2303p ) /* Superboard : White Hot Aces Poker (X002303P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -11001,22 +11330,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002303P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002303p.u66", 0x00000, 0x10000, CRC(81cfd71b) SHA1(485a45412cad705d050b369c4cd1472a438374e8) ) /* White Hot Aces Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2306p ) /* Superboard : Triple Double Bonus Poker (X002306P+XP000112) */
+ROM_START( pex2306p ) /* Superboard : Triple Double Bonus Poker (X002306P+XP000038) - PSR Verified */
/*
2-4
4K 4A
@@ -11028,22 +11357,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
Programs Available: X002306P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002306p.u66", 0x00000, 0x10000, CRC(ef36ea67) SHA1(8914ad20526fd63e14d9fa1901e9c779a11eb29d) ) /* Triple Double Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2307p ) /* Superboard : Triple Double Bonus Poker (X002307P+XP000112) */
+ROM_START( pex2307p ) /* Superboard : Triple Double Bonus Poker (X002307P+XP000038) - PSR Verified */
/*
2-4
4K 4A
@@ -11055,22 +11384,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
Programs Available: X002307P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002307p.u66", 0x00000, 0x10000, CRC(c6d5db70) SHA1(017e1e382fb789e4cd8b410362ad5e82b61f61db) ) /* Triple Double Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2308p ) /* Superboard : Triple Double Bonus Poker (X002308P+XP000112) */
+ROM_START( pex2308p ) /* Superboard : Triple Double Bonus Poker (X002308P+XP000038) - PSR Verified */
/*
2-4
4K 4A
@@ -11082,22 +11411,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
Programs Available: X002308P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002308p.u66", 0x00000, 0x10000, CRC(632fe9e4) SHA1(bb99a610f42aa32ad4729bb2bb4b99b4070977cf) ) /* Triple Double Bonus Poker - 03/05/97 @ IGT L97-0615 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2310p ) /* Superboard : Triple Double Bonus Poker (X002310P+XP000112) */
+ROM_START( pex2310p ) /* Superboard : Triple Double Bonus Poker (X002310P+XP000038) - PSR Verified */
/*
2-4
4K 4A
@@ -11109,22 +11438,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A A,2-4 2-4 SF RF (Bonus)
Programs Available: X002310P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002310p.u66", 0x00000, 0x10000, CRC(c006c3f1) SHA1(45c87a2f882147d1d132237cfa12ae47b202264f) ) /* Triple Double Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2312p ) /* Superboard : Triple Bonus Poker Plus (X002312P+XP000112) */
+ROM_START( pex2312p ) /* Superboard : Triple Bonus Poker Plus (X002312P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -11134,22 +11463,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002312P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002312p.u66", 0x00000, 0x10000, CRC(d3b405b5) SHA1(321ce89a12c7d4849379731f45482c567c25b3a1) ) /* Triple Bonus Poker Plus - 03/04/97 @ IGT L97-0619 */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2314p ) /* Superboard : Triple Bonus Poker Plus (X002314P+XP000112) */
+ROM_START( pex2314p ) /* Superboard : Triple Bonus Poker Plus (X002314P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -11159,22 +11488,47 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002314P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002314p.u66", 0x00000, 0x10000, CRC(bfc0acf0) SHA1(a6b7c228a84d0ea224ad945964c53de2d44e4a8d) ) /* Triple Bonus Poker Plus */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2374p ) /* Superboard : Super Aces Poker (X002374P+XP000112) */
+ROM_START( pex2315p ) /* Superboard : Triple Bonus Poker Plus (X002315P+XP000038) - PSR Verified */
+/*
+ 5-K 2-4
+PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
+-----------------------------------------------------------------
+ P920BA 1 1 3 4 5 5 50 120 240 100 250 800
+ % Range: 91.7-93.7% Optimum: 95.7% Hit Frequency: 44.6%
+ Programs Available: X002315P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x002315p.u66", 0x00000, 0x10000, CRC(ccc56314) SHA1(ec05a1cbd6364f455e0ad349f18eeddfba19c696) ) /* Triple Bonus Poker Plus */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
+ROM_END
+
+ROM_START( pex2374p ) /* Superboard : Super Aces Poker (X002374P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -11184,22 +11538,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002374P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002374p.u66", 0x00000, 0x10000, CRC(fc4b6c8d) SHA1(b101f9042bd54dbfdeed4c7a3acf3798096f6857) ) /* Super Aces Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2324.u77", 0x00000, 0x8000, CRC(6eceef42) SHA1(a2ddd2a3290c41e510f483c6b633fe0002694d0b) )
- ROM_LOAD( "mgo-cg2324.u78", 0x08000, 0x8000, CRC(26d0acbe) SHA1(09a9127deb88185cd5b748bac657461eadb2f48f) )
- ROM_LOAD( "mbo-cg2324.u79", 0x10000, 0x8000, CRC(47baee32) SHA1(d8af09022ccb5fc06aa3aa4c200a734b66cbee00) )
- ROM_LOAD( "mxo-cg2324.u80", 0x18000, 0x8000, CRC(60449fc0) SHA1(251d1e04786b70c1d2bc7b02f3b69cd58ac76398) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2376p ) /* Superboard : Super Double Bonus Poker (X002376P+XP000112) */
+ROM_START( pex2376p ) /* Superboard : Super Double Bonus Poker (X002376P+XP000038) - PSR Verified */
/*
2-4 J-K
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4K 4A SF RF (Bonus)
@@ -11209,22 +11563,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4K 4A SF RF (Bonus)
Programs Available: X002376P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002376p.u66", 0x00000, 0x10000, CRC(acc2b3fc) SHA1(01724f6dddccf1c84042b58829602713428476c1) ) /* Super Double Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2244.u77", 0x00000, 0x8000, CRC(25561458) SHA1(fe5d624e0e16956df589f3682bad9181bdc99956) ) /* */
- ROM_LOAD( "mgo-cg2244.u78", 0x08000, 0x8000, CRC(b2de0a7a) SHA1(34f0ef951560f6f71e14c822baa4ccb1028b5028) )
- ROM_LOAD( "mbo-cg2244.u79", 0x10000, 0x8000, CRC(d2c12418) SHA1(dfb1aebaac23ff6e2cf556f228dbdb7c272a1b30) )
- ROM_LOAD( "mxo-cg2244.u80", 0x18000, 0x8000, CRC(8dc10a99) SHA1(92edb31f44e52609ed1ba2a53577048d424c6238) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2377p ) /* Superboard : Super Double Bonus Poker (X002377P+XP000112) */
+ROM_START( pex2377p ) /* Superboard : Super Double Bonus Poker (X002377P+XP000038) - PSR Verified */
/*
2-4 J-K
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4K 4A SF RF (Bonus)
@@ -11234,22 +11588,22 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4K 4A SF RF (Bonus)
Programs Available: X002377P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000112.u67", 0x00000, 0x10000, CRC(c1ae96ad) SHA1(da109602f0fbe9b225cdcd60be0613fd41014864) ) /* 06/05/98 IGT CO */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002377p.u66", 0x00000, 0x10000, CRC(541320d2) SHA1(670b17432e994fe1937091e5e96e1d58b9afbf29) ) /* Super Double Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2244.u77", 0x00000, 0x8000, CRC(25561458) SHA1(fe5d624e0e16956df589f3682bad9181bdc99956) ) /* */
- ROM_LOAD( "mgo-cg2244.u78", 0x08000, 0x8000, CRC(b2de0a7a) SHA1(34f0ef951560f6f71e14c822baa4ccb1028b5028) )
- ROM_LOAD( "mbo-cg2244.u79", 0x10000, 0x8000, CRC(d2c12418) SHA1(dfb1aebaac23ff6e2cf556f228dbdb7c272a1b30) )
- ROM_LOAD( "mxo-cg2244.u80", 0x18000, 0x8000, CRC(8dc10a99) SHA1(92edb31f44e52609ed1ba2a53577048d424c6238) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2386p ) /* Superboard : 4 of a Kind Bonus Poker (X002386P+XP000038) */
+ROM_START( pex2386p ) /* Superboard : 4 of a Kind Bonus Poker (X002386P+XP000038) - PSR Verified */
/*
5-K 2-4
PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
@@ -11259,28 +11613,39 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: X002386P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002386p.u66", 0x00000, 0x10000, CRC(3b2731e4) SHA1(aefe0fc2c2baf653cf3dc0e1394afbb55fb18f61) ) /* 4 of a Kind Bonus Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2275.u77", 0x00000, 0x8000, CRC(15d5d6b8) SHA1(61b6821d4cc059732bc3831bf19bf01aa3910b31) )
- ROM_LOAD( "mgo-cg2275.u78", 0x08000, 0x8000, CRC(bcb49579) SHA1(d5d9f523304582fa6f0a0c69aade77629bdec006) )
- ROM_LOAD( "mbo-cg2275.u79", 0x10000, 0x8000, CRC(9f893787) SHA1(0b79d5cbac920394d5f5c04d0d9d3727e0060366) )
- ROM_LOAD( "mxo-cg2275.u80", 0x18000, 0x8000, CRC(6187c68b) SHA1(7777b141fd1379d37d93a228b2e2159476c2b89e) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2412p ) /* Superboard : Standard Draw with 5 decks - Two Pair or Better (X002412P+XP000096) */
+ROM_START( pex2412p ) /* Superboard : Standard Draw with 5 decks - Two Pair or Better (X002412P+XP000096) - PSR Verified */
/*
+ Same Same Same Same Same
+ Suit Suit Suit Suit Suit
+PayTable 2PR 2PR 3K STR 3K FL FH 4K FH 4K SF 5K RF 5K (Bonus)
+-------------------------------------------------------------------------------
+ ???? 1 2 2 3 4 4 6 10 12 20 50 60 250 1000 800
% Range: 93.7-95.7% Optimum: 97.7% Hit Frequency: 44.6%
Programs Available: X002412P
NOTE: This version uses 5 separate decks of cards, one deck for each HOLD button.
So things like a suited 5K are possible. Sadly, there's no paytable displayed
+
+Also compatible with:
+ XP000051 + CG2315 + CAPX2315 (25 cent denom & 5 Coin Max Bet cannot be changed)
+ XP000116 + CG2315 + CAPX2315
+ XP000121 + CG2315 + CAPX2315 (MegaJackpot Poker - 25 cent denom & 5 Coin Max Bet cannot be changed)
+ XP000124 + CG2315 + CAPX2315 (MegaJackpot Poker - 25 cent denom & 5 Coin Max Bet cannot be changed)
*/
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "xp000096.u67", 0x00000, 0x10000, CRC(5aca14e1) SHA1(13bcb8069f9d704983632bb60db119f7308f9d80) )
@@ -11379,7 +11744,7 @@ PayTable 3K STR FL FH 4K SF RF 5K 5K 5A 4D 4D RF (Bonus)
ROM_LOAD( "capx2307.u43", 0x0000, 0x0200, CRC(58d81338) SHA1(f0044ebbd0128d6fb74d850528ef02730c180f00) )
ROM_END
-ROM_START( pex2440p ) /* Superboard : Deuces Wild Poker (X002440P+XP000053) */
+ROM_START( pex2440p ) /* Superboard : Deuces Wild Poker (X002440P+XP000038) - PSR Verified */
/*
w/D w/oD
PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
@@ -11389,22 +11754,22 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
Programs Available: PP0469, X002440P
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "xp000053.u67", 0x00000, 0x10000, CRC(f4f1f986) SHA1(84cfc2c4a10ed24d3a971fe75041a4108ec1d7f2) ) /* 02/03/97 IGT L97-0535 */
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
ROM_REGION( 0x10000, "user1", 0 )
ROM_LOAD( "x002440p.u66", 0x00000, 0x10000, CRC(2ecb28cc) SHA1(a7b902bdfbf8f5ceedc778b8408c39ee279a1a1d) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
-ROM_START( pex2461p ) /* Superboard : Joker Poker (X002461P+XP000055) */
+ROM_START( pex2461p ) /* Superboard : Joker Poker (X002461P+XP000055) - PSR Verified */
/*
w/J w/oJ
PayTable 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
@@ -11420,10 +11785,10 @@ PayTable 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "x002461p.u66", 0x00000, 0x10000, CRC(9eb7b3ac) SHA1(162353e0914bf86d36b653719fc71b56c265cca0) ) /* Joker Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2242.u77", 0x00000, 0x8000, CRC(963a7e7d) SHA1(ebb159f6c731a3f912382745ef9a9c6d4fa2fc99) ) /* 03/19/96 @ IGT L96-0703 */
+ ROM_LOAD( "mgo-cg2242.u78", 0x08000, 0x8000, CRC(53eed56f) SHA1(e79f31c5c817b8b96b4970c1a702d1892961d441) )
+ ROM_LOAD( "mbo-cg2242.u79", 0x10000, 0x8000, CRC(af092f50) SHA1(53a3536593bb14c4072e8a5ee9e05af332feceb1) )
+ ROM_LOAD( "mxo-cg2242.u80", 0x18000, 0x8000, CRC(ecacb6b2) SHA1(32660adcc266fbbb3702a0cd30e25d11b953d23d) )
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
@@ -11790,6 +12155,32 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "capx733.u43", 0x0000, 0x0200, CRC(867efa71) SHA1(f9e303dfaa43d5e44dbd1671b3269c1a658dea89) )
ROM_END
+ROM_START( pekoc822 ) /* Superboard : Standard Draw Poker - Key On Credit */
+/*
+PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
+----------------------------------------------------------
+ ???? 1 2 3 4 6 9 25 50 250 1000
+ % Range: 96.1-98.1% Optimum: 100.1% Hit Frequency: 45.2%
+ Programs Available: PP0822 A5W-A6F
+
+Same as US paytable CB
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pp0822_a5w-a6f.u67", 0x00000, 0x10000, CRC(b8034351) SHA1(78a2c5c67526ff734c7794301c0204a16d9b1fd8) )
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "pp0822_data_a5w-a6f.u66", 0x00000, 0x10000, CRC(636ceb06) SHA1(ca0f7e67f6c86d6aed2bbed2a70372b5d5799bb8) )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2245.u77", 0x00000, 0x8000, CRC(60461758) SHA1(856aa5a2ec2d3dece8a94cd6c58ff0e2941d61b3) )
+ ROM_LOAD( "mgo-cg2245.u78", 0x08000, 0x8000, CRC(d4939806) SHA1(2852ec153da620868330d0d51b73c779ee6cfc49) )
+ ROM_LOAD( "mbo-cg2245.u79", 0x10000, 0x8000, CRC(86b2977b) SHA1(a086c05afeb6b2658975f06c33aa768efef92688) )
+ ROM_LOAD( "mxo-cg2245.u80", 0x18000, 0x8000, CRC(fd95acea) SHA1(be8feb17e22915951ff9b68150674e369ea95758) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx733.u43", 0x0000, 0x0200, CRC(867efa71) SHA1(f9e303dfaa43d5e44dbd1671b3269c1a658dea89) )
+ROM_END
+
ROM_START( pekoc825 ) /* Superboard : White Hot Aces - Key On Credit */
/*
5-K 2-4
@@ -11915,8 +12306,8 @@ ROM_START( pex1087s ) /* Superboard : Double Double Diamond Slots (X001087S+XS00
ROM_LOAD( "mxo-cg2415.u80", 0x18000, 0x8000, CRC(c427fff8) SHA1(5f41ff4d4598609a753c2e986f2a8cd63aa87d30) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx2415.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2415(?) */
- ROM_LOAD( "capx2361.u43", 0x0000, 0x0200, CRC(93057296) SHA1(534bbf8ee80a22822d577f6685501f4c929987ef) ) /* Wrong!! Should be CAPX2415(?) */
+ ROM_LOAD( "capx2415.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2415 */
+ ROM_LOAD( "capx2361.u43", 0x0000, 0x0200, CRC(93057296) SHA1(534bbf8ee80a22822d577f6685501f4c929987ef) ) /* Wrong!! Should be CAPX2415 */
ROM_END
ROM_START( pexm001p ) /* Superboard : Multi-Poker (XM00001P) - Bonus Poker, Bonus Poker Dlx, Deuces Wild Poker, Jacks or Better & Dbl Bonus Poker */
@@ -11977,6 +12368,34 @@ Double Bonus Poker P323A 99.10%
ROM_LOAD( "capx2174.u43", 0x0000, 0x0200, CRC(50bdad55) SHA1(958d463c7effb3457c1f9c44c9b7822339c04e8b) )
ROM_END
+ROM_START( pexm002pa ) /* Superboard : Multi-Poker (XM00002P) - Bonus Poker, Bonus Poker Dlx, Deuces Wild Poker, Jacks or Better & Dbl Bonus Poker */
+/*
+Combined average payout percent: 98.14%
+
+Game Type PayTable Payout
+-------------------------------------
+Bonus Poker P90A 98.00%
+Bonus Poker Deluxe P251A 97.40%
+Deuces Wild Poker P62A 98.90%
+Jacks or Better BA 97.30%
+Double Bonus Poker P323A 99.10%
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xmp00006.u67", 0x00000, 0x10000, CRC(d61f1677) SHA1(2eca1315d6aa310a54de2dfa369e443a07495b76) ) /* 07/25/96 @ IGT MI */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "xm00002p.u66", 0x00000, 0x10000, CRC(96cf471c) SHA1(9597bf6a80c392ee22dc4606db610fdaf032377f) ) /* 07/18/95 @ IGT MI */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2440.u77", 0x00000, 0x8000, CRC(a4b2c9ab) SHA1(962f86bedc5b786080cc2d8a1264b15cca9c2f2e) ) /* 05/28/99 @ IGT MI */
+ ROM_LOAD( "mgo-cg2440.u78", 0x08000, 0x8000, CRC(82633a6b) SHA1(3651ef86cb3c33af5a20ac3b7ffceaa19c7e87d6) )
+ ROM_LOAD( "mbo-cg2440.u79", 0x10000, 0x8000, CRC(a984bf7f) SHA1(2c1c01fddafda934112f507d522710d94e30668a) )
+ ROM_LOAD( "mxo-cg2440.u80", 0x18000, 0x8000, CRC(9849096b) SHA1(65604ac2a2a27d4e458f6878aacf86f63f5f7c58) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2440.u43", 0x0000, 0x0200, BAD_DUMP CRC(37e8619f) SHA1(303ab25ef0483f2c5023d1765bb0cf9984c45f63) )
+ROM_END
+
ROM_START( pexm003p ) /* Superboard : Multi-Poker (XM00003P) - Bonus Poker, Bonus Poker Dlx, Deuces Wild Poker, Jacks or Better & Dbl Bonus Poker */
/*
Combined average payout percent: 96.78%
@@ -12242,17 +12661,9 @@ ROM_END
ROM_START( pexmp013 ) /* Superboard : 5-in-1 Wingboard (XMP00013) Program in Spanish, Requires Spanish Wingboard CG rom set */
/*
-Known Wingboard compatible program roms:
- XMP00013 - Spanish
- XMP00014 (not dumped)
- XMP00017
- XMP00022 - Spanish (not dumped)
- XMP00026 - Spanish
- XMP00030
-
The CG2346 set seems to support all games supported in CG2298 as well as graphics support for the following XnnnnnnP Data game types:
Triple Double Bonus
- Black Jack Bonus (comes up as Back Jack Poker)
+ Black Jack Bonus (comes up as Black Jack Poker)
*/
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -12287,10 +12698,13 @@ ROM_START( pexmp017 ) /* Superboard : 5-in-1 Wingboard (XMP00017) */
/*
Known Wingboard compatible program roms:
+ XMP00007 (CG2298+CAPX2298 - not dumped)
+ XMP00009 (CG2230+CAPX2230 - not dumped - MGM exclusive)
+ XMP00011 (CG2298+CAPX2298 - not dumped)
XMP00013 - Spanish
- XMP00014 (not dumped)
+ XMP00014 - International (not dumped)
XMP00017
- XMP00022 - Spanish (not dumped)
+ XMP00022 - Spanish
XMP00026 - Spanish
XMP00030
@@ -12341,7 +12755,7 @@ ROM_END
ROM_START( pexmp017a ) /* Superboard : 5-in-1 Wingboard (XMP00017) */
/*
-The CG2352 set supersedes CG2298. It's currently not known what has changed between the two sets.
+The CG2352 set is meant to be used with XMP00014 - But use here now as a place holder
*/
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -12376,7 +12790,7 @@ ROM_END
ROM_START( pexmp017b ) /* Superboard : 5-in-1 Wingboard (XMP00017) */
/*
-The CG2426 set supersedes both CG2298 & CG2352 and adds graphics support for the following XnnnnnnP Data game types:
+The CG2426 set supersedes CG2298 and adds graphics support for the following XnnnnnnP Data game types:
Black Jack Bonus
Super Double Bonus
Triple Double Bonus
@@ -12410,6 +12824,35 @@ The CG2426 set supersedes both CG2298 & CG2352 and adds graphics support for the
ROM_LOAD( "capx2298.u43", 0x0000, 0x0200, CRC(77856036) SHA1(820487c8494965408402ddee6a54511906218e66) )
ROM_END
+ROM_START( pexmp022 ) /* Superboard : 5-in-1 Wingboard (XMP00022) Program in Spanish, Requires Spanish Wingboard CG rom set */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xmp00022.u67", 0x00000, 0x10000, CRC(ea21f38d) SHA1(d9712371e1286ed5957a71a14d868b78f741388d) )
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000430p.u66", 0x00000, 0x10000, CRC(905571e3) SHA1(fd506516fed22842df8e9dbb3683dcb4c459719b) ) /* Dueces Joker Wild Poker */
+
+ ROM_REGION( 0x10000, "user2", 0 )
+ ROM_LOAD( "x000006p.u66", 0x00000, 0x10000, CRC(0ee609a1) SHA1(57043ac2c6ff4377479dd7b66d7e379053f3f602) ) /* Standard Draw Poker - 03/23/95 @ IGT L95-0826 */
+
+ ROM_REGION( 0x10000, "user3", 0 )
+ ROM_LOAD( "x002272p.u66", 0x00000, 0x10000, CRC(ee4f27b9) SHA1(1ee105430358ea27badd943bb6b18663e4029388) ) /* Black Jack Bonus Poker */
+
+ ROM_REGION( 0x10000, "user4", 0 )
+ ROM_LOAD( "x002033p.u66", 0x00000, 0x10000, CRC(c1c8f279) SHA1(f159d1f2b8c1632538af51cfbd995c1c8ec61ff6) ) /* White Hot Aces Poker */
+
+ ROM_REGION( 0x10000, "user5", 0 )
+ ROM_LOAD( "x002306p.u66", 0x00000, 0x10000, CRC(ef36ea67) SHA1(8914ad20526fd63e14d9fa1901e9c779a11eb29d) ) /* Triple Double Bonus Poker */
+
+ ROM_REGION( 0x040000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2346.u77", 0x00000, 0x10000, CRC(3d721779) SHA1(01ac540eddeab5ecdba9b543c69fe7f4b53151a4) ) /* Game titles in English */
+ ROM_LOAD( "mgo-cg2346.u78", 0x10000, 0x10000, CRC(a4a4856b) SHA1(db0e7528a63c80fab02b463dfb366d32061a93bb) ) /* Poker hands in Spanish */
+ ROM_LOAD( "mbo-cg2346.u79", 0x20000, 0x10000, CRC(15253b57) SHA1(503b5cb514d9552ed7cf09f236aec63c81cfd828) )
+ ROM_LOAD( "mxo-cg2346.u80", 0x30000, 0x10000, CRC(68ffb37e) SHA1(b6de07452e52a8c6f8657fbefef081aa9d86dbf0) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2346.u43", 0x0000, 0x0200, CRC(8df8ad29) SHA1(2d6a598fdc4290abe83a3d95c0ec8da6eb0f0e84) )
+ROM_END
+
ROM_START( pexmp026 ) /* Superboard : 5-in-1 Wingboard (XMP00026) Program in Spanish, Requires Spanish Wingboard CG rom set */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "xmp00026.u67", 0x00000, 0x10000, CRC(0b82387f) SHA1(8348c586cf692c5cbecfe7b52a4271e5aec55027) )
@@ -12442,7 +12885,7 @@ ROM_END
ROM_START( pexmp030 ) /* Superboard : 5-in-1 Wingboard (XMP00030) */
/*
-The CG2451 set supersedes CG2298, CG2352 & CG2426 and adds graphics support for the following XnnnnnnP Data game types:
+The CG2451 set supersedes CG2298 & CG2426 and adds graphics support for the following XnnnnnnP Data game types:
Double Double Bonus Plus
*/
@@ -12513,7 +12956,11 @@ ROM_END
/* Set chips */
GAMEL(1987, peset001, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET001) Set Chip", 0, layout_pe_schip )
GAMEL(1987, peset004, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET004) Set Chip", 0, layout_pe_schip )
+GAMEL(1987, peset012, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET012) Set Chip", 0, layout_pe_schip )
+GAMEL(1987, peset022, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET022) Set Chip", 0, layout_pe_schip )
GAMEL(1987, peset038, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET038) Set Chip", 0, layout_pe_schip )
+GAMEL(1987, peset100, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET100) Set Chip", 0, layout_pe_schip )
+GAMEL(1987, peset117, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (SET117) Set Chip", 0, layout_pe_schip )
GAMEL(1987, peivc006, 0, peplus, peplus_schip, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IVC006) Clear EEPROM Chip", 0, layout_pe_schip )
/* Normal (non-plus) board : Poker */
@@ -12543,7 +12990,7 @@ GAMEL(1987, pepk0930a, pepk0858, peplus, nonplus_poker, peplus_state, nonplus,
GAMEL(1987, pepk1004, pepk0858, peplus, nonplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge (PK1004-PC075) Deuces Wild Poker", MACHINE_NOT_WORKING, layout_pe_poker )
GAMEL(1987, pepk1013, pepk0719, peplus, nonplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge (PK1013-PC087) Tens or Better", MACHINE_NOT_WORKING, layout_pe_poker )
GAMEL(1987, pepk1020, 0, peplus, nonplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge (PK1020-PC078) 4 of a Kind Bonus Poker", MACHINE_NOT_WORKING, layout_pe_poker )
-GAMEL(1987, pepk1024, 0, peplus, nonplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge (PK1024) Aces and Faces Bonus Poker", 0, layout_pe_poker )
+GAMEL(1987, pepk1024, 0, peplus, nonplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge (PK1024-PC095) Aces and Faces Bonus Poker", 0, layout_pe_poker )
GAMEL(1987, pepk1030, pepk1020, peplus, nonplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge (PK1030-PC088) 4 of a Kind Bonus Poker", MACHINE_NOT_WORKING, layout_pe_poker )
GAMEL(1987, pepk1069, 0, peplus, nonplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge (PK1069-PC088) Double Bonus Poker", MACHINE_NOT_WORKING, layout_pe_poker )
@@ -12608,7 +13055,7 @@ GAMEL(1987, pepp0126, pepp0055, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0127, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0127) Deuces Joker Wild Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0127a, pepp0127, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0127) Deuces Joker Wild Poker (International)", 0, layout_pe_poker )
GAMEL(1987, pepp0129, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0129) Joker Poker (Two Pair or Better)", 0, layout_pe_poker )
-GAMEL(1987, pepp0130, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0130) Aces and Faces", 0, layout_pe_poker )
+GAMEL(1987, pepp0130, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0130) Aces and Faces", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAP1292 not dumped */
GAMEL(1987, pepp0132, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0132) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0150, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0150) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0158, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 1)", 0, layout_pe_poker )
@@ -12730,16 +13177,16 @@ GAMEL(1987, pepp0725, pepp0514, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0725a, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0725) Double Bonus Poker (set 2)", 0, layout_pe_poker )
GAMEL(1987, pepp0726, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0726) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0728, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0728) Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1987, pepp0733, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0733) Double Aces and Faces", 0, layout_pe_poker )
+GAMEL(1987, pepp0733, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0733) Double Aces and Faces", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAP1292 not dumped */
GAMEL(1987, pepp0750, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0750) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0757, pepp0250, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0757) Double Down Stud Joker Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0760, pepp0250, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0760) Double Down Stud Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0763, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0763) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0764, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0764) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
-GAMEL(1987, pepp0775, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0775) Royal Deuces Poker??", MACHINE_IMPERFECT_GRAPHICS, layout_pe_poker ) /* Wrong CG graphics & CAP */
+GAMEL(1987, pepp0775, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0775) Royal Deuces Poker??", MACHINE_IMPERFECT_GRAPHICS, layout_pe_poker ) /* Needs CG2195 graphics roms */
GAMEL(1987, pepp0797, pepp0542, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0797) One Eyed Jacks Wild Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0812, pepp0127, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0812) Deuces Joker Wild Poker", 0, layout_pe_poker )
-GAMEL(1987, pepp0816, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0816) Treasure Chest Poker", MACHINE_IMPERFECT_GRAPHICS, layout_pe_poker ) /* Wrong CG graphics & CAP - Missing "Bonus" at MAX Bet for 4 of a Kind & Treasure Chest graphics */
+GAMEL(1987, pepp0816, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0816) Treasure Chest Poker", MACHINE_IMPERFECT_GRAPHICS, layout_pe_poker ) /* CG2283+CAP2283 undumped - Missing "Bonus" at MAX Bet for 4 of a Kind & Treasure Chest graphics */
/* Normal board : International Poker */
GAMEL(1987, peip0028, 0, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0028) Joker Poker - French", 0, layout_pe_poker )
@@ -12815,7 +13262,7 @@ GAMEL(1996, peps0722, peps0716, peplus, peplus_slots, peplus_state, peplus,
/* Superboard : Poker */
GAMEL(1995, pex0002p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000002P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0002pa, pex0002p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000002P+XP000109) Standard Draw Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0002pa, pex0002p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000002P+XP000006) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0006p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000006P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0040p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000040P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0042p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000042P+XP000038) 10's or Better", 0, layout_pe_poker )
@@ -12824,40 +13271,47 @@ GAMEL(1995, pex0046p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex0053p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000053P+XP000038) Joker Poker (Aces or Better)", 0, layout_pe_poker )
GAMEL(1995, pex0054p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pa, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000022) Deuces Wild Poker (The Orleans)", 0, layout_pe_poker )
-GAMEL(1995, pex0055pb, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker (The Fun Ships)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAPX2399 not dumped */
-GAMEL(1995, pex0055pc, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker (Horseshoe)", 0, layout_pe_poker )
-GAMEL(1995, pex0055pd, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker (The Wild Wild West Casino)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAPX2389 not dumped */
-GAMEL(1995, pex0055pe, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker (Sunset Station Hotel-Casino)", 0, layout_pe_poker )
+GAMEL(1995, pex0055pa, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000022) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pb, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pc, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pd, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pe, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pf, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pg, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pg, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000048) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055ph, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000055) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pi, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000063) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pj, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000075) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pj, pex0055p, peplus, peplus_poker, peplus_state, pepluss64,ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000075) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pk, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000079) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pl, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000094) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pm, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000095) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pn, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000098) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055po, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000102) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055po, pex0055p, peplus, peplus_poker, peplus_state, pepluss64,ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000102) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pp, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000104) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pq, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000112) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0055pr, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000126) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pq, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000109) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pr, pex0055p, peplus, peplus_poker, peplus_state, pepluss64,ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000126) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055ps, pex0055p, peplus, peplus_poker, peplus_state, pepluss64,ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000132) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pt, pex0055p, peplus, peplus_poker, peplus_state, pepluss64,ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000137) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0057p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0057pa, pex0057p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (The Orleans)", 0, layout_pe_poker )
+GAMEL(1995, pex0057pb, pex0057p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (The Fun Ships)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAPX2399 not dumped */
+GAMEL(1995, pex0057pc, pex0057p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (Horseshoe)", 0, layout_pe_poker )
+GAMEL(1995, pex0057pd, pex0057p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (The Wild Wild West Casino)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAPX2389 not dumped */
+GAMEL(1995, pex0057pe, pex0057p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (Sunset Station Hotel-Casino)", 0, layout_pe_poker )
GAMEL(1995, pex0060p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000060P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0124p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000124P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0124p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000124P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0150p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000150P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0158p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000158P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex0171p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000171P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0188p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000188P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0190p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000190P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0190p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000190P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0197p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000197P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0203p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000203P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0224p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000224P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0224p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000224P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0225p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000225P+XP000079) Dueces Joker Wild Poker", 0,layout_pe_poker )
-GAMEL(1995, pex0242p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000242P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0242p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000242P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0265p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000265P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0291p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000291P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0417p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000417P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0291p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000291P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0417p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000417P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0426p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000426P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0430p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000430P+XP000079) Dueces Joker Wild Poker", 0,layout_pe_poker )
GAMEL(1995, pex0434p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
@@ -12870,15 +13324,15 @@ GAMEL(1995, pex0455p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex0458p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000458P+XP000038) Joker Poker (Aces or Better)", 0, layout_pe_poker )
GAMEL(1995, pex0459p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0459pa, pex0459p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000459P+XP000155) Joker Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0489p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000489P+XP000038) Double Down Stud Deuces Wild Poker", MACHINE_NOT_WORKING, layout_pe_poker ) /* Needs unknown PE+ GAME POKER program to run */
+GAMEL(1995, pex0489p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000489P+XP000038) Double Down Stud Deuces Wild Poker", MACHINE_NOT_WORKING, layout_pe_poker ) /* Needs XP000074 PE+ GAME POKER program to run */
GAMEL(1995, pex0508p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000508P+XP000038) Loose Deuce Deuces Wild! Poker", 0, layout_pe_poker )
GAMEL(1995, pex0514p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000514P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex0515p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000515P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex0516p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000516P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex0536p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000536P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0537p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000537P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1995, pex0550p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000550P+XP000055) Joker Poker (Two Pair or Better)", 0, layout_pe_poker )
-GAMEL(1995, pex0557p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000557P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0550p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000550P+XP000119) Joker Poker (Two Pair or Better)", 0, layout_pe_poker )
+GAMEL(1995, pex0557p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000557P+XP000119) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0568p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000568P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0578p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000578P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pex0581p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000581P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
@@ -12892,18 +13346,18 @@ GAMEL(1995, pex2010p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex2016p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002016P+XP000038) Full House Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2017p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002017P+XP000038) Full House Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2018p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002018P+XP000038) Full House Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2021p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002021P+XP000112) Lucky Deal Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2024p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002024P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2021p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002021P+XP000038) Lucky Deal Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2024p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002024P+XP000119) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2025p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002025P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2026p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002026P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2027p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002027P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2028p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002028P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2029p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002029P+XP000019) Deuces Wild Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2031p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002031P+XP000112) Lucky Deal Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2033p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002033P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2034p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002034P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2035p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002035P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2036p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002036P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2031p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002031P+XP000038) Lucky Deal Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2033p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002033P+XP000038) White Hot Aces Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2034p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002034P+XP000038) White Hot Aces Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2035p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002035P+XP000038) White Hot Aces Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2036p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002036P+XP000038) White Hot Aces Poker", 0, layout_pe_poker )
GAMEL(1995, pex2037p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002037P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2038p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002038P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2039p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002039P+XP000038) Nevada Bonus Poker", 0, layout_pe_poker )
@@ -12924,12 +13378,12 @@ GAMEL(1995, pex2127p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex2134p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002134P+XP000043) Faces 'n' Deuces Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2150p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002150P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2152p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002152P+XP000043) Blackjack Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2172p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002172P+XP000112) Ace$ Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2172pa, pex2172p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002172P+XP000112) Ace$ Bonus Poker (The Fun Ships)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAPX2399 not dumped */
+GAMEL(1995, pex2172p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002172P+XP000038) Ace$ Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2172pa, pex2172p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002172P+XP000038) Ace$ Bonus Poker (The Fun Ships)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAPX2399 not dumped */
GAMEL(1995, pex2173p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002173P+XP000038) Ace$ Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2178p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002178P+XP000119) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2179p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002179P+XP000119) Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2180p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002180P+XP000038) Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2180p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002180P+XP000119) Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2211p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002211P+XP000043) Double Double Bonus with 3 Jacks Poker", 0,layout_pe_poker )
GAMEL(1995, pex2236p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002236P+XP000043) Double Double Bonus with 3 Aces Poker", 0,layout_pe_poker )
GAMEL(1995, pex2241p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002241P+XP000079) 4 of a Kind Bonus Poker", 0,layout_pe_poker )
@@ -12948,17 +13402,19 @@ GAMEL(1995, pex2283p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex2284p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex2287p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002287P+XP000057) No Faces Pay the Aces Poker", 0, layout_pe_poker )
GAMEL(1995, pex2297p, 0, peplus, peplus_poker, peplus_state, pepluss64,ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002297P+XP000053) Jackpot Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2297pa, pex2297p, peplus, peplus_poker, peplus_state, pepluss64,ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002297P+XP000112) Jackpot Poker", 0, layout_pe_poker )
GAMEL(1995, pex2302p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
-GAMEL(1995, pex2303p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002303P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2306p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002306P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2307p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002307P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2308p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002308P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2310p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002310P+XP000112) Triple Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2312p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002312P+XP000112) Triple Bonus Poker Plus", 0, layout_pe_poker )
-GAMEL(1995, pex2314p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002314P+XP000112) Triple Bonus Poker Plus", 0, layout_pe_poker )
-GAMEL(1995, pex2374p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002374P+XP000112) Super Aces Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2376p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002376P+XP000112) Super Double Bonus Poker", 0, layout_pe_poker )
-GAMEL(1995, pex2377p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002377P+XP000112) Super Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2303p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002303P+XP000038) White Hot Aces Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2306p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002306P+XP000038) Triple Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2307p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002307P+XP000038) Triple Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2308p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002308P+XP000038) Triple Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2310p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002310P+XP000038) Triple Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2312p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002312P+XP000038) Triple Bonus Poker Plus", 0, layout_pe_poker )
+GAMEL(1995, pex2314p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002314P+XP000038) Triple Bonus Poker Plus", 0, layout_pe_poker )
+GAMEL(1995, pex2315p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002315P+XP000038) Triple Bonus Poker Plus", 0, layout_pe_poker )
+GAMEL(1995, pex2374p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002374P+XP000038) Super Aces Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2376p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002376P+XP000038) Super Double Bonus Poker", 0, layout_pe_poker )
+GAMEL(1995, pex2377p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002377P+XP000038) Super Double Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2386p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002386P+XP000038) 4 of a Kind Bonus Poker", 0,layout_pe_poker )
GAMEL(1995, pex2412p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002412P+XP000096) Standard Draw with 5 decks (Two Pair or Better)", 0, layout_pe_poker )
GAMEL(1995, pex2419p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002419P+XP000064) Deuces Wild Bonus Poker - French", 0, layout_pe_poker )
@@ -12982,11 +13438,13 @@ GAMEL(1995, pekoc804, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pekoc806, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0806 A5W-A6F) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pekoc818, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0818 A5W-A6F) Joker Poker (Aces or Better)", 0, layout_pe_poker )
GAMEL(1995, pekoc819, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0819 A5W-A6F) Bonus Poker Deluxe", 0, layout_pe_poker )
+GAMEL(1995, pekoc822, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0822 A5W-A6F) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1995, pekoc825, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0825 A59-A7C) White Hot Aces", 0, layout_pe_poker )
/* Superboard : Multi-Poker */
GAMEL(1995, pexm001p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00001P+XMP00003) Multi-Poker", 0, layout_pe_poker )
GAMEL(1995, pexm002p, pexm001p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00002P+XMP00006) Multi-Poker", 0, layout_pe_poker )
+GAMEL(1995, pexm002pa, pexm001p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00002P+XMP00006) Multi-Poker (MGM Grand Detroit Casino)", 0, layout_pe_poker ) /* CAPX2440 needs a redumped */
GAMEL(1995, pexm003p, pexm001p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00003P+XMP00024) Multi-Poker", 0, layout_pe_poker )
GAMEL(1995, pexm004p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00004P+XMP00002) Multi-Poker", 0, layout_pe_poker )
GAMEL(1995, pexm005p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00005P+XMP00004) Multi-Poker", 0, layout_pe_poker )
@@ -13002,6 +13460,7 @@ GAMEL(1995, pexmp013, 0, peplus, peplus_poker, peplus_state, peplussbw,
GAMEL(1995, pexmp017, 0, peplus, peplus_poker, peplus_state, peplussbw,ROT0, "IGT - International Game Technology", "Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2298)", 0, layout_pe_poker )
GAMEL(1995, pexmp017a, pexmp017, peplus, peplus_poker, peplus_state, peplussbw,ROT0, "IGT - International Game Technology", "Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2352)", 0, layout_pe_poker )
GAMEL(1995, pexmp017b, pexmp017, peplus, peplus_poker, peplus_state, peplussbw,ROT0, "IGT - International Game Technology", "Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2426)", 0, layout_pe_poker )
+GAMEL(1995, pexmp022, 0, peplus, peplus_poker, peplus_state, peplussbw,ROT0, "IGT - International Game Technology", "Player's Edge Plus (XMP00022) 5-in-1 Wingboard (CG2346) - Spanish", 0, layout_pe_poker )
GAMEL(1995, pexmp026, 0, peplus, peplus_poker, peplus_state, peplussbw,ROT0, "IGT - International Game Technology", "Player's Edge Plus (XMP00026) 5-in-1 Wingboard (CG2346) - Spanish", 0, layout_pe_poker )
GAMEL(1995, pexmp030, 0, peplus, peplus_poker, peplus_state, peplussbw,ROT0, "IGT - International Game Technology", "Player's Edge Plus (XMP00030) 5-in-1 Wingboard (CG2451)", 0, layout_pe_poker )
GAMEL(1995, pexmp030a, pexmp030, peplus, peplus_poker, peplus_state, peplussbw,ROT0, "IGT - International Game Technology", "Player's Edge Plus (XMP00030) 5-in-1 Wingboard (CG2426)", 0, layout_pe_poker )
diff --git a/src/mame/drivers/peyper.cpp b/src/mame/drivers/peyper.cpp
index befc887a0cd..742112a6816 100644
--- a/src/mame/drivers/peyper.cpp
+++ b/src/mame/drivers/peyper.cpp
@@ -118,17 +118,17 @@ WRITE8_MEMBER( peyper_state::disp_w )
switch (q)
{
case 34: // player indicator lights (7-digit only)
- output_set_indexed_value("led_",1,BIT(a,0)); // PLAYER 1
- output_set_indexed_value("led_",2,BIT(a,1)); // PLAYER 2
- output_set_indexed_value("led_",3,BIT(a,2)); // PLAYER 3
- output_set_indexed_value("led_",4,BIT(a,3)); // PLAYER 4
+ output().set_indexed_value("led_",1,BIT(a,0)); // PLAYER 1
+ output().set_indexed_value("led_",2,BIT(a,1)); // PLAYER 2
+ output().set_indexed_value("led_",3,BIT(a,2)); // PLAYER 3
+ output().set_indexed_value("led_",4,BIT(a,3)); // PLAYER 4
break;
case 35: // units digits show 0
- if (!BIT(a,0)) output_set_indexed_value("dpl_",m_disp_layout[32], 0x3f);
- if (!BIT(a,1)) output_set_indexed_value("dpl_",m_disp_layout[33], 0x3f);
- if (!BIT(a,2)) output_set_indexed_value("dpl_",m_disp_layout[34], 0x3f);
- if (!BIT(a,3)) output_set_indexed_value("dpl_",m_disp_layout[35], 0x3f);
+ if (!BIT(a,0)) output().set_indexed_value("dpl_",m_disp_layout[32], 0x3f);
+ if (!BIT(a,1)) output().set_indexed_value("dpl_",m_disp_layout[33], 0x3f);
+ if (!BIT(a,2)) output().set_indexed_value("dpl_",m_disp_layout[34], 0x3f);
+ if (!BIT(a,3)) output().set_indexed_value("dpl_",m_disp_layout[35], 0x3f);
break;
case 36: // game status indicators
@@ -144,13 +144,13 @@ WRITE8_MEMBER( peyper_state::disp_w )
case 38: // player 2 indicators (6-digit only)
case 39: // player 3 indicators (6-digit only)
case 40: // player 4 indicators (6-digit only)
- output_set_indexed_value("led_",q-36,BIT(a,1)); // player indicator
- output_set_indexed_value("dpl_",q-7,BIT(a,2) ? 6:0); // million led (we show blank or 1 in millions digit)
+ output().set_indexed_value("led_",q-36,BIT(a,1)); // player indicator
+ output().set_indexed_value("dpl_",q-7,BIT(a,2) ? 6:0); // million led (we show blank or 1 in millions digit)
// bit 3, looks like it turns on all the decimal points, reason unknown
break;
default: // display a digit
- output_set_indexed_value("dpl_",q,hex_a);
+ output().set_indexed_value("dpl_",q,hex_a);
}
}
}
diff --git a/src/mame/drivers/pgm.cpp b/src/mame/drivers/pgm.cpp
index 86eea22389e..19390b8dc35 100644
--- a/src/mame/drivers/pgm.cpp
+++ b/src/mame/drivers/pgm.cpp
@@ -215,10 +215,10 @@ WRITE16_MEMBER(pgm_state::pgm_videoram_w)
WRITE16_MEMBER(pgm_state::pgm_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 0x0001);
- coin_counter_w(machine(), 1, data & 0x0002);
- coin_counter_w(machine(), 2, data & 0x0004);
- coin_counter_w(machine(), 3, data & 0x0008);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0002);
+ machine().bookkeeping().coin_counter_w(2, data & 0x0004);
+ machine().bookkeeping().coin_counter_w(3, data & 0x0008);
}
READ16_MEMBER(pgm_state::z80_ram_r)
@@ -4376,7 +4376,7 @@ void pgm_state::expand_colourdata()
while (m_sprite_a_region_size < needed)
m_sprite_a_region_size <<= 1;
- m_sprite_a_region = auto_alloc_array(machine(), UINT8, m_sprite_a_region_size);
+ m_sprite_a_region = std::make_unique<UINT8[]>(m_sprite_a_region_size);
for (cnt = 0 ; cnt < srcsize / 2 ; cnt++)
{
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/piggypas.cpp b/src/mame/drivers/piggypas.cpp
index fbf7122791f..413f84c0bd4 100644
--- a/src/mame/drivers/piggypas.cpp
+++ b/src/mame/drivers/piggypas.cpp
@@ -53,7 +53,7 @@ WRITE8_MEMBER(piggypas_state::ctrl_w)
WRITE8_MEMBER(piggypas_state::mcs51_tx_callback)
{
- output_set_digit_value(m_digit_idx++, BITSWAP8(data,7,6,4,3,2,1,0,5) & 0x7f);
+ output().set_digit_value(m_digit_idx++, BITSWAP8(data,7,6,4,3,2,1,0,5) & 0x7f);
}
static ADDRESS_MAP_START( piggypas_map, AS_PROGRAM, 8, piggypas_state )
diff --git a/src/mame/drivers/pinball2k.cpp b/src/mame/drivers/pinball2k.cpp
index 3d1d69eca16..9dd759a082d 100644
--- a/src/mame/drivers/pinball2k.cpp
+++ b/src/mame/drivers/pinball2k.cpp
@@ -77,11 +77,8 @@ public:
DECLARE_WRITE32_MEMBER(memory_ctrl_w);
DECLARE_READ32_MEMBER(biu_ctrl_r);
DECLARE_WRITE32_MEMBER(biu_ctrl_w);
- DECLARE_WRITE32_MEMBER(bios_ram_w);
DECLARE_READ32_MEMBER(parallel_port_r);
DECLARE_WRITE32_MEMBER(parallel_port_w);
- DECLARE_READ32_MEMBER(ad1847_r);
- DECLARE_WRITE32_MEMBER(ad1847_w);
DECLARE_READ8_MEMBER(io20_r);
DECLARE_WRITE8_MEMBER(io20_w);
DECLARE_READ32_MEMBER(port400_r);
diff --git a/src/mame/drivers/pingpong.cpp b/src/mame/drivers/pingpong.cpp
index a8446aa2f4d..5231f76cd78 100644
--- a/src/mame/drivers/pingpong.cpp
+++ b/src/mame/drivers/pingpong.cpp
@@ -51,8 +51,8 @@ WRITE8_MEMBER(pingpong_state::coin_w)
m_intenable = data & 0x0c;
/* bit 0/1 = coin counters */
- coin_counter_w(machine(), 0,data & 1);
- coin_counter_w(machine(), 1,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
+ machine().bookkeeping().coin_counter_w(1,data & 2);
/* other bits unknown */
}
diff --git a/src/mame/drivers/pipeline.cpp b/src/mame/drivers/pipeline.cpp
index 00296c48b28..0757fd1ae32 100644
--- a/src/mame/drivers/pipeline.cpp
+++ b/src/mame/drivers/pipeline.cpp
@@ -96,7 +96,7 @@ public:
tilemap_t *m_tilemap2;
UINT8 m_vidctrl;
- UINT8 *m_palram;
+ std::unique_ptr<UINT8[]> m_palram;
UINT8 m_toMCU;
UINT8 m_fromMCU;
UINT8 m_ddrA;
@@ -151,13 +151,13 @@ TILE_GET_INFO_MEMBER(pipeline_state::get_tile_info2)
void pipeline_state::video_start()
{
- m_palram=auto_alloc_array(machine(), UINT8, 0x1000);
+ m_palram=std::make_unique<UINT8[]>(0x1000);
m_tilemap1 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(pipeline_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32 );
m_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(pipeline_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,64,32 );
m_tilemap2->set_transparent_pen(0);
save_item(NAME(m_vidctrl));
- save_pointer(NAME(m_palram), 0x1000);
+ save_pointer(NAME(m_palram.get()), 0x1000);
}
UINT32 pipeline_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/pirates.cpp b/src/mame/drivers/pirates.cpp
index 4399e47b6a6..edec5b00e2b 100644
--- a/src/mame/drivers/pirates.cpp
+++ b/src/mame/drivers/pirates.cpp
@@ -302,6 +302,30 @@ ROM_START( pirates )
ROM_LOAD( "s89_49d4.bin", 0x000000, 0x080000, CRC(63a739ec) SHA1(c57f657225e62b3c9c5f0c7185ad7a87794d55f4) )
ROM_END
+ROM_START( piratesb )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code (encrypted) */
+ ROM_LOAD16_BYTE( "U15", 0x00000, 0x80000, CRC(0cfd6415) SHA1(ff5d3631702f64351afa3b7435a6977ae856dff7) )
+ ROM_LOAD16_BYTE( "U16", 0x00001, 0x80000, CRC(98cece02) SHA1(79858623a2b6ae24067e0ba1af009444bafba490) )
+
+ ROM_REGION( 0x200000, "gfx1", 0 ) /* GFX (encrypted) */
+ ROM_LOAD( "U34", 0x000000, 0x080000, CRC(89fda216) SHA1(ea31e750460e67a24972b04171230633eb2b6d9d) )
+ ROM_LOAD( "U35", 0x080000, 0x080000, CRC(40e069b4) SHA1(515d12cbb29bdbf3f3016e5bbe14941209978095) )
+ ROM_LOAD( "U48", 0x100000, 0x080000, CRC(26d78518) SHA1(c293f1194f8ef38241d149cf1db1a511a7fb4936) )
+ ROM_LOAD( "U49", 0x180000, 0x080000, CRC(f31696ea) SHA1(f5ab59e441317b02b615a1cdc6d075c5bdcdea73) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 ) /* GFX (encrypted) */
+ ROM_LOAD( "U69", 0x000000, 0x080000, CRC(c78a276f) SHA1(d5127593e68f9e8f2878803c652a35a1c6d82b2c) )
+ ROM_LOAD( "U70", 0x080000, 0x080000, CRC(9f0bad96) SHA1(b8f910aa259192e261815392f5d7c9c7dabe0b4d) )
+ ROM_LOAD( "U71", 0x100000, 0x080000, CRC(0bb7c816) SHA1(bc786b6d04ae964f0ea5d6dd314fd7b18f8872e8) ) // 1 bit different, is one of them bad?
+ ROM_LOAD( "U72", 0x180000, 0x080000, CRC(1c41bd2c) SHA1(fba264a3c195f303337223a74cbad5eec5c457ec) )
+
+ ROM_REGION( 0x080000, "oki", 0) /* OKI samples (encrypted) */
+ ROM_LOAD( "U31", 0x000000, 0x080000, CRC(63a739ec) SHA1(c57f657225e62b3c9c5f0c7185ad7a87794d55f4) )
+ROM_END
+
+
+
+
ROM_START( genix )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code (encrypted) */
ROM_LOAD16_BYTE( "1.15", 0x00000, 0x80000, CRC(d26abfb0) SHA1(4a89ba7504f86cb612796c376f359ab61ec3d902) )
@@ -443,8 +467,9 @@ DRIVER_INIT_MEMBER(pirates_state,genix)
m_maincpu->space(AS_PROGRAM).install_read_handler(0x109e98, 0x109e9b, read16_delegate(FUNC(pirates_state::genix_prot_r),this));
}
-
/* GAME */
-GAME( 1994, pirates, 0, pirates, pirates, pirates_state, pirates, 0, "NIX", "Pirates", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, genix, 0, pirates, pirates, pirates_state, genix, 0, "NIX", "Genix Family", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pirates, 0, pirates, pirates, pirates_state, pirates, 0, "NIX", "Pirates (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, piratesb, pirates, pirates, pirates, pirates_state, pirates, 0, "NIX", "Pirates (set 2)", MACHINE_SUPPORTS_SAVE ) // shows 'Copyright 1995' instead of (c)1994 Nix, but isn't unprotected, various changes to the names in the credis + a few other minor alterations
+
+GAME( 1994, genix, 0, pirates, pirates, pirates_state, genix, 0, "NIX", "Genix Family", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/pkscram.cpp b/src/mame/drivers/pkscram.cpp
index fea75a9f05c..f7a32364b5e 100644
--- a/src/mame/drivers/pkscram.cpp
+++ b/src/mame/drivers/pkscram.cpp
@@ -111,7 +111,7 @@ WRITE16_MEMBER(pkscram_state::pkscramble_output_w)
m_interrupt_line_active = 0;
}
- coin_counter_w(machine(), 0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
}
static ADDRESS_MAP_START( pkscramble_map, AS_PROGRAM, 16, pkscram_state )
diff --git a/src/mame/drivers/playmark.cpp b/src/mame/drivers/playmark.cpp
index 918e3e26f7f..0506cfda83b 100644
--- a/src/mame/drivers/playmark.cpp
+++ b/src/mame/drivers/playmark.cpp
@@ -74,8 +74,8 @@ WRITE16_MEMBER(playmark_state::coinctrl_w)
{
if (ACCESSING_BITS_8_15)
{
- coin_counter_w(machine(), 0, data & 0x0100);
- coin_counter_w(machine(), 1, data & 0x0200);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0100);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0200);
}
if (data & 0xfcff)
logerror("Writing %04x to unknown coin control bits\n", data);
@@ -93,10 +93,10 @@ WRITE16_MEMBER(playmark_state::wbeachvl_coin_eeprom_w)
if (ACCESSING_BITS_0_7)
{
/* bits 0-3 are coin counters? (only 0 used?) */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 2, data & 0x04);
- coin_counter_w(machine(), 3, data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(2, data & 0x04);
+ machine().bookkeeping().coin_counter_w(3, data & 0x08);
/* bits 5-7 control EEPROM */
m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
@@ -124,8 +124,8 @@ WRITE16_MEMBER(playmark_state::hotmind_coin_eeprom_w)
}
machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x08) ? 0x80 : 0);
- coin_counter_w(machine(), 0, data & 0x20); /* Coin In counter - transistor driven */
- coin_counter_w(machine(), 1, data & 0x40); /* Token/Ticket Out counter - transistor driven */
+ machine().bookkeeping().coin_counter_w(0, data & 0x20); /* Coin In counter - transistor driven */
+ machine().bookkeeping().coin_counter_w(1, data & 0x40); /* Token/Ticket Out counter - transistor driven */
m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE);
m_eeprom->di_write((data & 4) >> 2);
@@ -152,15 +152,15 @@ WRITE16_MEMBER(playmark_state::luckboomh_dispenser_w)
}
machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x08) ? 0x80 : 0);
- coin_counter_w(machine(), 0, data & 0x20); /* Coin In counter - transistor driven */
- coin_counter_w(machine(), 1, data & 0x40); /* Token/Ticket Out counter - transistor driven */
+ machine().bookkeeping().coin_counter_w(0, data & 0x20); /* Coin In counter - transistor driven */
+ machine().bookkeeping().coin_counter_w(1, data & 0x40); /* Token/Ticket Out counter - transistor driven */
}
}
WRITE16_MEMBER(playmark_state::hrdtimes_coin_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
WRITE16_MEMBER(playmark_state::playmark_snd_command_w)
diff --git a/src/mame/drivers/pluto5.cpp b/src/mame/drivers/pluto5.cpp
index 2d8aa4366b6..f231c634f8e 100644
--- a/src/mame/drivers/pluto5.cpp
+++ b/src/mame/drivers/pluto5.cpp
@@ -189,7 +189,7 @@ public:
{ }
UINT32* m_cpuregion;
- UINT32* m_mainram;
+ std::unique_ptr<UINT32[]> m_mainram;
DECLARE_READ32_MEMBER(pluto5_mem_r);
DECLARE_WRITE32_MEMBER(pluto5_mem_w);
@@ -246,7 +246,7 @@ INPUT_PORTS_END
void pluto5_state::machine_start()
{
m_cpuregion = (UINT32*)memregion( "maincpu" )->base();
- m_mainram = (UINT32*)auto_alloc_array_clear(machine(), UINT32, 0x10000);
+ m_mainram = make_unique_clear<UINT32[]>(0x10000);
}
diff --git a/src/mame/drivers/plygonet.cpp b/src/mame/drivers/plygonet.cpp
index a2e66a140bc..83574fc000b 100644
--- a/src/mame/drivers/plygonet.cpp
+++ b/src/mame/drivers/plygonet.cpp
@@ -108,8 +108,8 @@ WRITE8_MEMBER(polygonet_state::polygonet_sys_w)
D17 = COIN2 - Coin counter 2
D16 = COIN1 - Coin counter 1
*/
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
if (~data & 0x20)
m_maincpu->set_input_line(M68K_IRQ_5, CLEAR_LINE);
diff --git a/src/mame/drivers/pmi80.cpp b/src/mame/drivers/pmi80.cpp
index b82db49ccde..d58f538892a 100644
--- a/src/mame/drivers/pmi80.cpp
+++ b/src/mame/drivers/pmi80.cpp
@@ -75,7 +75,7 @@ WRITE8_MEMBER( pmi80_state::leds_w )
if (m_ledready)
{
m_ledready = FALSE;
- output_set_digit_value(m_keyrow^0xff, data^0xff);
+ output().set_digit_value(m_keyrow^0xff, data^0xff);
}
}
diff --git a/src/mame/drivers/polepos.cpp b/src/mame/drivers/polepos.cpp
index 48d1da026d4..aeb11fb3abd 100644
--- a/src/mame/drivers/polepos.cpp
+++ b/src/mame/drivers/polepos.cpp
@@ -351,15 +351,15 @@ CUSTOM_INPUT_MEMBER(polepos_state::auto_start_r)
WRITE8_MEMBER(polepos_state::out_0)
{
// no start lamps in pole position
-// set_led_status(machine(), 1,data & 1);
-// set_led_status(machine(), 0,data & 2);
- coin_counter_w(machine(), 1,~data & 4);
- coin_counter_w(machine(), 0,~data & 8);
+// output().set_led_value(1,data & 1);
+// output().set_led_value(0,data & 2);
+ machine().bookkeeping().coin_counter_w(1,~data & 4);
+ machine().bookkeeping().coin_counter_w(0,~data & 8);
}
WRITE8_MEMBER(polepos_state::out_1)
{
- coin_lockout_global_w(machine(), data & 1);
+ machine().bookkeeping().coin_lockout_global_w(data & 1);
}
READ8_MEMBER(polepos_state::namco_52xx_rom_r)
diff --git a/src/mame/drivers/poly880.cpp b/src/mame/drivers/poly880.cpp
index 26917bcd25e..6dbf844bb3a 100644
--- a/src/mame/drivers/poly880.cpp
+++ b/src/mame/drivers/poly880.cpp
@@ -49,7 +49,7 @@ void poly880_state::update_display()
for (i = 0; i < 8; i++)
{
- if (BIT(m_digit, i)) output_set_digit_value(7 - i, m_segment);
+ if (BIT(m_digit, i)) output().set_digit_value(7 - i, m_segment);
}
}
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/pong.cpp b/src/mame/drivers/pong.cpp
index 4f76c55871e..358b7cb35ea 100644
--- a/src/mame/drivers/pong.cpp
+++ b/src/mame/drivers/pong.cpp
@@ -209,22 +209,22 @@ public:
NETDEV_ANALOG_CALLBACK_MEMBER(serve_cb)
{
- output_set_value("serve_led", (data < 3.5) ? 1 : 0);
+ output().set_value("serve_led", (data < 3.5) ? 1 : 0);
}
NETDEV_ANALOG_CALLBACK_MEMBER(credit1_cb)
{
- output_set_value("lamp_credit1", (data < 2.0) ? 0 : 1);
+ output().set_value("lamp_credit1", (data < 2.0) ? 0 : 1);
}
NETDEV_ANALOG_CALLBACK_MEMBER(credit2_cb)
{
- output_set_value("lamp_credit2", (data < 2.0) ? 0 : 1);
+ output().set_value("lamp_credit2", (data < 2.0) ? 0 : 1);
}
NETDEV_ANALOG_CALLBACK_MEMBER(coin_counter_cb)
{
- coin_counter_w(machine(), 0, (data > 2.0) ? 0 : 1);
+ machine().bookkeeping().coin_counter_w(0, (data > 2.0) ? 0 : 1);
}
DECLARE_INPUT_CHANGED_MEMBER(cb_free_play)
diff --git a/src/mame/drivers/poolshrk.cpp b/src/mame/drivers/poolshrk.cpp
index 3a49c79601b..195de4b9b35 100644
--- a/src/mame/drivers/poolshrk.cpp
+++ b/src/mame/drivers/poolshrk.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -55,9 +55,9 @@ WRITE8_MEMBER(poolshrk_state::da_latch_w)
WRITE8_MEMBER(poolshrk_state::led_w)
{
if (offset & 2)
- set_led_status(machine(), 0, offset & 1);
+ output().set_led_value(0, offset & 1);
if (offset & 4)
- set_led_status(machine(), 1, offset & 1);
+ output().set_led_value(1, offset & 1);
}
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/portrait.cpp b/src/mame/drivers/portrait.cpp
index 0317c520079..cbf6bbf80d4 100644
--- a/src/mame/drivers/portrait.cpp
+++ b/src/mame/drivers/portrait.cpp
@@ -95,16 +95,16 @@ WRITE8_MEMBER(portrait_state::ctrl_w)
{
/* bits 4 and 5 are unknown */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 2, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(2, data & 0x04);
/* the 2 lamps near the camera */
- set_led_status(machine(), 0, data & 0x08);
- set_led_status(machine(), 1, data & 0x40);
+ output().set_led_value(0, data & 0x08);
+ output().set_led_value(1, data & 0x40);
/* shows the black and white photo from the camera */
- output_set_value("photo", (data >> 7) & 1);
+ output().set_value("photo", (data >> 7) & 1);
}
WRITE8_MEMBER(portrait_state::positive_scroll_w)
@@ -325,7 +325,7 @@ ROM_START( portraita )
ROM_LOAD( "port_w.bin", 0x0000, 0x0800, CRC(d3a4e950) SHA1(0a399d43c7690d568874f3b1d55135f803fc223f) )
ROM_LOAD( "port_ma.bin", 0x0800, 0x0800, CRC(ee242e4f) SHA1(fb67e0d136927e04f4fa819f684c97b0d52ee48c) )
- ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x20000, "gfx1", 0 )
ROM_LOAD( "port_00.a1", 0x00000, 0x2000, CRC(eb3e1c12) SHA1(2d38b66f52546b40553244c8a5c961279559f5b6) ) /*bit plane 1*/
ROM_LOAD( "port_10.b1", 0x02000, 0x2000, CRC(0f44e377) SHA1(1955f9f4deab2166f637f43c1f326bd65fc90f6a) ) /*bit plane 1*/
ROM_LOAD( "port_02.d1", 0x04000, 0x2000, CRC(bd93a3f9) SHA1(9cb479b8840cafd6043ff0cb9d5ca031dcd332ba) ) /*bit plane 2*/
diff --git a/src/mame/drivers/powerbal.cpp b/src/mame/drivers/powerbal.cpp
index c9137bc4667..8c92483c44c 100644
--- a/src/mame/drivers/powerbal.cpp
+++ b/src/mame/drivers/powerbal.cpp
@@ -53,7 +53,7 @@ WRITE16_MEMBER(powerbal_state::magicstk_coin_eeprom_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
m_eeprom->cs_write((data & 8) ? ASSERT_LINE : CLEAR_LINE);
m_eeprom->di_write((data & 2) >> 1);
diff --git a/src/mame/drivers/ppmast93.cpp b/src/mame/drivers/ppmast93.cpp
index 172a279d169..b3d2bc556fb 100644
--- a/src/mame/drivers/ppmast93.cpp
+++ b/src/mame/drivers/ppmast93.cpp
@@ -194,8 +194,8 @@ WRITE8_MEMBER(ppmast93_state::bgram_w)
WRITE8_MEMBER(ppmast93_state::port4_w)
{
- coin_counter_w(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 1, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(1, data & 0x10);
membank("cpubank")->set_entry(data & 0x07);
}
diff --git a/src/mame/drivers/prestige.cpp b/src/mame/drivers/prestige.cpp
index e795a8b1d42..e8c0c1200fb 100644
--- a/src/mame/drivers/prestige.cpp
+++ b/src/mame/drivers/prestige.cpp
@@ -95,6 +95,7 @@ public:
m_ram(*this, RAM_TAG),
m_cart(*this, "cartslot"),
m_keyboard(*this, "KEY"),
+ m_cart_type(*this, "CART_TYPE"),
m_bank1(*this, "bank1"),
m_bank2(*this, "bank2"),
m_bank3(*this, "bank3"),
@@ -106,6 +107,7 @@ public:
required_device<ram_device> m_ram;
required_device<generic_slot_device> m_cart;
required_ioport_array<16> m_keyboard;
+ required_ioport m_cart_type;
required_memory_bank m_bank1;
required_memory_bank m_bank2;
required_memory_bank m_bank3;
@@ -165,14 +167,14 @@ WRITE8_MEMBER( prestige_state::bankswitch_w )
break;
case 1:
- if (!(m_bank[5] & 0x01) && (m_bank[5] & 0x02) && m_cart->exists())
+ if (!(m_bank[5] & 0x01) && (m_bank[5] & 0x02) && (m_cart_type->read() == 0x02 || m_cart->exists()))
m_bank2->set_entry(0x40 + (data & 0x1f));
else
m_bank2->set_entry(data & 0x3f);
break;
case 2:
- if (!(m_bank[5] & 0x01) && (m_bank[5] & 0x04) && m_cart->exists())
+ if (!(m_bank[5] & 0x01) && (m_bank[5] & 0x04) && (m_cart_type->read() == 0x02 || m_cart->exists()))
m_bank3->set_entry(0x40 + (data & 0x1f));
else
m_bank3->set_entry(data & 0x3f);
@@ -194,7 +196,7 @@ WRITE8_MEMBER( prestige_state::bankswitch_w )
{
program.install_ram(0x8000, 0xbfff, m_vram);
}
- else if (ioport("CART_TYPE")->read() == 0x01)
+ else if (m_cart_type->read() == 0x01)
{
//cartridge memory is writable
if (data & 0x02)
@@ -468,9 +470,10 @@ INPUT_PORTS_END
INPUT_PORTS_START( glcolor )
PORT_START("CART_TYPE")
- PORT_CONFNAME( 0x01, 0x00, "Cartridge Type" )
+ PORT_CONFNAME( 0x03, 0x02, "Cartridge Type" )
PORT_CONFSETTING( 0x00, "ROM" )
PORT_CONFSETTING( 0x01, "RAM" )
+ PORT_CONFSETTING( 0x02, "Internal" )
PORT_START("KEY.0")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
@@ -622,7 +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();
+ 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());
@@ -714,7 +725,7 @@ static MACHINE_CONFIG_START( prestige_base, prestige_state )
MCFG_CPU_IO_MAP(prestige_io)
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(prestige_state,prestige_int_ack)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", prestige_state, irq_timer, attotime::from_msec(10))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", prestige_state, irq_timer, attotime::from_hz(200))
/* video hardware */
MCFG_SCREEN_ADD("screen", LCD)
@@ -754,6 +765,7 @@ static MACHINE_CONFIG_DERIVED( glcolor, prestige_base )
MCFG_PALETTE_INIT_OWNER(prestige_state, glcolor)
MCFG_SOFTWARE_LIST_ADD("cart_list", "glcolor")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("snotec_cart", "snotec")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( glmcolor, glcolor )
@@ -761,6 +773,12 @@ static MACHINE_CONFIG_DERIVED( glmcolor, glcolor )
MCFG_CPU_IO_MAP(prestige_io)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( snotec, glcolor )
+ MCFG_SOFTWARE_LIST_REMOVE("cart_list")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "snotec")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("glcolor_cart", "glcolor")
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( prestige, prestige_base )
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl6000sl_cart", "gl6000sl")
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
@@ -814,6 +832,16 @@ ROM_START( glscolor )
ROM_LOAD( "27-5488-00.u5", 0x00000, 0x080000, CRC(e6cf7702) SHA1(ce40418a7777b331bf8c4c881d51732aeb384582) ) // identical to 'Genius Leader Color'
ROM_END
+ROM_START( snotec )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "27-5616-01.u6", 0x00000, 0x080000, CRC(74093f5b) SHA1(3495b07e297315051888261d608680513a05c08b) )
+ROM_END
+
+ROM_START( snotecex )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "27-5758-00.u6", 0x00000, 0x080000, CRC(aac672be) SHA1(6ac09c3ae8c1c987072b2272cfcf34d9083431cb) )
+ROM_END
+
ROM_START( glmcolor )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "27-5673-00.u6", 0x00000, 0x100000, CRC(c4245392) SHA1(bb651aaf11b75f4155c0a0106de9394018110cc7) )
@@ -870,6 +898,8 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1994, glcolor, 0, 0, glcolor, glcolor, driver_device, 0, "VTech", "Genius Leader Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
COMP( 1994, glscolor, glcolor, 0, glcolor, glcolor, driver_device, 0, "VTech", "Genius Leader Super Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1995, snotec, 0, 0, snotec, glcolor, driver_device, 0, "Bandai", "Super Note Club (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1996, snotecex, 0, 0, snotec, glcolor, driver_device, 0, "Bandai", "Super Note Club EX (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
COMP( 1996, glmcolor, 0, 0, glmcolor, glmcolor, driver_device, 0, "VTech", "Genius Leader Magic Color (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
COMP( 1997, gl6000sl, 0, 0, gl6000sl, prestige, driver_device, 0, "VTech", "Genius Leader 6000SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
COMP( 1998, gl7007sl, 0, 0, gl7007sl, prestige, driver_device, 0, "VTech", "Genius Leader 7007SL (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/pro80.cpp b/src/mame/drivers/pro80.cpp
index 68672c6af7b..54b519cfb0f 100644
--- a/src/mame/drivers/pro80.cpp
+++ b/src/mame/drivers/pro80.cpp
@@ -58,12 +58,12 @@ WRITE8_MEMBER( pro80_state::segment_w )
{
if (m_digit_sel)
{
- if (!BIT(m_digit_sel, 0)) output_set_digit_value(0, data);
- if (!BIT(m_digit_sel, 1)) output_set_digit_value(1, data);
- if (!BIT(m_digit_sel, 2)) output_set_digit_value(2, data);
- if (!BIT(m_digit_sel, 3)) output_set_digit_value(3, data);
- if (!BIT(m_digit_sel, 4)) output_set_digit_value(4, data);
- if (!BIT(m_digit_sel, 5)) output_set_digit_value(5, data);
+ if (!BIT(m_digit_sel, 0)) output().set_digit_value(0, data);
+ if (!BIT(m_digit_sel, 1)) output().set_digit_value(1, data);
+ if (!BIT(m_digit_sel, 2)) output().set_digit_value(2, data);
+ if (!BIT(m_digit_sel, 3)) output().set_digit_value(3, data);
+ if (!BIT(m_digit_sel, 4)) output().set_digit_value(4, data);
+ if (!BIT(m_digit_sel, 5)) output().set_digit_value(5, data);
m_cass->output( BIT(data, 6) ? -1.0 : +1.0);
m_digit_sel = 0;
diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp
index 151e5585909..9c7a5cd75ef 100644
--- a/src/mame/drivers/proconn.cpp
+++ b/src/mame/drivers/proconn.cpp
@@ -50,11 +50,10 @@ public:
m_z80pio_5(*this, "z80pio_5"),
m_z80ctc(*this, "z80ctc"),
m_z80sio(*this, "z80sio"),
- m_ay(*this, "aysnd")
+ m_ay(*this, "aysnd"),
+ m_meters(*this, "meters")
{ }
- optional_device<s16lf01_t> m_vfd;
-
DECLARE_WRITE8_MEMBER( ay_w0 ) { m_ay->address_data_w(space, 0, data); }
DECLARE_WRITE8_MEMBER( ay_w1 ) { m_ay->address_data_w(space, 1, data); }
@@ -179,6 +178,7 @@ public:
protected:
// devices
+ optional_device<s16lf01_t> m_vfd;
required_device<cpu_device> m_maincpu;
required_device<z80pio_device> m_z80pio_1;
required_device<z80pio_device> m_z80pio_2;
@@ -188,6 +188,8 @@ protected:
required_device<z80ctc_device> m_z80ctc;
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);
@@ -290,12 +292,11 @@ READ16_MEMBER(proconn_state::serial_receive)
WRITE8_MEMBER(proconn_state::meter_w)
{
- int i;
- for (i=0; i<8; i++)
+ for (int i=0; i<8; i++)
{
if ( data & (1 << i) )
{
- MechMtr_update(i, data & (1 << i) );
+ m_meters->update(i, data & (1 << i) );
m_meter = data;
}
}
@@ -378,6 +379,9 @@ 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/progolf.cpp b/src/mame/drivers/progolf.cpp
index bdaf0032601..213be37d7aa 100644
--- a/src/mame/drivers/progolf.cpp
+++ b/src/mame/drivers/progolf.cpp
@@ -81,7 +81,7 @@ public:
UINT8 m_char_pen;
UINT8 m_char_pen_vreg;
- UINT8 *m_fg_fb;
+ std::unique_ptr<UINT8[]> m_fg_fb;
UINT8 m_scrollx_hi;
UINT8 m_scrollx_lo;
UINT8 m_gfx_switch;
@@ -117,11 +117,11 @@ void progolf_state::video_start()
m_scrollx_hi = 0;
m_scrollx_lo = 0;
- m_fg_fb = auto_alloc_array(machine(), UINT8, 0x2000*8);
+ m_fg_fb = std::make_unique<UINT8[]>(0x2000*8);
save_item(NAME(m_char_pen));
save_item(NAME(m_char_pen_vreg));
- save_pointer(NAME(m_fg_fb), 0x2000*8);
+ save_pointer(NAME(m_fg_fb.get()), 0x2000*8);
save_item(NAME(m_scrollx_hi));
save_item(NAME(m_scrollx_lo));
save_item(NAME(m_gfx_switch));
diff --git a/src/mame/drivers/prophet600.cpp b/src/mame/drivers/prophet600.cpp
new file mode 100644
index 00000000000..b422edc2dd0
--- /dev/null
+++ b/src/mame/drivers/prophet600.cpp
@@ -0,0 +1,301 @@
+// license:BSD-3-Clause
+// copyright-holders:R. Belmont
+/***************************************************************************
+
+ prophet600.cpp - Sequential Circuits Prophet-600, designed by Dave Smith
+
+ This was the first commercial synthesizer with built-in MIDI.
+
+ Skeleton driver by R. Belmont
+
+ Hardware:
+ CPU: Z80 CPU + 8253 PIT + 6850 UART
+
+ Memory map:
+ 0x0000-0x1fff: ROM
+ 0x2000-0x27ff: RAM 1
+ 0x3000-0x37ff: RAM 2
+ 0x4000-0x4001: DAC for CV/gate drive
+ 0x6000-0x6001: 6850 writes
+ 0xe000-0xe001: 6850 reads
+
+ I/O map:
+ 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
+ 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
+
+
+ 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"
+#include "machine/clock.h"
+#include "cpu/z80/z80.h"
+#include "bus/midi/midi.h"
+#include "machine/6850acia.h"
+#include "machine/pit8253.h"
+
+#include "prophet600.lh"
+
+#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_PModOscB, CV_VolA, CV_VolB, CV_MasterVol, CV_APW, CV_ExtFilter, CV_Resonance, CV_BPW,
+
+ CV_MAX
+};
+
+class prophet600_state : public driver_device
+{
+public:
+ prophet600_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, MAINCPU_TAG),
+ m_acia(*this, UART_TAG),
+ m_dac(0),
+ m_scanrow(0),
+ m_comparitor(0),
+ m_nmi_gate(false)
+ { }
+
+ required_device<cpu_device> m_maincpu;
+ required_device<acia6850_device> m_acia;
+
+ DECLARE_DRIVER_INIT(prophet600);
+
+ DECLARE_WRITE_LINE_MEMBER( pit_ch0_tick_w );
+ DECLARE_WRITE_LINE_MEMBER( pit_ch2_tick_w );
+ DECLARE_WRITE_LINE_MEMBER( acia_irq_w );
+ DECLARE_WRITE_LINE_MEMBER( acia_clock_w );
+
+ DECLARE_WRITE8_MEMBER(dac_w);
+ DECLARE_WRITE8_MEMBER(scanrow_w);
+ DECLARE_WRITE8_MEMBER(led_w);
+ DECLARE_READ8_MEMBER(scan_r);
+ DECLARE_WRITE8_MEMBER(potmux_w);
+ DECLARE_READ8_MEMBER(comparitor_r);
+ DECLARE_WRITE8_MEMBER(mask_w);
+ DECLARE_WRITE8_MEMBER(cv_w);
+ DECLARE_WRITE8_MEMBER(gate_w);
+
+private:
+ UINT16 m_dac;
+ UINT8 m_scanrow;
+ UINT8 m_comparitor;
+
+ bool m_nmi_gate;
+
+ // gates
+ bool m_ASaw, m_ATri, m_Sync, m_BSaw, m_BTri, m_PModFA, m_PModFil;
+
+ // control voltages
+ UINT16 m_CVs[CV_MAX];
+};
+
+WRITE_LINE_MEMBER( prophet600_state::pit_ch0_tick_w )
+{
+ m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
+}
+
+WRITE_LINE_MEMBER( prophet600_state::pit_ch2_tick_w )
+{
+ m_comparitor &= ~0x04;
+ m_comparitor |= (state == ASSERT_LINE) ? 0x04 : 0x00;
+}
+
+WRITE_LINE_MEMBER( prophet600_state::acia_irq_w )
+{
+ if (!m_nmi_gate)
+ {
+ m_maincpu->set_input_line(INPUT_LINE_NMI, state);
+ }
+}
+
+WRITE_LINE_MEMBER( prophet600_state::acia_clock_w )
+{
+ m_acia->write_txc(state);
+ m_acia->write_rxc(state);
+}
+
+WRITE8_MEMBER( prophet600_state::dac_w )
+{
+ if (offset)
+ {
+ m_dac &= 0xff;
+ m_dac |= (data<<8);
+ return;
+ }
+
+ m_dac &= 0xff00;
+ m_dac |= data;
+}
+
+// also selects LEDs and keyboard keys to check
+WRITE8_MEMBER(prophet600_state::scanrow_w)
+{
+ m_scanrow = data;
+}
+
+// scanrow 0x10 = LEDs, 0x20 = 7-segment #1, 0x40 = 7-segment #2
+WRITE8_MEMBER(prophet600_state::led_w)
+{
+ if (m_scanrow & 0x10)
+ {
+ // LEDs in row 0x10 are Seq1=0, Seq2=1, ArpUD=2, ArpAssign=3, Preset=4, Record=5, ToTape=6, FromTape=7
+ }
+ else if (m_scanrow & 0x20)
+ {
+ output().set_digit_value(0, data);
+ }
+ else if (m_scanrow & 0x40)
+ {
+ output().set_digit_value(1, data);
+ }
+}
+
+READ8_MEMBER(prophet600_state::scan_r)
+{
+ return 0;
+}
+
+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
+ {
+ m_comparitor |= 0x04;
+ }
+ else
+ {
+ m_comparitor &= ~0x04;
+ }
+
+// printf("8253 gate = %x\n", data & 0x02);
+}
+
+WRITE8_MEMBER(prophet600_state::cv_w)
+{
+ int cvnum = data & 7;
+
+ if (!(cvnum & 0x08)) m_CVs[cvnum] = m_dac;
+ if (!(cvnum & 0x10)) m_CVs[cvnum+8] = m_dac;
+ if (!(cvnum & 0x20)) m_CVs[cvnum+16] = m_dac;
+ if (!(cvnum & 0x40)) m_CVs[cvnum+24] = m_dac;
+}
+
+WRITE8_MEMBER(prophet600_state::gate_w)
+{
+ m_ASaw = (data & 0x01);
+ m_ATri = (data & 0x02);
+ m_Sync = (data & 0x04);
+ m_BSaw = (data & 0x08);
+ m_BTri = (data & 0x10);
+ m_PModFA = (data & 0x20);
+ m_PModFil = (data & 0x40);
+}
+
+/* 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,
+ Speed,APW,PModFilEnv,LFOFreq,PModOscB,LFOAmt,FreqB,FreqA,FreqBFine
+*/
+WRITE8_MEMBER(prophet600_state::potmux_w)
+{
+}
+
+READ8_MEMBER(prophet600_state::comparitor_r)
+{
+// m_comparitor ^= 0x04;
+ return m_comparitor;
+}
+
+static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, prophet600_state )
+ AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION(MAINCPU_TAG, 0)
+ AM_RANGE(0x2000, 0x27ff) AM_RAM
+ AM_RANGE(0x3000, 0x37ff) AM_RAM
+ AM_RANGE(0x4000, 0x4001) AM_WRITE(dac_w)
+ AM_RANGE(0x6000, 0x6000) AM_DEVWRITE(UART_TAG, acia6850_device, control_w)
+ AM_RANGE(0x6001, 0x6001) AM_DEVWRITE(UART_TAG, acia6850_device, data_w)
+ AM_RANGE(0xe000, 0xe000) AM_DEVREAD(UART_TAG, acia6850_device, status_r)
+ AM_RANGE(0xe001, 0xe001) AM_DEVREAD(UART_TAG, acia6850_device, data_r)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( io_map, AS_IO, 8, prophet600_state )
+ AM_RANGE(0x00, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE(PIT_TAG, pit8253_device, read, write)
+ AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_WRITE(scanrow_w)
+ AM_RANGE(0x09, 0x09) AM_MIRROR(0xff00) AM_READWRITE(comparitor_r, led_w)
+ AM_RANGE(0x0a, 0x0a) AM_MIRROR(0xff00) AM_READWRITE(scan_r, potmux_w)
+ AM_RANGE(0x0b, 0x0b) AM_MIRROR(0xff00) AM_WRITE(gate_w)
+ AM_RANGE(0x0d, 0x0d) AM_MIRROR(0xff00) AM_WRITE(cv_w)
+ AM_RANGE(0x0e, 0x0e) AM_MIRROR(0xff00) AM_WRITE(mask_w)
+ADDRESS_MAP_END
+
+DRIVER_INIT_MEMBER(prophet600_state, prophet600)
+{
+}
+
+// master crystal is 8 MHz, all clocks derived from there
+static MACHINE_CONFIG_START( prophet600, prophet600_state )
+ MCFG_CPU_ADD(MAINCPU_TAG, Z80, XTAL_8MHz/2)
+ MCFG_CPU_PROGRAM_MAP(cpu_map)
+ MCFG_CPU_IO_MAP(io_map)
+
+ MCFG_DEFAULT_LAYOUT( layout_prophet600 )
+
+ MCFG_DEVICE_ADD(PIT_TAG, PIT8253, XTAL_8MHz/4)
+ MCFG_PIT8253_CLK0(XTAL_8MHz/4)
+ 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_DEVICE_ADD(UART_TAG, ACIA6850, 0)
+ MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(prophet600_state, acia_irq_w))
+
+ MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
+ MCFG_MIDI_RX_HANDLER(DEVWRITELINE(UART_TAG, acia6850_device, write_rxd))
+
+ MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout")
+
+ 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
+
+static INPUT_PORTS_START( prophet600 )
+INPUT_PORTS_END
+
+ROM_START( prpht600 )
+ ROM_REGION(0x2000, MAINCPU_TAG, 0)
+ ROM_LOAD( "p600.bin", 0x000000, 0x002000, CRC(78e3f048) SHA1(61548b6de3d9b5c0ae76f8e751ece0b57de17118) )
+ROM_END
+
+CONS( 1983, prpht600, 0, 0, prophet600, prophet600, prophet600_state, prophet600, "Sequential Circuits", "Prophet-600", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )
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 e877ae3d52e..9efaaef9007 100644
--- a/src/mame/drivers/psion.cpp
+++ b/src/mame/drivers/psion.cpp
@@ -472,16 +472,16 @@ void psion_state::machine_start()
if (m_ram_bank_count)
{
- m_paged_ram = auto_alloc_array(machine(), UINT8, m_ram_bank_count * 0x4000);
- memset(m_paged_ram, 0, sizeof(UINT8) * (m_ram_bank_count * 0x4000));
- membank("rambank")->configure_entries(0, m_ram_bank_count, m_paged_ram, 0x4000);
+ m_paged_ram = std::make_unique<UINT8[]>(m_ram_bank_count * 0x4000);
+ memset(m_paged_ram.get(), 0, sizeof(UINT8) * (m_ram_bank_count * 0x4000));
+ membank("rambank")->configure_entries(0, m_ram_bank_count, m_paged_ram.get(), 0x4000);
membank("rambank")->set_entry(0);
}
m_nvram1->set_base(m_sys_register, 0xc0);
m_nvram2->set_base(m_ram, m_ram.bytes());
if (m_nvram3)
- m_nvram3->set_base(m_paged_ram, m_ram_bank_count * 0x4000);
+ m_nvram3->set_base(m_paged_ram.get(), m_ram_bank_count * 0x4000);
save_item(NAME(m_kb_counter));
save_item(NAME(m_enable_nmi));
@@ -494,7 +494,7 @@ void psion_state::machine_start()
save_item(NAME(m_port2));
save_item(NAME(m_port6_ddr));
save_item(NAME(m_port6));
- save_pointer(NAME(m_paged_ram), m_ram_bank_count * 0x4000);
+ save_pointer(NAME(m_paged_ram.get()), m_ram_bank_count * 0x4000);
}
void psion_state::machine_reset()
@@ -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 63353a90ef9..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"
@@ -387,8 +405,8 @@ WRITE8_MEMBER(psychic5_state::bombsa_bankselect_w)
WRITE8_MEMBER(psychic5_state::psychic5_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
// bit 7 toggles flip screen
if (data & 0x80)
@@ -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/pturn.cpp b/src/mame/drivers/pturn.cpp
index e05fcb4bcd6..82d6fd2d033 100644
--- a/src/mame/drivers/pturn.cpp
+++ b/src/mame/drivers/pturn.cpp
@@ -120,8 +120,6 @@ public:
DECLARE_WRITE8_MEMBER(bgbank_w);
DECLARE_WRITE8_MEMBER(flip_w);
DECLARE_READ8_MEMBER(custom_r);
- DECLARE_READ8_MEMBER(protection_r);
- DECLARE_READ8_MEMBER(protection2_r);
TILE_GET_INFO_MEMBER(get_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
diff --git a/src/mame/drivers/pve500.cpp b/src/mame/drivers/pve500.cpp
index 365bba01138..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)
@@ -309,7 +308,7 @@ printf("io_expander_w: PORTA (io_SC=%02X)\n", data);
for (int j=0; j<8; j++){
if (!BIT(io_SC,j)){
for (int i=0; i<4; i++)
- output_set_digit_value(8*swap[i] + j, LD_data[i]);
+ output().set_digit_value(8*swap[i] + j, LD_data[i]);
}
}
break;
@@ -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 61513abaf0b..64c5d769861 100644
--- a/src/mame/drivers/px4.cpp
+++ b/src/mame/drivers/px4.cpp
@@ -63,13 +63,11 @@ public:
m_caps1(*this, "capsule1"), m_caps2(*this, "capsule2"),
m_caps1_rom(nullptr), m_caps2_rom(nullptr),
m_ctrl1(0), m_icrb(0), m_bankr(0),
- m_isr(0), m_ier(0), m_str(0), m_sior(0xbf),
+ m_isr(0), m_ier(0), m_sior(0xbf),
m_frc_value(0), m_frc_latch(0),
m_vadr(0), m_yoff(0),
- m_receive_timer(nullptr), m_transmit_timer(nullptr),
m_artdir(0xff), m_artdor(0xff), m_artsr(0), m_artcr(0),
- m_swr(0),
- m_one_sec_int_enabled(true), m_alarm_int_enabled(true), m_key_int_enabled(true),
+ m_one_sec_int_enabled(true),
m_key_status(0), m_interrupt_status(0),
m_time(), m_clock_state(0),
m_ear_last_state(0),
@@ -123,8 +121,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( rs232_dcd_w );
DECLARE_WRITE_LINE_MEMBER( rs232_dsr_w );
DECLARE_WRITE_LINE_MEMBER( rs232_cts_w );
- TIMER_CALLBACK_MEMBER( transmit_data );
- TIMER_CALLBACK_MEMBER( receive_data );
// centronics
DECLARE_WRITE_LINE_MEMBER( centronics_busy_w ) { m_centronics_busy = state; }
@@ -204,7 +200,6 @@ private:
UINT8 m_bankr;
UINT8 m_isr;
UINT8 m_ier;
- UINT8 m_str;
UINT8 m_sior;
// gapnit internal
@@ -216,8 +211,6 @@ private:
UINT8 m_yoff;
// gapnio
- emu_timer *m_receive_timer;
- emu_timer *m_transmit_timer;
UINT8 m_artdir;
UINT8 m_artdor;
UINT8 m_artsr;
@@ -226,7 +219,6 @@ private:
// 7508 internal
bool m_one_sec_int_enabled;
- bool m_alarm_int_enabled;
bool m_key_int_enabled;
UINT8 m_key_status;
@@ -278,7 +270,7 @@ private:
required_device<generic_slot_device> m_rdsocket;
offs_t m_ramdisk_address;
- UINT8 *m_ramdisk;
+ std::unique_ptr<UINT8[]> m_ramdisk;
};
@@ -1044,9 +1036,9 @@ WRITE8_MEMBER( px4_state::ioctlr_w )
// bit 3, cartridge reset
- output_set_value("led_0", BIT(data, 4)); // caps lock
- output_set_value("led_1", BIT(data, 5)); // num lock
- output_set_value("led_2", BIT(data, 6)); // "led 2"
+ output().set_value("led_0", BIT(data, 4)); // caps lock
+ output().set_value("led_1", BIT(data, 5)); // num lock
+ output().set_value("led_2", BIT(data, 6)); // "led 2"
m_speaker->level_w(BIT(data, 7));
}
@@ -1223,7 +1215,7 @@ DRIVER_INIT_MEMBER( px4p_state, px4p )
DRIVER_INIT_CALL(px4);
// reserve memory for external ram-disk
- m_ramdisk = auto_alloc_array(machine(), UINT8, 0x20000);
+ m_ramdisk = std::make_unique<UINT8[]>(0x20000);
}
void px4_state::machine_start()
@@ -1248,7 +1240,7 @@ void px4_state::machine_reset()
void px4p_state::machine_start()
{
px4_state::machine_start();
- m_rdnvram->set_base(m_ramdisk, 0x20000);
+ m_rdnvram->set_base(m_ramdisk.get(), 0x20000);
}
@@ -1349,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/px8.cpp b/src/mame/drivers/px8.cpp
index 6af4feed268..79378330c4f 100644
--- a/src/mame/drivers/px8.cpp
+++ b/src/mame/drivers/px8.cpp
@@ -322,9 +322,9 @@ WRITE8_MEMBER( px8_state::gah40m_w )
*/
- output_set_value("led_0", BIT(data, 0));
- output_set_value("led_1", BIT(data, 1));
- output_set_value("led_2", BIT(data, 2));
+ output().set_value("led_0", BIT(data, 0));
+ output().set_value("led_1", BIT(data, 1));
+ output().set_value("led_2", BIT(data, 2));
break;
case GAH40M_IER:
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/quantum.cpp b/src/mame/drivers/quantum.cpp
index 20ea907c8c8..256607a3ddc 100644
--- a/src/mame/drivers/quantum.cpp
+++ b/src/mame/drivers/quantum.cpp
@@ -1,6 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Hedley Rainnie, Aaron Giles, Couriersud
-// thanks-to: Paul Forgey
+// copyright-holders:Hedley Rainnie, Aaron Giles, Couriersud, Paul Forgey
/***************************************************************************
Atari Quantum hardware
@@ -115,14 +114,14 @@ WRITE16_MEMBER(quantum_state::led_w)
if (ACCESSING_BITS_0_7)
{
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0, data & 2);
- coin_counter_w(machine(), 1, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 2);
+ machine().bookkeeping().coin_counter_w(1, data & 1);
/* bit 3 = select second trackball for cocktail mode? */
/* bits 4 and 5 are LED controls */
- set_led_status(machine(), 0, data & 0x10);
- set_led_status(machine(), 1, data & 0x20);
+ output().set_led_value(0, data & 0x10);
+ output().set_led_value(1, data & 0x20);
/* bits 6 and 7 flip screen */
m_avg->set_flip_x (data & 0x40);
diff --git a/src/mame/drivers/queen.cpp b/src/mame/drivers/queen.cpp
index cd95ccfef51..21b69043b7a 100644
--- a/src/mame/drivers/queen.cpp
+++ b/src/mame/drivers/queen.cpp
@@ -43,8 +43,8 @@ public:
{
}
- UINT32 *m_bios_ram;
- UINT32 *m_bios_ext_ram;
+ std::unique_ptr<UINT32[]> m_bios_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext_ram;
UINT8 m_mtxc_config_reg[256];
UINT8 m_piix4_config_reg[4][256];
@@ -85,11 +85,11 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
if (reg == 0x63)
{
if (data & 0x20) // enable RAM access to region 0xf0000 - 0xfffff
- state->membank("bios_bank")->set_base(state->m_bios_ram);
+ state->membank("bios_bank")->set_base(state->m_bios_ram.get());
else // disable RAM access (reads go to BIOS ROM)
state->membank("bios_bank")->set_base(state->memregion("bios")->base() + 0x30000);
if (data & 0x80) // enable RAM access to region 0xe0000 - 0xeffff
- state->membank("bios_ext")->set_base(state->m_bios_ext_ram);
+ state->membank("bios_ext")->set_base(state->m_bios_ext_ram.get());
else
state->membank("bios_ext")->set_base(state->memregion("bios")->base() + 0x20000);
}
@@ -217,7 +217,7 @@ WRITE32_MEMBER(queen_state::bios_ext_ram_w)
{
if (m_mtxc_config_reg[0x63] & 0x40) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext_ram + offset);
+ COMBINE_DATA(m_bios_ext_ram.get() + offset);
}
}
@@ -226,7 +226,7 @@ WRITE32_MEMBER(queen_state::bios_ram_w)
{
if (m_mtxc_config_reg[0x63] & 0x10) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ram + offset);
+ COMBINE_DATA(m_bios_ram.get() + offset);
}
}
@@ -256,8 +256,8 @@ ADDRESS_MAP_END
void queen_state::machine_start()
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
- m_bios_ext_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x10000/4);
+ m_bios_ext_ram = std::make_unique<UINT32[]>(0x10000/4);
intel82439tx_init();
}
diff --git a/src/mame/drivers/quizo.cpp b/src/mame/drivers/quizo.cpp
index cdd9aea3836..6279c372cc2 100644
--- a/src/mame/drivers/quizo.cpp
+++ b/src/mame/drivers/quizo.cpp
@@ -39,7 +39,7 @@ public:
required_device<cpu_device> m_maincpu;
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
UINT8 m_port60;
UINT8 m_port70;
@@ -268,10 +268,10 @@ ROM_END
DRIVER_INIT_MEMBER(quizo_state,quizo)
{
- m_videoram=auto_alloc_array(machine(), UINT8, 0x4000*2);
+ m_videoram=std::make_unique<UINT8[]>(0x4000*2);
membank("bank1")->configure_entries(0, 6, memregion("user1")->base(), 0x4000);
- save_pointer(NAME(m_videoram), 0x4000*2);
+ save_pointer(NAME(m_videoram.get()), 0x4000*2);
//save_item(NAME(m_port60));
save_item(NAME(m_port70));
}
diff --git a/src/mame/drivers/quizshow.cpp b/src/mame/drivers/quizshow.cpp
index b67bb95aa20..deda44515e0 100644
--- a/src/mame/drivers/quizshow.cpp
+++ b/src/mame/drivers/quizshow.cpp
@@ -133,7 +133,7 @@ WRITE8_MEMBER(quizshow_state::quizshow_lamps1_w)
{
// d0-d3: P1 answer button lamps
for (int i = 0; i < 4; i++)
- output_set_lamp_value(i, data >> i & 1);
+ output().set_lamp_value(i, data >> i & 1);
// d4-d7: N/C
}
@@ -142,7 +142,7 @@ WRITE8_MEMBER(quizshow_state::quizshow_lamps2_w)
{
// d0-d3: P2 answer button lamps
for (int i = 0; i < 4; i++)
- output_set_lamp_value(i + 4, data >> i & 1);
+ output().set_lamp_value(i + 4, data >> i & 1);
// d4-d7: N/C
}
@@ -150,8 +150,8 @@ WRITE8_MEMBER(quizshow_state::quizshow_lamps2_w)
WRITE8_MEMBER(quizshow_state::quizshow_lamps3_w)
{
// d0-d1: start button lamps
- output_set_lamp_value(8, data >> 0 & 1);
- output_set_lamp_value(9, data >> 1 & 1);
+ output().set_lamp_value(8, data >> 0 & 1);
+ output().set_lamp_value(9, data >> 1 & 1);
// d2-d3: unused? (chip is shared with quizshow_tape_control_w)
// d4-d7: N/C
@@ -160,7 +160,7 @@ WRITE8_MEMBER(quizshow_state::quizshow_lamps3_w)
WRITE8_MEMBER(quizshow_state::quizshow_tape_control_w)
{
// d2: enable user category select (changes tape head position)
- output_set_lamp_value(10, data >> 2 & 1);
+ output().set_lamp_value(10, data >> 2 & 1);
m_category_enable = (data & 0xc) == 0xc;
// d3: tape motor
diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp
index 3d631248096..467e7fb2527 100644
--- a/src/mame/drivers/qx10.cpp
+++ b/src/mame/drivers/qx10.cpp
@@ -91,7 +91,7 @@ public:
required_device<rs232_port_device> m_kbd;
UINT8 m_vram_bank;
//required_shared_ptr<UINT8> m_video_ram;
- UINT16 *m_video_ram;
+ std::unique_ptr<UINT16[]> m_video_ram;
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -145,7 +145,6 @@ public:
}m_rs232c;
DECLARE_PALETTE_INIT(qx10);
- DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
DECLARE_WRITE_LINE_MEMBER(dma_hrq_changed);
required_device<cpu_device> m_maincpu;
required_device<ram_device> m_ram;
@@ -620,7 +619,7 @@ GFXDECODE_END
void qx10_state::video_start()
{
// allocate memory
- m_video_ram = auto_alloc_array_clear(machine(), UINT16, 0x30000);
+ m_video_ram = make_unique_clear<UINT16[]>(0x30000);
// find memory regions
m_char_rom = memregion("chargen")->base();
diff --git a/src/mame/drivers/r2dx_v33.cpp b/src/mame/drivers/r2dx_v33.cpp
index 99d81b63f8d..1b6ae4510ec 100644
--- a/src/mame/drivers/r2dx_v33.cpp
+++ b/src/mame/drivers/r2dx_v33.cpp
@@ -94,10 +94,6 @@ public:
DECLARE_READ16_MEMBER(r2dx_cos_r);
DECLARE_WRITE16_MEMBER(tile_bank_w);
- DECLARE_WRITE16_MEMBER(rdx_bg_vram_w);
- DECLARE_WRITE16_MEMBER(rdx_md_vram_w);
- DECLARE_WRITE16_MEMBER(rdx_fg_vram_w);
- DECLARE_WRITE16_MEMBER(rdx_tx_vram_w);
DECLARE_READ16_MEMBER(rdx_v33_unknown_r);
DECLARE_WRITE16_MEMBER(mcu_xval_w);
DECLARE_WRITE16_MEMBER(mcu_yval_w);
@@ -129,9 +125,7 @@ public:
UINT16 r2dx_i_dx, r2dx_i_dy, r2dx_i_angle;
UINT32 r2dx_i_sdist;
- UINT32 screen_update_rdx_v33(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(rdx_v33_interrupt);
- void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri);
protected:
virtual void machine_start() override;
diff --git a/src/mame/drivers/r9751.cpp b/src/mame/drivers/r9751.cpp
new file mode 100644
index 00000000000..5ca1d8d153a
--- /dev/null
+++ b/src/mame/drivers/r9751.cpp
@@ -0,0 +1,433 @@
+// license:GPL-2.0+
+// copyright-holders:Brandon Munger
+/******************************************************************************
+*
+* Rolm CBX 9751 Driver
+*
+* This driver attempts to emulate the following models:
+* * Model 10
+* * Model 20
+* * Model 40
+* * Model 50
+* * Model 70
+*
+* The following software releases are known:
+* * 9004
+* * 9005
+*
+* The basis of this driver was influenced by the zexall.c driver by
+* Jonathan Gevaryahu and Robbbert.
+*
+*
+* Special Thanks to:
+* * Stephen Stair (sgstair) - for help with reverse engineering,
+* programming, and emulation
+* * Felipe Sanches (FSanches) - for help with MESS and emulation
+* * Michael Zapf (mizapf) - for building the HDC9234/HDC9224
+* driver that makes this driver possible
+*
+* Memory map:
+* * 0x00000000 - 0x00ffffff : RAM 12MB to 16MB known, up to 128MB?
+* * 0x08000000 - 0x0800ffff : PROM Region
+*
+******************************************************************************/
+
+/* Core includes */
+#include "emu.h"
+#include "cpu/m68000/m68000.h"
+#include "machine/terminal.h"
+
+#include "bus/scsi/scsi.h"
+#include "machine/wd33c93.h"
+
+#include "machine/pdc.h"
+#include "softlist.h"
+
+#define TERMINAL_TAG "terminal"
+
+/* Log defines */
+#define TRACE_FDC 0
+#define TRACE_HDC 0
+#define TRACE_SMIOC 0
+#define TRACE_CPU_REG 0
+#define TRACE_LED 0
+
+class r9751_state : public driver_device
+{
+public:
+ r9751_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_pdc(*this, "pdc"),
+ m_wd33c93(*this, "wd33c93"),
+ m_terminal(*this, TERMINAL_TAG),
+ m_main_ram(*this, "main_ram")
+ {
+ }
+
+ DECLARE_READ32_MEMBER(r9751_mmio_5ff_r);
+ DECLARE_WRITE32_MEMBER(r9751_mmio_5ff_w);
+ DECLARE_READ32_MEMBER(r9751_mmio_ff05_r);
+ DECLARE_WRITE32_MEMBER(r9751_mmio_ff05_w);
+ DECLARE_READ32_MEMBER(r9751_mmio_fff8_r);
+ DECLARE_WRITE32_MEMBER(r9751_mmio_fff8_w);
+
+ DECLARE_READ8_MEMBER(pdc_dma_r);
+ DECLARE_WRITE8_MEMBER(pdc_dma_w);
+
+ DECLARE_DRIVER_INIT(r9751);
+
+private:
+ required_device<cpu_device> m_maincpu;
+ required_device<pdc_device> m_pdc;
+ required_device<wd33c93_device> m_wd33c93;
+ required_device<generic_terminal_device> m_terminal;
+ required_shared_ptr<UINT32> m_main_ram;
+
+ // Begin registers
+ UINT32 reg_ff050004;
+ UINT32 reg_fff80040;
+ UINT32 fdd_dest_address; // 5FF080B0
+ UINT32 fdd_cmd_complete;
+ UINT32 smioc_out_addr;
+ attotime timer_32khz_last;
+ // End registers
+
+ address_space *m_mem;
+
+ // functions
+ UINT32 swap_uint32( UINT32 val );
+
+ virtual void machine_reset() override;
+};
+
+
+UINT32 r9751_state::swap_uint32( UINT32 val )
+{
+ val = ((val << 8) & 0xFF00FF00 ) | ((val >> 8) & 0xFF00FF );
+ return (val << 16) | (val >> 16);
+}
+
+READ8_MEMBER(r9751_state::pdc_dma_r)
+{
+ return m_maincpu->space(AS_PROGRAM).read_byte(offset);
+}
+
+WRITE8_MEMBER(r9751_state::pdc_dma_w)
+{
+ m_maincpu->space(AS_PROGRAM).write_byte(m_pdc->fdd_68k_dma_address,data);
+}
+
+DRIVER_INIT_MEMBER(r9751_state,r9751)
+{
+ reg_ff050004 = 0;
+ reg_fff80040 = 0;
+ fdd_dest_address = 0;
+// fdd_scsi_command = 0;
+ fdd_cmd_complete = 0;
+ smioc_out_addr = 0;
+ m_mem = &m_maincpu->space(AS_PROGRAM);
+
+}
+
+void r9751_state::machine_reset()
+{
+ UINT8 *rom = memregion("prom")->base();
+ UINT32 *ram = m_main_ram;
+
+ memcpy(ram, rom, 8);
+
+ m_maincpu->reset();
+ m_pdc->reset();
+}
+
+/******************************************************************************
+ External board communication registers [0x5FF00000 - 0x5FFFFFFF]
+******************************************************************************/
+READ32_MEMBER( r9751_state::r9751_mmio_5ff_r )
+{
+ UINT32 data;
+ UINT32 address = offset * 4 + 0x5FF00000;
+
+ switch(address)
+ {
+ /* PDC HDD region (0x24, device 9) */
+ case 0x5FF00824: /* HDD Command result code */
+ return 0x10;
+ case 0x5FF03024: /* 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);
+ return data;
+ /* SMIOC region (0x98, device 26) */
+ case 0x5FF00898: /* Serial status or DMA status */
+ return 0x40;
+ /* PDC FDD region (0xB0, device 44 */
+ case 0x5FF008B0: /* FDD Command result code */
+ return 0x10;
+ case 0x5FF010B0: /* Clear 5FF030B0 ?? */
+ if(TRACE_FDC) logerror("--- FDD 0x5FF010B0 READ (0)\n");
+ return 0;
+ case 0x5FF030B0: /* 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);
+ 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);
+ return 0;
+ }
+}
+
+WRITE32_MEMBER( r9751_state::r9751_mmio_5ff_w )
+{
+ UINT8 data_b0, data_b1;
+ UINT32 address = offset * 4 + 0x5FF00000;
+
+ switch(address)
+ {
+ /* 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);
+ 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);
+ 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);
+ break;
+ /* SMIOC region (0x98, device 26) */
+ case 0x5FF04098: /* 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));
+ 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;
+ 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);
+ 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);
+ 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);
+ 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);
+
+ /* Clear FDD Command completion status 0x5FF030B0 (PDC 0x4, 0x5)*/
+ m_pdc->reg_p4 = 0;
+ m_pdc->reg_p5 = 0;
+
+ data_b0 = data & 0xFF;
+ data_b1 = (data & 0xFF00) >> 8;
+ m_pdc->reg_p0 = data_b0;
+ m_pdc->reg_p1 = data_b1;
+ 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 */
+ fdd_dest_address = data << 1;
+ if(TRACE_FDC) logerror("--- FDD destination address: %08X\n", fdd_dest_address);
+ data_b0 = data & 0xFF;
+ data_b1 = (data & 0xFF00) >> 8;
+ m_pdc->reg_p6 = data_b0;
+ m_pdc->reg_p7 = data_b1;
+ break;
+ case 0x5FF0C0B0:
+ case 0x5FF0C1B0: /* 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)*/
+ m_pdc->reg_p4 = 0;
+ m_pdc->reg_p5 = 0;
+
+ /* Send FDD SCSI command location address to PDC 0x2, 0x3 */
+ if(TRACE_FDC) logerror("--- FDD command address: %08X\n", data);
+ data_b0 = data & 0xFF;
+ data_b1 = (data & 0xFF00) >> 8;
+ m_pdc->reg_p2 = data_b0;
+ m_pdc->reg_p3 = data_b1;
+
+ fdd_scsi_command = swap_uint32(m_mem->read_dword(data << 1));
+ fdd_scsi_command2 = swap_uint32(m_mem->read_dword((data << 1)+4));
+
+ memcpy(c_fdd_scsi_command,&fdd_scsi_command,4);
+ memcpy(c_fdd_scsi_command+4,&fdd_scsi_command2,4);
+
+ if(TRACE_FDC)
+ {
+ logerror("--- FDD SCSI Command: ");
+ for(int i = 0; i < 8; i++)
+ logerror("%02X ", c_fdd_scsi_command[i]);
+ logerror("\n");
+ }
+
+ scsi_lba = c_fdd_scsi_command[3] | (c_fdd_scsi_command[2]<<8) | ((c_fdd_scsi_command[1]&0x1F)<<16);
+ if(TRACE_FDC) logerror("--- FDD SCSI LBA: %i\n", scsi_lba);
+
+ 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 SET PDC Port 38: %X\n",m_pdc->reg_p38);
+ 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);
+ }
+}
+
+/******************************************************************************
+ CPU board registers [0xFF050000 - 0xFF06FFFF]
+******************************************************************************/
+READ32_MEMBER( r9751_state::r9751_mmio_ff05_r )
+{
+ UINT32 data;
+ UINT32 address = offset * 4 + 0xFF050000;
+
+ switch(address)
+ {
+ case 0xFF050004:
+ return reg_ff050004;
+ case 0xFF050300:
+ return 0x1B | (1<<0x14);
+ case 0xFF050320: /* Some type of counter */
+ return (machine().time() - timer_32khz_last).as_ticks(32768) & 0xFFFF;
+ case 0xFF050584:
+ return 0;
+ case 0xFF050610:
+ return 0xabacabac;
+ case 0xFF060014:
+ 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);
+ return data;
+ }
+}
+
+WRITE32_MEMBER( r9751_state::r9751_mmio_ff05_w )
+{
+ UINT32 address = offset * 4 + 0xFF050000;
+
+ switch(address)
+ {
+ case 0xFF050004:
+ reg_ff050004 = data;
+ return;
+ case 0xFF05000C: /* CPU LED hex display indicator */
+ if(TRACE_LED) logerror("\n*** LED: %02x, Instruction: %08x ***\n\n", data, space.machine().firstcpu->pc());
+ return;
+ case 0xFF050320:
+ 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);
+ return;
+ }
+}
+
+READ32_MEMBER( r9751_state::r9751_mmio_fff8_r )
+{
+ UINT32 data;
+ UINT32 address = offset * 4 + 0xFFF80000;
+
+ switch(address)
+ {
+ case 0xFFF80040:
+ 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);
+ return data;
+ }
+}
+
+WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w )
+{
+ UINT32 address = offset * 4 + 0xFFF80000;
+
+ switch(address)
+ {
+ case 0xFFF80040:
+ 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);
+ }
+}
+
+/******************************************************************************
+ Address Maps
+******************************************************************************/
+
+static ADDRESS_MAP_START(r9751_mem, AS_PROGRAM, 32, r9751_state)
+ //ADDRESS_MAP_UNMAP_HIGH
+ 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(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
+ADDRESS_MAP_END
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+static INPUT_PORTS_START( r9751 )
+INPUT_PORTS_END
+
+/******************************************************************************
+ Machine Drivers
+******************************************************************************/
+
+static MACHINE_CONFIG_START( r9751, r9751_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68030, 20000000)
+ MCFG_CPU_PROGRAM_MAP(r9751_mem)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
+
+ /* video hardware */
+ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
+
+ /* disk hardware */
+ MCFG_DEVICE_ADD("pdc", PDC, 0)
+ MCFG_PDC_R_CB(READ8(r9751_state, pdc_dma_r))
+ MCFG_PDC_W_CB(WRITE8(r9751_state, pdc_dma_w))
+ MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
+ //MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_1)
+ MCFG_DEVICE_ADD("wd33c93", WD33C93, 0)
+ MCFG_LEGACY_SCSI_PORT("scsi")
+ //MCFG_WD33C93_IRQ_CB(WRITELINE(r9751_state,scsi_irq))
+
+ /* software list */
+ MCFG_SOFTWARE_LIST_ADD("flop_list","r9751")
+MACHINE_CONFIG_END
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START(r9751)
+ ROM_REGION32_BE(0x00010000, "prom", 0)
+ ROM_SYSTEM_BIOS(0, "prom34", "PROM Version 3.4")
+ ROMX_LOAD( "p-n_98d4643__abaco_v3.4__(49fe7a)__j221.27512.bin", 0x0000, 0x10000, CRC(9fb19a85) SHA1(c861e15a2fc9a4ef689c2034c53fbb36f17f7da6), ROM_GROUPWORD | ROM_BIOS(1) ) // Label: "P/N 98D4643 // ABACO V3.4 // (49FE7A) // J221" 27128 @Unknown
+ROM_END
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+COMP( 1988, r9751, 0, 0, r9751, r9751, r9751_state, r9751, "ROLM Systems, Inc.", "ROLM 9751 Model 10", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/rabbit.cpp b/src/mame/drivers/rabbit.cpp
index df0d4925730..82e8889a079 100644
--- a/src/mame/drivers/rabbit.cpp
+++ b/src/mame/drivers/rabbit.cpp
@@ -126,12 +126,12 @@ public:
required_shared_ptr<UINT32> m_blitterregs;
required_shared_ptr<UINT32> m_spriteram;
- bitmap_ind16 *m_sprite_bitmap;
+ std::unique_ptr<bitmap_ind16> m_sprite_bitmap;
rectangle m_sprite_clip;
int m_vblirqlevel;
int m_bltirqlevel;
int m_banking;
- UINT32 *m_tilemap_ram[4];
+ std::unique_ptr<UINT32[]> m_tilemap_ram[4];
tilemap_t *m_tilemap[4];
DECLARE_WRITE32_MEMBER(tilemap0_w);
@@ -414,10 +414,10 @@ void rabbit_state::video_start()
{
/* the tilemaps are bigger than the regions the cpu can see, need to allocate the ram here */
/* or maybe not for this game/hw .... */
- m_tilemap_ram[0] = auto_alloc_array_clear(machine(), UINT32, 0x20000/4);
- m_tilemap_ram[1] = auto_alloc_array_clear(machine(), UINT32, 0x20000/4);
- m_tilemap_ram[2] = auto_alloc_array_clear(machine(), UINT32, 0x20000/4);
- m_tilemap_ram[3] = auto_alloc_array_clear(machine(), UINT32, 0x20000/4);
+ m_tilemap_ram[0] = make_unique_clear<UINT32[]>(0x20000/4);
+ m_tilemap_ram[1] = make_unique_clear<UINT32[]>(0x20000/4);
+ m_tilemap_ram[2] = make_unique_clear<UINT32[]>(0x20000/4);
+ m_tilemap_ram[3] = make_unique_clear<UINT32[]>(0x20000/4);
m_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(rabbit_state::get_tilemap0_tile_info),this),TILEMAP_SCAN_ROWS,16, 16, 128,32);
m_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(rabbit_state::get_tilemap1_tile_info),this),TILEMAP_SCAN_ROWS,16, 16, 128,32);
@@ -434,13 +434,13 @@ void rabbit_state::video_start()
m_tilemap[3]->map_pen_to_layer(0, 15, TILEMAP_PIXEL_TRANSPARENT);
m_tilemap[3]->map_pen_to_layer(1, 255, TILEMAP_PIXEL_TRANSPARENT);
- m_sprite_bitmap = auto_bitmap_ind16_alloc(machine(),0x1000,0x1000);
+ m_sprite_bitmap = std::make_unique<bitmap_ind16>(0x1000,0x1000);
m_sprite_clip.set(0, 0x1000-1, 0, 0x1000-1);
- save_pointer(NAME(m_tilemap_ram[0]), 0x20000/4);
- save_pointer(NAME(m_tilemap_ram[1]), 0x20000/4);
- save_pointer(NAME(m_tilemap_ram[2]), 0x20000/4);
- save_pointer(NAME(m_tilemap_ram[3]), 0x20000/4);
+ save_pointer(NAME(m_tilemap_ram[0].get()), 0x20000/4);
+ save_pointer(NAME(m_tilemap_ram[1].get()), 0x20000/4);
+ save_pointer(NAME(m_tilemap_ram[2].get()), 0x20000/4);
+ save_pointer(NAME(m_tilemap_ram[3].get()), 0x20000/4);
}
/*
diff --git a/src/mame/drivers/raiden.cpp b/src/mame/drivers/raiden.cpp
index 00a7c92f10b..bb8e00dcaa9 100644
--- a/src/mame/drivers/raiden.cpp
+++ b/src/mame/drivers/raiden.cpp
@@ -1,5 +1,6 @@
-// license:???
-// copyright-holders:Oliver Bergmann, Bryan McPhail, Randy Mongenel
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail
+// thanks-to:Oliver Bergmann,Randy Mongenel (for initial CPU core)
/***************************************************************************
Seibu Raiden hardware
@@ -9,8 +10,6 @@
Raiden (Korean license) (c) 1990 Seibu Kaihatsu
Raiden (Taiwanese license) (c) 1990 Seibu Kaihatsu
- driver by Oliver Bergmann, Bryan McPhail, Randy Mongenel
-
The alternate hardware version is probably newer than the main sets.
It looks closer to the newer 68000 games, while the main set looks
closer to Dynamite Duke (1989 game) in terms of graphics registers used, etc.
diff --git a/src/mame/drivers/raiden2.cpp b/src/mame/drivers/raiden2.cpp
index c06b660c840..eb29eea28c9 100644
--- a/src/mame/drivers/raiden2.cpp
+++ b/src/mame/drivers/raiden2.cpp
@@ -479,15 +479,15 @@ TILE_GET_INFO_MEMBER(raiden2_state::get_text_tile_info)
VIDEO_START_MEMBER(raiden2_state,raiden2)
{
- back_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- fore_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- mid_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- text_data = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ back_data = make_unique_clear<UINT16[]>(0x800/2);
+ fore_data = make_unique_clear<UINT16[]>(0x800/2);
+ mid_data = make_unique_clear<UINT16[]>(0x800/2);
+ text_data = make_unique_clear<UINT16[]>(0x1000/2);
- save_pointer(NAME(back_data), 0x800/2);
- save_pointer(NAME(fore_data), 0x800/2);
- save_pointer(NAME(mid_data), 0x800/2);
- save_pointer(NAME(text_data), 0x1000/2);
+ save_pointer(NAME(back_data.get()), 0x800/2);
+ save_pointer(NAME(fore_data.get()), 0x800/2);
+ save_pointer(NAME(mid_data.get()), 0x800/2);
+ save_pointer(NAME(text_data.get()), 0x1000/2);
text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden2_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64,32 );
background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden2_state::get_back_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,32 );
@@ -1582,7 +1582,7 @@ ROM_START( raiden2 )
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
@@ -1622,7 +1622,7 @@ ROM_START( raiden2sw ) // original board with serial # 0008307
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
/*
@@ -1679,8 +1679,8 @@ ROM_START( raiden2hk )
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
- ROM_END
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
+ROM_END
/*
@@ -1753,8 +1753,8 @@ ROM_START( raiden2j )
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
- ROM_END
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
+ROM_END
ROM_START( raiden2i )
ROM_REGION( 0x200000, "maincpu", 0 ) /* v30 main cpu */
@@ -1792,8 +1792,8 @@ ROM_START( raiden2i )
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
- ROM_END
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
+ROM_END
/*
@@ -1849,7 +1849,7 @@ ROM_START( raiden2e )
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
ROM_START( raiden2ea )
@@ -1888,7 +1888,7 @@ ROM_START( raiden2ea )
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
ROM_START( raiden2eu ) // same as raiden2ea, different region
@@ -1927,7 +1927,7 @@ ROM_START( raiden2eu ) // same as raiden2ea, different region
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
ROM_START( raiden2eua ) // sort of a mixture of raiden2e easy set with voice rom of raiden2ea and 2f and a unique sound rom
@@ -1970,7 +1970,7 @@ ROM_START( raiden2eua ) // sort of a mixture of raiden2e easy set with voice rom
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
@@ -2014,7 +2014,7 @@ ROM_START( raiden2g ) // this is the same code revision as raiden2eua but a germ
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
ROM_START( raiden2nl )
@@ -2053,7 +2053,7 @@ ROM_START( raiden2nl )
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
ROM_START( raiden2f ) // original board with serial # 12476 that matches raiden2nl set except the region and Audio CPU
@@ -2092,7 +2092,7 @@ ROM_START( raiden2f ) // original board with serial # 12476 that matches raiden2
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
ROM_START( raiden2u )
@@ -2131,7 +2131,7 @@ ROM_START( raiden2u )
ROM_REGION( 0x10000, "pals", 0 ) /* PALS */
ROM_LOAD( "jj4b02__ami18cv8-15.u0342.jed", 0x0000, 0x288, NO_DUMP)
- ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x288, NO_DUMP)
+ ROM_LOAD( "jj4b01__mmipal16l8bcn.u0341.jed", 0x0000, 0x335, CRC(d1a039af) SHA1(f88ff8674d5be17ae9085b51aefcf6abf0574883) )
ROM_END
diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp
index 876bfe53c68..d6f58b231ee 100644
--- a/src/mame/drivers/rainbow.cpp
+++ b/src/mame/drivers/rainbow.cpp
@@ -875,13 +875,13 @@ void rainbow_state::machine_reset()
hard_disk_file *local_hard_disk;
local_hard_disk = rainbow_hdc_file(0); // one hard disk for now.
- output_set_value("led1", 0);
+ output().set_value("led1", 0);
if (local_hard_disk)
{
hard_disk_info *info;
if ( (info = hard_disk_get_info(local_hard_disk)) )
{
- output_set_value("led1", 1);
+ output().set_value("led1", 1);
UINT32 max_sector = (info->cylinders) * (info->heads) * (info->sectors);
printf("\n%u MB HARD DISK: HEADS (1..8 OK) = %d / CYL. (151..1024 OK) = %d / SPT. (16 OK) = %d / SECTOR_BYTES (128..1024 OK) = %d\n", max_sector * 512 / 1000000,
@@ -910,19 +910,19 @@ void rainbow_state::machine_reset()
m_irq_high = 0;
// RESET ALL LEDs
- output_set_value("led1", 1);
- output_set_value("led2", 1);
- output_set_value("led3", 1);
- output_set_value("led4", 1);
- output_set_value("led5", 1);
- output_set_value("led6", 1);
- output_set_value("led7", 1);
+ output().set_value("led1", 1);
+ output().set_value("led2", 1);
+ output().set_value("led3", 1);
+ output().set_value("led4", 1);
+ output().set_value("led5", 1);
+ output().set_value("led6", 1);
+ output().set_value("led7", 1);
// GREEN KEYBOARD LEDs (1 = on, 0 = off):
- output_set_value("led_wait", 0); // led8
- output_set_value("led_compose", 0); // led9
- output_set_value("led_lock", 0); // led10
- output_set_value("led_hold", 0); // led11
+ output().set_value("led_wait", 0); // led8
+ output().set_value("led_compose", 0); // led9
+ output().set_value("led_lock", 0); // led10
+ output().set_value("led_hold", 0); // led11
m_irq_mask = 0;
}
@@ -1220,7 +1220,7 @@ WRITE_LINE_MEMBER(rainbow_state::hdc_read_sector)
read_status = 2;
logerror("\nTRYING TO READ");
- output_set_value("led1", 0);
+ output().set_value("led1", 0);
int hi = (m_hdc->read(space(AS_PROGRAM), 0x05)) & 0x07;
UINT16 cylinder = (m_hdc->read(space(AS_PROGRAM), 0x04)) | (hi << 8);
@@ -1237,7 +1237,7 @@ WRITE_LINE_MEMBER(rainbow_state::hdc_read_sector)
if ( (info = hard_disk_get_info(local_hard_disk)) )
{
read_status = 4;
- output_set_value("led1", 1);
+ output().set_value("led1", 1);
// Pointer to info + C + H + S
UINT32 lbasector = get_and_print_lbasector(this, info, cylinder, SDH & 0x07, sector_number);
@@ -1293,7 +1293,7 @@ WRITE_LINE_MEMBER(rainbow_state::hdc_write_sector)
&& (drv == 0)
)
{
- output_set_value("led1", 0); // (1 = OFF ) =HARD DISK ACTIVITY =
+ output().set_value("led1", 0); // (1 = OFF ) =HARD DISK ACTIVITY =
MOTOR_DISABLE_counter = 20;
if (rainbow_hdc_file(0) != nullptr)
@@ -1330,7 +1330,7 @@ WRITE_LINE_MEMBER(rainbow_state::hdc_write_sector)
int rainbow_state::do_write_sector()
{
int feedback = 0; // no error
- output_set_value("led1", 0); // ON
+ output().set_value("led1", 0); // ON
hard_disk_file *local_hard_disk;
local_hard_disk = rainbow_hdc_file(0); // one hard disk for now.
@@ -1342,7 +1342,7 @@ int rainbow_state::do_write_sector()
{
feedback = 10;
logerror("\n* TRYING TO WRITE * ");
- output_set_value("led1", 1); // OFF
+ output().set_value("led1", 1); // OFF
UINT8 SDH = (m_hdc->read(space(AS_PROGRAM), 0x06));
@@ -1498,7 +1498,7 @@ WRITE8_MEMBER(rainbow_state::hd_status_68_w)
{
logerror(">> HARD DISC * SET BUFFER READY * <<\n");
- output_set_value("led1", 0); // 1 = OFF (One of the CPU LEDs as DRIVE LED) = HARD DISK ACTIVITY =
+ output().set_value("led1", 0); // 1 = OFF (One of the CPU LEDs as DRIVE LED) = HARD DISK ACTIVITY =
MOTOR_DISABLE_counter = 20;
m_hdc->buffer_ready(true);
@@ -1579,7 +1579,7 @@ WRITE_LINE_MEMBER(rainbow_state::hdc_step)
{
m_hdc_step_latch = true;
- output_set_value("led1", 0); // 1 = OFF (One of the CPU LEDs as DRIVE LED) = HARD DISK ACTIVITY =
+ output().set_value("led1", 0); // 1 = OFF (One of the CPU LEDs as DRIVE LED) = HARD DISK ACTIVITY =
MOTOR_DISABLE_counter = 20;
}
@@ -1729,10 +1729,10 @@ WRITE8_MEMBER(rainbow_state::comm_control_w)
D6 -D5-D4-D3 <- INTERNAL LED NUMBER (DEC PDF)
-4--5--6--7- <- NUMBERS EMBOSSED ON BACK OF PLASTIC HOUSING (see error chart)
*/
- output_set_value("led4", BIT(data, 5)); // LED "D6"
- output_set_value("led5", BIT(data, 7)); // LED "D5"
- output_set_value("led6", BIT(data, 6)); // LED "D4"
- output_set_value("led7", BIT(data, 4)); // LED "D3"
+ output().set_value("led4", BIT(data, 5)); // LED "D6"
+ output().set_value("led5", BIT(data, 7)); // LED "D5"
+ output().set_value("led6", BIT(data, 6)); // LED "D4"
+ output().set_value("led7", BIT(data, 4)); // LED "D3"
// printf("%02x to COMM.CONTROL REGISTER\n", data);
}
@@ -1800,9 +1800,9 @@ WRITE8_MEMBER(rainbow_state::z80_diskdiag_write_w)
D11 D10 -D9 <- INTERNAL LED NUMBER (see PDF)
-1 --2-- 3 <- NUMBERS EMBOSSED ON BACK OF PLASTIC HOUSING (see error chart)
*/
- output_set_value("led1", BIT(data, 4)); // LED "D11"
- output_set_value("led2", BIT(data, 5)); // LED "D10"
- output_set_value("led3", BIT(data, 6)); // LED "D9"
+ output().set_value("led1", BIT(data, 4)); // LED "D11"
+ output().set_value("led2", BIT(data, 5)); // LED "D10"
+ output().set_value("led3", BIT(data, 6)); // LED "D9"
m_zflip = false;
}
@@ -1927,8 +1927,8 @@ READ8_MEMBER(rainbow_state::z80_diskstatus_r)
// Print HEX track number
static UINT8 bcd2hex[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };
// 0...9 ,A (0x77), b (0x7c), C (0x39) , d (0x5e), E (0x79), F (0x71)
- output_set_digit_value(0, bcd2hex[(track >> 4) & 0x0f]);
- output_set_digit_value(1, bcd2hex[(track - ((track >> 4) << 4)) & 0x0f]);
+ output().set_digit_value(0, bcd2hex[(track >> 4) & 0x0f]);
+ output().set_digit_value(1, bcd2hex[(track - ((track >> 4) << 4)) & 0x0f]);
}
// D2: TG43 L : 0 = INDICATES TRACK > 43 SIGNAL FROM FDC TO DISK DRIVE.
@@ -1991,11 +1991,11 @@ WRITE8_MEMBER(rainbow_state::z80_diskcontrol_w)
}
}
- output_set_value("driveled0", (selected_drive == 0) ? 1 : 0);
- output_set_value("driveled1", (selected_drive == 1) ? 1 : 0);
+ output().set_value("driveled0", (selected_drive == 0) ? 1 : 0);
+ output().set_value("driveled1", (selected_drive == 1) ? 1 : 0);
- output_set_value("driveled2", (selected_drive == 2) ? 1 : 0);
- output_set_value("driveled3", (selected_drive == 3) ? 1 : 0);
+ output().set_value("driveled2", (selected_drive == 2) ? 1 : 0);
+ output().set_value("driveled3", (selected_drive == 3) ? 1 : 0);
if (selected_drive < 4)
{
@@ -2224,12 +2224,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(rainbow_state::motor_tick)
if (MOTOR_DISABLE_counter < 2)
{
- output_set_value("driveled0", 0); // DRIVE 0 (A)
- output_set_value("driveled1", 0); // DRIVE 1 (B)
- output_set_value("driveled2", 0); // DRIVE 2 (C)
- output_set_value("driveled3", 0); // DRIVE 3 (D)
+ output().set_value("driveled0", 0); // DRIVE 0 (A)
+ output().set_value("driveled1", 0); // DRIVE 1 (B)
+ output().set_value("driveled2", 0); // DRIVE 2 (C)
+ output().set_value("driveled3", 0); // DRIVE 3 (D)
- output_set_value("led1", 1); // 1 = OFF (One of the CPU LEDs as DRIVE LED)
+ output().set_value("led1", 1); // 1 = OFF (One of the CPU LEDs as DRIVE LED)
}
if (m_crtc->MHFU(1)) // MHFU * flag * enabled ?
diff --git a/src/mame/drivers/rallyx.cpp b/src/mame/drivers/rallyx.cpp
index 25b73075293..dcce5a906fe 100644
--- a/src/mame/drivers/rallyx.cpp
+++ b/src/mame/drivers/rallyx.cpp
@@ -245,19 +245,19 @@ WRITE8_MEMBER(rallyx_state::rallyx_latch_w)
break;
case 0x04:
- set_led_status(machine(), 0, bit);
+ output().set_led_value(0, bit);
break;
case 0x05:
- set_led_status(machine(), 1, bit);
+ output().set_led_value(1, bit);
break;
case 0x06:
- coin_lockout_w(machine(), 0, !bit);
+ machine().bookkeeping().coin_lockout_w(0, !bit);
break;
case 0x07:
- coin_counter_w(machine(), 0, bit);
+ machine().bookkeeping().coin_counter_w(0, bit);
break;
}
}
@@ -286,14 +286,14 @@ WRITE8_MEMBER(rallyx_state::locomotn_latch_w)
break;
case 0x04: /* OUT1 */
- coin_counter_w(machine(), 0, bit);
+ machine().bookkeeping().coin_counter_w(0, bit);
break;
case 0x05: /* OUT2 */
break;
case 0x06: /* OUT3 */
- coin_counter_w(machine(), 1,bit);
+ machine().bookkeeping().coin_counter_w(1,bit);
break;
case 0x07: /* STARSON */
diff --git a/src/mame/drivers/rampart.cpp b/src/mame/drivers/rampart.cpp
index 014a1c1177d..523650d5915 100644
--- a/src/mame/drivers/rampart.cpp
+++ b/src/mame/drivers/rampart.cpp
@@ -98,8 +98,8 @@ WRITE16_MEMBER(rampart_state::latch_w)
{
if (data & 0x1000)
logerror("Color bank set to 1!\n");
- coin_counter_w(machine(), 0, (data >> 9) & 1);
- coin_counter_w(machine(), 1, (data >> 8) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 9) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 8) & 1);
}
/* lower byte being modified? */
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/rastersp.cpp b/src/mame/drivers/rastersp.cpp
index cbccc251d6c..8176fb3f749 100644
--- a/src/mame/drivers/rastersp.cpp
+++ b/src/mame/drivers/rastersp.cpp
@@ -128,11 +128,11 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(tms_tx_timer);
INTERRUPT_GEN_MEMBER(vblank_irq);
- UINT8 *m_nvram8;
+ std::unique_ptr<UINT8[]> m_nvram8;
UINT8 m_io_reg;
UINT8 m_irq_status;
UINT32 m_dpyaddr;
- UINT16 *m_paletteram;
+ std::unique_ptr<UINT16[]> m_paletteram;
UINT32 m_speedup_count;
UINT32 m_tms_io_regs[0x80];
bitmap_ind16 m_update_bitmap;
@@ -158,9 +158,9 @@ protected:
void rastersp_state::machine_start()
{
- m_nvram8 = auto_alloc_array(machine(), UINT8, NVRAM_SIZE);
- m_nvram->set_base(m_nvram8,NVRAM_SIZE);
- m_paletteram = auto_alloc_array(machine(), UINT16, 0x8000);
+ m_nvram8 = std::make_unique<UINT8[]>(NVRAM_SIZE);
+ m_nvram->set_base(m_nvram8.get(),NVRAM_SIZE);
+ m_paletteram = std::make_unique<UINT16[]>(0x8000);
membank("bank1")->set_base(m_dram);
membank("bank2")->set_base(&m_dram[0x10000/4]);
diff --git a/src/mame/drivers/ravens.cpp b/src/mame/drivers/ravens.cpp
index e122ab12f72..f9957ca5bc2 100644
--- a/src/mame/drivers/ravens.cpp
+++ b/src/mame/drivers/ravens.cpp
@@ -120,7 +120,7 @@ READ8_MEMBER( ravens_state::cass_r )
WRITE8_MEMBER( ravens_state::display_w )
{
- output_set_digit_value(offset, data);
+ output().set_digit_value(offset, data);
}
WRITE8_MEMBER( ravens_state::leds_w )
@@ -129,7 +129,7 @@ WRITE8_MEMBER( ravens_state::leds_w )
for (int i = 0; i < 8; i++)
{
sprintf(ledname,"led%d",i);
- output_set_value(ledname, !BIT(data, i));
+ output().set_value(ledname, !BIT(data, i));
}
}
@@ -194,7 +194,7 @@ WRITE8_MEMBER( ravens_state::port1c_w )
MACHINE_RESET_MEMBER( ravens_state, ravens2 )
{
m_term_data = 0x80;
- output_set_digit_value(6, 0);
+ output().set_digit_value(6, 0);
}
diff --git a/src/mame/drivers/re900.cpp b/src/mame/drivers/re900.cpp
index d959a351444..5adaa88084f 100644
--- a/src/mame/drivers/re900.cpp
+++ b/src/mame/drivers/re900.cpp
@@ -127,12 +127,12 @@ READ8_MEMBER(re900_state::re_psg_portA_r)
{
if ((ioport("IN0")->read() & 0x01) == 0)
{
- output_set_lamp_value(0,1); // Operator Key ON
+ output().set_lamp_value(0,1); // Operator Key ON
}
else
{
- output_set_lamp_value(0,0); // Operator Key OFF
+ output().set_lamp_value(0,0); // Operator Key OFF
}
return ioport("IN0")->read();
@@ -144,18 +144,18 @@ READ8_MEMBER(re900_state::re_psg_portB_r)
logerror("llamada a re_psg_portB_r\n");
/* This is a hack to select the active player due to Keyboard size restrictions */
- output_set_lamp_value(m_player,1);
+ output().set_lamp_value(m_player,1);
if (ioport("IN_S")->read())
{
if (!m_stat_a)
{
- output_set_lamp_value(1, 0);
- output_set_lamp_value(2, 0);
- output_set_lamp_value(3, 0);
- output_set_lamp_value(4, 0);
- output_set_lamp_value(5, 0);
- output_set_lamp_value(6, 0);
+ output().set_lamp_value(1, 0);
+ output().set_lamp_value(2, 0);
+ output().set_lamp_value(3, 0);
+ output().set_lamp_value(4, 0);
+ output().set_lamp_value(5, 0);
+ output().set_lamp_value(6, 0);
m_player++;
if (m_player == 7)
@@ -163,7 +163,7 @@ READ8_MEMBER(re900_state::re_psg_portB_r)
m_player = 1;
}
- output_set_lamp_value(m_player, 1); /* It shows active player via layout buttons */
+ output().set_lamp_value(m_player, 1); /* It shows active player via layout buttons */
m_stat_a = 1;
}
}
@@ -212,11 +212,11 @@ WRITE8_MEMBER(re900_state::re_mux_port_B_w)
if (data == 0x7f)
{
- output_set_lamp_value(20 + led, 1);
+ output().set_lamp_value(20 + led, 1);
if (led != m_ledant)
{
- output_set_lamp_value(20 + m_ledant, 0);
+ output().set_lamp_value(20 + m_ledant, 0);
m_ledant = led;
}
}
@@ -224,8 +224,8 @@ WRITE8_MEMBER(re900_state::re_mux_port_B_w)
WRITE8_MEMBER(re900_state::cpu_port_0_w)
{
-// output_set_lamp_value(7,1 ^ ( (data >> 4) & 1)); /* Cont. Sal */
-// output_set_lamp_value(8,1 ^ ( (data >> 5) & 1)); /* Cont. Ent */
+// output().set_lamp_value(7,1 ^ ( (data >> 4) & 1)); /* Cont. Sal */
+// output().set_lamp_value(8,1 ^ ( (data >> 5) & 1)); /* Cont. Ent */
}
WRITE8_MEMBER(re900_state::watchdog_reset_w)
diff --git a/src/mame/drivers/retofinv.cpp b/src/mame/drivers/retofinv.cpp
index b6eebccd332..7814b7707e3 100644
--- a/src/mame/drivers/retofinv.cpp
+++ b/src/mame/drivers/retofinv.cpp
@@ -110,12 +110,12 @@ WRITE8_MEMBER(retofinv_state::irq1_ack_w)
WRITE8_MEMBER(retofinv_state::coincounter_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
WRITE8_MEMBER(retofinv_state::coinlockout_w)
{
- coin_lockout_w(machine(), 0,~data & 1);
+ machine().bookkeeping().coin_lockout_w(0,~data & 1);
}
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/rmhaihai.cpp b/src/mame/drivers/rmhaihai.cpp
index 9ab6847225c..e5ce3256085 100644
--- a/src/mame/drivers/rmhaihai.cpp
+++ b/src/mame/drivers/rmhaihai.cpp
@@ -192,8 +192,8 @@ WRITE8_MEMBER(rmhaihai_state::ctrl_w)
// (data & 0x02) is switched on and off in service mode
- coin_lockout_w(machine(), 0, ~data & 0x04);
- coin_counter_w(machine(), 0, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
// (data & 0x10) is medal in service mode
diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp
index 49d255e190d..f691a23c579 100644
--- a/src/mame/drivers/rockrage.cpp
+++ b/src/mame/drivers/rockrage.cpp
@@ -69,8 +69,8 @@ WRITE8_MEMBER(rockrage_state::rockrage_bankswitch_w)
m_rombank->set_entry((data & 0x70) >> 4);
/* bits 0 & 1 = coin counters */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
/* other bits unknown */
}
diff --git a/src/mame/drivers/rollerg.cpp b/src/mame/drivers/rollerg.cpp
index c2fccbef616..ec5e0c07bea 100644
--- a/src/mame/drivers/rollerg.cpp
+++ b/src/mame/drivers/rollerg.cpp
@@ -24,8 +24,8 @@ WRITE8_MEMBER(rollerg_state::rollerg_0010_w)
logerror("%04x: write %02x to 0010\n",space.device().safe_pc(), data);
/* bits 0/1 are coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 enables 051316 ROM reading */
m_readzoomroms = data & 0x04;
diff --git a/src/mame/drivers/rollext.cpp b/src/mame/drivers/rollext.cpp
index 61698ec5c91..0a01fc4e26e 100644
--- a/src/mame/drivers/rollext.cpp
+++ b/src/mame/drivers/rollext.cpp
@@ -61,6 +61,8 @@
[0x00000320] 2000000-TCOUNT in XINT3 handler
[0x01010668] copied from (word)0xb0000004 in XINT3 handler
+ ROM [0xc0050000] 0x10000 floats copied to [0x40180000]
+
Texture ROM decode:
@@ -71,6 +73,208 @@
#include "emu.h"
#include "cpu/tms32082/tms32082.h"
+#include "video/poly.h"
+
+struct rollext_polydata
+{
+ UINT32 tex_bottom;
+ UINT32 tex_left;
+ UINT32 pal;
+};
+
+class rollext_renderer : public poly_manager<float, rollext_polydata, 4, 10000>
+{
+public:
+ rollext_renderer(screen_device &screen)
+ : poly_manager<float, rollext_polydata, 4, 10000>(screen)
+ {
+ m_fb = std::make_unique<bitmap_rgb32>(1024, 1024);
+ }
+
+ void render_texture_scan(INT32 scanline, const extent_t &extent, const rollext_polydata &extradata, int threadid);
+
+ void set_texture_ram(UINT8* texture_ram);
+ void set_palette_ram(UINT16* palette_ram);
+ void process_display_list(UINT32* dispram);
+
+ void clear_fb();
+ void display(bitmap_rgb32 *bitmap, const rectangle &cliprect);
+private:
+ std::unique_ptr<bitmap_rgb32> m_fb;
+
+ UINT8 *m_texture_ram;
+ UINT16 *m_palette_ram;
+};
+
+void rollext_renderer::set_texture_ram(UINT8* texture_ram)
+{
+ m_texture_ram = texture_ram;
+}
+
+void rollext_renderer::set_palette_ram(UINT16* palette_ram)
+{
+ m_palette_ram = palette_ram;
+}
+
+void rollext_renderer::render_texture_scan(INT32 scanline, const extent_t &extent, const rollext_polydata &extradata, int threadid)
+{
+ float u = extent.param[0].start;
+ float v = extent.param[1].start;
+ float du = extent.param[0].dpdx;
+ float dv = extent.param[1].dpdx;
+
+ UINT32 *fb = &m_fb->pix32(scanline);
+
+ UINT32 texbot = extradata.tex_bottom;
+ UINT32 texleft = extradata.tex_left;
+
+ int palnum = extradata.pal;
+
+ for (int x = extent.startx; x < extent.stopx; x++)
+ {
+ int iu = (int)(u * 29.0f);
+ int iv = (int)(v * 29.0f);
+
+ UINT8 p = m_texture_ram[((texbot - iv) * 2048) + texleft + iu];
+
+ UINT16 texel = m_palette_ram[(palnum * 256) + BYTE_XOR_BE(p)];
+ int r = ((texel >> 10) & 0x1f) << 3;
+ int g = ((texel >> 5) & 0x1f) << 3;
+ int b = (texel & 0x1f) << 3;
+
+ fb[x] = 0xff000000 | (r << 16) | (g << 8) | b;
+
+ u += du;
+ v += dv;
+ }
+}
+
+void rollext_renderer::process_display_list(UINT32* disp_ram)
+{
+ const rectangle& visarea = screen().visible_area();
+
+ render_delegate rd = render_delegate(FUNC(rollext_renderer::render_texture_scan), this);
+
+ int num = disp_ram[0xffffc/4];
+
+ for (int i=0; i < num; i++)
+ {
+ int ii = i * 0x60;
+
+ vertex_t vert[4];
+
+ //int x[4];
+ //int y[4];
+
+ // Poly data:
+ // Word 0: xxxxxxxx -------- -------- -------- Command? 0xFC for quads
+ // -------- -------- xxxxxxxx -------- Palette?
+ // -------- -------- -------- xxxxxxxx Number of verts? (4 for quads)
+
+ // Word 1: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Vertex 1 X
+
+ // Word 2: xxxxxxxx xxxxx--- -------- -------- Texture Origin Bottom
+ // -------- -----xxx xxxxxxxx -------- Texture Origin Left
+
+ // Word 3: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Vertex 1 Y
+
+ // Word 4: -------- -------- xxxxxxxx xxxxxxxx ?
+
+ // Word 5: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Vertex 2 X
+
+ // Word 6: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Unknown float
+
+ // Word 7: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Vertex 2 Y
+
+ // Word 8: -------- -------- -------- -------- ?
+
+ // Word 9: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Vertex 3 X
+
+ // Word 10: -------- -------- -------- -------- ?
+
+ // Word 11: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Vertex 3 Y
+
+ // Word 12: -------- -------- -------- -------- ?
+
+ // Word 13: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Vertex 4 X
+
+ // Word 14: -------- -------- -------- -------- ?
+
+ // Word 15: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Vertex 4 Y
+
+ // Word 16: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Unknown float
+
+ // Word 17: -------- -------- -------- -------- ?
+
+ // Word 18: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Unknown float
+
+ // Word 19: -------- -------- -------- -------- ?
+
+ // Word 20: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Unknown float
+
+ // Word 21: -------- -------- -------- -------- ?
+
+ // Word 22: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Unknown float
+
+ // Word 23: -------- -------- -------- -------- ?
+
+ for (int j=0; j < 4; j++)
+ {
+ UINT32 ix = disp_ram[(ii + (j*0x10) + 0x4) / 4];
+ UINT32 iy = disp_ram[(ii + (j*0x10) + 0xc) / 4];
+
+ vert[j].x = (int)((u2f(ix) / 2.0f) + 256.0f);
+ vert[j].y = (int)((u2f(iy) / 2.0f) + 192.0f);
+ }
+
+ vert[0].p[0] = 0.0f; vert[0].p[1] = 1.0f;
+ vert[1].p[0] = 0.0f; vert[1].p[1] = 0.0f;
+ vert[2].p[0] = 1.0f; vert[2].p[1] = 0.0f;
+ vert[3].p[0] = 1.0f; vert[3].p[1] = 1.0f;
+
+ rollext_polydata &extra = object_data_alloc();
+
+ extra.tex_bottom = (disp_ram[(ii + 8) / 4] >> 19) & 0x1fff;
+ extra.tex_left = (disp_ram[(ii + 8) / 4] >> 8) & 0x7ff;
+ extra.pal = (disp_ram[(ii + 0) / 4] >> 8) & 0x1f;
+
+#if 0
+ printf("P%d\n", i);
+ for (int j=0; j < 6; j++)
+ {
+ printf(" %08X %08X %08X %08X", disp_ram[(ii + (j*0x10) + 0) / 4], disp_ram[(ii + (j*0x10) + 4) / 4], disp_ram[(ii + (j*0x10) + 8) / 4], disp_ram[(ii + (j*0x10) + 12) / 4]);
+ printf(" %f %f %f %f\n", u2f(disp_ram[(ii + (j*0x10) + 0) / 4]), u2f(disp_ram[(ii + (j*0x10) + 4) / 4]), u2f(disp_ram[(ii + (j*0x10) + 8) / 4]), u2f(disp_ram[(ii + (j*0x10) + 12) / 4]));
+ }
+#endif
+
+ render_triangle(visarea, rd, 4, vert[0], vert[1], vert[2]);
+ render_triangle(visarea, rd, 4, vert[0], vert[2], vert[3]);
+
+ }
+
+ wait();
+}
+
+void rollext_renderer::clear_fb()
+{
+ rectangle visarea;
+ visarea.min_x = 0;
+ visarea.max_x = 511;
+ visarea.min_y = 0;
+ visarea.max_y = 383;
+
+ m_fb->fill(0xff000000, visarea);
+
+}
+
+void rollext_renderer::display(bitmap_rgb32 *bitmap, const rectangle &cliprect)
+{
+ copybitmap_trans(*bitmap, *m_fb, 0, 0, 0, 0, cliprect, 0);
+}
+
+
+
+
class rollext_state : public driver_device
{
@@ -80,22 +284,25 @@ public:
m_maincpu(*this, "maincpu"),
m_palette_ram(*this, "palette_ram"),
m_texture_mask(*this, "texture_mask"),
- m_disp_ram(*this, "disp_ram")
+ m_disp_ram(*this, "disp_ram"),
+ m_screen(*this, "screen")
{
}
- required_device<cpu_device> m_maincpu;
+ required_device<tms32082_mp_device> m_maincpu;
required_shared_ptr<UINT32> m_palette_ram;
required_shared_ptr<UINT32> m_texture_mask;
required_shared_ptr<UINT32> m_disp_ram;
+ required_device<screen_device> m_screen;
DECLARE_READ32_MEMBER(a0000000_r);
DECLARE_WRITE32_MEMBER(a0000000_w);
DECLARE_READ32_MEMBER(b0000000_r);
- UINT8 *m_texture;
+ DECLARE_WRITE32_MEMBER(cmd_callback);
- void draw_line(bitmap_rgb32 &bitmap, const rectangle &visarea, int v1x, int v1y, int v2x, int v2y);
+ std::unique_ptr<UINT8[]> m_texture;
+ std::unique_ptr<rollext_renderer> m_renderer;
INTERRUPT_GEN_MEMBER(vblank_interrupt);
DECLARE_DRIVER_INIT(rollext);
@@ -106,8 +313,6 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
-
-
void rollext_state::preprocess_texture_data()
{
UINT8 *rom = (UINT8*)memregion("texture")->base();
@@ -128,65 +333,19 @@ void rollext_state::preprocess_texture_data()
}
}
-void rollext_state::draw_line(bitmap_rgb32 &bitmap, const rectangle &visarea, int v1x, int v1y, int v2x, int v2y)
-{
- int dx = (v2x - v1x);
- int dy = (v2y - v1y);
-
- int x1 = v1x;
- int y1 = v1y;
-
- if (v1x < visarea.min_x || v1x > visarea.max_x ||
- v1y < visarea.min_y || v1y > visarea.max_y ||
- v2x < visarea.min_x || v2x > visarea.max_x ||
- v2y < visarea.min_y || v2y > visarea.max_x)
- return;
-
- if (dx > dy)
- {
- int x = x1;
- for (int i=0; i < abs(dx); i++)
- {
- int y = y1 + (dy * (float)(x - x1) / (float)(dx));
-
- if (x >= 0 && x < 512 && y >= 0 && y < 384)
- {
- UINT32 *fb = &bitmap.pix32(y);
- fb[x] = 0xffffffff;
- }
-
- x++;
- }
- }
- else
- {
- int y = y1;
- for (int i=0; i < abs(dy); i++)
- {
- int x = x1 + (dx * (float)(y - y1) / (float)(dy));
-
- if (x >= 0 && x < 512 && y >= 0 && y < 384)
- {
- UINT32 *fb = &bitmap.pix32(y);
- fb[x] = 0xffffffff;
- }
-
- y++;
- }
- }
-}
-
void rollext_state::video_start()
{
- m_texture = auto_alloc_array(machine(), UINT8, 0x2000000);
+ m_texture = std::make_unique<UINT8[]>(0x2000000);
preprocess_texture_data();
+
+ m_renderer = std::make_unique<rollext_renderer>(*m_screen);
+ m_renderer->set_texture_ram(m_texture.get());
+ m_renderer->set_palette_ram((UINT16*)&m_palette_ram[0]);
}
UINT32 rollext_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(0xff000000, cliprect);
-
#if 0
UINT16 *pal = (UINT16*)&m_palette_ram[0];
@@ -213,33 +372,11 @@ UINT32 rollext_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
}
#endif
- int num = m_disp_ram[0xffffc/4];
+ m_renderer->display(&bitmap, cliprect);
- for (int i=0; i < num; i++)
- {
- int ii = i * 0x60;
-
- int x[4];
- int y[4];
-
- for (int j=0; j < 4; j++)
- {
- UINT32 ix = m_disp_ram[(ii + (j*0x10) + 0x4) / 4];
- UINT32 iy = m_disp_ram[(ii + (j*0x10) + 0xc) / 4];
-
- x[j] = (int)((u2f(ix) / 2.0f) + 256.0f);
- y[j] = (int)((u2f(iy) / 2.0f) + 192.0f);
- }
-
-
- draw_line(bitmap, cliprect, x[0], y[0], x[1], y[1]);
- draw_line(bitmap, cliprect, x[1], y[1], x[2], y[2]);
- draw_line(bitmap, cliprect, x[3], y[3], x[2], y[2]);
- draw_line(bitmap, cliprect, x[0], y[0], x[3], y[3]);
-
- }
+ //m_renderer->clear_fb();
- m_disp_ram[0xffffc/4] = 0;
+ //m_disp_ram[0xffffc/4] = 0;
return 0;
@@ -277,7 +414,7 @@ READ32_MEMBER(rollext_state::b0000000_r)
switch (offset)
{
case 0: // ??
- return 0xffff;
+ return 0x0000ffff;
case 1: // ??
return 0;
}
@@ -285,6 +422,89 @@ READ32_MEMBER(rollext_state::b0000000_r)
return 0;
}
+WRITE32_MEMBER(rollext_state::cmd_callback)
+{
+ UINT32 command = data;
+
+ // PP0
+ if (command & 1)
+ {
+ if (command & 0x00004000)
+ {
+ // simulate PP behavior for now...
+ space.write_dword(0x00000084, 3);
+
+ UINT32 num = space.read_dword(0x90);
+
+ int consume_num = num;
+ if (consume_num > 32)
+ consume_num = 32;
+
+ printf("PP num %d\n", num);
+ printf("0x00000084 = %08X\n", space.read_dword(0x84));
+
+
+ UINT32 ra = 0x1000280;
+
+ /*
+ printf("FIFO push:\n");
+
+ for (int i=0; i < consume_num; i++)
+ {
+ printf("Entry %d:\n", i);
+ for (int k=0; k < 6; k++)
+ {
+ for (int l=0; l < 4; l++)
+ {
+ UINT32 dd = m_program->read_dword(ra);
+ ra += 4;
+
+ printf("%08X(%f) ", dd, u2f(dd));
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+ */
+
+ ra = 0x1000280;
+
+ int oldnum = space.read_dword(0x600ffffc);
+ UINT32 rb = 0x60000000 + (oldnum * 0x60);
+
+ for (int i=0; i < consume_num; i++)
+ {
+ for (int k=0; k < 24; k++)
+ {
+ UINT32 dd = space.read_dword(ra);
+ ra += 4;
+
+ space.write_dword(rb, dd);
+ rb += 4;
+ }
+ }
+ space.write_dword(0x600ffffc, oldnum+consume_num);
+
+ m_renderer->process_display_list(m_disp_ram);
+
+ space.write_dword(0x600ffffc, 0);
+
+ space.write_dword(0x00000090, 0);
+ space.write_dword(0x00000094, 0);
+
+ }
+ }
+ // PP1
+ if (command & 2)
+ {
+ if (command & 0x00004000)
+ {
+ // simulate PP behavior for now...
+ space.write_dword(0x00001014, 3);
+ }
+ }
+}
+
// Master Processor memory map
static ADDRESS_MAP_START(memmap, AS_PROGRAM, 32, rollext_state)
@@ -320,8 +540,9 @@ void rollext_state::machine_start()
static MACHINE_CONFIG_START(rollext, rollext_state)
MCFG_CPU_ADD("maincpu", TMS32082_MP, 60000000)
MCFG_CPU_PROGRAM_MAP(memmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", rollext_state, vblank_interrupt)
- MCFG_CPU_PERIODIC_INT_DRIVER(rollext_state, irq3_line_assert, 60)
+ //MCFG_CPU_VBLANK_INT_DRIVER("screen", rollext_state, vblank_interrupt)
+ MCFG_CPU_PERIODIC_INT_DRIVER(rollext_state, irq1_line_assert, 60)
+ //MCFG_CPU_PERIODIC_INT_DRIVER(rollext_state, irq3_line_assert, 500)
MCFG_CPU_ADD("pp0", TMS32082_PP, 60000000)
MCFG_CPU_PROGRAM_MAP(memmap);
@@ -344,6 +565,7 @@ INTERRUPT_GEN_MEMBER(rollext_state::vblank_interrupt)
DRIVER_INIT_MEMBER(rollext_state, rollext)
{
+ m_maincpu->set_command_callback(write32_delegate(FUNC(rollext_state::cmd_callback),this));
}
diff --git a/src/mame/drivers/roul.cpp b/src/mame/drivers/roul.cpp
index 55226243fb5..e6634a6aa41 100644
--- a/src/mame/drivers/roul.cpp
+++ b/src/mame/drivers/roul.cpp
@@ -81,7 +81,7 @@ public:
required_device<cpu_device> m_soundcpu;
UINT8 m_reg[0x10];
- UINT8 *m_videobuf;
+ std::unique_ptr<UINT8[]> m_videobuf;
UINT8 m_lamp_old;
DECLARE_READ8_MEMBER(blitter_status_r);
@@ -188,8 +188,8 @@ WRITE8_MEMBER(roul_state::ball_w)
{
int lamp = data;
- output_set_lamp_value(data, 1);
- output_set_lamp_value(m_lamp_old, 0);
+ output().set_lamp_value(data, 1);
+ output().set_lamp_value(m_lamp_old, 0);
m_lamp_old = lamp;
}
@@ -222,10 +222,10 @@ ADDRESS_MAP_END
void roul_state::video_start()
{
- m_videobuf = auto_alloc_array_clear(machine(), UINT8, VIDEOBUF_SIZE);
+ m_videobuf = make_unique_clear<UINT8[]>(VIDEOBUF_SIZE);
save_item(NAME(m_reg));
- save_pointer(NAME(m_videobuf), VIDEOBUF_SIZE);
+ save_pointer(NAME(m_videobuf.get()), VIDEOBUF_SIZE);
save_item(NAME(m_lamp_old));
}
diff --git a/src/mame/drivers/rowamet.cpp b/src/mame/drivers/rowamet.cpp
index 58f99179dff..5a724c75623 100644
--- a/src/mame/drivers/rowamet.cpp
+++ b/src/mame/drivers/rowamet.cpp
@@ -199,8 +199,8 @@ TIMER_DEVICE_CALLBACK_MEMBER( rowamet_state::timer_a )
m_out_offs &= 15;
UINT8 digit = m_out_offs << 1;
- output_set_digit_value(digit, patterns[m_p_ram[m_out_offs]>>4]);
- output_set_digit_value(++digit, patterns[m_p_ram[m_out_offs++]&15]);
+ output().set_digit_value(digit, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(++digit, patterns[m_p_ram[m_out_offs++]&15]);
}
static MACHINE_CONFIG_START( rowamet, rowamet_state )
diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp
index 0d49e09ae8c..5a37bae7207 100644
--- a/src/mame/drivers/royalmah.cpp
+++ b/src/mame/drivers/royalmah.cpp
@@ -119,7 +119,7 @@ public:
UINT8 m_dsw_select;
UINT8 m_rombank;
int m_palette_base;
- UINT8 *m_janptr96_nvram;
+ std::unique_ptr<UINT8[]> m_janptr96_nvram;
UINT8 m_suzume_bank;
UINT8 m_gfx_adr_l;
UINT8 m_gfx_adr_m;
@@ -273,7 +273,7 @@ PALETTE_INIT_MEMBER(royalmah_state,mjderngr)
WRITE8_MEMBER(royalmah_state::royalmah_palbank_w)
{
/* bit 1 = coin counter */
- coin_counter_w(machine(), 0,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 2);
/* bit 2 = flip screen */
m_flip_screen = (data & 4) >> 2;
@@ -286,7 +286,7 @@ WRITE8_MEMBER(royalmah_state::royalmah_palbank_w)
WRITE8_MEMBER(royalmah_state::mjderngr_coin_w)
{
/* bit 1 = coin counter */
- coin_counter_w(machine(), 0,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 2);
/* bit 2 = flip screen */
m_flip_screen = (data & 4) >> 2;
@@ -447,8 +447,8 @@ WRITE8_MEMBER(royalmah_state::mjapinky_palbank_w)
{
m_flip_screen = (data & 4) >> 2;
m_palette_base = (data >> 3) & 0x01;
- coin_counter_w(machine(), 0,data & 2); // in
- coin_counter_w(machine(), 1,data & 1); // out
+ machine().bookkeeping().coin_counter_w(0,data & 2); // in
+ machine().bookkeeping().coin_counter_w(1,data & 1); // out
}
READ8_MEMBER(royalmah_state::mjapinky_dsw_r)
@@ -883,7 +883,7 @@ WRITE8_MEMBER(royalmah_state::janptr96_rombank_w)
WRITE8_MEMBER(royalmah_state::janptr96_rambank_w)
{
- membank("bank2")->set_base(m_janptr96_nvram + 0x1000 + 0x1000 * data);
+ membank("bank2")->set_base(m_janptr96_nvram.get() + 0x1000 + 0x1000 * data);
}
READ8_MEMBER(royalmah_state::janptr96_unknown_r)
@@ -895,8 +895,8 @@ READ8_MEMBER(royalmah_state::janptr96_unknown_r)
WRITE8_MEMBER(royalmah_state::janptr96_coin_counter_w)
{
m_flip_screen = (data & 4) >> 2;
- coin_counter_w(machine(), 0,data & 2); // in
- coin_counter_w(machine(), 1,data & 1); // out
+ machine().bookkeeping().coin_counter_w(0,data & 2); // in
+ machine().bookkeeping().coin_counter_w(1,data & 1); // out
}
static ADDRESS_MAP_START( janptr96_iomap, AS_IO, 8, royalmah_state )
@@ -922,8 +922,8 @@ ADDRESS_MAP_END
WRITE8_MEMBER(royalmah_state::mjifb_coin_counter_w)
{
m_flip_screen = ((data & 4) >> 2) ^ 1;
- coin_counter_w(machine(), 0,data & 2); // in
- coin_counter_w(machine(), 1,data & 1); // out
+ machine().bookkeeping().coin_counter_w(0,data & 2); // in
+ machine().bookkeeping().coin_counter_w(1,data & 1); // out
}
READ8_MEMBER(royalmah_state::mjifb_rom_io_r)
@@ -1260,8 +1260,8 @@ WRITE8_MEMBER(royalmah_state::mjvegasa_rom_io_w)
WRITE8_MEMBER(royalmah_state::mjvegasa_coin_counter_w)
{
m_flip_screen = (data & 4) >> 2;
- coin_counter_w(machine(), 0,data & 2); // in
- coin_counter_w(machine(), 1,data & 1); // out
+ machine().bookkeeping().coin_counter_w(0,data & 2); // in
+ machine().bookkeeping().coin_counter_w(1,data & 1); // out
}
// hopper?
@@ -4901,9 +4901,9 @@ DRIVER_INIT_MEMBER(royalmah_state,ippatsu)
DRIVER_INIT_MEMBER(royalmah_state,janptr96)
{
- m_janptr96_nvram = auto_alloc_array(machine(), UINT8, 0x1000 * 9);
- membank("bank3")->set_base(m_janptr96_nvram);
- machine().device<nvram_device>("nvram")->set_base(m_janptr96_nvram, 0x1000 * 9);
+ m_janptr96_nvram = std::make_unique<UINT8[]>(0x1000 * 9);
+ membank("bank3")->set_base(m_janptr96_nvram.get());
+ machine().device<nvram_device>("nvram")->set_base(m_janptr96_nvram.get(), 0x1000 * 9);
}
GAME( 1981, royalmj, 0, royalmah, royalmah, driver_device, 0, ROT0, "Nichibutsu", "Royal Mahjong (Japan, v1.13)", 0 )
diff --git a/src/mame/drivers/rsc55.cpp b/src/mame/drivers/rsc55.cpp
index 4d53cea0f17..1a5cd15f49d 100644
--- a/src/mame/drivers/rsc55.cpp
+++ b/src/mame/drivers/rsc55.cpp
@@ -25,7 +25,7 @@
20.0 MHz crystal
Roland R15239147 HG62E11B23FS 1L1 Japan
- Roland R15199778 6435328A97F 1M1 R Japan
+ Roland R15199778 6435328A97F 1M1 R Japan - Hitachi H8/532 MCU with internal ROM (Hitachi p/n HD6435328A97F)
Roland R15239148 24201F002 9148EAI Japan
Roland R15209363 LH532H6D 9152 D
R15239176 BU3910F
@@ -71,7 +71,7 @@ static MACHINE_CONFIG_START( sc55, sc55_state )
MACHINE_CONFIG_END
ROM_START( sc55 )
- ROM_REGION( 0x40000, "maincpu", 0 )
+ 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/runaway.cpp b/src/mame/drivers/runaway.cpp
index 82580583d83..aabcf2c7a51 100644
--- a/src/mame/drivers/runaway.cpp
+++ b/src/mame/drivers/runaway.cpp
@@ -70,7 +70,7 @@ READ8_MEMBER(runaway_state::runaway_pot_r)
WRITE8_MEMBER(runaway_state::runaway_led_w)
{
- set_led_status(machine(), offset, ~data & 1);
+ output().set_led_value(offset, ~data & 1);
}
diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp
index 1f6ab6964e4..38d526632e0 100644
--- a/src/mame/drivers/rungun.cpp
+++ b/src/mame/drivers/rungun.cpp
@@ -29,10 +29,10 @@
Known Issues:
- CRTC and video registers needs syncronization with current video draw state, it's very noticeable if for example scroll values are in very different states between screens.
- - Current draw state could be improved optimization-wise (for example by supporting it in the core in some way).
- - sprite palettes are not entirely right
-
-
+ - Current draw state could be improved optimization-wise (for example by supporting it in the core in some way).
+ - sprite palettes are not entirely right
+
+
*************************************************************************/
#include "emu.h"
@@ -68,7 +68,7 @@ READ16_MEMBER(rungun_state::rng_sysregs_r)
bit9 : screen output select
*/
{
- UINT8 field_bit = machine().first_screen()->frame_number() & 1;
+ UINT8 field_bit = machine().first_screen()->frame_number() & 1;
if(m_single_screen_mode == true)
field_bit = 1;
return (ioport("SYSTEM")->read() & 0xfdff) | (field_bit << 9);
@@ -95,12 +95,12 @@ WRITE16_MEMBER(rungun_state::rng_sysregs_w)
bit0 : eeprom_di_write
bit1 : eeprom_cs_write
bit2 : eeprom_clk_write
- bit3 : coin counter #1
- bit4 : coin counter #2 (when coin slot "common" is selected)
+ bit3 : coin counter #1
+ bit4 : coin counter #2 (when coin slot "common" is selected)
bit7 : set before massive memory writes (video chip select?)
bit10 : IRQ5 ACK
- bit12 : if set, forces screen output to 1 monitor.
- bit14 : (0) sprite on top of PSAC2 layer (1) other way around (title screen)
+ bit12 : if set, forces screen output to 1 monitor.
+ bit14 : (0) sprite on top of PSAC2 layer (1) other way around (title screen)
*/
if (ACCESSING_BITS_0_7)
{
@@ -123,7 +123,7 @@ WRITE16_MEMBER(rungun_state::rng_sysregs_w)
bit 1 : disable PSAC2 input?
bit 2 : OBJCHA
bit 3 : enable IRQ 5
- bit 7-4: base address for 53936 ROM readback.
+ bit 7-4: base address for 53936 ROM readback.
*/
m_k055673->k053246_set_objcha_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
m_roz_rombase = (data & 0xf0) >> 4;
@@ -162,7 +162,7 @@ INTERRUPT_GEN_MEMBER(rungun_state::rng_interrupt)
// send to sprite device current state (i.e. bread & butter sprite DMA)
// TODO: firing this in screen update causes sprites to desync badly ...
sprite_dma_trigger();
-
+
if (m_sysreg[0x0c / 2] & 0x09)
device.execute().set_input_line(M68K_IRQ_5, ASSERT_LINE);
}
@@ -182,24 +182,24 @@ 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]);
-
+
UINT8 r,g,b;
-
+
r = m_pal_ram[addr] & 0x1f;
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 )
AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program + data
- AM_RANGE(0x300000, 0x3007ff) AM_READWRITE(palette_read,palette_write)
+ AM_RANGE(0x300000, 0x3007ff) AM_READWRITE(palette_read,palette_write)
AM_RANGE(0x380000, 0x39ffff) AM_RAM // work RAM
- AM_RANGE(0x400000, 0x43ffff) AM_READ8(rng_53936_rom_r,0x00ff) // '936 ROM readback window
+ AM_RANGE(0x400000, 0x43ffff) AM_READ8(rng_53936_rom_r,0x00ff) // '936 ROM readback window
AM_RANGE(0x480000, 0x48001f) AM_READWRITE(rng_sysregs_r, rng_sysregs_w) AM_SHARE("sysreg")
AM_RANGE(0x4c0000, 0x4c001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU (for scanline and vblank polling)
AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w)
@@ -211,7 +211,7 @@ static ADDRESS_MAP_START( rungun_map, AS_PROGRAM, 16, rungun_state )
AM_RANGE(0x580000, 0x58001f) AM_RAM // sound regs read/write fall-through
AM_RANGE(0x5c0000, 0x5c000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // 246A ROM readback window
AM_RANGE(0x5c0010, 0x5c001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w)
- AM_RANGE(0x600000, 0x601fff) AM_RAMBANK("spriteram_bank") // OBJ RAM
+ AM_RANGE(0x600000, 0x601fff) AM_RAMBANK("spriteram_bank") // OBJ RAM
AM_RANGE(0x640000, 0x640007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // '246A registers
AM_RANGE(0x680000, 0x68001f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) // '936 registers
AM_RANGE(0x6c0000, 0x6cffff) AM_READWRITE(rng_psac2_videoram_r,rng_psac2_videoram_w) // PSAC2 ('936) RAM (34v + 35v)
@@ -388,11 +388,11 @@ void rungun_state::machine_start()
m_roz_rom = memregion("gfx1")->base();
membank("bank2")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
- m_banked_ram = auto_alloc_array_clear(machine(), UINT16, 0x2000);
- m_pal_ram = auto_alloc_array_clear(machine(), UINT16, 0x800*2);
+ m_banked_ram = make_unique_clear<UINT16[]>(0x2000);
+ m_pal_ram = make_unique_clear<UINT16[]>(0x800*2);
membank("spriteram_bank")->configure_entries(0,2,&m_banked_ram[0],0x2000);
-
-
+
+
save_item(NAME(m_sound_ctrl));
save_item(NAME(m_sound_status));
save_item(NAME(m_sound_nmi_clk));
@@ -460,7 +460,7 @@ static MACHINE_CONFIG_START( rng, rungun_state )
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_ENABLE_HILIGHTS()
-
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -989,4 +989,4 @@ GAMEL( 1993, rungunuad,rungun, rng_dual, rng_dual, driver_device, 0, ROT0, "Kona
GAMEL( 1993, slmdunkjd,rungun, rng_dual, rng_dual, driver_device, 0, ROT0, "Konami", "Slam Dunk (ver JAA 1993 10.8) (dual screen with demux adapter)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual )
// this set has no dipswitches to select single screen mode (they're not even displayed in test menu) it's twin cabinet ONLY
-GAMEL( 1993, rungunud, rungun, rng_dual, rng_nodip, driver_device, 0, ROT0, "Konami", "Run and Gun (ver UAB 1993 10.12, dedicated twin cabinet)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual )
+GAMEL( 1993, rungunud, rungun, rng_dual, rng_nodip, driver_device, 0, ROT0, "Konami", "Run and Gun (ver UAB 1993 10.12, dedicated twin cabinet)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND, layout_rungun_dual )
diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp
index 536cb68b65b..02da6935124 100644
--- a/src/mame/drivers/s11.cpp
+++ b/src/mame/drivers/s11.cpp
@@ -232,7 +232,7 @@ WRITE8_MEMBER( s11_state::dig0_w )
data &= 0x7f;
m_strobe = data & 15;
m_diag = (data & 0x70) >> 4;
- output_set_digit_value(60, patterns[data>>4]); // diag digit
+ output().set_digit_value(60, patterns[data>>4]); // diag digit
m_segment1 = 0;
m_segment2 = 0;
}
@@ -243,7 +243,7 @@ WRITE8_MEMBER( s11_state::dig1_w )
m_segment2 |= 0x20000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
@@ -267,7 +267,7 @@ WRITE8_MEMBER( s11_state::pia2c_pa_w )
m_segment1 |= 0x10000;
if ((m_segment1 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment1 |= 0x40000;
}
}
@@ -278,7 +278,7 @@ WRITE8_MEMBER( s11_state::pia2c_pb_w )
m_segment1 |= 0x20000;
if ((m_segment1 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment1 |= 0x40000;
}
}
@@ -301,7 +301,7 @@ WRITE8_MEMBER( s11_state::pia34_pa_w )
m_segment2 |= 0x10000;
if ((m_segment2 & 0x70000) == 0x30000)
{
- output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp
index 3846e84e087..20cb9fd1c8c 100644
--- a/src/mame/drivers/s11a.cpp
+++ b/src/mame/drivers/s11a.cpp
@@ -152,9 +152,9 @@ WRITE8_MEMBER( s11a_state::dig0_w )
data &= 0x7f;
set_strobe(data & 15);
set_diag((data & 0x70) >> 4);
- output_set_digit_value(60, 0); // +5VDC (always on)
- output_set_digit_value(61, get_diag() & 0x01); // connected to PA4
- output_set_digit_value(62, 0); // Blanking (pretty much always on)
+ output().set_digit_value(60, 0); // +5VDC (always on)
+ output().set_digit_value(61, get_diag() & 0x01); // connected to PA4
+ output().set_digit_value(62, 0); // Blanking (pretty much always on)
set_segment1(0);
set_segment2(0);
}
diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp
index d61ef8cd530..185de486636 100644
--- a/src/mame/drivers/s11b.cpp
+++ b/src/mame/drivers/s11b.cpp
@@ -177,9 +177,9 @@ WRITE8_MEMBER( s11b_state::dig1_w )
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
- output_set_digit_value(get_strobe()+16, BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe()+16, BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
else
- output_set_digit_value(get_strobe()+16, BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe()+16, BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
seg |= 0x40000;
}
set_segment2(seg);
@@ -193,9 +193,9 @@ WRITE8_MEMBER( s11b_state::pia2c_pa_w )
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
- output_set_digit_value(get_strobe(), BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe(), BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
else
- output_set_digit_value(get_strobe(), BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe(), BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
seg |= 0x40000;
}
set_segment1(seg);
@@ -209,9 +209,9 @@ WRITE8_MEMBER( s11b_state::pia2c_pb_w )
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
- output_set_digit_value(get_strobe(), BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe(), BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
else
- output_set_digit_value(get_strobe(), BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe(), BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
seg |= 0x40000;
}
set_segment1(seg);
@@ -225,9 +225,9 @@ WRITE8_MEMBER( s11b_state::pia34_pa_w )
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
- output_set_digit_value(get_strobe()+16, BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe()+16, BITSWAP16(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
else
- output_set_digit_value(get_strobe()+16, BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(get_strobe()+16, BITSWAP16(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
seg |= 0x40000;
}
set_segment2(seg);
diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp
index 9f28c5a0d08..9d6167b9eae 100644
--- a/src/mame/drivers/s3.cpp
+++ b/src/mame/drivers/s3.cpp
@@ -381,8 +381,8 @@ WRITE8_MEMBER( s3_state::dig0_w )
{
m_strobe = data & 15;
m_data_ok = true;
- output_set_value("led0", !BIT(data, 4));
- output_set_value("led1", !BIT(data, 5));
+ output().set_value("led0", !BIT(data, 4));
+ output().set_value("led1", !BIT(data, 5));
}
WRITE8_MEMBER( s3_state::dig1_w )
@@ -390,8 +390,8 @@ WRITE8_MEMBER( s3_state::dig1_w )
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558
if (m_data_ok)
{
- output_set_digit_value(m_strobe+16, patterns[data&15]);
- output_set_digit_value(m_strobe, patterns[data>>4]);
+ output().set_digit_value(m_strobe+16, patterns[data&15]);
+ output().set_digit_value(m_strobe, patterns[data>>4]);
}
m_data_ok = false;
}
diff --git a/src/mame/drivers/s4.cpp b/src/mame/drivers/s4.cpp
index 4cb5a9a156a..52aca8c0ce1 100644
--- a/src/mame/drivers/s4.cpp
+++ b/src/mame/drivers/s4.cpp
@@ -374,8 +374,8 @@ WRITE8_MEMBER( s4_state::dig0_w )
{
m_strobe = data & 15;
m_data_ok = true;
- output_set_value("led0", !BIT(data, 4));
- output_set_value("led1", !BIT(data, 5));
+ output().set_value("led0", !BIT(data, 4));
+ output().set_value("led1", !BIT(data, 5));
}
WRITE8_MEMBER( s4_state::dig1_w )
@@ -383,8 +383,8 @@ WRITE8_MEMBER( s4_state::dig1_w )
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558
if (m_data_ok)
{
- output_set_digit_value(m_strobe+16, patterns[data&15]);
- output_set_digit_value(m_strobe, patterns[data>>4]);
+ output().set_digit_value(m_strobe+16, patterns[data&15]);
+ output().set_digit_value(m_strobe, patterns[data>>4]);
}
m_data_ok = false;
}
diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp
index b8721517bb1..876c855ef8e 100644
--- a/src/mame/drivers/s6.cpp
+++ b/src/mame/drivers/s6.cpp
@@ -314,8 +314,8 @@ WRITE8_MEMBER( s6_state::dig0_w )
{
m_strobe = data & 15;
m_data_ok = true;
- output_set_value("led0", !BIT(data, 4));
- output_set_value("led1", !BIT(data, 5));
+ output().set_value("led0", !BIT(data, 4));
+ output().set_value("led1", !BIT(data, 5));
}
WRITE8_MEMBER( s6_state::dig1_w )
@@ -323,8 +323,8 @@ WRITE8_MEMBER( s6_state::dig1_w )
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558
if (m_data_ok)
{
- output_set_digit_value(m_strobe+20, patterns[data&15]);
- output_set_digit_value(m_strobe, patterns[data>>4]);
+ output().set_digit_value(m_strobe+20, patterns[data&15]);
+ output().set_digit_value(m_strobe, patterns[data>>4]);
}
m_data_ok = false;
}
diff --git a/src/mame/drivers/s6a.cpp b/src/mame/drivers/s6a.cpp
index da580dafb21..e1c5567b1e4 100644
--- a/src/mame/drivers/s6a.cpp
+++ b/src/mame/drivers/s6a.cpp
@@ -297,8 +297,8 @@ WRITE8_MEMBER( s6a_state::dig0_w )
{
m_strobe = data & 15;
m_data_ok = true;
- output_set_value("led0", !BIT(data, 4));
- output_set_value("led1", !BIT(data, 5));
+ output().set_value("led0", !BIT(data, 4));
+ output().set_value("led1", !BIT(data, 5));
}
WRITE8_MEMBER( s6a_state::dig1_w )
@@ -306,8 +306,8 @@ WRITE8_MEMBER( s6a_state::dig1_w )
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558
if (m_data_ok)
{
- output_set_digit_value(m_strobe+16, patterns[data&15]);
- output_set_digit_value(m_strobe, patterns[data>>4]);
+ output().set_digit_value(m_strobe+16, patterns[data&15]);
+ output().set_digit_value(m_strobe, patterns[data>>4]);
}
m_data_ok = false;
}
diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp
index 3e124b63191..af8704e7320 100644
--- a/src/mame/drivers/s7.cpp
+++ b/src/mame/drivers/s7.cpp
@@ -97,7 +97,6 @@ public:
DECLARE_WRITE8_MEMBER(switch_w);
DECLARE_READ8_MEMBER(nvram_r);
DECLARE_WRITE8_MEMBER(nvram_w);
- DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w) { };
DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { }; // enable solenoids
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
@@ -303,7 +302,7 @@ WRITE8_MEMBER( s7_state::dig0_w )
m_strobe = data & 15;
data ^= 0xf0; // inverted by ic33
m_data_ok = true;
- output_set_digit_value(60, patterns[data>>4]); // diag digit
+ output().set_digit_value(60, patterns[data>>4]); // diag digit
}
WRITE8_MEMBER( s7_state::dig1_w )
@@ -311,8 +310,8 @@ WRITE8_MEMBER( s7_state::dig1_w )
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558
if (m_data_ok)
{
- output_set_digit_value(m_strobe+16, patterns[data&15]);
- output_set_digit_value(m_strobe, patterns[data>>4]);
+ output().set_digit_value(m_strobe+16, patterns[data&15]);
+ output().set_digit_value(m_strobe, patterns[data>>4]);
}
m_data_ok = false;
}
diff --git a/src/mame/drivers/s8.cpp b/src/mame/drivers/s8.cpp
index ccbc8378917..5c2f2c83284 100644
--- a/src/mame/drivers/s8.cpp
+++ b/src/mame/drivers/s8.cpp
@@ -75,7 +75,6 @@ public:
DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15
DECLARE_WRITE8_MEMBER(sol3_w); // solenoids 0-7
DECLARE_WRITE8_MEMBER(sound_w);
- DECLARE_READ8_MEMBER(dips_r);
DECLARE_READ8_MEMBER(switch_r);
DECLARE_WRITE8_MEMBER(switch_w);
DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
@@ -224,7 +223,7 @@ WRITE8_MEMBER( s8_state::dig0_w )
data &= 0x7f;
m_strobe = data & 15;
m_data_ok = true;
- output_set_digit_value(60, patterns[data>>4]); // diag digit
+ output().set_digit_value(60, patterns[data>>4]); // diag digit
}
WRITE8_MEMBER( s8_state::dig1_w )
@@ -232,8 +231,8 @@ WRITE8_MEMBER( s8_state::dig1_w )
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
if (m_data_ok)
{
- output_set_digit_value(m_strobe+16, patterns[data&15]);
- output_set_digit_value(m_strobe, patterns[data>>4]);
+ output().set_digit_value(m_strobe+16, patterns[data&15]);
+ output().set_digit_value(m_strobe, patterns[data>>4]);
}
m_data_ok = false;
}
diff --git a/src/mame/drivers/s8a.cpp b/src/mame/drivers/s8a.cpp
index 5c35cc66222..444505d8538 100644
--- a/src/mame/drivers/s8a.cpp
+++ b/src/mame/drivers/s8a.cpp
@@ -51,7 +51,6 @@ public:
DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15
DECLARE_WRITE8_MEMBER(sol3_w); // solenoids 0-7
DECLARE_WRITE8_MEMBER(sound_w);
- DECLARE_READ8_MEMBER(dips_r);
DECLARE_READ8_MEMBER(switch_r);
DECLARE_WRITE8_MEMBER(switch_w);
DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
@@ -196,7 +195,7 @@ WRITE8_MEMBER( s8a_state::dig0_w )
data &= 0x7f;
m_strobe = data & 15;
m_data_ok = true;
- output_set_digit_value(60, patterns[data>>4]); // diag digit
+ output().set_digit_value(60, patterns[data>>4]); // diag digit
}
WRITE8_MEMBER( s8a_state::dig1_w )
@@ -204,8 +203,8 @@ WRITE8_MEMBER( s8a_state::dig1_w )
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
if (m_data_ok)
{
- output_set_digit_value(m_strobe+16, patterns[data&15]);
- output_set_digit_value(m_strobe, patterns[data>>4]);
+ output().set_digit_value(m_strobe+16, patterns[data&15]);
+ output().set_digit_value(m_strobe, patterns[data>>4]);
}
m_data_ok = false;
}
diff --git a/src/mame/drivers/s9.cpp b/src/mame/drivers/s9.cpp
index 479159d7e24..f72606db6f5 100644
--- a/src/mame/drivers/s9.cpp
+++ b/src/mame/drivers/s9.cpp
@@ -64,7 +64,6 @@ public:
DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15
DECLARE_WRITE8_MEMBER(sol3_w) { }; // solenoids 0-7
DECLARE_WRITE8_MEMBER(sound_w);
- DECLARE_READ8_MEMBER(dips_r);
DECLARE_READ8_MEMBER(switch_r);
DECLARE_WRITE8_MEMBER(switch_w);
DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
@@ -232,7 +231,7 @@ WRITE8_MEMBER( s9_state::dig0_w )
data &= 0x7f;
m_strobe = data & 15;
m_data_ok = true;
- output_set_digit_value(60, patterns[data>>4]); // diag digit
+ output().set_digit_value(60, patterns[data>>4]); // diag digit
}
WRITE8_MEMBER( s9_state::dig1_w )
@@ -240,8 +239,8 @@ WRITE8_MEMBER( s9_state::dig1_w )
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558
if (m_data_ok)
{
- output_set_digit_value(m_strobe+16, patterns[data&15]);
- output_set_digit_value(m_strobe, patterns[data>>4]);
+ output().set_digit_value(m_strobe+16, patterns[data&15]);
+ output().set_digit_value(m_strobe, patterns[data>>4]);
}
m_data_ok = false;
}
diff --git a/src/mame/drivers/safarir.cpp b/src/mame/drivers/safarir.cpp
index bc711f88d9c..44e064e5188 100644
--- a/src/mame/drivers/safarir.cpp
+++ b/src/mame/drivers/safarir.cpp
@@ -71,8 +71,8 @@ public:
required_shared_ptr<UINT8> m_bg_scroll;
required_device<gfxdecode_device> m_gfxdecode;
- UINT8 *m_ram_1;
- UINT8 *m_ram_2;
+ std::unique_ptr<UINT8[]> m_ram_1;
+ std::unique_ptr<UINT8[]> m_ram_2;
UINT8 m_ram_bank;
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
@@ -316,14 +316,14 @@ MACHINE_CONFIG_END
void safarir_state::machine_start()
{
- m_ram_1 = auto_alloc_array(machine(), UINT8, m_ram.bytes());
- m_ram_2 = auto_alloc_array(machine(), UINT8, m_ram.bytes());
+ m_ram_1 = std::make_unique<UINT8[]>(m_ram.bytes());
+ m_ram_2 = std::make_unique<UINT8[]>(m_ram.bytes());
m_port_last = 0;
m_port_last2 = 0;
/* setup for save states */
- save_pointer(NAME(m_ram_1), m_ram.bytes());
- save_pointer(NAME(m_ram_2), m_ram.bytes());
+ save_pointer(NAME(m_ram_1.get()), m_ram.bytes());
+ save_pointer(NAME(m_ram_2.get()), m_ram.bytes());
save_item(NAME(m_ram_bank));
save_item(NAME(m_port_last));
save_item(NAME(m_port_last2));
diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp
index 6b39a24db2e..77bdd57108a 100644
--- a/src/mame/drivers/sage2.cpp
+++ b/src/mame/drivers/sage2.cpp
@@ -344,7 +344,7 @@ WRITE8_MEMBER( sage2_state::ppi1_pc_w )
m_pic->ir7_w(BIT(data, 2));
// processor LED
- output_set_led_value(0, BIT(data, 3));
+ output().set_led_value(0, BIT(data, 3));
// centronics
m_centronics->write_strobe(BIT(data, 4));
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/sandscrp.cpp b/src/mame/drivers/sandscrp.cpp
index 324ef2a4b97..50937085c9b 100644
--- a/src/mame/drivers/sandscrp.cpp
+++ b/src/mame/drivers/sandscrp.cpp
@@ -226,8 +226,8 @@ WRITE16_MEMBER(sandscrp_state::coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x0001);
- coin_counter_w(machine(), 1, data & 0x0002);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0002);
}
}
diff --git a/src/mame/drivers/sangho.cpp b/src/mame/drivers/sangho.cpp
index dec145ceffb..4f401081ef3 100644
--- a/src/mame/drivers/sangho.cpp
+++ b/src/mame/drivers/sangho.cpp
@@ -69,7 +69,7 @@ public:
, m_bank8(*this, "bank8")
{ }
- UINT8* m_ram;
+ std::unique_ptr<UINT8[]> m_ram;
UINT8 m_sexyboom_bank[8];
UINT8 m_pzlestar_mem_bank;
UINT8 m_pzlestar_rom_bank;
@@ -118,8 +118,8 @@ void sangho_state::pzlestar_map_banks()
case 0:
m_maincpu->space(AS_PROGRAM).install_read_bank(0x0000, 0x3fff, m_bank1);
m_maincpu->space(AS_PROGRAM).install_write_bank(0x0000, 0x3fff, m_bank5);
- m_bank1->set_base(m_ram);
- m_bank5->set_base(m_ram);
+ m_bank1->set_base(m_ram.get());
+ m_bank5->set_base(m_ram.get());
break;
case 2:
m_maincpu->space(AS_PROGRAM).install_read_bank(0x0000, 0x3fff, m_bank1);
@@ -140,8 +140,8 @@ void sangho_state::pzlestar_map_banks()
case 0:
m_maincpu->space(AS_PROGRAM).install_read_bank(0x4000, 0x7fff, m_bank2);
m_maincpu->space(AS_PROGRAM).install_write_bank(0x4000, 0x7fff, m_bank6);
- m_bank2->set_base(m_ram + 0x4000);
- m_bank6->set_base(m_ram + 0x4000);
+ m_bank2->set_base(m_ram.get() + 0x4000);
+ m_bank6->set_base(m_ram.get() + 0x4000);
break;
case 2:
m_maincpu->space(AS_PROGRAM).install_read_bank(0x4000, 0x7fff, m_bank2);
@@ -166,8 +166,8 @@ void sangho_state::pzlestar_map_banks()
case 0:
m_maincpu->space(AS_PROGRAM).install_read_bank(0x8000, 0xbfff, m_bank3);
m_maincpu->space(AS_PROGRAM).install_write_bank(0x8000, 0xbfff, m_bank7);
- m_bank3->set_base(m_ram + 0x8000);
- m_bank7->set_base(m_ram + 0x8000);
+ m_bank3->set_base(m_ram.get() + 0x8000);
+ m_bank7->set_base(m_ram.get() + 0x8000);
break;
case 3:
m_maincpu->space(AS_PROGRAM).install_read_bank(0x8000, 0xbfff, m_bank3);
@@ -188,8 +188,8 @@ void sangho_state::pzlestar_map_banks()
case 0:
m_maincpu->space(AS_PROGRAM).install_read_bank(0xc000, 0xffff, m_bank4);
m_maincpu->space(AS_PROGRAM).install_write_bank(0xc000, 0xffff, m_bank8);
- m_bank4->set_base(m_ram + 0xc000);
- m_bank8->set_base(m_ram + 0xc000);
+ m_bank4->set_base(m_ram.get() + 0xc000);
+ m_bank8->set_base(m_ram.get() + 0xc000);
break;
case 1:
case 2:
@@ -425,7 +425,7 @@ INPUT_PORTS_END
void sangho_state::machine_start()
{
- m_ram = auto_alloc_array(machine(), UINT8, 0x20000); // TODO: define how much RAM these ones have (MSX2+ can potentially go up to 4MB)
+ m_ram = std::make_unique<UINT8[]>(0x20000); // TODO: define how much RAM these ones have (MSX2+ can potentially go up to 4MB)
}
MACHINE_RESET_MEMBER(sangho_state,pzlestar)
diff --git a/src/mame/drivers/sanremmg.cpp b/src/mame/drivers/sanremmg.cpp
new file mode 100644
index 00000000000..baa88cbd757
--- /dev/null
+++ b/src/mame/drivers/sanremmg.cpp
@@ -0,0 +1,78 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+
+/* San Remo / Elsy Multigame? */
+
+// presumably a gambling game, maybe missing a sub-board?
+// http://www.citylan.it/wiki/index.php/Multigame_ID
+
+
+#include "emu.h"
+#include "cpu/arm7/arm7.h"
+#include "cpu/arm7/arm7core.h"
+
+
+class sanremmg_state : public driver_device
+{
+public:
+ sanremmg_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu")
+ { }
+
+ required_device<cpu_device> m_maincpu;
+
+ virtual void video_start() override;
+ UINT32 screen_update_sanremmg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+};
+
+
+void sanremmg_state::video_start()
+{
+}
+
+UINT32 sanremmg_state::screen_update_sanremmg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+
+
+static ADDRESS_MAP_START( sanremmg_map, AS_PROGRAM, 32, sanremmg_state )
+ AM_RANGE(0x00000000, 0x003fffff) AM_ROM
+
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( sanremmg )
+INPUT_PORTS_END
+
+
+static MACHINE_CONFIG_START( sanremmg, sanremmg_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", ARM7, 50000000) // ??? doesn't seem to be ARM, but what is it?
+ MCFG_CPU_PROGRAM_MAP(sanremmg_map)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, 48*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_DRIVER(sanremmg_state, screen_update_sanremmg)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x200)
+ MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+MACHINE_CONFIG_END
+
+ROM_START( sanremmg )
+ ROM_REGION(0x400000, "maincpu", 0 ) // start of 1.bin has 'Tue Sep 03 11:37:03' Not sure if 03 is year or day, start of string is erased with boot vector?
+ ROM_LOAD( "1.bin", 0x000000, 0x200000, CRC(67fa5e76) SHA1(92beb90e1b370763966017d47cb748106014d371) ) // HY29LV160BT
+ ROM_LOAD( "2.bin", 0x200000, 0x200000, CRC(61f69735) SHA1(ff46362ce6fe239089c85e698add1b8090bb39bb) )
+ // there is space for what looks like a 3rd rom
+ROM_END
+
+
+GAME( 2003, sanremmg, 0, sanremmg, sanremmg, driver_device, 0, ROT0, "San Remo Games", "unknown San Remo / Elsy Multigame", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/sanremo.cpp b/src/mame/drivers/sanremo.cpp
index 033014708a7..64ade62d1c0 100644
--- a/src/mame/drivers/sanremo.cpp
+++ b/src/mame/drivers/sanremo.cpp
@@ -193,13 +193,13 @@ WRITE8_MEMBER(sanremo_state::lamps_w)
-x-- ---- BET
x--- ---- (always on)
*/
- output_set_lamp_value(0, (data >> 0) & 1); /* DISCARD 1 */
- output_set_lamp_value(1, (data >> 1) & 1); /* DISCARD 2 */
- output_set_lamp_value(2, (data >> 2) & 1); /* DISCARD 3 */
- output_set_lamp_value(3, (data >> 3) & 1); /* DISCARD 4 */
- output_set_lamp_value(4, (data >> 4) & 1); /* DISCARD 5 */
- output_set_lamp_value(5, (data >> 5) & 1); /* START */
- output_set_lamp_value(6, (data >> 6) & 1); /* BET */
+ output().set_lamp_value(0, (data >> 0) & 1); /* DISCARD 1 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* DISCARD 2 */
+ output().set_lamp_value(2, (data >> 2) & 1); /* DISCARD 3 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* DISCARD 4 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* DISCARD 5 */
+ output().set_lamp_value(5, (data >> 5) & 1); /* START */
+ output().set_lamp_value(6, (data >> 6) & 1); /* BET */
}
WRITE8_MEMBER(sanremo_state::banksel_w)
diff --git a/src/mame/drivers/sansa_fuze.cpp b/src/mame/drivers/sansa_fuze.cpp
new file mode 100644
index 00000000000..2ee426af50c
--- /dev/null
+++ b/src/mame/drivers/sansa_fuze.cpp
@@ -0,0 +1,68 @@
+/* Sansa Fuze */
+
+// info can be found at
+// http://www.rockbox.org/wiki/SansaFuze / http://www.rockbox.org/wiki/SansaAMSFirmware
+// http://forums.rockbox.org/index.php?topic=14064
+// http://daniel.haxx.se/sansa/ams.html
+
+#include "emu.h"
+#include "cpu/arm7/arm7.h"
+#include "cpu/arm7/arm7core.h"
+
+
+class sansa_fuze_state : public driver_device
+{
+public:
+ sansa_fuze_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu")
+ { }
+
+ required_device<cpu_device> m_maincpu;
+};
+
+
+
+static ADDRESS_MAP_START( sansa_fuze_map, AS_PROGRAM, 32, sansa_fuze_state )
+ AM_RANGE(0x00000000, 0x0001ffff) AM_ROM
+
+ AM_RANGE(0x80000000, 0x8001ffff) AM_ROM AM_REGION("maincpu", 0x00000)
+ AM_RANGE(0x81000000, 0x81ffffff) AM_RAM
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( sansa_fuze )
+INPUT_PORTS_END
+
+
+static MACHINE_CONFIG_START( sansa_fuze, sansa_fuze_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", ARM7, 50000000) // arm based, speed unknown
+ MCFG_CPU_PROGRAM_MAP(sansa_fuze_map)
+
+MACHINE_CONFIG_END
+
+ROM_START( sanfuze2 )
+ ROM_REGION(0x20000, "maincpu", 0 )
+ // this rom was dumped using the RockBox (custom firmware) debugging features, it's presumably the internal ROM
+ // I don't know if it's specific to the Fuze 2, or shared.
+ ROM_LOAD( "sanza.rom", 0x00000, 0x20000, CRC(a93674b0) SHA1(3a17dfc9ad31f07fdd66e3dac94c9494c59f3203) )
+
+ // these are firmware update files, we probably need to extract the data from them in order to use them with the ROM
+ // above and get things booting.
+ // http://forums.sandisk.com/t5/Sansa-Fuze/Sansa-Fuze-Firmware-Update-01-02-31-amp-02-03-33/td-p/139175
+
+ ROM_REGION(0xf00000, "updates2", 0 )
+ /// 02.03.33 (for Fuze 2?)
+ ROM_LOAD( "020333_fuzpa.bin", 0x00000, 0xf00000, CRC(045ec5be) SHA1(d951d93ff1c0a50343e0cf8e6997930b7c94e5ad) ) // original filename fuzpa.bin
+ ROM_LOAD( "020333_clpp_data.dat", 0x00000, 0x566a0d, CRC(2093569c) SHA1(7882abcf000860a3071f5afe91719530bc54c68a) ) // original filename clpp_data.dat, actually a 6 minute MP3 advertisement for slotRadio
+
+ ROM_REGION(0xf00000, "updates1", 0 )
+ // 01.02.31 (for Fuze 1?)
+ ROM_LOAD( "010231_fuzea.bin", 0x00000, 0xf00000, CRC(48b264cb) SHA1(387d5270fdd2fb7ba3901be59651a55167700768) ) // original filename fuzea.bin
+
+ROM_END
+
+
+GAME( 200?, sanfuze2, 0, sansa_fuze, sansa_fuze, driver_device, 0, ROT0, "Sandisk", "Sansa Fuze 2", MACHINE_NO_SOUND | MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp
index c1043304284..13dec46c418 100644
--- a/src/mame/drivers/saturn.cpp
+++ b/src/mame/drivers/saturn.cpp
@@ -959,7 +959,7 @@ MACHINE_START_MEMBER(sat_console_state, saturn)
m_maincpu->space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff);
m_slave->space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff);
- m_nvram->set_base(m_backupram, 0x8000);
+ m_nvram->set_base(m_backupram.get(), 0x8000);
m_smpc_nv->set_base(&m_smpc.SMEM, 4);
if (m_exp)
@@ -1008,8 +1008,8 @@ MACHINE_START_MEMBER(sat_console_state, saturn)
}
// save states
- save_pointer(NAME(m_scu_regs), 0x100/4);
- save_pointer(NAME(m_scsp_regs), 0x1000/2);
+ save_pointer(NAME(m_scu_regs.get()), 0x100/4);
+ save_pointer(NAME(m_scsp_regs.get()), 0x1000/2);
save_item(NAME(m_NMI_reset));
save_item(NAME(m_en_68k));
save_item(NAME(m_smpc.IOSEL1));
@@ -1209,9 +1209,9 @@ void sat_console_state::saturn_init_driver(int rgn)
m_minit_boost_timeslice = attotime::zero;
m_sinit_boost_timeslice = attotime::zero;
- m_scu_regs = auto_alloc_array_clear(machine(), UINT32, 0x100/4);
- m_scsp_regs = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
- m_backupram = auto_alloc_array_clear(machine(), UINT8, 0x8000);
+ m_scu_regs = make_unique_clear<UINT32[]>(0x100/4);
+ m_scsp_regs = make_unique_clear<UINT16[]>(0x1000/2);
+ m_backupram = make_unique_clear<UINT8[]>(0x8000);
}
DRIVER_INIT_MEMBER(sat_console_state,saturnus)
diff --git a/src/mame/drivers/sauro.cpp b/src/mame/drivers/sauro.cpp
index b9df15c4f61..6a243455319 100644
--- a/src/mame/drivers/sauro.cpp
+++ b/src/mame/drivers/sauro.cpp
@@ -144,14 +144,14 @@ READ8_MEMBER(sauro_state::sauro_sound_command_r)
WRITE8_MEMBER(sauro_state::coin1_w)
{
- coin_counter_w(machine(), 0, data);
- coin_counter_w(machine(), 0, 0); // to get the coin counter working in sauro, as it doesn't write 0
+ machine().bookkeeping().coin_counter_w(0, data);
+ machine().bookkeeping().coin_counter_w(0, 0); // to get the coin counter working in sauro, as it doesn't write 0
}
WRITE8_MEMBER(sauro_state::coin2_w)
{
- coin_counter_w(machine(), 1, data);
- coin_counter_w(machine(), 1, 0); // to get the coin counter working in sauro, as it doesn't write 0
+ machine().bookkeeping().coin_counter_w(1, data);
+ machine().bookkeeping().coin_counter_w(1, 0); // to get the coin counter working in sauro, as it doesn't write 0
}
WRITE8_MEMBER(sauro_state::flip_screen_w)
diff --git a/src/mame/drivers/savia84.cpp b/src/mame/drivers/savia84.cpp
index e334adee284..b094410cd95 100644
--- a/src/mame/drivers/savia84.cpp
+++ b/src/mame/drivers/savia84.cpp
@@ -131,7 +131,7 @@ void savia84_state::machine_reset()
WRITE8_MEMBER( savia84_state::savia84_8255_porta_w ) // OUT F8 - output segments on the selected digit
{
m_segment = ~data & 0x7f;
- if (m_digit && (m_digit != m_digit_last)) output_set_digit_value(m_digit, m_segment);
+ if (m_digit && (m_digit != m_digit_last)) output().set_digit_value(m_digit, m_segment);
m_digit_last = m_digit;
}
@@ -141,7 +141,7 @@ WRITE8_MEMBER( savia84_state::savia84_8255_portb_w ) // OUT F9 - light the 8 led
for (int i = 0; i < 8; i++)
{
sprintf(ledname,"led%d",i);
- output_set_value(ledname, !BIT(data, i));
+ output().set_value(ledname, !BIT(data, i));
}
}
diff --git a/src/mame/drivers/savquest.cpp b/src/mame/drivers/savquest.cpp
index e8f59beaa72..784278096fa 100644
--- a/src/mame/drivers/savquest.cpp
+++ b/src/mame/drivers/savquest.cpp
@@ -64,13 +64,13 @@ public:
{
}
- UINT32 *m_bios_f0000_ram;
- UINT32 *m_bios_e0000_ram;
- UINT32 *m_bios_e4000_ram;
- UINT32 *m_bios_e8000_ram;
- UINT32 *m_bios_ec000_ram;
+ std::unique_ptr<UINT32[]> m_bios_f0000_ram;
+ std::unique_ptr<UINT32[]> m_bios_e0000_ram;
+ std::unique_ptr<UINT32[]> m_bios_e4000_ram;
+ std::unique_ptr<UINT32[]> m_bios_e8000_ram;
+ std::unique_ptr<UINT32[]> m_bios_ec000_ram;
- UINT8 *m_smram;
+ std::unique_ptr<UINT8[]> m_smram;
required_device<s3_vga_device> m_vga;
required_device<voodoo_2_device> m_voodoo;
@@ -148,7 +148,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
{
if (data & 0x10) // enable RAM access to region 0xf0000 - 0xfffff
{
- state->membank("bios_f0000")->set_base(state->m_bios_f0000_ram);
+ state->membank("bios_f0000")->set_base(state->m_bios_f0000_ram.get());
}
else // disable RAM access (reads go to BIOS ROM)
{
@@ -161,7 +161,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
{
if (data & 0x10) // enable RAM access to region 0xe4000 - 0xe7fff
{
- state->membank("bios_e4000")->set_base(state->m_bios_e4000_ram);
+ state->membank("bios_e4000")->set_base(state->m_bios_e4000_ram.get());
}
else // disable RAM access (reads go to BIOS ROM)
{
@@ -170,7 +170,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
if (data & 1) // enable RAM access to region 0xe0000 - 0xe3fff
{
- state->membank("bios_e0000")->set_base(state->m_bios_e0000_ram);
+ state->membank("bios_e0000")->set_base(state->m_bios_e0000_ram.get());
}
else // disable RAM access (reads go to BIOS ROM)
{
@@ -183,7 +183,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
{
if (data & 0x10) // enable RAM access to region 0xec000 - 0xeffff
{
- state->membank("bios_ec000")->set_base(state->m_bios_ec000_ram);
+ state->membank("bios_ec000")->set_base(state->m_bios_ec000_ram.get());
}
else // disable RAM access (reads go to BIOS ROM)
{
@@ -192,7 +192,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
if (data & 1) // enable RAM access to region 0xe8000 - 0xebfff
{
- state->membank("bios_e8000")->set_base(state->m_bios_e8000_ram);
+ state->membank("bios_e8000")->set_base(state->m_bios_e8000_ram.get());
}
else // disable RAM access (reads go to BIOS ROM)
{
@@ -214,7 +214,7 @@ void savquest_state::intel82439tx_init()
m_mtxc_config_reg[0x63] = 0x02;
m_mtxc_config_reg[0x64] = 0x02;
m_mtxc_config_reg[0x65] = 0x02;
- m_smram = auto_alloc_array(machine(), UINT8, 0x20000);
+ m_smram = std::make_unique<UINT8[]>(0x20000);
}
static UINT32 intel82439tx_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
@@ -374,7 +374,7 @@ WRITE32_MEMBER(savquest_state::bios_f0000_ram_w)
#if 1
if (m_mtxc_config_reg[0x59] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_f0000_ram + offset);
+ COMBINE_DATA(m_bios_f0000_ram.get() + offset);
}
#endif
}
@@ -385,7 +385,7 @@ WRITE32_MEMBER(savquest_state::bios_e0000_ram_w)
#if 1
if (m_mtxc_config_reg[0x5e] & 2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_e0000_ram + offset);
+ COMBINE_DATA(m_bios_e0000_ram.get() + offset);
}
#endif
}
@@ -396,7 +396,7 @@ WRITE32_MEMBER(savquest_state::bios_e4000_ram_w)
#if 1
if (m_mtxc_config_reg[0x5e] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_e4000_ram + offset);
+ COMBINE_DATA(m_bios_e4000_ram.get() + offset);
}
#endif
}
@@ -407,7 +407,7 @@ WRITE32_MEMBER(savquest_state::bios_e8000_ram_w)
#if 1
if (m_mtxc_config_reg[0x5f] & 2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_e8000_ram + offset);
+ COMBINE_DATA(m_bios_e8000_ram.get() + offset);
}
#endif
}
@@ -418,7 +418,7 @@ WRITE32_MEMBER(savquest_state::bios_ec000_ram_w)
#if 1
if (m_mtxc_config_reg[0x5f] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ec000_ram + offset);
+ COMBINE_DATA(m_bios_ec000_ram.get() + offset);
}
#endif
}
@@ -769,11 +769,11 @@ INPUT_PORTS_END
void savquest_state::machine_start()
{
- m_bios_f0000_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
- m_bios_e0000_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_e4000_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_e8000_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_ec000_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
+ m_bios_f0000_ram = std::make_unique<UINT32[]>(0x10000/4);
+ m_bios_e0000_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_e4000_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_e8000_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_ec000_ram = std::make_unique<UINT32[]>(0x4000/4);
intel82439tx_init();
vid_3dfx_init();
diff --git a/src/mame/drivers/sbasketb.cpp b/src/mame/drivers/sbasketb.cpp
index 44a075468ea..3a80a242f7e 100644
--- a/src/mame/drivers/sbasketb.cpp
+++ b/src/mame/drivers/sbasketb.cpp
@@ -57,7 +57,7 @@ WRITE8_MEMBER(sbasketb_state::sbasketb_sh_irqtrigger_w)
WRITE8_MEMBER(sbasketb_state::sbasketb_coin_counter_w)
{
- coin_counter_w(machine(), offset, data);
+ machine().bookkeeping().coin_counter_w(offset, data);
}
WRITE8_MEMBER(sbasketb_state::irq_mask_w)
diff --git a/src/mame/drivers/sbowling.cpp b/src/mame/drivers/sbowling.cpp
index ccb4b11f8a2..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
@@ -62,7 +62,7 @@ public:
int m_bgmap;
int m_system;
tilemap_t *m_tilemap;
- bitmap_ind16 *m_tmpbitmap;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap;
UINT32 m_color_prom_address;
UINT8 m_pix_sh;
UINT8 m_pix[2];
@@ -121,7 +121,7 @@ WRITE8_MEMBER(sbowling_state::videoram_w)
for (int i = 0; i < 8; i++)
{
- plot_pixel_sbw(m_tmpbitmap, x++, y, m_color_prom_address | ( ((v1&1)*0x20) | ((v2&1)*0x40) ), flip);
+ plot_pixel_sbw(m_tmpbitmap.get(), x++, y, m_color_prom_address | ( ((v1&1)*0x20) | ((v2&1)*0x40) ), flip);
v1 >>= 1;
v2 >>= 1;
}
@@ -137,7 +137,7 @@ UINT32 sbowling_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
void sbowling_state::video_start()
{
- m_tmpbitmap = auto_bitmap_ind16_alloc(machine(),32*8,32*8);
+ m_tmpbitmap = std::make_unique<bitmap_ind16>(32*8,32*8);
m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sbowling_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
save_item(NAME(m_bgmap));
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/sbrkout.cpp b/src/mame/drivers/sbrkout.cpp
index cfeb1e305e5..54bbf6c4e6e 100644
--- a/src/mame/drivers/sbrkout.cpp
+++ b/src/mame/drivers/sbrkout.cpp
@@ -282,29 +282,29 @@ WRITE8_MEMBER(sbrkout_state::pot_mask2_w)
WRITE8_MEMBER(sbrkout_state::start_1_led_w)
{
- output_set_led_value(0, offset & 1);
+ output().set_led_value(0, offset & 1);
}
WRITE8_MEMBER(sbrkout_state::start_2_led_w)
{
- output_set_led_value(1, offset & 1);
+ output().set_led_value(1, offset & 1);
}
WRITE8_MEMBER(sbrkout_state::serve_led_w)
{
- output_set_led_value(0, ~offset & 1);
+ output().set_led_value(0, ~offset & 1);
}
WRITE8_MEMBER(sbrkout_state::serve_2_led_w)
{
- output_set_led_value(1, ~offset & 1);
+ output().set_led_value(1, ~offset & 1);
}
WRITE8_MEMBER(sbrkout_state::coincount_w)
{
- coin_counter_w(machine(), 0, offset & 1);
+ machine().bookkeeping().coin_counter_w(0, offset & 1);
}
diff --git a/src/mame/drivers/sc1.cpp b/src/mame/drivers/sc1.cpp
index 18a8d05dda4..5c8107ea77b 100644
--- a/src/mame/drivers/sc1.cpp
+++ b/src/mame/drivers/sc1.cpp
@@ -73,13 +73,13 @@ WRITE8_MEMBER( sc1_state::pio_port_a_w )
UINT8 digit = BITSWAP8( data,3,4,6,0,1,2,7,5 );
if (m_matrix & 0x04)
- output_set_digit_value(3, digit & 0x7f);
+ output().set_digit_value(3, digit & 0x7f);
if (m_matrix & 0x08)
- output_set_digit_value(2, digit & 0x7f);
+ output().set_digit_value(2, digit & 0x7f);
if (m_matrix & 0x10)
- output_set_digit_value(1, digit & 0x7f);
+ output().set_digit_value(1, digit & 0x7f);
if (m_matrix & 0x20)
- output_set_digit_value(0, digit & 0x7f);
+ output().set_digit_value(0, digit & 0x7f);
}
diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp
index 8c938d173ba..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);
@@ -120,29 +120,29 @@ void sc2_state::sc2_update_display()
if (!BIT(m_led_selected, 0))
{
- output_set_digit_value(0, digit_data);
+ output().set_digit_value(0, digit_data);
m_led_7seg_data[0] = digit_data;
- output_set_led_value(0, BIT(m_digit_data, 7));
+ output().set_led_value(0, BIT(m_digit_data, 7));
}
if (!BIT(m_led_selected, 1))
{
- output_set_digit_value(1, digit_data);
+ output().set_digit_value(1, digit_data);
m_led_7seg_data[1] = digit_data;
- output_set_led_value(1, BIT(m_digit_data, 7));
+ output().set_led_value(1, BIT(m_digit_data, 7));
}
if (!BIT(m_led_selected, 2))
{
- output_set_digit_value(2, digit_data);
+ output().set_digit_value(2, digit_data);
m_led_7seg_data[2] = digit_data;
}
if (!BIT(m_led_selected, 3))
{
- output_set_digit_value(3, digit_data);
+ output().set_digit_value(3, digit_data);
m_led_7seg_data[3] = digit_data;
}
}
@@ -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/scm_500.cpp b/src/mame/drivers/scm_500.cpp
index f49a5574d0e..1e5eac486ae 100644
--- a/src/mame/drivers/scm_500.cpp
+++ b/src/mame/drivers/scm_500.cpp
@@ -17,12 +17,12 @@ class scm_500_state : public driver_device
public:
scm_500_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
-// ,m_maincpu(*this, "maincpu")
+// ,m_maincpu(*this, "maincpu")
{ }
virtual void machine_start() override;
virtual void machine_reset() override;
-// required_device<cpu_device> m_maincpu;
+// required_device<cpu_device> m_maincpu;
};
diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp
index 27f277f0cae..aed3f75fba1 100644
--- a/src/mame/drivers/scramble.cpp
+++ b/src/mame/drivers/scramble.cpp
@@ -331,6 +331,7 @@ static ADDRESS_MAP_START( triplep_map, AS_PROGRAM, 8, scramble_state )
AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram")
AM_RANGE(0x5080, 0x50ff) AM_RAM
+ AM_RANGE(0x5800, 0x67ff) AM_ROM
AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w)
AM_RANGE(0x6804, 0x6804) AM_WRITE(galaxold_stars_enable_w)
@@ -600,6 +601,16 @@ static INPUT_PORTS_START( triplep )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
+static INPUT_PORTS_START( knockoutb )
+ PORT_INCLUDE(triplep)
+
+ PORT_MODIFY("IN1")
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x01, "2" )
+ PORT_DIPSETTING( 0x02, "3" )
+ PORT_DIPSETTING( 0x03, "256 (Cheat)")
+INPUT_PORTS_END
/* ckongs coinage DIPs are spread across two input ports */
CUSTOM_INPUT_MEMBER(scramble_state::ckongs_coinage_r)
@@ -1754,7 +1765,7 @@ Empty 40 pin socket at 0A
***************************************************************************/
ROM_START( triplepa )
- ROM_REGION( 0x4000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "td4.2h", 0x0000, 0x1000, CRC(15a6d46a) SHA1(a76d97876268d303bc18bf6f18f05227a6689b9d) )
ROM_LOAD( "tc3.2k", 0x1000, 0x1000, CRC(bc26d2c0) SHA1(b9934ddb2918f6c4123dafd07cc39ae31d7e28e9) )
ROM_LOAD( "te2.2l", 0x2000, 0x1000, CRC(02025c10) SHA1(16ffc7681d949172034b8c85dc72c1a528309abf) )
@@ -1768,6 +1779,24 @@ ROM_START( triplepa )
ROM_LOAD( "ta.6e", 0x0000, 0x0020, CRC(624f75df) SHA1(0e9a7c48dd976af1dca1d5351236d4d5bf7a9dc8) )
ROM_END
+ROM_START( knockoutb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "k1-2h.bin", 0x0000, 0x1000, CRC(f16bdd40) SHA1(e14aad2f2820f643f32e1ee4dbb78cd469367498) )
+ ROM_LOAD( "k2-2k.bin", 0x1000, 0x1000, CRC(fa6214ef) SHA1(5e569b2a4eaf5e4f033cf2375d607c54fb96b1f8) )
+ ROM_LOAD( "k3-2l.bin", 0x2000, 0x1000, CRC(9f734d29) SHA1(430c53b9c3fa888fe45f9feeb4ad8f92011adc05) )
+ ROM_LOAD( "k4-2m.bin", 0x3000, 0x1000, CRC(1809ec77) SHA1(97d575f47f861a572a483559790e271c21775ac5) )
+ ROM_LOAD( "k5-2p.bin", 0x6000, 0x0800, CRC(60c1aa52) SHA1(f0598be70cfca8651edb7bb3c58f01368d6965ce) )
+ ROM_CONTINUE( 0x5800, 0x0800 )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "ta6.5f", 0x0000, 0x0800, CRC(d51cbd6f) SHA1(c3766a69a4599e54b8d7fb893e45802ec8bf6713) )
+ ROM_LOAD( "ta7.5h", 0x0800, 0x0800, CRC(f21c0059) SHA1(b1ba87f13908e3e662de8bf444f59bd5c2009720) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "ta.6e", 0x0000, 0x0020, CRC(624f75df) SHA1(0e9a7c48dd976af1dca1d5351236d4d5bf7a9dc8) )
+ROM_END
+
+
ROM_START( mariner )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "tp1.2h", 0x0000, 0x1000, CRC(dac1dfd0) SHA1(57b9106bb7452640544ba0ab2d2ba290cccb45f0) )
@@ -2284,7 +2313,8 @@ ROM_END
GAME( 1982, triplep, 0, triplep, triplep, scramble_state, scramble_ppi, ROT90, "K.K. International", "Triple Punch (set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1982, triplepa, triplep, triplep, triplep, scramble_state, scramble_ppi, ROT90, "K.K. International", "Triple Punch (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, knockout, triplep, triplep, triplep, scramble_state, scramble_ppi, ROT90, "bootleg? (KKK)", "Knock Out!! (bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, knockout, triplep, triplep, triplep, scramble_state, scramble_ppi, ROT90, "bootleg? (KKK)", "Knock Out!! (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, knockoutb,triplep, triplep, knockoutb,scramble_state, scramble_ppi, ROT90, "bootleg", "Knock Out!! (bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, mariner, 0, mariner, scramble, scramble_state, mariner, ROT90, "Amenip", "Mariner", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
GAME( 1981, 800fath, mariner, mariner, 800fath, scramble_state, mariner, ROT90, "Amenip (US Billiards Inc. license)", "800 Fathoms", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/scv.cpp b/src/mame/drivers/scv.cpp
index a78ab154ac9..e1852162caf 100644
--- a/src/mame/drivers/scv.cpp
+++ b/src/mame/drivers/scv.cpp
@@ -57,7 +57,6 @@ protected:
ioport_port *m_key[8];
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- void scv_set_banks();
inline void plot_sprite_part( bitmap_ind16 &bitmap, UINT8 x, UINT8 y, UINT8 pat, UINT8 col, UINT8 screen_sprite_start_line );
inline void draw_sprite( bitmap_ind16 &bitmap, UINT8 x, UINT8 y, UINT8 tile_idx, UINT8 col, UINT8 left, UINT8 right, UINT8 top, UINT8 bottom, UINT8 clip_y, UINT8 screen_sprite_start_line );
inline void draw_text( bitmap_ind16 &bitmap, UINT8 x, UINT8 y, UINT8 *char_data, UINT8 fg, UINT8 bg );
diff --git a/src/mame/drivers/sderby.cpp b/src/mame/drivers/sderby.cpp
index c055079212f..5e5e03d850a 100644
--- a/src/mame/drivers/sderby.cpp
+++ b/src/mame/drivers/sderby.cpp
@@ -202,11 +202,11 @@ WRITE16_MEMBER(sderby_state::sderby_out_w)
x--- ---- End of Race lamp.
*/
- output_set_lamp_value(1, (data & 1)); /* Lamp 1 - START */
- output_set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - BET */
- output_set_lamp_value(3, (data >> 15) & 1); /* Lamp 3 - END OF RACE */
+ output().set_lamp_value(1, (data & 1)); /* Lamp 1 - START */
+ output().set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - BET */
+ output().set_lamp_value(3, (data >> 15) & 1); /* Lamp 3 - END OF RACE */
- coin_counter_w(machine(), 0, data & 0x2000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x2000);
}
@@ -247,15 +247,15 @@ WRITE16_MEMBER(sderby_state::scmatto_out_w)
--x- ---- Coin counter.
*/
- output_set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
- output_set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
- output_set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
- output_set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
- output_set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */
- output_set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */
- output_set_lamp_value(7, (data >> 6) & 1); /* Lamp 7 - BET */
-
- coin_counter_w(machine(), 0, data & 0x2000);
+ output().set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
+ output().set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
+ output().set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
+ output().set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */
+ output().set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */
+ output().set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */
+ output().set_lamp_value(7, (data >> 6) & 1); /* Lamp 7 - BET */
+
+ machine().bookkeeping().coin_counter_w(0, data & 0x2000);
}
@@ -283,8 +283,8 @@ WRITE16_MEMBER(sderby_state::roulette_out_w)
---- x--- Unknown (always activated).
*/
- output_set_lamp_value(1, (data & 1)); /* Lamp 1 - START */
- output_set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - BET */
+ output().set_lamp_value(1, (data & 1)); /* Lamp 1 - START */
+ output().set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - BET */
}
diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp
index 8438add6efe..424a921a1ae 100644
--- a/src/mame/drivers/sdk85.cpp
+++ b/src/mame/drivers/sdk85.cpp
@@ -98,7 +98,7 @@ WRITE8_MEMBER( sdk85_state::scanlines_w )
WRITE8_MEMBER( sdk85_state::digit_w )
{
if (m_digit < 6)
- output_set_digit_value(m_digit, BITSWAP8(data, 3, 2, 1, 0, 7, 6, 5, 4)^0xff);
+ output().set_digit_value(m_digit, BITSWAP8(data, 3, 2, 1, 0, 7, 6, 5, 4)^0xff);
}
READ8_MEMBER( sdk85_state::kbd_r )
diff --git a/src/mame/drivers/sdk86.cpp b/src/mame/drivers/sdk86.cpp
index c895211950a..dd341654595 100644
--- a/src/mame/drivers/sdk86.cpp
+++ b/src/mame/drivers/sdk86.cpp
@@ -115,7 +115,7 @@ WRITE8_MEMBER( sdk86_state::scanlines_w )
WRITE8_MEMBER( sdk86_state::digit_w )
{
if (m_digit < 8)
- output_set_digit_value(m_digit, data);
+ output().set_digit_value(m_digit, data);
}
READ8_MEMBER( sdk86_state::kbd_r )
diff --git a/src/mame/drivers/seabattl.cpp b/src/mame/drivers/seabattl.cpp
index 14d31b86d02..b3f35e41ad8 100644
--- a/src/mame/drivers/seabattl.cpp
+++ b/src/mame/drivers/seabattl.cpp
@@ -261,7 +261,7 @@ static ADDRESS_MAP_START( seabattl_map, AS_PROGRAM, 8, seabattl_state )
AM_RANGE(0x1e06, 0x1e06) AM_MIRROR(0x20f0) AM_READ_PORT("DIPS1") AM_WRITE(sound_w)
AM_RANGE(0x1e07, 0x1e07) AM_MIRROR(0x20f0) AM_READ_PORT("DIPS0") AM_WRITE(sound2_w)
AM_RANGE(0x1fcc, 0x1fcc) AM_MIRROR(0x2000) AM_READ_PORT("IN1")
- AM_RANGE(0x1f00, 0x1fff) AM_MIRROR(0x2000) AM_DEVREADWRITE("s2636", s2636_device, read, write)
+ AM_RANGE(0x1f00, 0x1fff) AM_MIRROR(0x2000) AM_DEVREADWRITE("s2636", s2636_device, read_data, write_data)
ADDRESS_MAP_END
static ADDRESS_MAP_START( seabattl_io_map, AS_IO, 8, seabattl_state )
@@ -284,8 +284,8 @@ WRITE8_MEMBER(seabattl_state::seabattl_control_w)
// bit 3: inverse image
// bit 4: lamp
// bit 5: enable wave
- coin_counter_w(machine(), 0, BIT(data, 2));
- output_set_lamp_value(0, BIT(data,4));
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 2));
+ output().set_lamp_value(0, BIT(data,4));
m_waveenable = BIT(data, 5);
}
diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp
index 486692c1078..57295aec2ac 100644
--- a/src/mame/drivers/seattle.cpp
+++ b/src/mame/drivers/seattle.cpp
@@ -2851,7 +2851,19 @@ ROM_START( calspeeda )
ROM_REGION32_LE( 0x80000, "user1", 0 ) /* Boot Code Version 1.2 (2/18/98) */
ROM_LOAD( "caspd1_2.u32", 0x000000, 0x80000, CRC(0a235e4e) SHA1(b352f10fad786260b58bd344b5002b6ea7aaf76d) )
+ // it actually asks you to replace this with the original rom after the upgrade is complete, which is weird because this is a perfectly valid newer revision of the boot code, but probably explains why the parent set was still on 1.2
+ ROM_LOAD( "Cal speed update U32 boot ver, 1,4 5EF6", 0x000000, 0x80000, CRC(fd627637) SHA1(b0c2847cbecfc00344e402386d13240d55a0814e) ) // boot code 1.4 Apr 17 1998 21:18:31
+
ROM_REGION32_LE( 0x100000, "update", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" )
+
+ ROM_SYSTEM_BIOS( 1, "up16_1", "Disk Update 1.0x to 2.1a (1.25) Step 1 of 3" )
+ ROMX_LOAD("eprom #1 2.1A 90A7", 0x000000, 0x100000, CRC(bc0f373e) SHA1(bf53f1953ccab8da9ce784e4d20dd2ec0d0eff6a), ROM_BIOS(2))
+ ROM_SYSTEM_BIOS( 2, "up16_2", "Disk Update 1.0x to 2.1a (1.25) Step 2 of 3" )
+ ROMX_LOAD("eprom #2 2.1A 9F84", 0x000000, 0x100000, CRC(5782da30) SHA1(eaeea3655bc9c1cedefdfb0088d4716584788669), ROM_BIOS(3))
+ 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/sega_sawatte.cpp b/src/mame/drivers/sega_sawatte.cpp
index 93e63e9c8f7..9ef349c81e4 100644
--- a/src/mame/drivers/sega_sawatte.cpp
+++ b/src/mame/drivers/sega_sawatte.cpp
@@ -51,4 +51,4 @@ ROM_START( sawatte )
ROM_END
-GAME( 1996?, sawatte, 0, sawatte, sawatte, driver_device, 0, ROT0, "Sega", "Sawatte", MACHINE_IS_SKELETON )
+CONS( 1996?, sawatte, 0, 0, sawatte, sawatte, driver_device, 0, "Sega", "Sawatte", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp
index a7070123d7e..4c83e1fb618 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;
@@ -431,10 +438,10 @@ WRITE8_MEMBER(segac2_state::io_portd_w)
D1 : To CN1 pin J. (Coin meter 2)
D0 : To CN1 pin 8. (Coin meter 1)
*/
- //coin_lockout_w(space.machine(), 1, data & 0x08);
- //coin_lockout_w(space.machine(), 0, data & 0x04);
- coin_counter_w(space.machine(), 1, data & 0x02);
- coin_counter_w(space.machine(), 0, data & 0x01);
+ //space.machine().bookkeeping().coin_lockout_w(1, data & 0x08);
+ //space.machine().bookkeeping().coin_lockout_w(0, data & 0x04);
+ space.machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ space.machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
WRITE8_MEMBER(segac2_state::io_porth_w)
@@ -569,8 +576,8 @@ WRITE8_MEMBER(segac2_state::counter_timer_w)
break;
case 0x10: /* coin counter */
-// coin_counter_w(space.machine(), 0,1);
-// coin_counter_w(space.machine(), 0,0);
+// space.machine().bookkeeping().coin_counter_w(0,1);
+// space.machine().bookkeeping().coin_counter_w(0,0);
break;
case 0x12: /* set coinage info -- followed by two 4-bit values */
@@ -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 )
@@ -1385,7 +1436,7 @@ UINT32 segac2_state::screen_update_segac2_new(screen_device &screen, bitmap_rgb3
UINT32* desty = &bitmap.pix32(y, 0);
UINT16* srcy;
- srcy = m_vdp->m_render_line_raw;
+ srcy = m_vdp->m_render_line_raw.get();
for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
{
@@ -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) )
@@ -2419,6 +2501,8 @@ 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
diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp
index 6eb4edb91f3..c07976572e7 100644
--- a/src/mame/drivers/segag80r.cpp
+++ b/src/mame/drivers/segag80r.cpp
@@ -268,8 +268,8 @@ READ8_MEMBER(segag80r_state::spaceod_port_fc_r)
WRITE8_MEMBER(segag80r_state::coin_count_w)
{
- coin_counter_w(machine(), 0, (data >> 7) & 1);
- coin_counter_w(machine(), 1, (data >> 6) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 7) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 6) & 1);
}
@@ -291,7 +291,7 @@ WRITE8_MEMBER(segag80r_state::sindbadm_soundport_w)
WRITE8_MEMBER(segag80r_state::sindbadm_misc_w)
{
- coin_counter_w(machine(), 0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
// osd_printf_debug("Unknown = %02X\n", data);
}
diff --git a/src/mame/drivers/segag80v.cpp b/src/mame/drivers/segag80v.cpp
index 5410b92b122..46d87e5ddc9 100644
--- a/src/mame/drivers/segag80v.cpp
+++ b/src/mame/drivers/segag80v.cpp
@@ -349,8 +349,8 @@ READ8_MEMBER(segag80v_state::multiply_r)
WRITE8_MEMBER(segag80v_state::coin_count_w)
{
- coin_counter_w(machine(), 0, (data >> 7) & 1);
- coin_counter_w(machine(), 1, (data >> 6) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 7) & 1);
+ machine().bookkeeping().coin_counter_w(1, (data >> 6) & 1);
}
diff --git a/src/mame/drivers/segahang.cpp b/src/mame/drivers/segahang.cpp
index d74a074e55e..f75a5af5631 100644
--- a/src/mame/drivers/segahang.cpp
+++ b/src/mame/drivers/segahang.cpp
@@ -69,12 +69,12 @@ WRITE8_MEMBER( segahang_state::video_lamps_w )
m_segaic16vid->set_display_enable(data & 0x10);
// bits 2 & 3: control the lamps
- set_led_status(machine(), 1, data & 0x08);
- set_led_status(machine(), 0, data & 0x04);
+ output().set_led_value(1, data & 0x08);
+ output().set_led_value(0, data & 0x04);
// bits 0 & 1: update coin counters
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
diff --git a/src/mame/drivers/segajw.cpp b/src/mame/drivers/segajw.cpp
index ff429013b4a..1bd6490ebe4 100644
--- a/src/mame/drivers/segajw.cpp
+++ b/src/mame/drivers/segajw.cpp
@@ -20,6 +20,12 @@ SOUND : YM3438
***************************************************************************/
+/*
+Also seem to be running on the same/similar hardware:
+* Deuce's Wild (http://topline.royalflush.jp/modules/contents/?%A5%DE%A5%B7%A5%F3%A5%C7%A1%BC%A5%BF%A5%D9%A1%BC%A5%B9%2F%A5%D3%A5%C7%A5%AA%A5%DD%A1%BC%A5%AB%A1%BC%2FSEGA%2FDEUCE%27S_WILD)
+* Draw Poker (http://topline.royalflush.jp/modules/contents/?%A5%DE%A5%B7%A5%F3%A5%C7%A1%BC%A5%BF%A5%D9%A1%BC%A5%B9%2F%A5%D3%A5%C7%A5%AA%A5%DD%A1%BC%A5%AB%A1%BC%2FSEGA%2FDRAW_POKER)
+*/
+
#include "emu.h"
#include "cpu/m68000/m68000.h"
@@ -104,7 +110,7 @@ READ8_MEMBER(segajw_state::lamps_r)
WRITE8_MEMBER(segajw_state::lamps_w)
{
for(int i=0; i<8; i++)
- output_set_lamp_value((offset * 8) + i, BIT(data, i));
+ output().set_lamp_value((offset * 8) + i, BIT(data, i));
m_lamps[offset] = data;
}
@@ -116,11 +122,11 @@ READ16_MEMBER(segajw_state::coinlockout_r)
WRITE16_MEMBER(segajw_state::coinlockout_w)
{
- coin_lockout_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_lockout_w(0, data & 1);
m_coin_lockout = data;
for(int i=0; i<3; i++)
- output_set_indexed_value("towerlamp", i, BIT(data, 3 + i));
+ output().set_indexed_value("towerlamp", i, BIT(data, 3 + i));
}
WRITE8_MEMBER(segajw_state::audiocpu_cmd_w)
@@ -262,107 +268,95 @@ static INPUT_PORTS_START( segajw )
PORT_START("COIN1") // start the coin drop sequence (see coin_sensors_r)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, segajw_state, coin_drop_start, NULL)
- PORT_START("DSW0")
- PORT_DIPNAME( 0x0001, 0x0000, "DSW0-1" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, "DSW0-2" )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, "DSW0-3" )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, "DSW0-4" )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, "DSW0-5" )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, "DSW0-6" )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, "DSW0-7" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, "DSW0-8" )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
PORT_START("DSW1")
- PORT_DIPNAME( 0x0001, 0x0000, "DSW1-1" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, "DSW1-2" )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, "DSW1-3" )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, "DSW1-4" )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, "DSW1-5" )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, "DSW1-6" )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, "DSW1-7" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, "DSW1-8" )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0001, 0x0000, "Progressive" ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x0001, "Normal" )
+ PORT_DIPSETTING( 0x0000, "Progressive" )
+ PORT_DIPNAME( 0x0002, 0x0000, "Double Down" ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x0002, "With D.D" )
+ PORT_DIPSETTING( 0x0000, "Without D.D" )
+ PORT_DIPNAME( 0x0004, 0x0000, "Draw Cards" ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x0004, "Display" )
+ PORT_DIPSETTING( 0x0000, "No Display" )
+ PORT_DIPNAME( 0x0008, 0x0000, "Color Change" ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x0008, "Change" )
+ PORT_DIPSETTING( 0x0000, "No Change" )
+ PORT_DIPNAME( 0x0010, 0x0000, "Odds Table" ) PORT_DIPLOCATION("SW1:5")
+ PORT_DIPSETTING( 0x0010, "No Display" )
+ PORT_DIPSETTING( 0x0000, "Display" )
+ PORT_DIPNAME( 0x0060, 0x0000, "Play Mode" ) PORT_DIPLOCATION("SW1:6,7")
+ PORT_DIPSETTING( 0x0000, "Coin" )
+ PORT_DIPSETTING( 0x0020, "Coin/Credit" )
+ // PORT_DIPSETTING( 0x0040, "Coin/Credit" )
+ PORT_DIPSETTING( 0x0060, "Credit" )
+ PORT_DIPNAME( 0x0080, 0x0000, "Best Choice" ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x0080, "Display" )
+ PORT_DIPSETTING( 0x0000, "No Display" )
PORT_START("DSW2")
- PORT_DIPNAME( 0x0001, 0x0000, "DSW2-1" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0000, "DSW2-2" )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0000, "DSW2-3" )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, "DSW2-4" )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, "DSW2-5" )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, "DSW2-6" )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, "DSW2-7" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, "DSW2-8" )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0007, 0x0000, "Denomination" ) PORT_DIPLOCATION("SW2:1,2,3")
+ PORT_DIPSETTING( 0x0000, "$25" )
+ PORT_DIPSETTING( 0x0001, "$5" )
+ PORT_DIPSETTING( 0x0002, "$1" )
+ PORT_DIPSETTING( 0x0003, "50c" )
+ PORT_DIPSETTING( 0x0004, "25c" )
+ PORT_DIPSETTING( 0x0005, "10c" )
+ PORT_DIPSETTING( 0x0006, "5c" )
+ PORT_DIPSETTING( 0x0007, "Medal" )
+ PORT_DIPNAME( 0x0008, 0x0000, "Max. Pay" ) PORT_DIPLOCATION("SW2:4")
+ PORT_DIPSETTING( 0x0008, "500" )
+ PORT_DIPSETTING( 0x0000, "1000" )
+ PORT_DIPNAME( 0x0010, 0x0000, "Max. Credit" ) PORT_DIPLOCATION("SW2:5")
+ PORT_DIPSETTING( 0x0010, "5000" )
+ PORT_DIPSETTING( 0x0000, "1000" )
+ PORT_DIPNAME( 0x0020, 0x0000, "$1200" ) PORT_DIPLOCATION("SW2:6")
+ PORT_DIPSETTING( 0x0020, "At. Pay" )
+ PORT_DIPSETTING( 0x0000, "Credit/At. Pay" )
+ PORT_DIPNAME( 0x00c0, 0x0000, "Max. Bet" ) PORT_DIPLOCATION("SW2:7,8")
+ PORT_DIPSETTING( 0x0000, "10" )
+ PORT_DIPSETTING( 0x00c0, "5" )
+ PORT_DIPSETTING( 0x0040, "3" )
+ PORT_DIPSETTING( 0x0080, "1" )
PORT_START("DSW3")
- PORT_DIPNAME( 0x0001, 0x0001, "DSW3-1" )
+ PORT_DIPNAME( 0x0001, 0x0001, "Meter" ) PORT_DIPLOCATION("SW3:1")
+ PORT_DIPSETTING( 0x0001, "Nevada" )
+ PORT_DIPSETTING( 0x0000, "New Jersey" )
+ PORT_DIPNAME( 0x0002, 0x0002, "Card Face" ) PORT_DIPLOCATION("SW3:2")
+ PORT_DIPSETTING( 0x0002, "Changeable" )
+ PORT_DIPSETTING( 0x0000, "Original" )
+ PORT_DIPNAME( 0x0004, 0x0004, "Card Back" ) PORT_DIPLOCATION("SW3:3")
+ PORT_DIPSETTING( 0x0004, "Changeable" )
+ PORT_DIPSETTING( 0x0000, "Original" )
+ PORT_DIPUNUSED( 0x0008, 0x0008) PORT_DIPLOCATION("SW3:4")
+ PORT_DIPUNUSED( 0x0010, 0x0010) PORT_DIPLOCATION("SW3:5")
+ PORT_DIPUNUSED( 0x0020, 0x0020) PORT_DIPLOCATION("SW3:6")
+ PORT_DIPUNUSED( 0x0040, 0x0040) PORT_DIPLOCATION("SW3:7")
+ PORT_DIPUNUSED( 0x0080, 0x0080) PORT_DIPLOCATION("SW3:8")
+
+ PORT_START("DSW0")
+ PORT_DIPNAME( 0x0001, 0x0000, "Jumper 1" ) PORT_DIPLOCATION("SW4:1")
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, "DSW3-2" )
+ PORT_DIPNAME( 0x0002, 0x0000, "Jumper 2" ) PORT_DIPLOCATION("SW4:2")
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, "DSW3-3" )
+ PORT_DIPNAME( 0x0004, 0x0000, "Jumper 3" ) PORT_DIPLOCATION("SW4:3")
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0000, "DSW3-4" )
+ PORT_DIPNAME( 0x0008, 0x0000, "Jumper 4" ) PORT_DIPLOCATION("SW4:4")
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0000, "DSW3-5" )
+ PORT_DIPNAME( 0x0010, 0x0000, "Jumper 5" ) PORT_DIPLOCATION("SW4:5")
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0000, "DSW3-6" )
+ PORT_DIPNAME( 0x0020, 0x0000, "Jumper 6" ) PORT_DIPLOCATION("SW4:6")
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0000, "DSW3-7" )
+ PORT_DIPNAME( 0x0040, 0x0000, "Jumper 7" ) PORT_DIPLOCATION("SW4:7")
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0000, "DSW3-8" )
+ PORT_DIPNAME( 0x0080, 0x0000, "Jumper 8" ) PORT_DIPLOCATION("SW4:8")
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
@@ -446,4 +440,4 @@ ROM_START( segajw )
ROM_END
-GAMEL( 1991, segajw, 0, segajw, segajw, driver_device, 0, ROT0, "Sega", "Golden Poker Series \"Joker's Wild\" (Rev. B)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_segajw ) // TODO: correct title
+GAMEL( 1991, segajw, 0, segajw, segajw, driver_device, 0, ROT0, "Sega", "Joker's Wild (Rev. B)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_segajw )
diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp
index 1b443a03487..9e09344fed1 100644
--- a/src/mame/drivers/segaorun.cpp
+++ b/src/mame/drivers/segaorun.cpp
@@ -407,20 +407,20 @@ WRITE8_MEMBER( segaorun_state::bankmotor_control_w )
if (data < 8)
{
// left
- output_set_value("Bank_Motor_Direction", 1);
- output_set_value("Bank_Motor_Speed", 8 - data);
+ output().set_value("Bank_Motor_Direction", 1);
+ output().set_value("Bank_Motor_Speed", 8 - data);
}
else if (data == 8)
{
// no movement
- output_set_value("Bank_Motor_Direction", 0);
- output_set_value("Bank_Motor_Speed", 0);
+ output().set_value("Bank_Motor_Direction", 0);
+ output().set_value("Bank_Motor_Speed", 0);
}
else
{
// right
- output_set_value("Bank_Motor_Direction", 2);
- output_set_value("Bank_Motor_Speed", data - 8);
+ output().set_value("Bank_Motor_Direction", 2);
+ output().set_value("Bank_Motor_Speed", data - 8);
}
}
@@ -736,9 +736,9 @@ WRITE16_MEMBER( segaorun_state::outrun_custom_io_w )
// D1: Brake lamp
// other bits: ?
machine().sound().system_enable(data & 0x80);
- output_set_value("Vibration_motor", data >> 5 & 1);
- output_set_value("Start_lamp", data >> 2 & 1);
- output_set_value("Brake_lamp", data >> 1 & 1);
+ output().set_value("Vibration_motor", data >> 5 & 1);
+ output().set_value("Start_lamp", data >> 2 & 1);
+ output().set_value("Brake_lamp", data >> 1 & 1);
}
return;
@@ -815,8 +815,8 @@ WRITE16_MEMBER( segaorun_state::shangon_custom_io_w )
// other bits: ?
m_adc_select = data >> 6 & 3;
m_segaic16vid->set_display_enable(data >> 5 & 1);
- output_set_value("Vibration_motor", data >> 3 & 1);
- output_set_value("Start_lamp", data >> 2 & 1);
+ output().set_value("Vibration_motor", data >> 3 & 1);
+ output().set_value("Start_lamp", data >> 2 & 1);
}
return;
diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp
index 5dfa7865ca0..b87aee5f734 100644
--- a/src/mame/drivers/segas16a.cpp
+++ b/src/mame/drivers/segas16a.cpp
@@ -181,8 +181,8 @@ WRITE8_MEMBER( segas16a_state::misc_control_w )
// bits 2 & 3: control the lamps, allowing for overrides
if (((m_video_control ^ data) & 0x0c) && !m_lamp_changed_w.isnull())
m_lamp_changed_w(m_video_control ^ data, data);
- set_led_status(machine(), 1, data & 0x08);
- set_led_status(machine(), 0, data & 0x04);
+ output().set_led_value(1, data & 0x08);
+ output().set_led_value(0, data & 0x04);
m_video_control = data;
@@ -198,8 +198,8 @@ WRITE8_MEMBER( segas16a_state::misc_control_w )
m_segaic16vid->set_display_enable(data & 0x10);
// bits 0 & 1: update coin counters
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
@@ -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 923135b376b..aa15bad1857 100644
--- a/src/mame/drivers/segas16b.cpp
+++ b/src/mame/drivers/segas16b.cpp
@@ -1127,13 +1127,14 @@ 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);
- set_led_status(machine(), 1, data & 0x08);
- set_led_status(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 0, data & 0x01);
+ output().set_led_value(1, data & 0x08);
+ output().set_led_value(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
return;
}
logerror("%06X:standard_io_w - unknown write access to address %04X = %04X & %04X\n", space.device().safe_pc(), offset * 2, data, mem_mask);
@@ -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]);
+ }
}
@@ -1600,9 +1604,9 @@ WRITE16_MEMBER( segas16b_state::hwchamp_custom_io_w )
// bit 4 is GONG
// if (data & 0x10) popmessage("GONG");
// are the following really lamps?
- // set_led_status(space.machine(), 1,data & 0x20);
- // set_led_status(space.machine(), 2,data & 0x40);
- // set_led_status(space.machine(), 3,data & 0x80);
+ // output().set_led_value(1,data & 0x20);
+ // output().set_led_value(2,data & 0x40);
+ // output().set_led_value(3,data & 0x80);
break;
}
break;
@@ -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")
@@ -8237,9 +8242,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 +8915,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 90b84b9d9e6..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()
{
@@ -202,10 +206,10 @@ WRITE8_MEMBER( segas18_state::misc_outputs_w )
m_sprites->set_flip(data & 0x20);
// These are correct according to cgfm's docs, but mwalker and ddcrew both
// enable the lockout and never turn it off
- // coin_lockout_w(machine(), 1, data & 0x08);
- // coin_lockout_w(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 0, data & 0x01);
+ // machine().bookkeeping().coin_lockout_w(1, data & 0x08);
+ // machine().bookkeeping().coin_lockout_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
@@ -418,9 +422,9 @@ WRITE16_MEMBER( segas18_state::lghost_custom_io_w )
WRITE8_MEMBER( segas18_state::lghost_gun_recoil_w )
{
- output_set_value("P1_Gun_Recoil", (~data & 0x01));
- output_set_value("P2_Gun_Recoil", (~data & 0x02)>>1);
- output_set_value("P3_Gun_Recoil", (~data & 0x04)>>2);
+ output().set_value("P1_Gun_Recoil", (~data & 0x01));
+ output().set_value("P2_Gun_Recoil", (~data & 0x02)>>1);
+ output().set_value("P3_Gun_Recoil", (~data & 0x04)>>2);
}
@@ -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) )
@@ -2306,7 +2310,7 @@ ROM_END
/**************************************************************************************************************************
**************************************************************************************************************************
**************************************************************************************************************************
- Laser Ghost, Sega System 18
+ Laser Ghost (World), Sega System 18
CPU: FD1094 (317-0166)
ROM Board: 171-5873B
*/
@@ -2337,7 +2341,6 @@ ROM_START( lghost )
ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
ROM_LOAD( "epr-13417.c7", 0x010000, 0x20000, CRC(cd7beb49) SHA1(2435ce000f1eefdd06b27ea93e22fd82c0e999d2) )
- // these seem best 3 from the different sized dumps
ROM_LOAD( "mpr-13420.c6", 0x090000, 0x40000, CRC(3de0dee4) SHA1(31833684df5a34d5e9ef04f2ab42355b8e9cbb45) )
ROM_LOAD( "mpr-13419.c5", 0x110000, 0x40000, CRC(e7021b0a) SHA1(82e390fac63965d4f80ae01758c19ae951c39475) )
ROM_LOAD( "mpr-13418.c4", 0x190000, 0x40000, CRC(0732594d) SHA1(9fbeae29f1a31d136ddc9a49c786b2a08a523e0d) )
@@ -2367,18 +2370,48 @@ ROM_START( lghostd )
ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
ROM_LOAD( "epr-13417.c7", 0x010000, 0x20000, CRC(cd7beb49) SHA1(2435ce000f1eefdd06b27ea93e22fd82c0e999d2) )
- // these seem best 3 from the different sized dumps
ROM_LOAD( "mpr-13420.c6", 0x090000, 0x40000, CRC(3de0dee4) SHA1(31833684df5a34d5e9ef04f2ab42355b8e9cbb45) )
ROM_LOAD( "mpr-13419.c5", 0x110000, 0x40000, CRC(e7021b0a) SHA1(82e390fac63965d4f80ae01758c19ae951c39475) )
ROM_LOAD( "mpr-13418.c4", 0x190000, 0x40000, CRC(0732594d) SHA1(9fbeae29f1a31d136ddc9a49c786b2a08a523e0d) )
ROM_END
/**************************************************************************************************************************
- Laser Ghost, Sega System 18
+ Laser Ghost (US), Sega System 18
CPU: FD1094 (317-0165)
Game BD: 833-7627-04 LASER GHOST
ROM Board: 834-7597-04 (type 171-5873B)
A/D BD NO. 837-7536
+
+A PCB was found with a Game BD: 833-7627-01-T GHOST HUNTERS
+While the DATA matched the set below (lghostu), all roms were hand labeled and dated as follows:
+
+ROM0 E * A3AB @ A4
+ROM0 O * B21C @ A6
+ROM1 E 5B93 @ A5
+ROM1 O 6B23 @ A7
+
+FD1094 labeled as LASER GHOST USA
+
+Fix0 11/19-14 @ C1
+Fix1 11/19-14 @ C2
+Fix2 11/19-14 @ C3
+
+bank0 O 11/20-14 @ C10
+bank0 E 11/20-14 @ A10
+bank1 O 10/31 @ C11
+bank1 E 10/31 @ A11
+bank2 O 10/31 @ C12
+bank2 E 10/31 @ A12
+bank3 O 10/31 @ C13
+bank3 E 10/31 @ A13
+
+Sound 0 FINAL @ C7
+Sound 1 10/22 @ C6
+Sound 2 10/22 @ C5
+Sound 3 10/22 @ C4
+
+suggesting the original name for the game was Ghost Hunters and the roms dated 11/20-14 & 11/19-14
+contain the data for name change to Laser Ghost
*/
ROM_START( lghostu )
ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code
@@ -2407,7 +2440,6 @@ ROM_START( lghostu )
ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
ROM_LOAD( "epr-13417.c7", 0x010000, 0x20000, CRC(cd7beb49) SHA1(2435ce000f1eefdd06b27ea93e22fd82c0e999d2) )
- // these seem best 3 from the different sized dumps
ROM_LOAD( "mpr-13420.c6", 0x090000, 0x40000, CRC(3de0dee4) SHA1(31833684df5a34d5e9ef04f2ab42355b8e9cbb45) )
ROM_LOAD( "mpr-13419.c5", 0x110000, 0x40000, CRC(e7021b0a) SHA1(82e390fac63965d4f80ae01758c19ae951c39475) )
ROM_LOAD( "mpr-13418.c4", 0x190000, 0x40000, CRC(0732594d) SHA1(9fbeae29f1a31d136ddc9a49c786b2a08a523e0d) )
@@ -2438,7 +2470,46 @@ ROM_START( lghostud )
ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
ROM_LOAD( "epr-13417.c7", 0x010000, 0x20000, CRC(cd7beb49) SHA1(2435ce000f1eefdd06b27ea93e22fd82c0e999d2) )
- // these seem best 3 from the different sized dumps
+ ROM_LOAD( "mpr-13420.c6", 0x090000, 0x40000, CRC(3de0dee4) SHA1(31833684df5a34d5e9ef04f2ab42355b8e9cbb45) )
+ ROM_LOAD( "mpr-13419.c5", 0x110000, 0x40000, CRC(e7021b0a) SHA1(82e390fac63965d4f80ae01758c19ae951c39475) )
+ ROM_LOAD( "mpr-13418.c4", 0x190000, 0x40000, CRC(0732594d) SHA1(9fbeae29f1a31d136ddc9a49c786b2a08a523e0d) )
+ROM_END
+
+
+/**************************************************************************************************************************
+ Laser Ghost (Japan), Sega System 18
+ CPU: FD1094 (317-0164)
+ Game BD: 833-7627-03 LASER GHOST
+ ROM Board: 834-7597-03 (type 171-5873B)
+ A/D BD NO. 837-7536
+*/
+ROM_START( lghostj )
+ ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "epr-13410.a4", 0x00000, 0x40000, CRC(9c1d672b) SHA1(d617b1fbdad1b42af6f1341e4556c3481c4a7031) )
+ ROM_LOAD16_BYTE( "epr-13412.a6", 0x00001, 0x40000, CRC(3a3155fa) SHA1(534231450d4da0668e8742ada8c9c86f2e5768a6))
+ ROM_LOAD16_BYTE( "epr-13411.a5", 0x80000, 0x40000, CRC(5160167b) SHA1(3d176a18c7527b1e485f10b144bb4db1b945e709) )
+ ROM_LOAD16_BYTE( "epr-13413.a7", 0x80001, 0x40000, CRC(656b3bd8) SHA1(db81d4ae3138308dce1e3db7a859f1d63c4ff815) )
+
+ ROM_REGION( 0x2000, "maincpu:key", 0 ) // decryption key
+ ROM_LOAD( "317-0164.key", 0x0000, 0x2000, CRC(6bf5cf2d) SHA1(9f43b057ac162a62a5f3b5511b0825f34a2a31a3))
+
+ ROM_REGION( 0xc0000, "gfx1", 0 ) // tiles
+ ROM_LOAD( "epr-13414.c1", 0x00000, 0x40000, CRC(dada2419) SHA1(f6ffd02d75232a09ea83fd199e5e30b2773b0cf5) )
+ ROM_LOAD( "epr-13415.c2", 0x40000, 0x40000, CRC(bbb62c48) SHA1(7a4c5bd11b73a92deece72b55627f48ac167acd6) )
+ ROM_LOAD( "epr-13416.c3", 0x80000, 0x40000, CRC(1d11dbae) SHA1(331aa49c6b38d32ec33184dbd0851888463ddbc7) )
+
+ ROM_REGION16_BE( 0x800000, "sprites", 0 ) // sprites
+ ROM_LOAD16_BYTE( "epr-13603.a10", 0x000000, 0x80000, CRC(5350a94e) SHA1(47e99803cab4b508feb51069c940d6c824d6961d) )
+ ROM_LOAD16_BYTE( "epr-13604.c10", 0x000001, 0x80000, CRC(4009c8e5) SHA1(97f513d312f4c90f8bffdf797afa3749779989a5) )
+ ROM_LOAD16_BYTE( "mpr-13421.a11", 0x200000, 0x80000, CRC(2fc75890) SHA1(9f97f07dba3b978df8eb357894168ad74f151d30) )
+ ROM_LOAD16_BYTE( "mpr-13424.c11", 0x200001, 0x80000, CRC(fb98d920) SHA1(cebdebe88902e96c631df6053ac2589f794da155) )
+ ROM_LOAD16_BYTE( "mpr-13422.a12", 0x400000, 0x80000, CRC(48a0754d) SHA1(9fead9f8319593adb4bddaaa4d053b21ca726009) )
+ ROM_LOAD16_BYTE( "mpr-13425.c12", 0x400001, 0x80000, CRC(f8252589) SHA1(5a1ed24296d0609393e53df3ee585a366da4ee46) )
+ ROM_LOAD16_BYTE( "mpr-13423.a13", 0x600000, 0x80000, CRC(335bbc9d) SHA1(78793335b2f8a1bb05809259521db193c17c9b98) )
+ ROM_LOAD16_BYTE( "mpr-13426.c13", 0x600001, 0x80000, CRC(5cfb1e25) SHA1(1dd57475604f339e58bf946e17ae0dc5cf4a3dba) )
+
+ ROM_REGION( 0x210000, "soundcpu", ROMREGION_ERASEFF ) // sound CPU
+ ROM_LOAD( "epr-13417.c7", 0x010000, 0x20000, CRC(cd7beb49) SHA1(2435ce000f1eefdd06b27ea93e22fd82c0e999d2) )
ROM_LOAD( "mpr-13420.c6", 0x090000, 0x40000, CRC(3de0dee4) SHA1(31833684df5a34d5e9ef04f2ab42355b8e9cbb45) )
ROM_LOAD( "mpr-13419.c5", 0x110000, 0x40000, CRC(e7021b0a) SHA1(82e390fac63965d4f80ae01758c19ae951c39475) )
ROM_LOAD( "mpr-13418.c4", 0x190000, 0x40000, CRC(0732594d) SHA1(9fbeae29f1a31d136ddc9a49c786b2a08a523e0d) )
@@ -2986,6 +3057,7 @@ GAME( 1991, hamaway, 0, system18, hamaway, segas18_state,
GAME( 1990, lghost, 0, lghost_fd1094, lghost, segas18_state, lghost, ROT0, "Sega", "Laser Ghost (World) (FD1094 317-0166)", 0 )
GAME( 1990, lghostu, lghost, lghost_fd1094, lghost, segas18_state, lghost, ROT0, "Sega", "Laser Ghost (US) (FD1094 317-0165)", 0 )
+GAME( 1990, lghostj, lghost, lghost_fd1094, lghost, segas18_state, lghost, ROT0, "Sega", "Laser Ghost (Japan) (FD1094 317-0164)", 0 )
GAME( 1990, mwalk, 0, system18_fd1094_i8751,mwalk, segas18_state, generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (World) (FD1094/8751 317-0159)", 0 )
GAME( 1990, mwalku, mwalk, system18_fd1094_i8751,mwalka, segas18_state, generic_5874, ROT0, "Sega", "Michael Jackson's Moonwalker (US) (FD1094/8751 317-0158)", 0 )
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/segas32.cpp b/src/mame/drivers/segas32.cpp
index 54dc575c541..db1fb7a3d24 100644
--- a/src/mame/drivers/segas32.cpp
+++ b/src/mame/drivers/segas32.cpp
@@ -891,10 +891,10 @@ void segas32_state::common_io_chip_w(address_space &space, int which, offs_t off
m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
}
-/* coin_lockout_w(machine(), 1 + 2*which, data & 0x08);
- coin_lockout_w(machine(), 0 + 2*which, data & 0x04);*/
- coin_counter_w(machine(), 1 + 2*which, data & 0x02);
- coin_counter_w(machine(), 0 + 2*which, data & 0x01);
+/* machine().bookkeeping().coin_lockout_w(1 + 2*which, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0 + 2*which, data & 0x04);*/
+ machine().bookkeeping().coin_counter_w(1 + 2*which, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0 + 2*which, data & 0x01);
break;
/* tile banking */
@@ -2655,7 +2655,7 @@ public:
DECLARE_DRIVER_INIT(f1lap);
DECLARE_DRIVER_INIT(orunners);
- UINT16* m_dual_pcb_comms;
+ std::unique_ptr<UINT16[]> m_dual_pcb_comms;
DECLARE_WRITE16_MEMBER(dual_pcb_comms_w);
DECLARE_READ16_MEMBER(dual_pcb_comms_r);
DECLARE_READ16_MEMBER(dual_pcb_masterslave);
@@ -4945,15 +4945,15 @@ void segas32_state::segas32_common_init(read16_delegate custom_r, write16_delega
void segas32_state::radm_sw1_output( int which, UINT16 data )
{
if (which == 0)
- output_set_value("Start_lamp", BIT(data, 2));
+ machine().output().set_value("Start_lamp", BIT(data, 2));
}
void segas32_state::radm_sw2_output( int which, UINT16 data )
{
if (which == 0)
{
- output_set_value("Wiper_lamp", BIT(data, 0));
- output_set_value("Lights_lamp", BIT(data, 1));
+ machine().output().set_value("Wiper_lamp", BIT(data, 0));
+ machine().output().set_value("Lights_lamp", BIT(data, 1));
}
}
@@ -4961,8 +4961,8 @@ void segas32_state::radr_sw2_output( int which, UINT16 data )
{
if (which == 0)
{
- output_set_value("Entry_lamp", BIT(data, 0));
- output_set_value("Winner_lamp", BIT(data, 1));
+ machine().output().set_value("Entry_lamp", BIT(data, 0));
+ machine().output().set_value("Winner_lamp", BIT(data, 1));
}
}
@@ -4970,8 +4970,8 @@ void segas32_state::alien3_sw1_output( int which, UINT16 data )
{
if (which == 0)
{
- output_set_value("Player1_Gun_Recoil", BIT(data, 2));
- output_set_value("Player2_Gun_Recoil", BIT(data, 3));
+ machine().output().set_value("Player1_Gun_Recoil", BIT(data, 2));
+ machine().output().set_value("Player2_Gun_Recoil", BIT(data, 3));
}
}
@@ -4979,8 +4979,8 @@ void segas32_state::arescue_sw1_output( int which, UINT16 data )
{
if (which == 0)
{
- output_set_value("Start_lamp", BIT(data, 2));
- output_set_value("Back_lamp", BIT(data, 4));
+ machine().output().set_value("Start_lamp", BIT(data, 2));
+ machine().output().set_value("Back_lamp", BIT(data, 4));
}
}
@@ -4988,8 +4988,8 @@ void segas32_state::f1lap_sw1_output( int which, UINT16 data )
{
if (which == 0)
{
- output_set_value("lamp0", BIT(data, 2));
- output_set_value("lamp1", BIT(data, 3));
+ machine().output().set_value("lamp0", BIT(data, 2));
+ machine().output().set_value("lamp1", BIT(data, 3));
}
}
@@ -4997,8 +4997,8 @@ void segas32_state::jpark_sw1_output( int which, UINT16 data )
{
if (which == 0)
{
- output_set_value("Left_lamp", BIT(data, 2));
- output_set_value("Right_lamp", BIT(data, 3));
+ machine().output().set_value("Left_lamp", BIT(data, 2));
+ machine().output().set_value("Right_lamp", BIT(data, 3));
}
}
@@ -5007,15 +5007,15 @@ void segas32_state::orunners_sw1_output( int which, UINT16 data )
/* note ma = monitor A and mb = Monitor B */
if (which == 0)
{
- output_set_value("MA_Check_Point_lamp", BIT(data, 1));
- output_set_value("MA_Race_Leader_lamp", BIT(data, 3));
- output_set_value("MA_Steering_Wheel_motor", BIT(data, 4));
+ machine().output().set_value("MA_Check_Point_lamp", BIT(data, 1));
+ machine().output().set_value("MA_Race_Leader_lamp", BIT(data, 3));
+ machine().output().set_value("MA_Steering_Wheel_motor", BIT(data, 4));
}
else
{
- output_set_value("MB_Check_Point_lamp", BIT(data, 1));
- output_set_value("MB_Race_Leader_lamp", BIT(data, 3));
- output_set_value("MB_Steering_Wheel_motor", BIT(data, 4));
+ machine().output().set_value("MB_Check_Point_lamp", BIT(data, 1));
+ machine().output().set_value("MB_Race_Leader_lamp", BIT(data, 3));
+ machine().output().set_value("MB_Steering_Wheel_motor", BIT(data, 4));
}
}
@@ -5026,13 +5026,13 @@ void segas32_state::orunners_sw2_output( int which, UINT16 data )
/* the bijokkoy driver might be used as an example for handling these outputs */
if (which == 0)
{
- output_set_value("MA_DJ_Music_lamp", BIT(data, 0));
- output_set_value("MA_<<_>>_lamp", BIT(data, 1));
+ machine().output().set_value("MA_DJ_Music_lamp", BIT(data, 0));
+ machine().output().set_value("MA_<<_>>_lamp", BIT(data, 1));
}
else
{
- output_set_value("MB_DJ_Music_lamp", BIT(data, 0));
- output_set_value("MB_<<_>>_lamp", BIT(data, 1));
+ machine().output().set_value("MB_DJ_Music_lamp", BIT(data, 0));
+ machine().output().set_value("MB_<<_>>_lamp", BIT(data, 1));
}
}
@@ -5040,68 +5040,68 @@ void segas32_state::harddunk_sw1_output( int which, UINT16 data )
{
if (which == 0)
{
- output_set_value("1P_Start_lamp", BIT(data, 2));
- output_set_value("2P_Start_lamp", BIT(data, 3));
+ machine().output().set_value("1P_Start_lamp", BIT(data, 2));
+ machine().output().set_value("2P_Start_lamp", BIT(data, 3));
}
else
{
- output_set_value("4P_Start_lamp", BIT(data, 2));
- output_set_value("5P_Start_lamp", BIT(data, 3));
+ machine().output().set_value("4P_Start_lamp", BIT(data, 2));
+ machine().output().set_value("5P_Start_lamp", BIT(data, 3));
}
}
void segas32_state::harddunk_sw2_output( int which, UINT16 data )
{
if (which == 0)
- output_set_value("Left_Winner_lamp", BIT(data, 0));
+ machine().output().set_value("Left_Winner_lamp", BIT(data, 0));
else
- output_set_value("Right_Winner_lamp", BIT(data, 0));
+ machine().output().set_value("Right_Winner_lamp", BIT(data, 0));
}
void segas32_state::harddunk_sw3_output( int which, UINT16 data )
{
- output_set_value("3P_Start_lamp", BIT(data, 4));
- output_set_value("6P_Start_lamp", BIT(data, 5));
+ machine().output().set_value("3P_Start_lamp", BIT(data, 4));
+ machine().output().set_value("6P_Start_lamp", BIT(data, 5));
}
void segas32_state::titlef_sw1_output( int which, UINT16 data )
{
if (which == 0)
{
- output_set_value("Blue_Button_1P_lamp", BIT(data, 2));
- output_set_value("Blue_Button_2P_lamp", BIT(data, 3));
+ machine().output().set_value("Blue_Button_1P_lamp", BIT(data, 2));
+ machine().output().set_value("Blue_Button_2P_lamp", BIT(data, 3));
}
else
{
- output_set_value("Red_Button_1P_lamp", BIT(data, 2));
- output_set_value("Red_Button_2P_lamp", BIT(data, 3));
+ machine().output().set_value("Red_Button_1P_lamp", BIT(data, 2));
+ machine().output().set_value("Red_Button_2P_lamp", BIT(data, 3));
}
}
void segas32_state::titlef_sw2_output( int which, UINT16 data )
{
if (which == 0)
- output_set_value("Blue_Corner_lamp", BIT(data, 0));
+ machine().output().set_value("Blue_Corner_lamp", BIT(data, 0));
else
- output_set_value("Red_Corner_lamp", BIT(data, 0));
+ machine().output().set_value("Red_Corner_lamp", BIT(data, 0));
}
void segas32_state::scross_sw1_output( int which, UINT16 data )
{
/* note ma = monitor A and mb = Monitor B */
if (which == 0)
- output_set_value("MA_Start_lamp", BIT(data, 2));
+ machine().output().set_value("MA_Start_lamp", BIT(data, 2));
else
- output_set_value("MB_Start_lamp", BIT(data, 2));
+ machine().output().set_value("MB_Start_lamp", BIT(data, 2));
}
void segas32_state::scross_sw2_output( int which, UINT16 data )
{
/* Note: I'm not an expert on digits, so I didn't know the right map to use, I just added it manually and it seems to work fine. */
if (which == 0)
- output_set_value("MA_Digit", data);
+ machine().output().set_value("MA_Digit", data);
else
- output_set_value("MB_Digit", data);
+ machine().output().set_value("MB_Digit", data);
}
/*************************************
@@ -5164,7 +5164,7 @@ DRIVER_INIT_MEMBER(segas32_new_state, arescue)
m_mainpcb->init_arescue(1);
m_slavepcb->init_arescue(0);
- m_dual_pcb_comms = auto_alloc_array(machine(), UINT16, 0x1000/2);
+ m_dual_pcb_comms = std::make_unique<UINT16[]>(0x1000/2);
m_mainpcb->m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(FUNC(segas32_new_state::dual_pcb_comms_r),this), write16_delegate(FUNC(segas32_new_state::dual_pcb_comms_w),this));
m_mainpcb->m_maincpu->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(FUNC(segas32_new_state::dual_pcb_masterslave),this));
@@ -5176,8 +5176,8 @@ DRIVER_INIT_MEMBER(segas32_new_state,f1en) {
m_mainpcb->init_f1en();
m_slavepcb->init_f1en();
- m_dual_pcb_comms = auto_alloc_array(machine(), UINT16, 0x1000/2);
- memset(m_dual_pcb_comms, 0xff, 0x1000 / 2);
+ m_dual_pcb_comms = std::make_unique<UINT16[]>(0x1000/2);
+ memset(m_dual_pcb_comms.get(), 0xff, 0x1000 / 2);
m_mainpcb->m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(FUNC(segas32_new_state::dual_pcb_comms_r),this), write16_delegate(FUNC(segas32_new_state::dual_pcb_comms_w),this));
m_mainpcb->m_maincpu->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(FUNC(segas32_new_state::dual_pcb_masterslave),this));
@@ -5225,7 +5225,7 @@ void segas32_state::init_brival(void)
segas32_common_init(read16_delegate(FUNC(segas32_state::extra_custom_io_r),this), write16_delegate());
/* install protection handlers */
- m_system32_protram = auto_alloc_array(machine(), UINT16, 0x1000/2);
+ m_system32_protram = std::make_unique<UINT16[]>(0x1000/2);
m_maincpu->space(AS_PROGRAM).install_read_handler(0x20ba00, 0x20ba07, read16_delegate(FUNC(segas32_state::brival_protection_r),this));
m_maincpu->space(AS_PROGRAM).install_write_handler(0xa00000, 0xa00fff, write16_delegate(FUNC(segas32_state::brival_protection_w),this));
}
diff --git a/src/mame/drivers/segaufo.cpp b/src/mame/drivers/segaufo.cpp
index 5a81f9ba547..1263d6daafb 100644
--- a/src/mame/drivers/segaufo.cpp
+++ b/src/mame/drivers/segaufo.cpp
@@ -162,7 +162,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::update_info)
// 3 C: 000 = closed, 100 = open
for (int p = 0; p < 2; p++)
for (int m = 0; m < 4; m++)
- output_set_indexed_value("counter", p*4 + m, (UINT8)(m_player[p].motor[m].position * 100));
+ output().set_indexed_value("counter", p*4 + m, (UINT8)(m_player[p].motor[m].position * 100));
#if 0
char msg1[0x100] = {0};
@@ -274,7 +274,7 @@ WRITE8_MEMBER(ufo_state::cp_lamps_w)
// d0-d3: p1/p2 button lamps
// other bits: ?
for (int i = 0; i < 4; i++)
- output_set_lamp_value(i, ~data >> i & 1);
+ output().set_lamp_value(i, ~data >> i & 1);
}
WRITE8_MEMBER(ufo_state::cp_digits_w)
@@ -284,7 +284,7 @@ WRITE8_MEMBER(ufo_state::cp_digits_w)
// d0-d3: cpanel digit
// other bits: ?
- output_set_digit_value(offset & 1, lut_7448[data & 0xf]);
+ output().set_digit_value(offset & 1, lut_7448[data & 0xf]);
}
WRITE8_MEMBER(ufo_state::crane_xyz_w)
@@ -313,13 +313,13 @@ WRITE8_MEMBER(ufo_state::ufo_lamps_w)
// 11 = red, red
// 01 = green, red
// 10 = red, green
- output_set_lamp_value(10, data & 3);
- output_set_lamp_value(11, data >> 2 & 3);
+ output().set_lamp_value(10, data & 3);
+ output().set_lamp_value(11, data >> 2 & 3);
// d4,d5: ?
// d6,d7: coincounters
- coin_counter_w(machine(), 0, data & 0x40); // 100 Y
- coin_counter_w(machine(), 1, data & 0x80); // 500 Y
+ machine().bookkeeping().coin_counter_w(0, data & 0x40); // 100 Y
+ machine().bookkeeping().coin_counter_w(1, data & 0x80); // 500 Y
}
@@ -381,11 +381,11 @@ WRITE8_MEMBER(ufo_state::ex_cp_lamps_w)
{
// d0,d1,d4,d5: p1/p2 button lamps
for (int i = 0; i < 4; i++)
- output_set_lamp_value(i, ~data >> ((i&1) + (i&2) * 2) & 1);
+ output().set_lamp_value(i, ~data >> ((i&1) + (i&2) * 2) & 1);
// d2,d3,d6,d7: p1/p2 coincounters
for (int i = 0; i < 4; i++)
- coin_counter_w(machine(), i, data >> (2 + (i&1) + (i&2) * 2) & 1);
+ machine().bookkeeping().coin_counter_w(i, data >> (2 + (i&1) + (i&2) * 2) & 1);
}
WRITE8_MEMBER(ufo_state::ex_crane_xyz_w)
@@ -412,7 +412,7 @@ WRITE8_MEMBER(ufo_state::ex_ufo800_lamps_w)
// d0-d4: 5 red leds on ufo
// other bits: ?
for (int i = 0; i < 5; i++)
- output_set_lamp_value(10 + i, data >> i & 1);
+ output().set_lamp_value(10 + i, data >> i & 1);
}
/* 315-5338A */
@@ -423,7 +423,7 @@ WRITE8_MEMBER(ufo_state::ex_ufo21_lamps_w)
// d1-d6 are the 6 red leds on each ufo
// d7: ?
for (int i = 1; i < 7; i++)
- output_set_lamp_value(10 + offset * 10 + i, data >> i & 1);
+ output().set_lamp_value(10 + offset * 10 + i, data >> i & 1);
}
WRITE8_MEMBER(ufo_state::ex_upd_start_w)
diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp
index 5758c0957c2..8366d3b10b2 100644
--- a/src/mame/drivers/segaxbd.cpp
+++ b/src/mame/drivers/segaxbd.cpp
@@ -854,7 +854,7 @@ void segaxbd_state::generic_iochip0_lamps_w(UINT8 data)
// d4: coin counter
// d7: mute audio (always handled above)
// other bits: lamps
- coin_counter_w(machine(), 0, (data >> 4) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 4) & 0x01);
//
// aburner2:
@@ -864,10 +864,10 @@ void segaxbd_state::generic_iochip0_lamps_w(UINT8 data)
// d6: danger lamp
// in clone aburner, lamps work only in testmode?
- output_set_lamp_value(0, (data >> 5) & 0x01);
- output_set_lamp_value(1, (data >> 6) & 0x01);
- output_set_lamp_value(2, (data >> 1) & 0x01);
- output_set_lamp_value(3, (data >> 2) & 0x01);
+ machine().output().set_lamp_value(0, (data >> 5) & 0x01);
+ machine().output().set_lamp_value(1, (data >> 6) & 0x01);
+ machine().output().set_lamp_value(2, (data >> 1) & 0x01);
+ machine().output().set_lamp_value(3, (data >> 2) & 0x01);
}
diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp
index 728659816a4..d6a6604fee1 100644
--- a/src/mame/drivers/segaybd.cpp
+++ b/src/mame/drivers/segaybd.cpp
@@ -416,7 +416,7 @@ void segaybd_state::gforce2_output_cb1(UINT16 data)
void segaybd_state::gforce2_output_cb2(UINT16 data)
{
- output_set_value("start_lamp", BIT(data, 2));
+ output().set_value("start_lamp", BIT(data, 2));
}
@@ -429,28 +429,28 @@ void segaybd_state::gloc_output_cb1(UINT16 data)
{
if (data < 32)
{
- output_set_value("right_motor_position", data);
+ output().set_value("right_motor_position", data);
// normalization here prevents strange data from being transferred
// we do this because for some odd reason
// gloc starts with one piston all up and one all down.... at least data-wise it does
if (data > 1 && data < 29)
- output_set_value("right_motor_position_nor", data);
+ output().set_value("right_motor_position_nor", data);
}
if (data < 40 && data > 31)
- output_set_value("right_motor_speed", data - 32);
+ output().set_value("right_motor_speed", data - 32);
if (data < 96 && data > 63)
{
- output_set_value("left_motor_position", data);
+ output().set_value("left_motor_position", data);
// normalized version... you know... for the kids
if ((data - 64) > 1 && (data - 64) < 29)
- output_set_value("left_motor_position_nor", data - 64);
+ output().set_value("left_motor_position_nor", data - 64);
}
if (data < 104 && data > 95)
- output_set_value("left_motor_speed", data - 96);
+ output().set_value("left_motor_speed", data - 96);
}
@@ -461,9 +461,9 @@ void segaybd_state::gloc_output_cb1(UINT16 data)
void segaybd_state::gloc_output_cb2(UINT16 data)
{
- output_set_value("start_lamp", BIT(data, 2));
- output_set_value("danger_lamp", BIT(data, 5));
- output_set_value("crash_lamp", BIT(data, 6));
+ output().set_value("start_lamp", BIT(data, 2));
+ output().set_value("danger_lamp", BIT(data, 5));
+ output().set_value("crash_lamp", BIT(data, 6));
}
@@ -475,9 +475,9 @@ void segaybd_state::gloc_output_cb2(UINT16 data)
void segaybd_state::r360_output_cb2(UINT16 data)
{
// r360 cabinet
- output_set_value("start_lamp", BIT(data, 2));
+ output().set_value("start_lamp", BIT(data, 2));
// even though the same output is used, I've split them to avoid confusion.
- output_set_value("emergency_stop_lamp", BIT(data, 2));
+ output().set_value("emergency_stop_lamp", BIT(data, 2));
}
@@ -501,44 +501,44 @@ void segaybd_state::pdrift_output_cb1(UINT16 data)
// moving left
{
// in this rare instance, the bottom bits are used for positional data
- output_set_value("bank_data_raw", data);
- output_set_value("vibration_motor", 0);
+ output().set_value("bank_data_raw", data);
+ output().set_value("vibration_motor", 0);
switch (m_pdrift_bank)
// we want to go left one step at a time
{
case 1:
// all left
- output_set_value("bank_motor_position", 1);
+ output().set_value("bank_motor_position", 1);
m_pdrift_bank = 1;
break;
case 2:
- output_set_value("bank_motor_position", 1);
+ output().set_value("bank_motor_position", 1);
m_pdrift_bank = 1;
break;
case 3:
- output_set_value("bank_motor_position", 2);
+ output().set_value("bank_motor_position", 2);
m_pdrift_bank = 2;
break;
case 4:
// centered
- output_set_value("bank_motor_position", 3);
+ output().set_value("bank_motor_position", 3);
m_pdrift_bank = 3;
break;
case 5:
- output_set_value("bank_motor_position", 4);
+ output().set_value("bank_motor_position", 4);
m_pdrift_bank = 4;
break;
case 6:
- output_set_value("bank_motor_position", 5);
+ output().set_value("bank_motor_position", 5);
m_pdrift_bank = 5;
break;
case 7:
// all right
- output_set_value("bank_motor_position", 6);
+ output().set_value("bank_motor_position", 6);
m_pdrift_bank = 6;
break;
default:
- output_set_value("bank_motor_position", 4);
+ output().set_value("bank_motor_position", 4);
m_pdrift_bank = 4;
break;
}
@@ -548,44 +548,44 @@ void segaybd_state::pdrift_output_cb1(UINT16 data)
// moving right
{
// in this rare instance, the bottom bits are used for positional data
- output_set_value("bank_data_raw", data);
- output_set_value("vibration_motor", 0);
+ output().set_value("bank_data_raw", data);
+ output().set_value("vibration_motor", 0);
switch (m_pdrift_bank)
// we want to go right one step at a time
{
case 1:
// all left
- output_set_value("bank_motor_position", 2);
+ output().set_value("bank_motor_position", 2);
m_pdrift_bank = 2;
break;
case 2:
- output_set_value("bank_motor_position", 3);
+ output().set_value("bank_motor_position", 3);
m_pdrift_bank = 3;
break;
case 3:
- output_set_value("bank_motor_position", 4);
+ output().set_value("bank_motor_position", 4);
m_pdrift_bank = 4;
break;
case 4:
// centered
- output_set_value("bank_motor_position", 5);
+ output().set_value("bank_motor_position", 5);
m_pdrift_bank = 5;
break;
case 5:
- output_set_value("bank_motor_position", 6);
+ output().set_value("bank_motor_position", 6);
m_pdrift_bank = 6;
break;
case 6:
- output_set_value("bank_motor_position", 7);
+ output().set_value("bank_motor_position", 7);
m_pdrift_bank = 7;
break;
case 7:
// all right
- output_set_value("bank_motor_position", 7);
+ output().set_value("bank_motor_position", 7);
m_pdrift_bank = 7;
break;
default:
- output_set_value("bank_motor_position", 4);
+ output().set_value("bank_motor_position", 4);
m_pdrift_bank = 4;
break;
@@ -595,11 +595,11 @@ void segaybd_state::pdrift_output_cb1(UINT16 data)
else
{
// the vibration value uses the first few bits to give a number between 0 and 7
- output_set_value("vibration_motor", data & 7);
+ output().set_value("vibration_motor", data & 7);
// normalize the data and subtract the vibration value from it*/
m_pdrift_bank = data - (data & 7);
- output_set_value("bank_data_raw", m_pdrift_bank & 0xFF);
+ output().set_value("bank_data_raw", m_pdrift_bank & 0xFF);
// position values from left to right
// 56 48 40 120 72 80 88
@@ -611,27 +611,27 @@ void segaybd_state::pdrift_output_cb1(UINT16 data)
{
case 56:
// all left
- output_set_value("bank_motor_position", 1);
+ output().set_value("bank_motor_position", 1);
break;
case 48:
- output_set_value("bank_motor_position", 2);
+ output().set_value("bank_motor_position", 2);
break;
case 40:
- output_set_value("bank_motor_position", 3);
+ output().set_value("bank_motor_position", 3);
break;
case 120:
// centered
- output_set_value("bank_motor_position", 4);
+ output().set_value("bank_motor_position", 4);
break;
case 72:
- output_set_value("bank_motor_position", 5);
+ output().set_value("bank_motor_position", 5);
break;
case 80:
- output_set_value("bank_motor_position", 6);
+ output().set_value("bank_motor_position", 6);
break;
case 88:
// all right
- output_set_value("bank_motor_position", 7);
+ output().set_value("bank_motor_position", 7);
break;
// these are the only valid values but 24 pops up sometimes when we crash
}
@@ -647,8 +647,8 @@ void segaybd_state::pdrift_output_cb1(UINT16 data)
void segaybd_state::pdrift_output_cb2(UINT16 data)
{
- output_set_value("start_lamp", BIT(data, 2));
- output_set_value("upright_wheel_motor", BIT(data, 1));
+ output().set_value("start_lamp", BIT(data, 2));
+ output().set_value("upright_wheel_motor", BIT(data, 1));
}
@@ -659,11 +659,11 @@ void segaybd_state::pdrift_output_cb2(UINT16 data)
void segaybd_state::rchase_output_cb2(UINT16 data)
{
- output_set_value("left_start_lamp", BIT(data, 2));
- output_set_value("right_start_lamp", BIT(data, 1));
+ output().set_value("left_start_lamp", BIT(data, 2));
+ output().set_value("right_start_lamp", BIT(data, 1));
- output_set_value("P1_Gun_Recoil", BIT(data, 6));
- output_set_value("P2_Gun_Recoil", BIT(data, 5));
+ output().set_value("P1_Gun_Recoil", BIT(data, 6));
+ output().set_value("P2_Gun_Recoil", BIT(data, 5));
}
@@ -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) )
@@ -2732,8 +2732,8 @@ DRIVER_INIT_MEMBER(segaybd_state,gloc)
m_output_cb1 = output_delegate(FUNC(segaybd_state::gloc_output_cb1), this);
m_output_cb2 = output_delegate(FUNC(segaybd_state::gloc_output_cb2), this);
- output_set_value("left_motor_position_nor", 16);
- output_set_value("right_motor_position_nor", 16);
+ output().set_value("left_motor_position_nor", 16);
+ output().set_value("right_motor_position_nor", 16);
}
DRIVER_INIT_MEMBER(segaybd_state,r360)
diff --git a/src/mame/drivers/seibuspi.cpp b/src/mame/drivers/seibuspi.cpp
index 27011a13ef4..161d87ae25f 100644
--- a/src/mame/drivers/seibuspi.cpp
+++ b/src/mame/drivers/seibuspi.cpp
@@ -1080,8 +1080,8 @@ WRITE8_MEMBER(seibuspi_state::z80_bank_w)
WRITE8_MEMBER(seibuspi_state::spi_coin_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
// coin latch used by single boards
if (data)
diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp
index 62a2692f574..2666bf7d59c 100644
--- a/src/mame/drivers/selz80.cpp
+++ b/src/mame/drivers/selz80.cpp
@@ -137,7 +137,7 @@ WRITE8_MEMBER( selz80_state::scanlines_w )
WRITE8_MEMBER( selz80_state::digit_w )
{
- output_set_digit_value(m_digit, BITSWAP8(data, 3, 2, 1, 0, 7, 6, 5, 4));
+ output().set_digit_value(m_digit, BITSWAP8(data, 3, 2, 1, 0, 7, 6, 5, 4));
}
READ8_MEMBER( selz80_state::kbd_r )
diff --git a/src/mame/drivers/sengokmj.cpp b/src/mame/drivers/sengokmj.cpp
index e334531a305..3a95d926d9e 100644
--- a/src/mame/drivers/sengokmj.cpp
+++ b/src/mame/drivers/sengokmj.cpp
@@ -371,9 +371,9 @@ WRITE16_MEMBER(sengokmj_state::out_w)
/* ---- ---- ---- -x-- Coin counter (done AFTER you press start)*/
/* ---- ---- ---- --x- Cash enable (lockout)*/
/* ---- ---- ---- ---x Hopper 10 */
- coin_lockout_w(machine(), 0,~data & 2);
- coin_lockout_w(machine(), 1,~data & 2);
- coin_counter_w(machine(), 0,data & 4);
+ machine().bookkeeping().coin_lockout_w(0,~data & 2);
+ machine().bookkeeping().coin_lockout_w(1,~data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 4);
m_hopper_io = ((data & 1)<<6);
// popmessage("%02x",m_hopper_io);
}
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index e9338b58597..962c048cc94 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -1947,8 +1947,8 @@ WRITE16_MEMBER(seta_state::zombraid_gun_w)
default:
/* Gun Recoils */
/* Note: In debug menu recoil solenoids strobe when held down. Is this correct?? */
- output_set_value("Player1_Gun_Recoil", (data & 0x10)>>4 );
- output_set_value("Player2_Gun_Recoil", (data & 0x8)>>3 );
+ output().set_value("Player1_Gun_Recoil", (data & 0x10)>>4 );
+ output().set_value("Player2_Gun_Recoil", (data & 0x8)>>3 );
m_gun_input_bit = m_gun_bit_count - 4;
m_gun_input_bit = 8 - m_gun_input_bit; // Reverse order
@@ -2497,7 +2497,7 @@ WRITE16_MEMBER(seta_state::magspeed_lights_w)
COMBINE_DATA( &m_magspeed_lights[offset] );
for (int i = 0; i < 16; i++)
- set_led_status(machine(), offset * 16 + i, BIT(m_magspeed_lights[offset], i));
+ output().set_led_value(offset * 16 + i, BIT(m_magspeed_lights[offset], i));
// popmessage("%04X %04X %04X", m_magspeed_lights[0], m_magspeed_lights[1], m_magspeed_lights[2]);
}
diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp
index e5d4499c8aa..15ddc8f6622 100644
--- a/src/mame/drivers/seta2.cpp
+++ b/src/mame/drivers/seta2.cpp
@@ -151,8 +151,8 @@ WRITE16_MEMBER(seta2_state::grdians_lockout_w)
if (ACCESSING_BITS_0_7)
{
// initially 0, then either $25 (coin 1) or $2a (coin 2)
- coin_counter_w(machine(), 0,data & 0x01); // or 0x04
- coin_counter_w(machine(), 1,data & 0x02); // or 0x08
+ machine().bookkeeping().coin_counter_w(0,data & 0x01); // or 0x04
+ machine().bookkeeping().coin_counter_w(1,data & 0x02); // or 0x08
}
// popmessage("%04X", data & 0xffff);
}
@@ -344,8 +344,8 @@ WRITE16_MEMBER(seta2_state::pzlbowl_coin_counter_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0,data & 0x10);
- coin_counter_w(machine(), 1,data & 0x20);
+ machine().bookkeeping().coin_counter_w(0,data & 0x10);
+ machine().bookkeeping().coin_counter_w(1,data & 0x20);
}
}
@@ -402,13 +402,13 @@ WRITE16_MEMBER(seta2_state::reelquak_leds_w)
{
if (ACCESSING_BITS_0_7)
{
- set_led_status( machine(), 0, data & 0x0001 ); // start
- set_led_status( machine(), 1, data & 0x0002 ); // small
- set_led_status( machine(), 2, data & 0x0004 ); // bet
- set_led_status( machine(), 3, data & 0x0008 ); // big
- set_led_status( machine(), 4, data & 0x0010 ); // double up
- set_led_status( machine(), 5, data & 0x0020 ); // collect
- set_led_status( machine(), 6, data & 0x0040 ); // bet cancel
+ output().set_led_value(0, data & 0x0001 ); // start
+ output().set_led_value(1, data & 0x0002 ); // small
+ output().set_led_value(2, data & 0x0004 ); // bet
+ output().set_led_value(3, data & 0x0008 ); // big
+ output().set_led_value(4, data & 0x0010 ); // double up
+ output().set_led_value(5, data & 0x0020 ); // collect
+ output().set_led_value(6, data & 0x0040 ); // bet cancel
}
if (ACCESSING_BITS_8_15)
{
@@ -422,10 +422,10 @@ WRITE16_MEMBER(seta2_state::reelquak_coin_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x01); // coin in
- coin_counter_w(machine(), 1, data & 0x02); // coin in
- coin_counter_w(machine(), 2, data & 0x04); // pay out
- coin_counter_w(machine(), 3, data & 0x08); // key in
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); // coin in
+ machine().bookkeeping().coin_counter_w(1, data & 0x02); // coin in
+ machine().bookkeeping().coin_counter_w(2, data & 0x04); // pay out
+ machine().bookkeeping().coin_counter_w(3, data & 0x08); // key in
// data & 0x10); // Sound IRQ Ack.? 1->0
// data & 0x20); // Vblank IRQ.? 1
}
@@ -474,11 +474,11 @@ WRITE16_MEMBER(seta2_state::samshoot_coin_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x10);
- coin_counter_w(machine(), 1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
// Are these connected? They are set in I/O test
- coin_lockout_w(machine(), 0,~data & 0x40);
- coin_lockout_w(machine(), 1,~data & 0x80);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x40);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x80);
}
// popmessage("%04x",data);
}
@@ -788,14 +788,14 @@ WRITE16_MEMBER(seta2_state::funcube_leds_w)
{
*m_funcube_leds = data;
- set_led_status( machine(), 0, (~data) & 0x01 ); // win lamp (red)
- set_led_status( machine(), 1, (~data) & 0x02 ); // win lamp (green)
+ output().set_led_value(0, (~data) & 0x01 ); // win lamp (red)
+ output().set_led_value(1, (~data) & 0x02 ); // win lamp (green)
// Set in a moving pattern: 0111 -> 1011 -> 1101 -> 1110
- set_led_status( machine(), 2, (~data) & 0x10 );
- set_led_status( machine(), 3, (~data) & 0x20 );
- set_led_status( machine(), 4, (~data) & 0x40 );
- set_led_status( machine(), 5, (~data) & 0x80 );
+ output().set_led_value(2, (~data) & 0x10 );
+ output().set_led_value(3, (~data) & 0x20 );
+ output().set_led_value(4, (~data) & 0x40 );
+ output().set_led_value(5, (~data) & 0x80 );
funcube_debug_outputs();
}
@@ -818,7 +818,7 @@ WRITE16_MEMBER(seta2_state::funcube_outputs_w)
// Bit 1: high on pay out
// Bit 3: low after coining up, blinks on pay out
- set_led_status( machine(), 6, (~data) & 0x08 );
+ output().set_led_value(6, (~data) & 0x08 );
funcube_debug_outputs();
}
diff --git a/src/mame/drivers/sf.cpp b/src/mame/drivers/sf.cpp
index f1e63e78cc9..094ffe5305e 100644
--- a/src/mame/drivers/sf.cpp
+++ b/src/mame/drivers/sf.cpp
@@ -127,11 +127,11 @@ WRITE16_MEMBER(sf_state::protection_w)
WRITE8_MEMBER(sf_state::coin_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_lockout_w(machine(), 0, ~data & 0x10);
- coin_lockout_w(machine(), 1, ~data & 0x20);
- coin_lockout_w(machine(), 2, ~data & 0x40); /* is there a third coin input? */
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x10);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x20);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x40); /* is there a third coin input? */
}
WRITE8_MEMBER(sf_state::soundcmd_w)
diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp
index 7270532330d..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;
@@ -308,18 +310,18 @@ public:
required_shared_ptr<UINT8> m_3000_regs;
required_shared_ptr<UINT8> m_3800_regs;
- bitmap_ind16 *m_temp_reel_bitmap;
+ std::unique_ptr<bitmap_ind16> m_temp_reel_bitmap;
tilemap_t *m_tilemap;
tilemap_t *m_reel_tilemap;
tilemap_t *m_reel2_tilemap;
tilemap_t *m_reel3_tilemap;
tilemap_t *m_reel4_tilemap;
- UINT8 *m_tilemap_ram;
- UINT8 *m_reel_ram;
- UINT8 *m_reel2_ram;
- UINT8 *m_reel3_ram;
- UINT8 *m_reel4_ram;
- UINT8* m_videoram;
+ std::unique_ptr<UINT8[]> m_tilemap_ram;
+ std::unique_ptr<UINT8[]> m_reel_ram;
+ std::unique_ptr<UINT8[]> m_reel2_ram;
+ std::unique_ptr<UINT8[]> m_reel3_ram;
+ std::unique_ptr<UINT8[]> m_reel4_ram;
+ std::unique_ptr<UINT8[]> m_videoram;
DECLARE_WRITE8_MEMBER(sfbonus_videoram_w);
DECLARE_WRITE8_MEMBER(sfbonus_bank_w);
@@ -907,7 +909,7 @@ WRITE8_MEMBER(sfbonus_state::sfbonus_videoram_w)
void sfbonus_state::video_start()
{
- m_temp_reel_bitmap = auto_bitmap_ind16_alloc(machine(),1024,512);
+ m_temp_reel_bitmap = std::make_unique<bitmap_ind16>(1024,512);
m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sfbonus_state::get_sfbonus_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 128, 64);
m_reel_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sfbonus_state::get_sfbonus_reel_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 16);
@@ -1180,22 +1182,22 @@ UINT32 sfbonus_state::screen_update_sfbonus(screen_device &screen, bitmap_ind16
|| (ipt == INPUT_PORTS_NAME(amcoe2_poker)))
{
// based on pirpok2
- output_set_lamp_value(0, (m_1800_regs[6] & 0x1) >> 0);
- output_set_lamp_value(1, (m_1800_regs[6] & 0x4) >> 2);
- output_set_lamp_value(2, (m_1800_regs[5] & 0x4) >> 2);
- output_set_lamp_value(3, (m_1800_regs[5] & 0x1) >> 0);
- output_set_lamp_value(4, (m_1800_regs[4] & 0x4) >> 2);
- output_set_lamp_value(5, (m_1800_regs[4] & 0x1) >> 0);
+ output().set_lamp_value(0, (m_1800_regs[6] & 0x1) >> 0);
+ output().set_lamp_value(1, (m_1800_regs[6] & 0x4) >> 2);
+ output().set_lamp_value(2, (m_1800_regs[5] & 0x4) >> 2);
+ output().set_lamp_value(3, (m_1800_regs[5] & 0x1) >> 0);
+ output().set_lamp_value(4, (m_1800_regs[4] & 0x4) >> 2);
+ output().set_lamp_value(5, (m_1800_regs[4] & 0x1) >> 0);
}
else if ((ipt == INPUT_PORTS_NAME(amcoe1_reels3)) || (ipt == INPUT_PORTS_NAME(amcoe1_reels4))
|| (ipt == INPUT_PORTS_NAME(amcoe1_poker)))
{
- output_set_lamp_value(0, (m_1800_regs[0] & 0x2) >> 1);
- output_set_lamp_value(1, (m_1800_regs[4] & 0x2) >> 1);
- output_set_lamp_value(2, (m_1800_regs[3] & 0x2) >> 1);
- output_set_lamp_value(3, (m_1800_regs[6] & 0x4) >> 2);
- output_set_lamp_value(4, (m_1800_regs[4] & 0x4) >> 2);
- output_set_lamp_value(5, (m_1800_regs[3] & 0x4) >> 2);
+ output().set_lamp_value(0, (m_1800_regs[0] & 0x2) >> 1);
+ output().set_lamp_value(1, (m_1800_regs[4] & 0x2) >> 1);
+ output().set_lamp_value(2, (m_1800_regs[3] & 0x2) >> 1);
+ output().set_lamp_value(3, (m_1800_regs[6] & 0x4) >> 2);
+ output().set_lamp_value(4, (m_1800_regs[4] & 0x4) >> 2);
+ output().set_lamp_value(5, (m_1800_regs[3] & 0x4) >> 2);
}
return 0;
@@ -5843,76 +5845,33 @@ 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 = auto_alloc_array(machine(), UINT8, 0x4000);
- memset(m_tilemap_ram, 0xff, 0x4000);
- save_pointer(NAME(m_tilemap_ram), 0x4000);
+ m_tilemap_ram = std::make_unique<UINT8[]>(0x4000);
+ memset(m_tilemap_ram.get(), 0xff, 0x4000);
+ save_pointer(NAME(m_tilemap_ram.get()), 0x4000);
- m_reel_ram = auto_alloc_array(machine(), UINT8, 0x0800);
- memset(m_reel_ram, 0xff ,0x0800);
- save_pointer(NAME(m_reel_ram), 0x0800);
+ m_reel_ram = std::make_unique<UINT8[]>(0x0800);
+ memset(m_reel_ram.get(), 0xff ,0x0800);
+ save_pointer(NAME(m_reel_ram.get()), 0x0800);
- m_reel2_ram = auto_alloc_array(machine(), UINT8, 0x0800);
- memset(m_reel2_ram, 0xff, 0x0800);
- save_pointer(NAME(m_reel2_ram), 0x0800);
+ m_reel2_ram = std::make_unique<UINT8[]>(0x0800);
+ memset(m_reel2_ram.get(), 0xff, 0x0800);
+ save_pointer(NAME(m_reel2_ram.get()), 0x0800);
- m_reel3_ram = auto_alloc_array(machine(), UINT8, 0x0800);
- memset(m_reel3_ram, 0xff, 0x0800);
- save_pointer(NAME(m_reel3_ram), 0x0800);
+ m_reel3_ram = std::make_unique<UINT8[]>(0x0800);
+ memset(m_reel3_ram.get(), 0xff, 0x0800);
+ save_pointer(NAME(m_reel3_ram.get()), 0x0800);
- m_reel4_ram = auto_alloc_array(machine(), UINT8, 0x0800);
- memset(m_reel4_ram, 0xff, 0x0800);
- save_pointer(NAME(m_reel4_ram), 0x0800);
+ m_reel4_ram = std::make_unique<UINT8[]>(0x0800);
+ memset(m_reel4_ram.get(), 0xff, 0x0800);
+ save_pointer(NAME(m_reel4_ram.get()), 0x0800);
- m_videoram = auto_alloc_array(machine(), UINT8, 0x10000);
+ m_videoram = std::make_unique<UINT8[]>(0x10000);
- memset(m_videoram, 0xff, 0x10000);
+ memset(m_videoram.get(), 0xff, 0x10000);
- save_pointer(NAME(m_videoram), 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);
- }
- }
- }
- }
+ save_pointer(NAME(m_videoram.get()), 0x10000);
}
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 f1130e61463..8866fcece35 100644
--- a/src/mame/drivers/sfkick.cpp
+++ b/src/mame/drivers/sfkick.cpp
@@ -44,13 +44,112 @@ Board # CBK1029
CN1: 40 PIN Connector (Epoxy Block )
CN2: 8 PIN Connector (Epoxy Block)
-1UP: 4 PIN Connector (Analog Controls ?)
-2UP: 4 PIN Connector (Analog Controls ?)
+1UP: 4 PIN Connector (Analog Controls)
+2UP: 4 PIN Connector (Analog Controls)
Z8400A (x2)
UM82C55A-PC
YM2203C
+Documentation as per manual:
+
+ Main Jamma Connector
+ Solder Side | Parts Side
+------------------------------------------------------------------
+ GND | A | 1 | GND
+ GND | B | 2 | GND
+ +5 | C | 3 | +5
+ +5 | D | 4 | +5
+ | E | 5 |
+ +12 | F | 6 | +12
+----- KEY -----| H | 7 |----- KEY -----
+ | J | 8 |
+ | K | 9 |
+ Speaker (-) | L | 10| Speaker (+)
+ | M | 11|
+ Video Green | N | 12| Video Red
+ Video Sync | P | 13| Video Blue
+ Player 1 Left | R | 14| Player 2 Right
+Player 1 Right | S | 15| Player 2 Left
+ Coin Switch 2 | T | 16| Coin Switch 1
+Player 2 Start | U | 17| Player 1 Start
+ | V | 18|
+ | W | 19|
+ | X | 20|
+ | Y | 21|
+Player 2 Shoot | Z | 22| Player 1 Shoot
+ | a | 23|
+ | b | 24|
+ | c | 25|
+ | d | 26|
+ GND | e | 27| GND
+ GND | f | 28| GND
+
+ ____
+ / \
+ | Dial |
+ \____/
+ /| |\
+ / | | \
+ Blue Red Black Yellow
+ / | | \
+Left +5v GND Right
+
+
+DIPSW-1
+------------------------------------------------------------------
+ DipSwitch Title | Function | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+------------------------------------------------------------------
+ Cabinet Style | Upright |off| |
+ | Cocktail |on | |
+------------------------------------------------------------------
+ Stage Select | Off | |off| |
+ | On | |on | |
+------------------------------------------------------------------
+ Freeze Screen | Off | |off| |
+ | On | |on | |
+------------------------------------------------------------------
+ Test / Game Mode | Game | |off| |
+ | Test | |on | |
+------------------------------------------------------------------
+ Allow Continue | Off | |off| |
+ | On | |on | |
+------------------------------------------------------------------
+ | 1cn/1cr | |off|off|off|
+ | 1cn/2cr | |on |off|off|
+ | 1cn/3cr | |off|on |off|
+ Coinage | 1cn/5cr | |on |on |off|
+ | 2cn/1cr | |off|off|on |
+ | 2cn/3cr | |on |off|on |
+ | 3cn/1cr | |off|on |on |
+ | 3cn/2cr | |on |on |on |
+------------------------------------------------------------------
+
+DIPSW-2
+------------------------------------------------------------------
+ DipSwitch Title | Function | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+------------------------------------------------------------------
+ No Comment | N/A |off| |
+------------------------------------------------------------------
+ Demo Sounds | Yes | |off| |
+ | No | |on | |
+------------------------------------------------------------------
+ | 1 | |off|off| |
+ Players Count | 2 | |on |off| |
+ | 3 | |off|on | |
+ | 5 | |on |on | |
+-----------------------------------------------------------------
+ | None | |off|off| |
+ Bonus |Every 20K | |on |off| |
+ |20K & 50K | |off|on | |
+ |Every 50K | |on |on | |
+------------------------------------------------------------------
+ | Easy | |off|off|
+ Difficulty | Normal | |on |off|
+ | Hard | |off|on |
+ | V.Hard | |on |on |
+------------------------------------------------------------------
+
*/
#include "emu.h"
@@ -87,7 +186,7 @@ public:
m_dsw2(*this, "DSW2")
{ }
- UINT8 *m_main_mem;
+ std::unique_ptr<UINT8[]> m_main_mem;
int m_bank_cfg;
int m_bank[8];
int m_input_mux;
@@ -137,8 +236,8 @@ READ8_MEMBER(sfkick_state::ppi_port_b_r)
case 0: return m_in0->read();
case 1: return m_in1->read();
case 2: return BITSWAP8(m_dial->read(),4,5,6,7,3,2,1,0);
- case 3: return m_dsw2->read();
- case 4: return m_dsw1->read();
+ case 3: return m_dsw1->read();
+ case 4: return m_dsw2->read();
}
return 0xff;
}
@@ -261,8 +360,8 @@ void sfkick_state::sfkick_remap_banks()
case 3: /* RAM */
{
- m_bank7->set_base(m_main_mem);
- m_bank8->set_base(m_main_mem+0x2000);
+ m_bank7->set_base(m_main_mem.get());
+ m_bank8->set_base(m_main_mem.get()+0x2000);
}
break;
}
@@ -411,41 +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( 0x82, 0x02, DEF_STR( Unknown ) ) /* unknown, code @ $98a8 */
- PORT_DIPSETTING( 0x00, "3" )
- PORT_DIPSETTING( 0x02, "2" )
- PORT_DIPSETTING( 0x80, "1" )
- PORT_DIPSETTING( 0x82, "0" )
- PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Difficulty ) ) /* not sure, code @ $9877 */
- PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Medium ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) /* unused ? */
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x41, 0x01, DEF_STR( Lives ) )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPSETTING( 0x01, "3" )
- PORT_DIPSETTING( 0x40, "2" )
- PORT_DIPSETTING( 0x41, "1" )
-
- PORT_START("DSW2") /* bitswapped at read! 76543210 -> 45673210 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) /* unused ? */
- PORT_DIPNAME( 0x02, 0x02, "Test Mode" )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )
+ 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( 0x20, 0x20, "Freeze" )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) )
+ 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_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ 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_DIPSETTING( 0x40, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x8c, 0x8c, DEF_STR( Coinage ) )
+ 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 ) )
@@ -454,6 +534,27 @@ static INPUT_PORTS_START( sfkick )
PORT_DIPSETTING( 0x88, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_5C ) )
+
+ 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_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ 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_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_DIPSETTING( 0x0c, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
WRITE_LINE_MEMBER(sfkick_state::sfkick_vdp_interrupt)
@@ -513,7 +614,7 @@ MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(sfkick_state,sfkick)
{
- m_main_mem=auto_alloc_array(machine(), UINT8, 0x4000);
+ m_main_mem=std::make_unique<UINT8[]>(0x4000);
}
diff --git a/src/mame/drivers/sg1000a.cpp b/src/mame/drivers/sg1000a.cpp
index 2da7f13e8f1..509146b18b9 100644
--- a/src/mame/drivers/sg1000a.cpp
+++ b/src/mame/drivers/sg1000a.cpp
@@ -255,7 +255,7 @@ WRITE_LINE_MEMBER(sg1000a_state::vdp_interrupt)
WRITE8_MEMBER(sg1000a_state::sg1000a_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
/*************************************
diff --git a/src/mame/drivers/shangha3.cpp b/src/mame/drivers/shangha3.cpp
index 5b610aa7cce..f6e434c4cd8 100644
--- a/src/mame/drivers/shangha3.cpp
+++ b/src/mame/drivers/shangha3.cpp
@@ -73,10 +73,10 @@ WRITE16_MEMBER(shangha3_state::shangha3_coinctrl_w)
{
if (ACCESSING_BITS_8_15)
{
- coin_lockout_w(machine(), 0,~data & 0x0400);
- coin_lockout_w(machine(), 1,~data & 0x0400);
- coin_counter_w(machine(), 0,data & 0x0100);
- coin_counter_w(machine(), 1,data & 0x0200);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x0400);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x0400);
+ machine().bookkeeping().coin_counter_w(0,data & 0x0100);
+ machine().bookkeeping().coin_counter_w(1,data & 0x0200);
}
}
@@ -87,10 +87,10 @@ WRITE16_MEMBER(shangha3_state::heberpop_coinctrl_w)
/* the sound ROM bank is selected by the main CPU! */
m_oki->set_bank_base((data & 0x08) ? 0x40000 : 0x00000);
- coin_lockout_w(machine(), 0,~data & 0x04);
- coin_lockout_w(machine(), 1,~data & 0x04);
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x04);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
}
}
@@ -101,10 +101,10 @@ WRITE16_MEMBER(shangha3_state::blocken_coinctrl_w)
/* the sound ROM bank is selected by the main CPU! */
m_oki->set_bank_base(((data >> 4) & 3) * 0x40000);
- coin_lockout_w(machine(), 0,~data & 0x04);
- coin_lockout_w(machine(), 1,~data & 0x04);
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x04);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
}
}
diff --git a/src/mame/drivers/shanghai.cpp b/src/mame/drivers/shanghai.cpp
index 115e07028bf..1aeb26c541f 100644
--- a/src/mame/drivers/shanghai.cpp
+++ b/src/mame/drivers/shanghai.cpp
@@ -140,8 +140,8 @@ WRITE16_MEMBER(shanghai_state::shanghai_coin_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0,data & 1);
- coin_counter_w(machine(), 1,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
+ machine().bookkeeping().coin_counter_w(1,data & 2);
}
}
diff --git a/src/mame/drivers/shisen.cpp b/src/mame/drivers/shisen.cpp
index 3433fb52ab6..8b1c1347c66 100644
--- a/src/mame/drivers/shisen.cpp
+++ b/src/mame/drivers/shisen.cpp
@@ -37,8 +37,8 @@ WRITE8_MEMBER(shisen_state::coin_w)
{
if ((data & 0xf9) != 0x01) logerror("coin ctrl = %02x\n",data);
- coin_counter_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04);
}
diff --git a/src/mame/drivers/shootout.cpp b/src/mame/drivers/shootout.cpp
index cd74445a0b8..0824a3704b7 100644
--- a/src/mame/drivers/shootout.cpp
+++ b/src/mame/drivers/shootout.cpp
@@ -62,7 +62,7 @@ WRITE8_MEMBER(shootout_state::flipscreen_w)
WRITE8_MEMBER(shootout_state::coincounter_w)
{
- coin_counter_w(machine(), 0, data);
+ machine().bookkeeping().coin_counter_w(0, data);
}
/*******************************************************************************/
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/sidearms.cpp b/src/mame/drivers/sidearms.cpp
index f2502075830..69190b22147 100644
--- a/src/mame/drivers/sidearms.cpp
+++ b/src/mame/drivers/sidearms.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Curt Coder
/***************************************************************************
diff --git a/src/mame/drivers/sigmab52.cpp b/src/mame/drivers/sigmab52.cpp
index b02121908f7..75299bfd274 100644
--- a/src/mame/drivers/sigmab52.cpp
+++ b/src/mame/drivers/sigmab52.cpp
@@ -260,22 +260,22 @@ WRITE8_MEMBER(sigmab52_state::hopper_w)
WRITE8_MEMBER(sigmab52_state::lamps1_w)
{
- output_set_lamp_value(offset, data & 1);
+ output().set_lamp_value(offset, data & 1);
}
WRITE8_MEMBER(sigmab52_state::lamps2_w)
{
- output_set_lamp_value(6 + offset, data & 1);
+ output().set_lamp_value(6 + offset, data & 1);
}
WRITE8_MEMBER(sigmab52_state::tower_lamps_w)
{
- output_set_indexed_value("towerlamp", offset, data & 1);
+ output().set_indexed_value("towerlamp", offset, data & 1);
}
WRITE8_MEMBER(sigmab52_state::coin_enable_w)
{
- coin_lockout_w(machine(), 0, data & 0x01 ? 0 : 1);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x01 ? 0 : 1);
}
WRITE8_MEMBER(sigmab52_state::audiocpu_cmd_irq_w)
diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp
index d8fc656f624..e0cdabeedaf 100644
--- a/src/mame/drivers/sigmab98.cpp
+++ b/src/mame/drivers/sigmab98.cpp
@@ -147,7 +147,7 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
- bitmap_ind16 *m_sprite_bitmap;
+ std::unique_ptr<bitmap_ind16> m_sprite_bitmap;
UINT8 m_reg;
UINT8 m_rombank;
@@ -174,8 +174,6 @@ public:
DECLARE_WRITE8_MEMBER(dodghero_regs2_w);
DECLARE_READ8_MEMBER(dodghero_regs2_r);
- DECLARE_WRITE8_MEMBER(dashhero_regs_w);
- DECLARE_READ8_MEMBER(dashhero_regs_r);
DECLARE_WRITE8_MEMBER(dashhero_regs2_w);
DECLARE_READ8_MEMBER(dashhero_regs2_r);
@@ -263,7 +261,7 @@ public:
void sigmab98_state::video_start()
{
- m_sprite_bitmap = auto_bitmap_ind16_alloc(machine(), 512, 512);
+ m_sprite_bitmap = std::make_unique<bitmap_ind16>(512, 512);
}
/***************************************************************************
@@ -849,7 +847,7 @@ WRITE8_MEMBER(sigmab98_state::eeprom_w)
// 10 led?
WRITE8_MEMBER(sigmab98_state::c4_w)
{
- set_led_status(machine(), 0, (data & 0x10));
+ output().set_led_value(0, (data & 0x10));
m_c4 = data;
show_outputs();
@@ -863,15 +861,15 @@ WRITE8_MEMBER(sigmab98_state::c4_w)
// 20 led? (starts blinking after coin in)
WRITE8_MEMBER(sigmab98_state::c6_w)
{
- coin_lockout_w(machine(), 0, (~data) & 0x02);
+ machine().bookkeeping().coin_lockout_w(0, (~data) & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
if ((data & 0x08) && !(m_c6 & 0x08))
m_buffered_spriteram->copy();
- set_led_status(machine(), 1, data & 0x10);
- set_led_status(machine(), 2, data & 0x20);
+ output().set_led_value(1, data & 0x10);
+ output().set_led_value(2, data & 0x20);
m_c6 = data;
show_outputs();
@@ -1161,13 +1159,13 @@ void sigmab98_state::show_3_outputs()
// Port 31
WRITE8_MEMBER(sigmab98_state::sammymdl_coin_w)
{
- coin_counter_w(machine(), 0, data & 0x01 ); // coin1 in
- coin_counter_w(machine(), 1, data & 0x02 ); // coin2 in
- coin_counter_w(machine(), 2, data & 0x04 ); // medal in
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 ); // coin1 in
+ machine().bookkeeping().coin_counter_w(1, data & 0x02 ); // coin2 in
+ machine().bookkeeping().coin_counter_w(2, data & 0x04 ); // medal in
-// coin_lockout_w(machine(), 1, (~data) & 0x08 ); // coin2 lockout?
-// coin_lockout_w(machine(), 0, (~data) & 0x10 ); // coin1 lockout
-// coin_lockout_w(machine(), 2, (~data) & 0x20 ); // medal lockout?
+// machine().bookkeeping().coin_lockout_w(1, (~data) & 0x08 ); // coin2 lockout?
+// machine().bookkeeping().coin_lockout_w(0, (~data) & 0x10 ); // coin1 lockout
+// machine().bookkeeping().coin_lockout_w(2, (~data) & 0x20 ); // medal lockout?
m_out[0] = data;
show_3_outputs();
@@ -1176,7 +1174,7 @@ WRITE8_MEMBER(sigmab98_state::sammymdl_coin_w)
// Port 32
WRITE8_MEMBER(sigmab98_state::sammymdl_leds_w)
{
- set_led_status(machine(), 0, data & 0x01); // button
+ output().set_led_value(0, data & 0x01); // button
m_out[1] = data;
show_3_outputs();
@@ -1436,14 +1434,14 @@ WRITE8_MEMBER(sigmab98_state::haekaka_b000_w)
WRITE8_MEMBER(sigmab98_state::haekaka_leds_w)
{
// All used
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x02);
- set_led_status(machine(), 2, data & 0x04);
- set_led_status(machine(), 3, data & 0x08);
- set_led_status(machine(), 4, data & 0x10);
- set_led_status(machine(), 5, data & 0x20);
- set_led_status(machine(), 6, data & 0x40);
- set_led_status(machine(), 7, data & 0x80);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
+ output().set_led_value(2, data & 0x04);
+ output().set_led_value(3, data & 0x08);
+ output().set_led_value(4, data & 0x10);
+ output().set_led_value(5, data & 0x20);
+ output().set_led_value(6, data & 0x40);
+ output().set_led_value(7, data & 0x80);
m_out[1] = data;
show_3_outputs();
@@ -1451,7 +1449,7 @@ WRITE8_MEMBER(sigmab98_state::haekaka_leds_w)
WRITE8_MEMBER(sigmab98_state::haekaka_coin_w)
{
- coin_counter_w(machine(), 0, data & 0x01 ); // medal out
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 ); // medal out
// data & 0x02 ?
// data & 0x04 ?
// data & 0x10 ?
diff --git a/src/mame/drivers/silkroad.cpp b/src/mame/drivers/silkroad.cpp
index ed80f4eebdc..17a42041e8b 100644
--- a/src/mame/drivers/silkroad.cpp
+++ b/src/mame/drivers/silkroad.cpp
@@ -149,8 +149,8 @@ WRITE32_MEMBER(silkroad_state::silk_coin_counter_w)
{
if (ACCESSING_BITS_16_23)
{
- coin_counter_w(machine(), 0, data & 0x10000);
- coin_counter_w(machine(), 1, data & 0x80000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x80000);
}
}
diff --git a/src/mame/drivers/simpsons.cpp b/src/mame/drivers/simpsons.cpp
index 2bba8f13379..5641f189a33 100644
--- a/src/mame/drivers/simpsons.cpp
+++ b/src/mame/drivers/simpsons.cpp
@@ -285,7 +285,7 @@ void simpsons_state::simpsons_objdma( )
m_k053246->k053247_get_ram(&dst);
- src = m_spriteram;
+ src = m_spriteram.get();
num_inactive = counter = 256;
do {
diff --git a/src/mame/drivers/sitcom.cpp b/src/mame/drivers/sitcom.cpp
index 18e5fe06d64..d257bd69076 100644
--- a/src/mame/drivers/sitcom.cpp
+++ b/src/mame/drivers/sitcom.cpp
@@ -87,12 +87,12 @@ void sitcom_state::machine_reset()
WRITE16_MEMBER(sitcom_state::sitcom_update_ds0)
{
- output_set_digit_value(offset, data);
+ output().set_digit_value(offset, data);
}
WRITE16_MEMBER(sitcom_state::sitcom_update_ds1)
{
- output_set_digit_value(4 + offset, data);
+ output().set_digit_value(4 + offset, data);
}
// SID line used as serial input from a pc
@@ -103,7 +103,7 @@ READ_LINE_MEMBER( sitcom_state::sid_line )
WRITE_LINE_MEMBER( sitcom_state::sod_led )
{
- output_set_value("sod_led", state);
+ output().set_value("sod_led", state);
}
static MACHINE_CONFIG_START( sitcom, sitcom_state )
diff --git a/src/mame/drivers/skimaxx.cpp b/src/mame/drivers/skimaxx.cpp
index a1f30bc7b3d..439f0cc874a 100644
--- a/src/mame/drivers/skimaxx.cpp
+++ b/src/mame/drivers/skimaxx.cpp
@@ -62,7 +62,7 @@ public:
required_shared_ptr<UINT32> m_fpga_ctrl;
required_shared_ptr<UINT16> m_fg_buffer;
- UINT32 *m_bg_buffer;
+ std::unique_ptr<UINT32[]> m_bg_buffer;
UINT32 *m_bg_buffer_front;
UINT32 *m_bg_buffer_back;
UINT16 *m_blitter_gfx;
@@ -157,9 +157,9 @@ void skimaxx_state::video_start()
m_blitter_gfx = (UINT16 *) memregion( "blitter" )->base();
m_blitter_gfx_len = memregion( "blitter" )->bytes() / 2;
- m_bg_buffer = auto_alloc_array(machine(), UINT32, 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 2); // 2 buffers
- m_bg_buffer_back = m_bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 0;
- m_bg_buffer_front = m_bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 1;
+ m_bg_buffer = std::make_unique<UINT32[]>(0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 2); // 2 buffers
+ m_bg_buffer_back = m_bg_buffer.get() + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 0;
+ m_bg_buffer_front = m_bg_buffer.get() + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * 1;
membank("bank1")->configure_entry(0, m_bg_buffer_back);
membank("bank1")->configure_entry(1, m_bg_buffer_front);
}
@@ -250,8 +250,8 @@ WRITE32_MEMBER(skimaxx_state::skimaxx_fpga_ctrl_w)
// double buffering
UINT8 bank_bg_buffer = (newdata & 0x40) ? 1 : 0;
- m_bg_buffer_back = m_bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * bank_bg_buffer;
- m_bg_buffer_front = m_bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * (1 - bank_bg_buffer);
+ m_bg_buffer_back = m_bg_buffer.get() + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * bank_bg_buffer;
+ m_bg_buffer_front = m_bg_buffer.get() + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * (1 - bank_bg_buffer);
membank("bank1")->set_entry(bank_bg_buffer);
}
diff --git a/src/mame/drivers/skykid.cpp b/src/mame/drivers/skykid.cpp
index 37172964a2d..15106bd8243 100644
--- a/src/mame/drivers/skykid.cpp
+++ b/src/mame/drivers/skykid.cpp
@@ -28,9 +28,9 @@ WRITE8_MEMBER(skykid_state::inputport_select_w)
m_inputport_selected = data & 0x07;
else if ((data & 0xe0) == 0xc0)
{
- coin_lockout_global_w(machine(), ~data & 1);
- coin_counter_w(machine(), 0,data & 2);
- coin_counter_w(machine(), 1,data & 4);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 2);
+ machine().bookkeeping().coin_counter_w(1,data & 4);
}
}
@@ -59,8 +59,8 @@ READ8_MEMBER(skykid_state::inputport_r)
WRITE8_MEMBER(skykid_state::skykid_led_w)
{
- set_led_status(machine(), 0,data & 0x08);
- set_led_status(machine(), 1,data & 0x10);
+ output().set_led_value(0,data & 0x08);
+ output().set_led_value(1,data & 0x10);
}
WRITE8_MEMBER(skykid_state::skykid_subreset_w)
diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp
index 18e8f147417..514df8d8100 100644
--- a/src/mame/drivers/skylncr.cpp
+++ b/src/mame/drivers/skylncr.cpp
@@ -161,7 +161,6 @@ public:
DECLARE_WRITE8_MEMBER(reelscroll4_w);
DECLARE_WRITE8_MEMBER(skylncr_coin_w);
DECLARE_READ8_MEMBER(ret_ff);
- DECLARE_READ8_MEMBER(ret_00);
DECLARE_WRITE8_MEMBER(skylncr_nmi_enable_w);
DECLARE_DRIVER_INIT(skylncr);
TILE_GET_INFO_MEMBER(get_tile_info);
@@ -407,7 +406,7 @@ WRITE8_MEMBER(skylncr_state::reelscroll4_w)
WRITE8_MEMBER(skylncr_state::skylncr_coin_w)
{
- coin_counter_w(machine(), 0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
}
READ8_MEMBER(skylncr_state::ret_ff)
diff --git a/src/mame/drivers/skyraid.cpp b/src/mame/drivers/skyraid.cpp
index dc11913cec0..9dd8b6765fb 100644
--- a/src/mame/drivers/skyraid.cpp
+++ b/src/mame/drivers/skyraid.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/drivers/slapshot.cpp b/src/mame/drivers/slapshot.cpp
index 1cb1b251eca..9348a9dbb9c 100644
--- a/src/mame/drivers/slapshot.cpp
+++ b/src/mame/drivers/slapshot.cpp
@@ -201,14 +201,14 @@ WRITE16_MEMBER(slapshot_state::opwolf3_adc_req_w)
/* also you get a false fire every once in a while on the p1 gun */
if (((data & 0x100) == 0x100) && ((data & 0x400)==0))
- output_set_value("Player1_Gun_Recoil",1);
+ output().set_value("Player1_Gun_Recoil",1);
else
- output_set_value("Player1_Gun_Recoil",0);
+ output().set_value("Player1_Gun_Recoil",0);
if (((data & 0x100) == 0x100) && ((data & 0x400)==0x400))
- output_set_value("Player2_Gun_Recoil",1);
+ output().set_value("Player2_Gun_Recoil",1);
else
- output_set_value("Player2_Gun_Recoil",0);
+ output().set_value("Player2_Gun_Recoil",0);
break;
}
diff --git a/src/mame/drivers/slc1.cpp b/src/mame/drivers/slc1.cpp
index adf6763817b..f367e3b1705 100644
--- a/src/mame/drivers/slc1.cpp
+++ b/src/mame/drivers/slc1.cpp
@@ -100,7 +100,7 @@ WRITE8_MEMBER( slc1_state::io_w )
if (offset == 0x2f07)
return;
- UINT8 segdata = output_get_digit_value(m_digit);
+ UINT8 segdata = output().get_digit_value(m_digit);
UINT8 segnum = offset & 7;
UINT8 segmask = 1 << segnum;
@@ -109,9 +109,9 @@ WRITE8_MEMBER( slc1_state::io_w )
else
segdata &= ~segmask;
- output_set_digit_value(m_digit, segdata);
+ output().set_digit_value(m_digit, segdata);
- output_set_value("busyled", busyled);
+ output().set_value("busyled", busyled);
if (m_digit == 3)
m_kbd_type = (segdata);
diff --git a/src/mame/drivers/slotcarn.cpp b/src/mame/drivers/slotcarn.cpp
index d7988c01aef..643f696b7fe 100644
--- a/src/mame/drivers/slotcarn.cpp
+++ b/src/mame/drivers/slotcarn.cpp
@@ -47,7 +47,7 @@ public:
required_shared_ptr<UINT8> m_backup_ram;
required_shared_ptr<UINT8> m_ram_attr;
required_shared_ptr<UINT8> m_ram_video;
- UINT8 *m_ram_palette;
+ std::unique_ptr<UINT8[]> m_ram_palette;
DECLARE_READ8_MEMBER(palette_r);
DECLARE_WRITE8_MEMBER(palette_w);
DECLARE_WRITE_LINE_MEMBER(hsync_changed);
@@ -529,8 +529,8 @@ GFXDECODE_END
void slotcarn_state::machine_start()
{
- m_ram_palette = auto_alloc_array(machine(), UINT8, RAM_PALETTE_SIZE);
- save_pointer(NAME(m_ram_palette), RAM_PALETTE_SIZE);
+ m_ram_palette = std::make_unique<UINT8[]>(RAM_PALETTE_SIZE);
+ save_pointer(NAME(m_ram_palette.get()), RAM_PALETTE_SIZE);
}
/***********************************
diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp
index 77569df087a..627f850559a 100644
--- a/src/mame/drivers/smc777.cpp
+++ b/src/mame/drivers/smc777.cpp
@@ -112,11 +112,11 @@ private:
required_device<palette_device> m_palette;
UINT8 *m_ipl_rom;
- UINT8 *m_work_ram;
- UINT8 *m_vram;
- UINT8 *m_attr;
- UINT8 *m_gvram;
- UINT8 *m_pcg;
+ std::unique_ptr<UINT8[]> m_work_ram;
+ std::unique_ptr<UINT8[]> m_vram;
+ std::unique_ptr<UINT8[]> m_attr;
+ std::unique_ptr<UINT8[]> m_gvram;
+ std::unique_ptr<UINT8[]> m_pcg;
UINT8 m_keyb_press;
UINT8 m_keyb_press_flag;
@@ -903,19 +903,19 @@ static const gfx_layout smc777_charlayout =
void smc777_state::machine_start()
{
m_ipl_rom = memregion("ipl")->base();
- m_work_ram = auto_alloc_array_clear(machine(), UINT8, 0x10000);
- m_vram = auto_alloc_array_clear(machine(), UINT8, 0x800);
- m_attr = auto_alloc_array_clear(machine(), UINT8, 0x800);
- m_gvram = auto_alloc_array_clear(machine(), UINT8, 0x8000);
- m_pcg = auto_alloc_array_clear(machine(), UINT8, 0x800);
-
- save_pointer(NAME(m_work_ram), 0x10000);
- save_pointer(NAME(m_vram), 0x800);
- save_pointer(NAME(m_attr), 0x800);
- save_pointer(NAME(m_gvram), 0x8000);
- save_pointer(NAME(m_pcg), 0x800);
-
- m_gfxdecode->set_gfx(0, global_alloc(gfx_element(m_palette, smc777_charlayout, (UINT8 *)m_pcg, 0, 8, 0)));
+ m_work_ram = make_unique_clear<UINT8[]>(0x10000);
+ m_vram = make_unique_clear<UINT8[]>(0x800);
+ m_attr = make_unique_clear<UINT8[]>(0x800);
+ m_gvram = make_unique_clear<UINT8[]>(0x8000);
+ m_pcg = make_unique_clear<UINT8[]>(0x800);
+
+ save_pointer(NAME(m_work_ram.get()), 0x10000);
+ save_pointer(NAME(m_vram.get()), 0x800);
+ save_pointer(NAME(m_attr.get()), 0x800);
+ save_pointer(NAME(m_gvram.get()), 0x8000);
+ save_pointer(NAME(m_pcg.get()), 0x800);
+
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, smc777_charlayout, m_pcg.get(), 0, 8, 0));
}
void smc777_state::machine_reset()
@@ -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/sms.cpp b/src/mame/drivers/sms.cpp
index 3dff2e9e875..a3839649aac 100644
--- a/src/mame/drivers/sms.cpp
+++ b/src/mame/drivers/sms.cpp
@@ -865,7 +865,7 @@ ROM_START(sms1pal)
ROM_REGION(0x20000, "user1", 0)
ROM_SYSTEM_BIOS( 0, "bios13", "US/European BIOS v1.3 (1986)" )
ROMX_LOAD("mpr-10052.rom", 0x0000, 0x2000, CRC(0072ed54) SHA1(c315672807d8ddb8d91443729405c766dd95cae7), ROM_BIOS(1))
- ROM_SYSTEM_BIOS( 1, "bios20", "European BIOS v2.0 (198?)" )
+ ROM_SYSTEM_BIOS( 1, "bios20", "European BIOS v2.0 (1987?)" ) //Chinese (PAL-D)?
ROMX_LOAD("mpr-10883.rom", 0x0000, 0x2000, CRC(b3d854f8) SHA1(fc7eb9141f38c92bf98d9134816f64b45e811112), ROM_BIOS(2))
ROM_SYSTEM_BIOS( 2, "hangonsh", "US/European BIOS v2.4 with Hang On and Safari Hunt (1988)" )
ROMX_LOAD("mpr-11459a.rom", 0x0000, 0x20000, CRC(91e93385) SHA1(9e179392cd416af14024d8f31c981d9ee9a64517), ROM_BIOS(3))
diff --git a/src/mame/drivers/smsmcorp.cpp b/src/mame/drivers/smsmcorp.cpp
index 1533ea76fe7..50f15e55cc1 100644
--- a/src/mame/drivers/smsmcorp.cpp
+++ b/src/mame/drivers/smsmcorp.cpp
@@ -402,24 +402,24 @@ READ8_MEMBER(smsmfg_state::ppi0_c_r)
WRITE8_MEMBER(smsmfg_state::ppi0_a_w)
{
//popmessage("Lamps: %d %d %d %d %d %d %d", BIT(data,7), BIT(data,6), BIT(data,5), BIT(data,4), BIT(data,3), BIT(data,2), BIT(data,1) );
- output_set_lamp_value(0, !BIT(data,7)); /* Display Light 1 */
- output_set_lamp_value(1, !BIT(data,6)); /* Display Light 2 */
- output_set_lamp_value(2, !BIT(data,5)); /* Display Light 3 */
- output_set_lamp_value(3, !BIT(data,4)); /* Display Light 4 */
- output_set_lamp_value(4, !BIT(data,3)); /* Display Light 5 */
- output_set_lamp_value(5, !BIT(data,2)); /* Bet Light */
- output_set_lamp_value(6, !BIT(data,1)); /* Deal Light */
- output_set_lamp_value(7, !BIT(data,0)); /* Draw Light */
+ output().set_lamp_value(0, !BIT(data,7)); /* Display Light 1 */
+ output().set_lamp_value(1, !BIT(data,6)); /* Display Light 2 */
+ output().set_lamp_value(2, !BIT(data,5)); /* Display Light 3 */
+ output().set_lamp_value(3, !BIT(data,4)); /* Display Light 4 */
+ output().set_lamp_value(4, !BIT(data,3)); /* Display Light 5 */
+ output().set_lamp_value(5, !BIT(data,2)); /* Bet Light */
+ output().set_lamp_value(6, !BIT(data,1)); /* Deal Light */
+ output().set_lamp_value(7, !BIT(data,0)); /* Draw Light */
}
WRITE8_MEMBER(smsmfg_state::ppi0_b_w)
{
- output_set_lamp_value(8, !BIT(data,7)); /* Stand Light */
- output_set_lamp_value(9, !BIT(data,6)); /* Cancel Light */
+ output().set_lamp_value(8, !BIT(data,7)); /* Stand Light */
+ output().set_lamp_value(9, !BIT(data,6)); /* Cancel Light */
- coin_counter_w(machine(), 0, BIT(data,1));
- coin_lockout_w(machine(), 0, BIT(data,5));
- coin_lockout_w(machine(), 1, BIT(data,4));
+ machine().bookkeeping().coin_counter_w(0, BIT(data,1));
+ machine().bookkeeping().coin_lockout_w(0, BIT(data,5));
+ machine().bookkeeping().coin_lockout_w(1, BIT(data,4));
}
/*************************************
diff --git a/src/mame/drivers/snes.cpp b/src/mame/drivers/snes.cpp
index 263731a5bc3..55f81e89d75 100644
--- a/src/mame/drivers/snes.cpp
+++ b/src/mame/drivers/snes.cpp
@@ -86,7 +86,6 @@ public:
DECLARE_READ8_MEMBER( spc_ram_100_r );
DECLARE_WRITE8_MEMBER( spc_ram_100_w );
- TIMER_CALLBACK_MEMBER( lightgun_tick );
// input related
SNESCTRL_ONSCREEN_CB(onscreen_cb);
diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp
index b949bdde103..e5980a70314 100644
--- a/src/mame/drivers/snesb.cpp
+++ b/src/mame/drivers/snesb.cpp
@@ -155,9 +155,9 @@ public:
snesb_state(const machine_config &mconfig, device_type type, const char *tag)
: snes_state(mconfig, type, tag) { }
- INT8 *m_shared_ram;
+ std::unique_ptr<INT8[]> m_shared_ram;
UINT8 m_cnt;
- INT8 *m_shared_ram2;
+ std::unique_ptr<INT8[]> m_shared_ram2;
DECLARE_READ8_MEMBER(sharedram_r);
DECLARE_WRITE8_MEMBER(sharedram_w);
DECLARE_READ8_MEMBER(sb2b_75bd37_r);
@@ -744,7 +744,7 @@ DRIVER_INIT_MEMBER(snesb_state,kinstb)
rom[i] = BITSWAP8(rom[i], 5, 0, 6, 1, 7, 4, 3, 2);
}
- m_shared_ram = auto_alloc_array(machine(), INT8, 0x100);
+ m_shared_ram = std::make_unique<INT8[]>(0x100);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x7810ff, read8_delegate(FUNC(snesb_state::sharedram_r),this), write8_delegate(FUNC(snesb_state::sharedram_w),this));
/* extra inputs */
@@ -987,8 +987,8 @@ DRIVER_INIT_MEMBER(snesb_state,endless)
/* work around missing content */
m_maincpu->space(AS_PROGRAM).install_read_handler(0x800b, 0x800c, read8_delegate(FUNC(snesb_state::endless_800b_r),this));
- m_shared_ram = auto_alloc_array(machine(), INT8, 0x22);
- m_shared_ram2 = auto_alloc_array(machine(), INT8, 0x22);
+ m_shared_ram = std::make_unique<INT8[]>(0x22);
+ m_shared_ram2 = std::make_unique<INT8[]>(0x22);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x781021, read8_delegate(FUNC(snesb_state::sharedram_r),this), write8_delegate(FUNC(snesb_state::sharedram_w),this));
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781200, 0x781221, read8_delegate(FUNC(snesb_state::sharedram2_r),this), write8_delegate(FUNC(snesb_state::sharedram2_w),this));
@@ -1023,7 +1023,7 @@ ROM_START( mk3snes ) // this is identical to the SNES release apart from a singl
ROM_LOAD( "1.U1", 0x200000, 0x080000, CRC(4cab6332) SHA1(3c417ba6d35532b4e2ca9ae4a3b730c589d26aee) )
ROM_LOAD( "2.U2", 0x280000, 0x080000, CRC(0327999b) SHA1(dc6bb11a925e893453e0e5e5d88b8ace8d6cf859) )
ROM_LOAD( "3.U3", 0x300000, 0x080000, CRC(229af2de) SHA1(1bbb02aec08afab979ffbe4b68a48dc4cc923f73) )
- ROM_LOAD( "4.U4", 0x380000, 0x080000, CRC(b51930d9) SHA1(220f00d64809a6218015a738e53f11d8dc81578f) ) // 4.U4 is a 99.999809% match for the last part of sns-a3me-0.u1 (mk3u in snes softlist - 1 byte changed?!)
+ ROM_LOAD( "4.U4", 0x380000, 0x080000, CRC(b51930d9) SHA1(220f00d64809a6218015a738e53f11d8dc81578f) ) // 4.U4 is a 99.999809% match for the last part of sns-a3me-0.u1 (mk3u in snes softlist - 1 byte changed?!)
ROM_REGION( 0x1000, "mcu", 0 )
ROM_LOAD( "D87C51.U9", 0x00000, 0x1000, CRC(f447620a) SHA1(ac0d78c7b339f13d5f96a6727a0f2147158697f9) )
diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp
index ce19401d98b..0ebc52b1d0a 100644
--- a/src/mame/drivers/snk.cpp
+++ b/src/mame/drivers/snk.cpp
@@ -750,29 +750,29 @@ CUSTOM_INPUT_MEMBER(snk_state::gwarb_rotary)
WRITE8_MEMBER(snk_state::athena_coin_counter_w)
{
- coin_counter_w(machine(), 0, ~data & 2);
- coin_counter_w(machine(), 1, ~data & 1);
+ machine().bookkeeping().coin_counter_w(0, ~data & 2);
+ machine().bookkeeping().coin_counter_w(1, ~data & 1);
}
WRITE8_MEMBER(snk_state::ikari_coin_counter_w)
{
if (~data & 0x80)
{
- coin_counter_w(machine(), 0, 1);
- coin_counter_w(machine(), 0, 0);
+ machine().bookkeeping().coin_counter_w(0, 1);
+ machine().bookkeeping().coin_counter_w(0, 0);
}
if (~data & 0x40)
{
- coin_counter_w(machine(), 1, 1);
- coin_counter_w(machine(), 1, 0);
+ machine().bookkeeping().coin_counter_w(1, 1);
+ machine().bookkeeping().coin_counter_w(1, 0);
}
}
WRITE8_MEMBER(snk_state::tdfever_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
WRITE8_MEMBER(snk_state::countryc_trackball_w)
@@ -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")
@@ -4942,6 +4942,52 @@ ROM_START( ikarijpb )
ROM_LOAD( "16.rom", 0x28000, 0x8000, CRC(e9b03e07) SHA1(124e5328a965ea2af28c4d74934a82394a2ffd72) )
ROM_END
+
+ROM_START( ikariram )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "1.bin", 0x00000, 0x4000, CRC(ce97e30f) SHA1(24fb1499e888ae7d2857a8bb169d9b44fb3f5187) )
+ ROM_LOAD( "up03_k4.rom", 0x04000, 0x8000, CRC(26948850) SHA1(bfeba5f7019f6eaacf2a5464756d9cb283c5f5a2) )
+
+ ROM_REGION( 0x10000, "sub", 0 )
+ ROM_LOAD( "ik3", 0x0000, 0x4000, CRC(9bb385f8) SHA1(70cc30bece54c28205017e755dc32a1c088f9f80) )
+ ROM_LOAD( "ik4", 0x4000, 0x8000, CRC(3a144bca) SHA1(c1b09bffb8d89e607332304b1d8845794f25273f) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "ik5", 0x0000, 0x4000, CRC(863448fa) SHA1(19cad05dc9c4495f36e0d8627927ea6d0a971824) )
+ ROM_LOAD( "ik6", 0x4000, 0x8000, CRC(9b16aa57) SHA1(69866ce41c587721702c92ac2e9ba3f6645004cf) )
+
+ ROM_REGION( 0x0c00, "proms", 0 )
+ ROM_LOAD( "7122er.prm", 0x000, 0x400, CRC(b9bf2c2c) SHA1(8eb62152dcb04f463baf6ec2a66148eb947403ef) )
+ ROM_LOAD( "7122eg.prm", 0x400, 0x400, CRC(0703a770) SHA1(62861ef4987003d4965ef5018ccdf7157981d939) )
+ ROM_LOAD( "7122eb.prm", 0x800, 0x400, CRC(0a11cdde) SHA1(faae17398341317e7afbd06b903b8e9e65967bf1) )
+
+ ROM_REGION( 0x4000, "tx_tiles", 0 )
+ ROM_LOAD( "ik7", 0x0000, 0x4000, CRC(9e88f536) SHA1(80e9aadeb626e60318a2139fd1b3875f6256c492) )
+
+ ROM_REGION( 0x20000, "bg_tiles", 0 )
+ ROM_LOAD( "17.rom", 0x00000, 0x8000, CRC(e0dba976) SHA1(5a8f14f7a199b5fb1862debda0bceee42cddac59) )
+ ROM_LOAD( "18.rom", 0x08000, 0x8000, CRC(24947d5f) SHA1(ffd18074ced8171c9da56c839e8289afc29af2c9) )
+ ROM_LOAD( "ik19", 0x10000, 0x8000, CRC(566242ec) SHA1(ca25587460491597d462d2526d59afbc9b92fb75) )
+ ROM_LOAD( "20.rom", 0x18000, 0x8000, CRC(5da7ec1a) SHA1(4b212c1dfe4c18eced90ee3a783e7edf8d23c906) )
+
+ ROM_REGION( 0x18000, "sp16_tiles", 0 )
+ ROM_LOAD( "ik8", 0x00000, 0x8000, CRC(75d796d0) SHA1(395c1d22b935c92c50a326edc8b6cd9aab235f7c) )
+ ROM_LOAD( "ik9", 0x08000, 0x8000, CRC(2c34903b) SHA1(1949fc0cef4b30665ad288fa8e506a05741face0) )
+ ROM_LOAD( "ik10", 0x10000, 0x8000, CRC(da9ccc94) SHA1(be3c9d44a887ac823039153b832dfae18fe69965) )
+
+ ROM_REGION( 0x30000, "sp32_tiles", 0 )
+ ROM_LOAD( "11.rom", 0x00000, 0x8000, CRC(5c75ea8f) SHA1(4e8ee56a2dbeb9ac2dd74bc584dba29433d91ae0) )
+ ROM_LOAD( "14.rom", 0x08000, 0x8000, CRC(3293fde4) SHA1(3e2f0fa00c22f1c0c1427d8d3de57dd9ec7682a9) )
+ ROM_LOAD( "12.rom", 0x10000, 0x8000, CRC(95138498) SHA1(8ac3d2cd793312434b9ffb8c47c30473f713e0e8) )
+ 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_END
+
+
/***********************************************************************/
ROM_START( victroad )
@@ -6278,6 +6324,7 @@ GAME( 1986, ikaria, ikari, ikari, ikaria, driver_device, 0, ROT
GAME( 1986, ikarinc, ikari, ikari, ikarinc, driver_device, 0, ROT270, "SNK", "Ikari Warriors (US No Continues)", 0 ) // distributed by Tradewest(?)
GAME( 1986, ikarijp, ikari, ikari, ikarinc, driver_device, 0, ROT270, "SNK", "Ikari (Japan No Continues)", 0 )
GAME( 1986, ikarijpb, ikari, ikari, ikarijpb, driver_device, 0, ROT270, "bootleg", "Ikari (Joystick hack bootleg)", 0 )
+GAME( 1986, ikariram, ikari, ikari, ikarijpb, driver_device, 0, ROT270, "bootleg", "Rambo 3 (bootleg of Ikari, Joystick hack)", 0 )
GAME( 1986, victroad, 0, victroad, victroad, driver_device, 0, ROT270, "SNK", "Victory Road", 0 )
GAME( 1986, dogosoke, victroad, victroad, victroad, driver_device, 0, ROT270, "SNK", "Dogou Souken", 0 )
GAME( 1986, dogosokb, victroad, victroad, dogosokb, driver_device, 0, ROT270, "bootleg", "Dogou Souken (Joystick hack bootleg)", 0 )
diff --git a/src/mame/drivers/snookr10.cpp b/src/mame/drivers/snookr10.cpp
index 5d2865ece1e..bdc87beebd6 100644
--- a/src/mame/drivers/snookr10.cpp
+++ b/src/mame/drivers/snookr10.cpp
@@ -697,17 +697,17 @@ WRITE8_MEMBER(snookr10_state::output_port_0_w)
m_bit4 = m_outporth & 1;
m_bit5 = (m_outporth >> 1) & 1;
- output_set_lamp_value(0, m_bit5); /* Lamp 0 - START */
- output_set_lamp_value(1, m_bit2); /* Lamp 1 - CANCEL */
- output_set_lamp_value(2, m_bit0); /* Lamp 2 - STOP1 */
- output_set_lamp_value(3, m_bit1); /* Lamp 3 - STOP2 */
- output_set_lamp_value(4, m_bit0); /* Lamp 4 - STOP3 */
- output_set_lamp_value(5, m_bit3); /* Lamp 5 - STOP4 */
- output_set_lamp_value(6, m_bit4); /* Lamp 6 - STOP5 */
-
- coin_counter_w(machine(), 0, data & 0x01); /* Coin in */
- coin_counter_w(machine(), 1, data & 0x10); /* Key in */
- coin_counter_w(machine(), 2, data & 0x04); /* Payout x10 */
+ output().set_lamp_value(0, m_bit5); /* Lamp 0 - START */
+ output().set_lamp_value(1, m_bit2); /* Lamp 1 - CANCEL */
+ output().set_lamp_value(2, m_bit0); /* Lamp 2 - STOP1 */
+ output().set_lamp_value(3, m_bit1); /* Lamp 3 - STOP2 */
+ output().set_lamp_value(4, m_bit0); /* Lamp 4 - STOP3 */
+ output().set_lamp_value(5, m_bit3); /* Lamp 5 - STOP4 */
+ output().set_lamp_value(6, m_bit4); /* Lamp 6 - STOP5 */
+
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); /* Coin in */
+ machine().bookkeeping().coin_counter_w(1, data & 0x10); /* Key in */
+ machine().bookkeeping().coin_counter_w(2, data & 0x04); /* Payout x10 */
// logerror("high: %04x - low: %X \n", m_outporth, m_outportl);
// popmessage("written : %02X", data);
@@ -738,13 +738,13 @@ WRITE8_MEMBER(snookr10_state::output_port_1_w)
m_bit4 = data & 1;
m_bit5 = (data >> 1) & 1;
- output_set_lamp_value(0, m_bit5); /* Lamp 0 - START */
- output_set_lamp_value(1, m_bit2); /* Lamp 1 - CANCEL */
- output_set_lamp_value(2, m_bit0); /* Lamp 2 - STOP1 */
- output_set_lamp_value(3, m_bit1); /* Lamp 3 - STOP2 */
- output_set_lamp_value(4, m_bit0); /* Lamp 4 - STOP3 */
- output_set_lamp_value(5, m_bit3); /* Lamp 5 - STOP4 */
- output_set_lamp_value(6, m_bit4); /* Lamp 6 - STOP5 */
+ output().set_lamp_value(0, m_bit5); /* Lamp 0 - START */
+ output().set_lamp_value(1, m_bit2); /* Lamp 1 - CANCEL */
+ output().set_lamp_value(2, m_bit0); /* Lamp 2 - STOP1 */
+ output().set_lamp_value(3, m_bit1); /* Lamp 3 - STOP2 */
+ output().set_lamp_value(4, m_bit0); /* Lamp 4 - STOP3 */
+ output().set_lamp_value(5, m_bit3); /* Lamp 5 - STOP4 */
+ output().set_lamp_value(6, m_bit4); /* Lamp 6 - STOP5 */
}
diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp
index dc0d2c93b44..e038d66471b 100644
--- a/src/mame/drivers/snowbros.cpp
+++ b/src/mame/drivers/snowbros.cpp
@@ -2162,6 +2162,24 @@ ROM_START( twinadvk )
ROM_LOAD( "srb.bin", 0x40000, 0x40000, CRC(109e51e6) SHA1(3344c68d63bbad4a02b47143b2d2f72ce9bcb4bb) ) // bank 2
ROM_END
+ROM_START( multi96 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "uh12", 0x00001, 0x20000, CRC(e912ea4e) SHA1(cf0b37d6b6fbdd311ef7b404c4ba2c6a7e1f8486) )
+ ROM_LOAD16_BYTE( "ui12", 0x00000, 0x20000, CRC(ac99e837) SHA1(20bc1599f78a4eac65cae54350872fa292daa807) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 ) /* 64k for z80 sound code */
+ ROM_LOAD( "uh15.bin", 0x0000, 0x8000, CRC(3d5acd08) SHA1(c19f686862dfc12d2fa91c2dd3d3b75d9cb410c3) )
+
+ ROM_REGION( 0x180000, "gfx1", 0 ) /* 4bpp gfx */
+ ROM_LOAD( "ua4", 0x000000, 0x80000, CRC(66cae586) SHA1(22af524b26241a6456b777a847db73ff8d3db11f) )
+ ROM_LOAD( "ua5", 0x080000, 0x80000, CRC(0bd9f6bb) SHA1(400ddff7a76860caacfe8bfd803f9ccd2dba3356) )
+ ROM_LOAD( "ua6", 0x100000, 0x80000, CRC(0e90b26c) SHA1(fd9b40988d03db8ed797abf859a8828bb65db8d5) )
+
+ ROM_REGION( 0x080000, "oki", 0 ) /* Samples - both banks are almost the same */
+ /* todo, check bank ordering .. */
+ ROM_LOAD( "sra.bin", 0x00000, 0x40000, CRC(82f452c4) SHA1(95ad6ede87ceafb045ed7df40496baf96190b97f) ) // bank 1
+ ROM_LOAD( "srb.bin", 0x40000, 0x40000, CRC(109e51e6) SHA1(3344c68d63bbad4a02b47143b2d2f72ce9bcb4bb) ) // bank 2
+ROM_END
/* SemiCom Games */
@@ -2737,6 +2755,7 @@ GAME( 1995, honeydol, 0, honeydol, honeydol, driver_device, 0, ROT0, "Bar
GAME( 1995, twinadv, 0, twinadv, twinadv, driver_device, 0, ROT0, "Barko Corp.", "Twin Adventure (World)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, twinadvk, twinadv, twinadv, twinadv, driver_device, 0, ROT0, "Barko Corp.", "Twin Adventure (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, multi96, twinadv, twinadv, twinadv, driver_device, 0, ROT0, "Barko Corp.", "Multi Game '96 (Italy)", MACHINE_SUPPORTS_SAVE )
// The Korean games database shows an earlier version of this called Ball Boy with a different title screen to the version of Ball Boy we have
// http://mamedev.emulab.it/undumped/images/Ballboy.jpg
diff --git a/src/mame/drivers/softbox.cpp b/src/mame/drivers/softbox.cpp
index c55adbcae7e..df38d930eb5 100644
--- a/src/mame/drivers/softbox.cpp
+++ b/src/mame/drivers/softbox.cpp
@@ -292,9 +292,9 @@ WRITE8_MEMBER( softbox_state::ppi1_pc_w )
*/
- output_set_led_value(LED_A, !BIT(data, 0));
- output_set_led_value(LED_B, !BIT(data, 1));
- output_set_led_value(LED_READY, !BIT(data, 2));
+ output().set_led_value(LED_A, !BIT(data, 0));
+ output().set_led_value(LED_B, !BIT(data, 1));
+ output().set_led_value(LED_READY, !BIT(data, 2));
}
static DEVICE_INPUT_DEFAULTS_START( terminal )
diff --git a/src/mame/drivers/sonson.cpp b/src/mame/drivers/sonson.cpp
index ff280dd58a7..41550d7ac4f 100644
--- a/src/mame/drivers/sonson.cpp
+++ b/src/mame/drivers/sonson.cpp
@@ -71,12 +71,12 @@ WRITE8_MEMBER(sonson_state::sonson_sh_irqtrigger_w)
WRITE8_MEMBER(sonson_state::sonson_coin1_counter_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
WRITE8_MEMBER(sonson_state::sonson_coin2_counter_w)
{
- coin_counter_w(machine(), 1, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 1);
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, sonson_state )
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/spc1000.cpp b/src/mame/drivers/spc1000.cpp
index 761e385c86a..c64a9effff6 100644
--- a/src/mame/drivers/spc1000.cpp
+++ b/src/mame/drivers/spc1000.cpp
@@ -15,7 +15,7 @@ NOTE: 2014-09-13: added code from someone's modified MESS driver for floppy
disk. Since it is not to our coding standards, it is
commented out with #if 0/#endif and 3 slashes (///).
It is planned to be converted when time permits. The
- author is Meeso Kim.
+ author is Miso Kim.
Hardware details of the fdc: Intelligent device, Z80 CPU,
XTAL_8MHz, PPI 8255, FDC uPD765C, 2 RAM chips, 28 other
@@ -26,12 +26,7 @@ NOTE: 2014-09-13: added code from someone's modified MESS driver for floppy
2015-06-19: Added code for the centronics printer port
-IMPORTANT NOTE for tape usage: you *FIRST* press PLAY on the tape drive
- (e.g. by pressing F2 in partial emulated keyboard mode) and *THEN* you
- type LOAD on the BASIC prompt!
- Otherwise, the system turns the tape motor ON but it does not receive any
- data from tape, and it turns it OFF before the user can press PLAY.
-
+2016-01-14: Casstte tape motor fixed for working perperly and ROM file changed for CP/M disk loading
****************************************************************************/
/*
@@ -154,7 +149,6 @@ class spc1000_state : public driver_device
public:
spc1000_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_motor(false)
, m_maincpu(*this, "maincpu")
, m_vdg(*this, "mc6847")
, m_cass(*this, "cassette")
@@ -184,8 +178,8 @@ private:
UINT8 m_IPLK;
UINT8 m_GMODE;
UINT16 m_page;
- UINT8 *m_work_ram;
- bool m_motor;
+ std::unique_ptr<UINT8[]> m_work_ram;
+ attotime m_time;
bool m_centronics_busy;
virtual void machine_start() override;
virtual void machine_reset() override;
@@ -223,11 +217,12 @@ READ8_MEMBER(spc1000_state::iplk_r)
WRITE8_MEMBER( spc1000_state::cass_w )
{
- bool m = BIT(data, 1) ? true : false;
+ attotime time = machine().scheduler().time();
m_cass->output(BIT(data, 0) ? -1.0 : 1.0);
- if (m && !m_motor)
- m_cass->change_state(m_cass->get_state() & CASSETTE_MASK_MOTOR ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
- m_motor = m;
+ if (BIT(data, 1) && (time - m_time).as_attoseconds()/ATTOSECONDS_PER_MICROSECOND > 100) {
+ m_cass->change_state((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_DISABLED ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
+ m_time = time;
+ }
m_centronics->write_strobe(BIT(data, 2) ? true : false);
}
@@ -403,13 +398,14 @@ void spc1000_state::machine_start()
// intialize banks 2 & 4 (write banks)
membank("bank2")->set_base(ram);
membank("bank4")->set_base(ram + 0x8000);
+
+ m_time = machine().scheduler().time();
}
void spc1000_state::machine_reset()
{
- m_work_ram = auto_alloc_array_clear(machine(), UINT8, 0x10000);
+ m_work_ram = make_unique_clear<UINT8[]>(0x10000);
m_IPLK = 1;
- m_motor = false;
}
READ8_MEMBER(spc1000_state::mc6847_videoram_r)
@@ -437,7 +433,7 @@ READ8_MEMBER( spc1000_state::porta_r )
{
UINT8 data = 0x3f;
data |= (m_cass->input() > 0.0038) ? 0x80 : 0;
- data |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) != CASSETTE_STOPPED) && ((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED) ? 0x00 : 0x40;
+ data |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_STOPPED || ((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_DISABLED)) ? 0x40 : 0;
data &= ~(m_io_joy->read() & 0x3f);
data &= ~((m_centronics_busy == 0)<< 5);
return data;
@@ -505,7 +501,7 @@ MACHINE_CONFIG_END
/* ROM definition */
ROM_START( spc1000 )
ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
- ROM_LOAD("spcall.rom", 0x0000, 0x8000, CRC(19638fc9) SHA1(489f1baa7aebf3c8c660325fb1fd790d84203284))
+ ROM_LOAD("spcall.rom", 0x0000, 0x8000, CRC(240426be) SHA1(8eb32e147c17a6d0f947b8bb3c6844750a7b64a8))
ROM_END
#if 0
@@ -520,4 +516,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, spc1000, 0, 0, spc1000, spc1000, driver_device, 0, "Samsung", "SPC-1000", MACHINE_NOT_WORKING )
+COMP( 1982, spc1000, 0, 0, spc1000, spc1000, driver_device, 0, "Samsung", "SPC-1000", 0 )
diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp
new file mode 100644
index 00000000000..11b9c4a48e4
--- /dev/null
+++ b/src/mame/drivers/spc1500.cpp
@@ -0,0 +1,973 @@
+// license:BSD-3-Clause
+// copyright-holders:Miso Kim
+/***************************************************************************
+
+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
+ 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-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
+
+****************************************************************************/
+
+/*
+ * SAMSUNG SPC-1500 Series
+ *
+ * Brief history
+ * ---------------------------------------------------------
+ * First release on 02-26-1987
+ * Press release on 03-14-1987
+ * Market price 365,000 won ($430) on 04-01-1987
+
+ Hardware Specification
+
+ 1) SPC-1500
+ RAM 122KB
+ - Main Memory: 64KB
+ - Video RAM: 10KB (text 2KB, character attributes 2KB, custom letter: 6KB)
+ - Graphics RAM: 48KB (16KB on three sides by assigning each of RGB)
+ ROM 96KB
+ - BIOS: 32KB (including IPL and a part of BASIC)
+ - BASIC ROM: 32KB (Hangul Samsung BASIC - Korean character display)
+ - English font: 8KB (sizes 8x8 and 8x16 size of each character in ROM)
+ - Hangul fonts: 24KB (head 8KB, middle 8KB, last 8KB)
+
+ Periperials
+ - Built-in cassette deck
+ - 1 composite video output to connect a monitor
+ - 1 TTL output for RGB monitor connection
+ - 1 RF output for TV connection
+ - 1 printer port
+ - 1 joystick port
+
+ Expansion Slots
+ - Built-in 50-pin 3 slot
+ - One is using the memory expansion card by default
+
+ 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:
+ - Version 1.4:
+ - 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.
+
+ 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'
+ - 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)
+ - RGB monitors
+ 6) SM-1231 (high-resolution monitor SM)
+ - 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)
+ - Composite color monitors
+ 9) CD-1462X (color monitor SM)
+ 10)CD-1464W (color monitor SM)
+ 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
+ - 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.
+
+ 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
+ 2) SP-570H
+ - Recommanded 132 columns dot-matrix printer
+ 3) SP-510L
+ 4) SP-510T
+ 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
+ - Release price: 60,000won ($71)
+
+ SPC-1500 VDP card
+ - 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,
+ 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
+ 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"
+#include "cpu/z80/z80.h"
+#include "machine/ram.h"
+#include "machine/i8255.h"
+#include "sound/ay8910.h"
+#include "sound/wave.h"
+#include "video/mc6845.h"
+#include "imagedev/cassette.h"
+#include "formats/spc1000_cas.h"
+#include "bus/centronics/ctronics.h"
+#define VDP_CLOCK XTAL_42_9545MHz
+#include "softlist.h"
+
+class spc1500_state : public driver_device
+{
+public:
+ spc1500_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_vdg(*this, "mc6845")
+ , m_cass(*this, "cassette")
+ , m_ram(*this, RAM_TAG)
+ , m_p_videoram(*this, "videoram")
+ , m_pcgram(*this, "pcgram")
+ , m_io_kb(*this, "LINE")
+ , m_io_joy(*this, "JOY")
+ , 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(porta_r);
+ DECLARE_WRITE_LINE_MEMBER( centronics_busy_w ) { m_centronics_busy = state; }
+ DECLARE_READ8_MEMBER(mc6845_videoram_r);
+ DECLARE_READ8_MEMBER(keyboard_r);
+ DECLARE_WRITE8_MEMBER(palet_w);
+ DECLARE_WRITE8_MEMBER(priority_w);
+ DECLARE_WRITE8_MEMBER(pcg_w);
+ DECLARE_WRITE8_MEMBER(pcgg_w);
+ DECLARE_WRITE8_MEMBER(pcgb_w);
+ DECLARE_WRITE8_MEMBER(pcgr_w);
+ DECLARE_READ8_MEMBER(pcg_r);
+ DECLARE_READ8_MEMBER(pcgg_r);
+ DECLARE_READ8_MEMBER(pcgb_r);
+ DECLARE_READ8_MEMBER(pcgr_r);
+ DECLARE_WRITE8_MEMBER(crtc_w);
+ DECLARE_READ8_MEMBER(crtc_r);
+ DECLARE_WRITE8_MEMBER(romsel);
+ DECLARE_WRITE8_MEMBER(ramsel);
+ DECLARE_WRITE8_MEMBER(portb_w);
+ DECLARE_WRITE8_MEMBER(psgb_w);
+ DECLARE_WRITE8_MEMBER(portc_w);
+ DECLARE_READ8_MEMBER(portb_r);
+ DECLARE_WRITE8_MEMBER(double_w);
+ DECLARE_READ8_MEMBER(io_r);
+ DECLARE_PALETTE_INIT(spc);
+ DECLARE_VIDEO_START(spc);
+ MC6845_UPDATE_ROW(crtc_update_row);
+ MC6845_RECONFIGURE(crtc_reconfig);
+ TIMER_DEVICE_CALLBACK_MEMBER(timer);
+private:
+ UINT8 *m_p_ram;
+ UINT8 m_ipl;
+ UINT8 m_palet[3];
+ UINT8 m_paltbl[8];
+ UINT16 m_page;
+ UINT8 m_pcg_char, m_pcg_attr, m_char_change, m_pcg_char0;
+ UINT16 m_pcg_offset[3];
+ int m_char_count;
+ attotime m_time;
+ bool m_romsel;
+ bool m_double_mode;
+ bool m_p5bit;
+ bool m_motor;
+ bool m_motor_toggle;
+ UINT8 m_crtc_vreg[0x100];
+ bool m_centronics_busy;
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ required_device<z80_device> m_maincpu;
+ required_device<mc6845_device> m_vdg;
+ required_device<cassette_image_device> m_cass;
+ required_device<ram_device> m_ram;
+ required_shared_ptr<UINT8> m_p_videoram;
+ required_shared_ptr<UINT8> m_pcgram;
+ required_ioport_array<10> m_io_kb;
+ required_ioport m_io_joy;
+ required_ioport m_dipsw;
+ 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;
+ UINT8 m_priority;
+ emu_timer *m_timer;
+ void get_pcg_addr();
+};
+
+READ8_MEMBER( spc1500_state::keyboard_r )
+{
+ offset &= 0xf;
+
+ if (offset <= 9)
+ return m_io_kb[offset]->read();
+ else
+ return 0xff;
+}
+
+WRITE8_MEMBER( spc1500_state::romsel)
+{
+ m_romsel = 1;
+ if (m_ipl)
+ membank("bank1")->set_entry(0);
+ else
+ membank("bank1")->set_entry(1);
+}
+
+WRITE8_MEMBER( spc1500_state::ramsel)
+{
+ m_romsel = 0;
+ membank("bank1")->set_entry(2);
+}
+
+WRITE8_MEMBER( spc1500_state::portb_w)
+{
+// m_ipl = data & (1 << 1);
+}
+
+WRITE8_MEMBER( spc1500_state::psgb_w)
+{
+ int elapsed_time = m_timer->elapsed().as_attoseconds()/ATTOSECONDS_PER_MICROSECOND;
+ if (m_ipl != ((data>>1)&1))
+ {
+ m_ipl = ((data>>1)&1);
+ membank("bank1")->set_entry(m_ipl ? 0 : 1);
+ }
+ m_cass->set_state(BIT(data, 6) ? CASSETTE_SPEAKER_ENABLED : CASSETTE_SPEAKER_MUTED);
+ if (m_motor && !BIT(data, 7) && (elapsed_time > 100))
+ {
+ m_cass->change_state((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_DISABLED ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
+ m_timer->reset();
+ }
+ m_motor = BIT(data, 7);
+}
+
+WRITE8_MEMBER( spc1500_state::portc_w)
+{
+ m_cass->output(BIT(data, 0) ? -1.0 : 1.0);
+ m_centronics->write_strobe(BIT(data, 7));
+ m_double_mode = (!m_p5bit && BIT(data, 5)); // double access I/O mode
+ m_p5bit = BIT(data, 5);
+ m_vdg->set_clock(VDP_CLOCK/(BIT(data, 2) ? 48 : 24));
+}
+
+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;
+}
+
+WRITE8_MEMBER( spc1500_state::crtc_w)
+{
+ static int m_crtc_index;
+ if((offset & 1) == 0)
+ {
+ m_crtc_index = data & 0x1f;
+ m_vdg->address_w(space, 0, data);
+ }
+ else
+ {
+ m_crtc_vreg[m_crtc_index] = data;
+ m_vdg->register_w(space, 0, data);
+ }
+}
+
+READ8_MEMBER( spc1500_state::crtc_r)
+{
+ if (offset & 1)
+ {
+ return m_vdg->register_r(space, 0);
+ }
+ return 0;
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(spc1500_state::timer)
+{
+ if(m_motor_toggle == true)
+ {
+ m_cass->change_state((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_DISABLED ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
+ m_motor_toggle = false;
+ }
+}
+
+void spc1500_state::get_pcg_addr()
+{
+ UINT16 vaddr = 0;
+ if(m_p_videoram[0x7ff] & 0x20) {
+ vaddr = 0x7ff;
+ } else if(m_p_videoram[0x3ff] & 0x20) {
+ vaddr = 0x3ff;
+ } else if(m_p_videoram[0x5ff] & 0x20) {
+ vaddr = 0x5ff;
+ } else if(m_p_videoram[0x1ff] & 0x20) {
+ vaddr = 0x1ff;
+ } else {
+ vaddr = 0x3ff;
+ }
+ m_pcg_char = m_p_videoram[0x1000 + vaddr];
+ m_pcg_attr = m_p_videoram[vaddr];
+ if (m_pcg_char != m_char_change)
+ {
+ m_char_change = m_pcg_char;
+ m_pcg_offset[0] = 0;
+ m_pcg_offset[1] = 0;
+ m_pcg_offset[2] = 0;
+ }
+}
+
+WRITE8_MEMBER( spc1500_state::pcg_w)
+{
+ int reg = (offset>>8)-0x15;
+ get_pcg_addr();
+
+ m_pcgram[m_pcg_char * 8 + m_pcg_offset[reg] + (reg*0x800)] = data;
+ if (m_pcg_offset[reg] == 7)
+ m_pcg_offset[reg] = 0;
+ else
+ m_pcg_offset[reg]++;
+}
+
+READ8_MEMBER( spc1500_state::pcg_r)
+{
+ int reg = (offset>>8)-0x15;
+ UINT8 data = 0;
+ get_pcg_addr();
+ if (reg < 0) reg = 2;
+ if (BIT(m_pcg_attr,5)) // PCG font
+ {
+ data = m_pcgram[m_pcg_char * 8 + m_pcg_offset[reg]+(reg*0x800)];
+ }
+ else // ROM font
+ {
+ data = m_font[(m_crtc_vreg[0x9]==15?0x1000:0)+(m_pcg_char * 16)+m_pcg_offset[reg]];
+ }
+ if (m_pcg_offset[reg]++ > m_crtc_vreg[0x9]-1)
+ m_pcg_offset[reg] = 0;
+ return data;
+}
+
+WRITE8_MEMBER( spc1500_state::priority_w)
+{
+ m_priority = data;
+}
+
+WRITE8_MEMBER( spc1500_state::palet_w)
+{
+ m_palet[(offset>>8)&0x0f] = data;
+ for(int i=1, j=0; i < 0x100; i<<=1, j++)
+ {
+ m_paltbl[j] = (m_palet[0]&i?1:0)|(m_palet[1]&i?2:0)|(m_palet[2]&i?4:0);
+ }
+}
+
+PALETTE_INIT_MEMBER(spc1500_state,spc)
+{
+ palette.set_pen_color(0,rgb_t(0x00,0x00,0x00));
+ palette.set_pen_color(1,rgb_t(0x00,0x00,0xff));
+ palette.set_pen_color(2,rgb_t(0xff,0x00,0x00));
+ palette.set_pen_color(3,rgb_t(0xff,0x00,0xff));
+ palette.set_pen_color(4,rgb_t(0x00,0xff,0x00));
+ palette.set_pen_color(5,rgb_t(0x00,0xff,0xff));
+ palette.set_pen_color(6,rgb_t(0xff,0xff,0x00));
+ palette.set_pen_color(7,rgb_t(0xff,0xff,0xff));
+}
+
+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]);
+}
+
+MC6845_UPDATE_ROW(spc1500_state::crtc_update_row)
+{
+ UINT8 han2;
+ UINT8 *pf;
+ UINT16 hfnt;
+ int i;
+ 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;
+ char hs = (m_crtc_vreg[0x9] < 15 ? 3 : 4);
+ int n = y & (m_crtc_vreg[0x9]);
+ bool ln400 = (hs == 4 && m_crtc_vreg[0x4] > 20);
+ UINT8 *vram = &m_p_videoram[0] + (m_crtc_vreg[12] << 8) + m_crtc_vreg[13];
+ for (i = 0; i < x_count; i++)
+ {
+ UINT8 *pp = &vram[0x2000+((y>>hs)*x_count+(((y)&7)<<11))+i+(((hs==4)&&(y&8))?0x400:0)];
+ UINT8 *pv = &vram[(y>>hs)*x_count + i];
+ UINT8 ascii = *(pv+0x1000);
+ UINT8 attr = *pv;
+ inv = (attr & 0x8 ? true : false);
+ UINT8 color = attr & 0x7;
+ UINT8 pixelb = *(pp+0);
+ UINT8 pixelr = *(pp+0x4000);
+ UINT8 pixelg = *(pp+0x8000);
+ bool nopalet = ((m_palet[0] | m_palet[1] | m_palet[2])==0 || ln400);
+ UINT8 pen = (nopalet ? color : m_paltbl[color]);
+ UINT8 pixelpen = 0;
+ UINT8 pixel = 0;
+ if (hs == 4 && (ascii & 0x80))
+ {
+ UINT16 wpixelb = (pixelb << 8) + (*(pp+1));
+ UINT16 wpixelr = (pixelr << 8) + (*(pp+0x4001));
+ UINT16 wpixelg = (pixelg << 8) + (*(pp+0x8001));
+ if (ascii != 0xfa)
+ {
+ han2 = *(pv+0x1001);
+ h1 = (ascii>>2)&0x1f;
+ h2 = ((ascii<<3)|(han2>>5))&0x1f;
+ h3 = (han2)&0x1f;
+ pf = &m_font[0x2000+(h1 * 32) + (cho[h2] + (h3 != 0) -1) * 16 * 2 * 32 + n];
+ hfnt = (*pf << 8) | (*(pf+16));
+ pf = &m_font[0x4000+(h2 * 32) + (h3 == 0 ? 0 : 1) * 16 * 2 * 32 + n];
+ 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);
+ pf = &m_font[0x6000+(ascii*32) + n];
+ hfnt = (*pf << 8) | (*(pf+16));
+ }
+ hfnt = (inv ? 0xffff - hfnt : hfnt);
+ for (j = 0x8000; j > 0; j>>=1)
+ {
+ pixel = ((wpixelg&j ? 4:0 )|(wpixelr&j? 2:0)|(wpixelb&j ? 1:0));
+ pixelpen = (nopalet ? pixel : m_paltbl[pixel]);
+ *p++ = m_palette->pen(((hfnt & j) || (m_priority & (1<<pixel))) ? pixelpen : pen);
+ }
+ i++;
+ }
+ else if (attr & 0x20)
+ {
+ UINT8 *pa = &m_pcgram[(ascii*(m_crtc_vreg[0x9]+1))+n];
+ UINT8 b = *pa;
+ UINT8 r = *(pa+0x800);
+ UINT8 g = *(pa+0x1000);
+ for (j = 0x80; j > 0; j>>=1)
+ {
+ pixel = ((g & j)?4:0)|((r & j)?2:0)|((b & j)?1:0);
+ pen = (pixel == 7 ? color : pixel);
+ pixel = (pixelg&j ? 4 : 0)|(pixelr&j ? 2:0)|(pixelb&j ? 1:0 );
+ pixelpen = (nopalet ? pixel : m_paltbl[pixel]);
+ *p++ = m_palette->pen((m_priority & (1<<pixel)) ? pixelpen : pen);
+ }
+ }
+ else
+ {
+ UINT8 fnt = m_font[(hs == 4 ? 0x1000 : (attr & (1<<6) ? 0x80<<4 : 0)) + (ascii<<4) + n];
+ if (ascii == 0 && (attr & 0x08) && inv)
+ {
+ fnt = 0xff;
+ }
+ fnt = (inv ? 0xff - fnt : fnt);
+ for (j = 0x80; j > 0; j>>=1)
+ {
+ pixel = ((pixelg&j) ? 4 : 0)|(pixelr&j ? 2:0)|(pixelb&j ? 1:0 );
+ pixelpen = (nopalet ? pixel : m_paltbl[pixel]);
+ if (ascii == 0 && attr == 0 && !inv)
+ *p++ = m_palette->pen(pixelpen);
+ else
+ *p++ = m_palette->pen(((fnt & j) || (m_priority & (1<<pixel))) ? pixelpen : pen);
+ }
+ }
+ }
+}
+
+WRITE8_MEMBER( spc1500_state::double_w)
+{
+ if (m_double_mode)
+ {
+ if (offset < 0x4000) { offset += 0x2000; m_p_videoram[offset] = m_p_videoram[offset + 0x4000] = m_p_videoram[offset + 0x8000] = data; } else
+ if (offset < 0x8000) { offset += 0x2000; m_p_videoram[offset + 0x8000] = m_p_videoram[offset + 0x4000] = data; } else
+ if (offset < 0xc000) { offset += 0x2000; m_p_videoram[offset] = m_p_videoram[offset + 0x8000] = data; } else
+ if (offset < 0x10000){ offset += 0x2000; m_p_videoram[offset] = m_p_videoram[offset - 0x4000] = data; }
+ }
+ else
+ {
+ if (offset < 0x1000) {} else
+ if (offset < 0x1300) { palet_w(space, offset, data); } else
+ if (offset < 0x1400) { priority_w(space, offset, data); } else
+ if (offset < 0x1800) { pcg_w(space, offset, data); } else
+ if (offset < 0x1900) { crtc_w(space, offset, data); } else
+ if (offset < 0x1a00) {} else
+ if (offset < 0x1b00) { m_pio->write(space, offset, data);} else
+ if (offset < 0x1c00) { m_sound->data_w(space, offset, data);} else
+ if (offset < 0x1d00) { m_sound->address_w(space, offset, data);} else
+ 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)
+ {
+ offset &= 0xf7ff;
+ m_p_videoram[offset-0x1800] = m_p_videoram[offset-0x2000] = data;
+ }
+ else
+ m_p_videoram[offset-0x2000] = data;
+ };
+ }
+}
+
+READ8_MEMBER( spc1500_state::io_r)
+{
+ m_double_mode = false;
+ 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
+ if (offset < 0x1a00) { return keyboard_r(space, offset); } else
+ 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 < 0x4000)
+ offset &= 0xf7ff;
+ return m_p_videoram[offset - 0x2000]; }
+ return 0xff;
+}
+
+static ADDRESS_MAP_START( spc1500_double_io , AS_IO, 8, spc1500_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r, double_w)
+ AM_RANGE(0x2000, 0xffff) AM_RAM AM_SHARE("videoram")
+ AM_RANGE(0x0000, 0x17ff) AM_RAM AM_SHARE("pcgram")
+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(0x1000, 0x10ff) AM_WRITE(paletb_w)
+ AM_RANGE(0x1100, 0x11ff) AM_WRITE(paletr_w)
+ AM_RANGE(0x1200, 0x12ff) AM_WRITE(paletg_w)
+ AM_RANGE(0x1300, 0x13ff) AM_WRITE(priority_w)
+ AM_RANGE(0x1400, 0x14ff) AM_READ(pcgg_r)
+ AM_RANGE(0x1500, 0x15ff) AM_READWRITE(pcgb_r, pcgb_w)
+ 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(0x1900, 0x1909) AM_READ(keyboard_r)
+ 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
+
+/* 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_DIPNAME( 0x04, 0x00, "V-Res" )
+ PORT_DIPSETTING( 0x04, "400" )
+ PORT_DIPSETTING( 0x00, "200" )
+ PORT_DIPNAME( 0x08, 0x08, "X1" )
+ PORT_DIPSETTING( 0x08, "Compatible Mode" )
+ PORT_DIPSETTING( 0x00, "Non Compatible" )
+
+ PORT_START("LINE.0")
+ 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(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(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)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') PORT_CHAR(0x03)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') PORT_CHAR(0x01)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHAR(0x16)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+
+ PORT_START("LINE.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Caps") PORT_CODE(KEYCODE_CAPSLOCK)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_CHAR(0x1a)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') PORT_CHAR(0x1d)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') PORT_CHAR(0x16)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') PORT_CHAR(0x13)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR(0x17)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2 @") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
+
+ PORT_START("LINE.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(0x1b)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("` ~") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') PORT_CHAR(0x02)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') PORT_CHAR(0x04)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') PORT_CHAR(0x05)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+
+ 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(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)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') PORT_CHAR(0x06)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
+ 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(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1)
+ 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)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') PORT_CHAR(0x14)
+ 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(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)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') PORT_CHAR(0x08)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') PORT_CHAR(0x19)
+ 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(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3)
+ 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)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') PORT_CHAR(0x15)
+ 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(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4)
+ 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)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') PORT_CHAR(0x09)
+ 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(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(')')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("; :") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') PORT_CHAR(0x0c)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') PORT_CHAR(0x0e)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9 (") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
+
+ PORT_START("JOY")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ 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(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
+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(0x8000, 0xffff) AM_READWRITE_BANK("bank4")
+ADDRESS_MAP_END
+
+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();
+ // configure and intialize banks 1 (read banks)
+ membank("bank1")->configure_entry(0, mem_ipl);
+ membank("bank1")->configure_entry(1, mem_basic);
+ membank("bank1")->configure_entry(2, m_p_ram);
+ membank("bank1")->set_entry(0);
+ m_romsel = 1;
+ static_set_addrmap(m_maincpu, AS_IO, ADDRESS_MAP_NAME(spc1500_double_io));
+ 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);
+ m_timer = timer_alloc(0);
+ m_timer->adjust(attotime::zero);
+}
+
+void spc1500_state::machine_reset()
+{
+ m_motor = false;
+ m_time = machine().scheduler().time();
+ m_double_mode = false;
+ memset(&m_paltbl[0], 1, 8);
+ m_char_count = 0;
+}
+
+READ8_MEMBER(spc1500_state::mc6845_videoram_r)
+{
+ return m_p_videoram[offset];
+}
+
+READ8_MEMBER( spc1500_state::psga_r )
+{
+ UINT8 data = 0;
+ data |= (BIT(m_dipsw->read(),1)<<4) | (BIT(m_dipsw->read(),2)<<7);
+ data |= (m_io_joy->read() & 0x6f);
+ return data;
+}
+
+READ8_MEMBER( spc1500_state::porta_r )
+{
+ UINT8 data = 0x3f;
+ data |= (m_cass->input() > 0.0038) ? 0x80 : 0;
+ data |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) != CASSETTE_STOPPED) && ((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED) ? 0x00 : 0x40;
+ data &= ~((m_centronics_busy == 0)<< 5);
+ return data;
+}
+
+static MACHINE_CONFIG_START( spc1500, spc1500_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz)
+ MCFG_CPU_PROGRAM_MAP(spc1500_mem)
+ //MCFG_CPU_IO_MAP(spc1500_io)
+ MCFG_CPU_IO_MAP(spc1500_double_io)
+ 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_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_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)
+ MCFG_AY8910_PORT_A_READ_CB(READ8(spc1500_state, psga_r))
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(spc1500_state, psgb_w))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(spc1500_state, centronics_busy_w))
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
+
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(spc1000_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_MUTED | CASSETTE_MOTOR_DISABLED)
+
+ MCFG_SOFTWARE_LIST_ADD("cass_list", "spc1500_cass")
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("64K")
+MACHINE_CONFIG_END
+
+/* ROM definition */
+ROM_START( spc1500 )
+ ROM_REGION(0x8000, "ipl", ROMREGION_ERASEFF)
+ 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_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
+
+
+/* Driver */
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1987, spc1500, 0, 0, spc1500, spc1500, driver_device, 0, "Samsung", "SPC-1500", 0 )
diff --git a/src/mame/drivers/spdodgeb.cpp b/src/mame/drivers/spdodgeb.cpp
index 7ff0e8c902e..cff0d7b855a 100644
--- a/src/mame/drivers/spdodgeb.cpp
+++ b/src/mame/drivers/spdodgeb.cpp
@@ -519,7 +519,8 @@ ROM_START( nkdodge )
ROM_LOAD( "22j5-0.33", 0x08000, 0x08000, CRC(c31e264e) SHA1(0828a2094122e3934b784ec9ad7c2b89d91a83bb) )
ROM_REGION( 0x10000, "mcu", 0 ) /* I/O mcu */
- ROM_LOAD( "63701.bin", 0xc000, 0x4000, NO_DUMP ) /* missing */
+ /* Not hooked up yet, we need to add HD63701Y0 support to the hd63701 core (with extra io ports, serial ports, and timers). */
+ ROM_LOAD( "22ja-0.162", 0x0c000, 0x04000, CRC(7162a97b) SHA1(d6d4ee025e73a340428345f08711cd32f9169a8c) )
ROM_REGION( 0x40000, "gfx1", 0 ) /* text */
ROM_LOAD( "tj22j4-0.121", 0x00000, 0x20000, CRC(d2922b3f) SHA1(30ad37f8355c732b545017c2fc56879256b650be) )
@@ -549,7 +550,7 @@ ROM_START( nkdodgeb )
ROM_LOAD( "22j5-0.33", 0x08000, 0x08000, CRC(c31e264e) SHA1(0828a2094122e3934b784ec9ad7c2b89d91a83bb) )
ROM_REGION( 0x10000, "mcu", 0 ) /* I/O mcu */
- ROM_LOAD( "63701.bin", 0xc000, 0x4000, NO_DUMP ) /* missing */
+ ROM_LOAD( "63701.bin", 0xc000, 0x4000, NO_DUMP ) /* missing; does this bootleg board use an i/o mcu at all? */
ROM_REGION( 0x40000, "gfx1", 0 ) /* text */
ROM_LOAD( "10.bin", 0x00000, 0x10000, CRC(442326fd) SHA1(e0e9e1dfdca3edd6e2522f55c191b40b81b8eaff) )
diff --git a/src/mame/drivers/spectra.cpp b/src/mame/drivers/spectra.cpp
index b4da874665f..3bcc3054252 100644
--- a/src/mame/drivers/spectra.cpp
+++ b/src/mame/drivers/spectra.cpp
@@ -191,7 +191,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( spectra_state::outtimer)
{
UINT8 data = m_p_ram[m_out_offs];
UINT8 segments = patterns[data&15] | (BIT(data, 4) ? 0x80 : 0);
- output_set_digit_value(m_out_offs, segments);
+ output().set_digit_value(m_out_offs, segments);
}
else
if (m_out_offs < 0x6f)
diff --git a/src/mame/drivers/speedbal.cpp b/src/mame/drivers/speedbal.cpp
index 2768cd1b7fe..354e0380446 100644
--- a/src/mame/drivers/speedbal.cpp
+++ b/src/mame/drivers/speedbal.cpp
@@ -44,8 +44,8 @@ void speedbal_state::machine_start()
WRITE8_MEMBER(speedbal_state::coincounter_w)
{
- coin_counter_w(machine(), 0, data & 0x80);
- coin_counter_w(machine(), 1, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
flip_screen_set(data & 8); // also changes data & 0x10 at the same time too (flipx and flipy?)
/* unknown: (data & 0x10) and (data & 4) */
}
@@ -94,9 +94,9 @@ WRITE8_MEMBER(speedbal_state::leds_output_block)
// The shift register is 28 bits, led block number is in the upper bits
// and the other 3 bytes in it go to each 7seg led of the current block.
int block = m_leds_shiftreg >> 24 & 7;
- output_set_digit_value(10 * block + 0, ~m_leds_shiftreg >> 0 & 0xff);
- output_set_digit_value(10 * block + 1, ~m_leds_shiftreg >> 8 & 0xff);
- output_set_digit_value(10 * block + 2, ~m_leds_shiftreg >> 16 & 0xff);
+ output().set_digit_value(10 * block + 0, ~m_leds_shiftreg >> 0 & 0xff);
+ output().set_digit_value(10 * block + 1, ~m_leds_shiftreg >> 8 & 0xff);
+ output().set_digit_value(10 * block + 2, ~m_leds_shiftreg >> 16 & 0xff);
}
WRITE8_MEMBER(speedbal_state::leds_start_block)
diff --git a/src/mame/drivers/speglsht.cpp b/src/mame/drivers/speglsht.cpp
index c74718b0f24..74aee52aee1 100644
--- a/src/mame/drivers/speglsht.cpp
+++ b/src/mame/drivers/speglsht.cpp
@@ -126,7 +126,7 @@ public:
required_shared_ptr<UINT8> m_shared;
required_shared_ptr<UINT32> m_framebuffer;
UINT32 m_videoreg;
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
required_shared_ptr<UINT32> m_cop_ram;
DECLARE_READ32_MEMBER(shared_r);
DECLARE_WRITE32_MEMBER(shared_w);
@@ -351,7 +351,7 @@ MACHINE_RESET_MEMBER(speglsht_state,speglsht)
VIDEO_START_MEMBER(speglsht_state,speglsht)
{
- m_bitmap = auto_bitmap_ind16_alloc(machine(), 512, 5122 );
+ m_bitmap = std::make_unique<bitmap_ind16>(512, 5122 );
// VIDEO_START_CALL_MEMBER(st0016);
}
diff --git a/src/mame/drivers/spiders.cpp b/src/mame/drivers/spiders.cpp
index 28b2c2e331c..b6c64842ee1 100644
--- a/src/mame/drivers/spiders.cpp
+++ b/src/mame/drivers/spiders.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Zsolt Vasvari
+// copyright-holders:K.Wilkins,Zsolt Vasvari
/***************************************************************************
Sigma Spiders hardware
diff --git a/src/mame/drivers/splash.cpp b/src/mame/drivers/splash.cpp
index 17e6b6692d5..5b32c10d8c0 100644
--- a/src/mame/drivers/splash.cpp
+++ b/src/mame/drivers/splash.cpp
@@ -79,11 +79,11 @@ WRITE16_MEMBER(splash_state::coin_w)
{
case 0x00: /* Coin Lockouts */
case 0x01:
- coin_lockout_w( machine(), (offset >> 3) & 0x01, (data & 0x0400) >> 8);
+ machine().bookkeeping().coin_lockout_w((offset >> 3) & 0x01, (data & 0x0400) >> 8);
break;
case 0x02: /* Coin Counters */
case 0x03:
- coin_counter_w( machine(), (offset >> 3) & 0x01, (data & 0x0100) >> 8);
+ machine().bookkeeping().coin_counter_w((offset >> 3) & 0x01, (data & 0x0100) >> 8);
break;
}
}
diff --git a/src/mame/drivers/splus.cpp b/src/mame/drivers/splus.cpp
index 7075b8c3372..195303ac413 100644
--- a/src/mame/drivers/splus.cpp
+++ b/src/mame/drivers/splus.cpp
@@ -247,14 +247,14 @@ WRITE8_MEMBER(splus_state::splus_serial_w)
}
m_bank10 = data;
- output_set_value("s_bnk10",(data >> 0) & 1); // Coin Drop Meter
- output_set_value("s_bnk11",(data >> 1) & 1); // Coin Out Meter
- output_set_value("s_bnk12",(data >> 2) & 1); // Coin In Meter
- output_set_value("s_bnk13",(data >> 3) & 1); // B Switch for SDS
- output_set_value("s_bnk14",(data >> 4) & 1); // Hopper Drive 2
- output_set_value("s_bnk15",(data >> 5) & 1); // Stepper Motor Direction
- output_set_value("s_bnk16",(data >> 6) & 1); // Mechanical Bell
- output_set_value("s_bnk17",(data >> 7) & 1); // Cancelled Credits Meter
+ output().set_value("s_bnk10",(data >> 0) & 1); // Coin Drop Meter
+ output().set_value("s_bnk11",(data >> 1) & 1); // Coin Out Meter
+ output().set_value("s_bnk12",(data >> 2) & 1); // Coin In Meter
+ output().set_value("s_bnk13",(data >> 3) & 1); // B Switch for SDS
+ output().set_value("s_bnk14",(data >> 4) & 1); // Hopper Drive 2
+ output().set_value("s_bnk15",(data >> 5) & 1); // Stepper Motor Direction
+ output().set_value("s_bnk16",(data >> 6) & 1); // Mechanical Bell
+ output().set_value("s_bnk17",(data >> 7) & 1); // Cancelled Credits Meter
break;
case 0x01: // Bank 20
if (((m_bank20 >> 5) & 1) != ((data >> 5) & 1)) {
@@ -274,14 +274,14 @@ WRITE8_MEMBER(splus_state::splus_serial_w)
}
m_bank20 = data;
- output_set_value("s_bnk20",(data >> 0) & 1); // Payline Lamp 3
- output_set_value("s_bnk21",(data >> 1) & 1); // Payline Lamp 4
- output_set_value("s_bnk22",(data >> 2) & 1); // Payline Lamp 5
- output_set_value("s_bnk23",(data >> 3) & 1); // Payline Lamp 6
- output_set_value("s_bnk24",(data >> 4) & 1); // Door Optics Transmitter
- output_set_value("s_bnk25",(data >> 5) & 1); // Games Played Meter
- output_set_value("s_bnk26",(data >> 6) & 1); // Bill Acceptor Enable
- output_set_value("s_bnk27",(data >> 7) & 1); // Jackpots Meter
+ output().set_value("s_bnk20",(data >> 0) & 1); // Payline Lamp 3
+ output().set_value("s_bnk21",(data >> 1) & 1); // Payline Lamp 4
+ output().set_value("s_bnk22",(data >> 2) & 1); // Payline Lamp 5
+ output().set_value("s_bnk23",(data >> 3) & 1); // Payline Lamp 6
+ output().set_value("s_bnk24",(data >> 4) & 1); // Door Optics Transmitter
+ output().set_value("s_bnk25",(data >> 5) & 1); // Games Played Meter
+ output().set_value("s_bnk26",(data >> 6) & 1); // Bill Acceptor Enable
+ output().set_value("s_bnk27",(data >> 7) & 1); // Jackpots Meter
break;
case 0x02: // Bank 30
if (((m_bank30 >> 2) & 1) != ((data >> 2) & 1)) {
@@ -306,14 +306,14 @@ WRITE8_MEMBER(splus_state::splus_serial_w)
}
m_bank30 = data;
- output_set_value("s_bnk30",(data >> 0) & 1); // Change Candle Lamp Bottom
- output_set_value("s_bnk31",(data >> 1) & 1); // Change Candle Lamp Top
- output_set_value("s_bnk32",(data >> 2) & 1); // Handle Release
- output_set_value("s_bnk33",(data >> 3) & 1); // Diverter
- output_set_value("s_bnk34",(data >> 4) & 1); // Coin Lockout
- output_set_value("s_bnk35",(data >> 5) & 1); // Hopper Drive 1
- output_set_value("s_bnk36",(data >> 6) & 1); // Payline Lamp 1
- output_set_value("s_bnk37",(data >> 7) & 1); // Payline Lamp 2
+ output().set_value("s_bnk30",(data >> 0) & 1); // Change Candle Lamp Bottom
+ output().set_value("s_bnk31",(data >> 1) & 1); // Change Candle Lamp Top
+ output().set_value("s_bnk32",(data >> 2) & 1); // Handle Release
+ output().set_value("s_bnk33",(data >> 3) & 1); // Diverter
+ output().set_value("s_bnk34",(data >> 4) & 1); // Coin Lockout
+ output().set_value("s_bnk35",(data >> 5) & 1); // Hopper Drive 1
+ output().set_value("s_bnk36",(data >> 6) & 1); // Payline Lamp 1
+ output().set_value("s_bnk37",(data >> 7) & 1); // Payline Lamp 2
break;
case 0x04: // Bank 40
if (((m_bank40 >> 0) & 1) != ((data >> 0) & 1)) {
@@ -328,14 +328,14 @@ WRITE8_MEMBER(splus_state::splus_serial_w)
}
m_bank40 = data;
- output_set_value("s_bnk40",(data >> 0) & 1); // Stepper Motor Power Supply
- output_set_value("s_bnk41",(data >> 1) & 1); // Insert Coin Lamp
- output_set_value("s_bnk42",(data >> 2) & 1); // Coin Accepted Lamp
- output_set_value("s_bnk43",(data >> 3) & 1); // Jackpot/Hand Pay Lamp
- output_set_value("s_bnk44",(data >> 4) & 1); // Play Max Credits Lamp
- output_set_value("s_bnk45",(data >> 5) & 1); // Bet One Credit Lamp
- output_set_value("s_bnk46",(data >> 6) & 1); // Cashout Credit Lamp
- output_set_value("s_bnk47",(data >> 7) & 1); // Spin Button Lamp
+ output().set_value("s_bnk40",(data >> 0) & 1); // Stepper Motor Power Supply
+ output().set_value("s_bnk41",(data >> 1) & 1); // Insert Coin Lamp
+ output().set_value("s_bnk42",(data >> 2) & 1); // Coin Accepted Lamp
+ output().set_value("s_bnk43",(data >> 3) & 1); // Jackpot/Hand Pay Lamp
+ output().set_value("s_bnk44",(data >> 4) & 1); // Play Max Credits Lamp
+ output().set_value("s_bnk45",(data >> 5) & 1); // Bet One Credit Lamp
+ output().set_value("s_bnk46",(data >> 6) & 1); // Cashout Credit Lamp
+ output().set_value("s_bnk47",(data >> 7) & 1); // Spin Button Lamp
break;
}
}
@@ -352,7 +352,7 @@ WRITE8_MEMBER(splus_state::splus_7seg_w)
// Need to add ~m_io_port[1]-1 to seg value
if (seg < 0x0a && (m_io_port[1] & 0xe0) == 0xe0)
- output_set_digit_value(seg, ls48_map[val]);
+ output().set_digit_value(seg, ls48_map[val]);
}
WRITE8_MEMBER(splus_state::splus_duart_w)
diff --git a/src/mame/drivers/spoker.cpp b/src/mame/drivers/spoker.cpp
index 293454d442b..1c652c9717e 100644
--- a/src/mame/drivers/spoker.cpp
+++ b/src/mame/drivers/spoker.cpp
@@ -154,12 +154,12 @@ WRITE8_MEMBER(spoker_state::nmi_and_coins_w)
// popmessage("%02x",data);
}
- coin_counter_w(machine(), 0, data & 0x01); // coin_a
- coin_counter_w(machine(), 1, data & 0x04); // coin_c
- coin_counter_w(machine(), 2, data & 0x08); // key in
- coin_counter_w(machine(), 3, data & 0x10); // coin out mech
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); // coin_a
+ machine().bookkeeping().coin_counter_w(1, data & 0x04); // coin_c
+ machine().bookkeeping().coin_counter_w(2, data & 0x08); // key in
+ machine().bookkeeping().coin_counter_w(3, data & 0x10); // coin out mech
- set_led_status(machine(), 6, data & 0x40); // led for coin out / hopper active
+ output().set_led_value(6, data & 0x40); // led for coin out / hopper active
if(((m_nmi_ack & 0x80) == 0) && data & 0x80)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
@@ -172,8 +172,8 @@ WRITE8_MEMBER(spoker_state::nmi_and_coins_w)
WRITE8_MEMBER(spoker_state::video_and_leds_w)
{
- set_led_status(machine(), 4, data & 0x01); // start?
- set_led_status(machine(), 5, data & 0x04); // l_bet?
+ output().set_led_value(4, data & 0x01); // start?
+ output().set_led_value(5, data & 0x04); // l_bet?
m_video_enable = data & 0x40;
m_hopper = (~data)& 0x80;
@@ -184,10 +184,10 @@ WRITE8_MEMBER(spoker_state::video_and_leds_w)
WRITE8_MEMBER(spoker_state::leds_w)
{
- set_led_status(machine(), 0, data & 0x01); // stop_1
- set_led_status(machine(), 1, data & 0x02); // stop_2
- set_led_status(machine(), 2, data & 0x04); // stop_3
- set_led_status(machine(), 3, data & 0x08); // stop
+ output().set_led_value(0, data & 0x01); // stop_1
+ output().set_led_value(1, data & 0x02); // stop_2
+ output().set_led_value(2, data & 0x04); // stop_3
+ output().set_led_value(3, data & 0x08); // stop
// data & 0x10?
m_out[2] = data;
@@ -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/spool99.cpp b/src/mame/drivers/spool99.cpp
index de393b3b619..7b331e14ccd 100644
--- a/src/mame/drivers/spool99.cpp
+++ b/src/mame/drivers/spool99.cpp
@@ -454,7 +454,7 @@ ROM_END
DRIVER_INIT_MEMBER(spool99_state,spool99)
{
UINT8 *ROM = memregion("maincpu")->base();
-// vram = auto_alloc_array(machine(), UINT8, 0x2000);
+// vram = std::make_unique<UINT8[]>(0x2000);
memcpy(m_main, ROM, 0x100);
}
diff --git a/src/mame/drivers/sprint2.cpp b/src/mame/drivers/sprint2.cpp
index 18287582da9..90aa56c3d74 100644
--- a/src/mame/drivers/sprint2.cpp
+++ b/src/mame/drivers/sprint2.cpp
@@ -100,8 +100,8 @@ INTERRUPT_GEN_MEMBER(sprint2_state::sprint2)
case 4: m_gear[i] = 3; break;
case 8: m_gear[i] = 4; break;
}
- output_set_value("P1gear", m_gear[0]);
- output_set_value("P2gear", m_gear[1]);
+ output().set_value("P1gear", m_gear[0]);
+ output().set_value("P2gear", m_gear[1]);
}
}
@@ -239,20 +239,20 @@ WRITE8_MEMBER(sprint2_state::sprint2_skid2_w)
WRITE8_MEMBER(sprint2_state::sprint2_lamp1_w)
{
- set_led_status(machine(), 0, offset & 1);
+ output().set_led_value(0, offset & 1);
}
WRITE8_MEMBER(sprint2_state::sprint2_lamp2_w)
{
- set_led_status(machine(), 1, offset & 1);
+ output().set_led_value(1, offset & 1);
}
WRITE8_MEMBER(sprint2_state::dominos4_lamp3_w)
{
- set_led_status(machine(), 2, offset & 1);
+ output().set_led_value(2, offset & 1);
}
WRITE8_MEMBER(sprint2_state::dominos4_lamp4_w)
{
- set_led_status(machine(), 3, offset & 1);
+ output().set_led_value(3, offset & 1);
}
static ADDRESS_MAP_START( sprint2_map, AS_PROGRAM, 8, sprint2_state )
diff --git a/src/mame/drivers/sprint4.cpp b/src/mame/drivers/sprint4.cpp
index 5dd951e6841..083fe721afa 100644
--- a/src/mame/drivers/sprint4.cpp
+++ b/src/mame/drivers/sprint4.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -186,14 +186,14 @@ WRITE8_MEMBER(sprint4_state::sprint4_da_latch_w)
WRITE8_MEMBER(sprint4_state::sprint4_lamp_w)
{
- set_led_status(machine(), (offset >> 1) & 3, offset & 1);
+ output().set_led_value((offset >> 1) & 3, offset & 1);
}
#ifdef UNUSED_FUNCTION
WRITE8_MEMBER(sprint4_state::sprint4_lockout_w)
{
- coin_lockout_global_w(machine(), ~offset & 1);
+ machine().bookkeeping().coin_lockout_global_w(~offset & 1);
}
#endif
@@ -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/sprint8.cpp b/src/mame/drivers/sprint8.cpp
index d0827739fb7..0ad68f05dc2 100644
--- a/src/mame/drivers/sprint8.cpp
+++ b/src/mame/drivers/sprint8.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -85,7 +85,7 @@ READ8_MEMBER(sprint8_state::sprint8_input_r)
WRITE8_MEMBER(sprint8_state::sprint8_lockout_w)
{
- coin_lockout_w(machine(), offset, !(data & 1));
+ machine().bookkeeping().coin_lockout_w(offset, !(data & 1));
}
diff --git a/src/mame/drivers/spy.cpp b/src/mame/drivers/spy.cpp
index a37a42d0bce..0806c904736 100644
--- a/src/mame/drivers/spy.cpp
+++ b/src/mame/drivers/spy.cpp
@@ -284,8 +284,8 @@ WRITE8_MEMBER(spy_state::spy_3f90_w)
********************************************************************/
/* bits 0/1 = coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
diff --git a/src/mame/drivers/squale.cpp b/src/mame/drivers/squale.cpp
index 279cca5b945..81f215526b4 100644
--- a/src/mame/drivers/squale.cpp
+++ b/src/mame/drivers/squale.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Miodrag Milanovic, Jean-François DEL NERO
+// copyright-holders:Miodrag Milanovic, Jean-Francois DEL NERO
/***************************************************************************
Apollo 7 Squale
@@ -61,10 +61,13 @@
#include "machine/6850acia.h"
#include "sound/ay8910.h"
#include "machine/wd_fdc.h"
+#include "bus/generic/carts.h"
+
#include "softlist.h"
#define MAIN_CLOCK XTAL_14MHz
#define AY_CLOCK MAIN_CLOCK / 8 /* 1.75 Mhz */
+#define VIDEO_CLOCK MAIN_CLOCK / 8 /* 1.75 Mhz */
#define CPU_CLOCK MAIN_CLOCK / 4 /* 3.50 Mhz */
class squale_state : public driver_device
@@ -80,10 +83,14 @@ public:
, m_maincpu(*this, "maincpu")
, m_fdc(*this, "wd1770")
, m_floppy0(*this, "wd1770:0")
+ , m_floppy1(*this, "wd1770:1")
, m_floppy(NULL)
+ , m_cart(*this, "cartslot")
{ }
DECLARE_WRITE8_MEMBER(ctrl_w);
+ DECLARE_READ8_MEMBER(video_ram_read_reg1);
+ DECLARE_READ8_MEMBER(video_ram_read_reg2);
DECLARE_WRITE8_MEMBER(fdc_sel0_w);
DECLARE_READ8_MEMBER(fdc_sel0_r);
DECLARE_WRITE8_MEMBER(fdc_sel1_w);
@@ -101,9 +108,13 @@ public:
DECLARE_READ8_MEMBER(ay_portb_r);
DECLARE_WRITE8_MEMBER(ay_porta_w);
DECLARE_WRITE8_MEMBER(ay_portb_w);
- DECLARE_WRITE_LINE_MEMBER(pia_u75_ca2_w);
+
+ DECLARE_WRITE_LINE_MEMBER(pia_u72_ca2_w);
+ DECLARE_WRITE_LINE_MEMBER(pia_u72_cb2_w);
+
DECLARE_WRITE_LINE_MEMBER(pia_u75_cb2_w);
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER( squale_cart );
virtual void machine_start() override;
virtual void machine_reset() override;
@@ -111,6 +122,10 @@ public:
UINT8 fdc_sel0;
UINT8 fdc_sel1;
+ UINT8 cart_addr_counter_inc_ck;
+ UINT8 cart_addr_counter_reset;
+ UINT16 cart_addr_counter;
+
TIMER_DEVICE_CALLBACK_MEMBER(squale_scanline);
private:
@@ -122,12 +137,16 @@ private:
required_device<cpu_device> m_maincpu;
required_device<wd1770_t> m_fdc;
required_device<floppy_connector> m_floppy0;
+ required_device<floppy_connector> m_floppy1;
floppy_image_device *m_floppy;
+ required_device<generic_slot_device> m_cart;
+
+ memory_region *m_cart_rom;
};
-/*************************
-* Misc Handlers *
-*************************/
+/*****************************************
+* Machine control register I/O Handlers *
+******************************************/
WRITE8_MEMBER( squale_state::ctrl_w )
{
@@ -137,25 +156,135 @@ WRITE8_MEMBER( squale_state::ctrl_w )
membank("rom_bank")->set_entry(data >> 7);
- m_ef9365->static_set_color_filler(data & 0xF);
+ m_ef9365->set_color_filler(data & 0xF);
+}
+
+READ8_MEMBER( squale_state::video_ram_read_reg1 )
+{
+ UINT8 data;
+ int p;
+
+ //D7 D0
+ //I2R2G2B2 I3R3G3B3
+
+ data = 0x00;
+
+ for(p = 0; p < 4 ; p++)
+ {
+ if( m_ef9365->get_last_readback_word(p, 0) & 8 )
+ {
+ data |= (0x01 << p);
+ }
+ }
+
+ data = data << 4;
+
+ for(p = 0; p < 4 ; p++)
+ {
+ if( m_ef9365->get_last_readback_word(p, 0) & 4 )
+ {
+ data |= (0x01 << p);
+ }
+ }
+
+ #ifdef DBGMODE
+ printf("read video_ram_read_reg1 reg : 0x%X\n",data);
+ #endif
+
+ return data;
+}
+
+READ8_MEMBER( squale_state::video_ram_read_reg2 )
+{
+ UINT8 data;
+ int p;
+
+ //D7 D0
+ //I0R0G0B0 I1R1G1B1
+
+ data = 0x00;
+
+ for(p = 0; p < 4 ; p++)
+ {
+ if( m_ef9365->get_last_readback_word(p, 0) & 2 )
+ {
+ data |= (0x01 << p);
+ }
+ }
+
+ data = data << 4;
+
+ for(p = 0; p < 4 ; p++)
+ {
+ if( m_ef9365->get_last_readback_word(p, 0) & 1 )
+ {
+ data |= (0x01 << p);
+ }
+ }
+
+ #ifdef DBGMODE
+ printf("read video_ram_read_reg2 reg : 0x%X\n",data);
+ #endif
+
+ return data;
}
+/**********************************
+* Floppy controller I/O Handlers *
+***********************************/
+
WRITE8_MEMBER( squale_state::fdc_sel0_w )
{
+ floppy_image_device *floppy = 0;
+
#ifdef DBGMODE
- printf("write fdc_sel0_w reg : 0x%X\n",data);
+ printf("%s: write fdc_sel0_w reg : 0x%X\n",machine().describe_context(),data);
#endif
fdc_sel0 = data;
- // drive select
- m_floppy = NULL;
+ if( BIT(data, 3) ) // Drive 0
+ {
+ floppy = m_floppy0->get_device();
+ if(!floppy)
+ fdc_sel0 = fdc_sel0 & ~(0x08);
+ else
+ {
+ if(!floppy->dskchg_r())
+ {
+ fdc_sel0 = fdc_sel0 & ~(0x08);
+ }
+ }
+ }
+
+ if( BIT(data, 2) ) // Drive 1
+ {
+ floppy = m_floppy1->get_device();
+ if(!floppy)
+ fdc_sel0 = fdc_sel0 & ~(0x04);
+ else
+ {
+ if(!floppy->dskchg_r())
+ {
+ fdc_sel0 = fdc_sel0 & ~(0x04);
+ }
+ }
+ }
+
+ if(floppy)
+ {
+ floppy->ss_w(BIT(data, 4)); // Side selector bit
+ }
+
+ //m_fdc->mon_w(BIT(data, 3));
+ m_fdc->dden_w(BIT(data, 5)); // Double / Single density selector bit
+ m_fdc->set_floppy(floppy);
}
WRITE8_MEMBER( squale_state::fdc_sel1_w )
{
#ifdef DBGMODE
- printf("write fdc_sel1_w reg : 0x%X\n",data);
+ printf("%s: write fdc_sel1_w reg : 0x%X\n",machine().describe_context(),data);
#endif
fdc_sel1 = data;
@@ -163,70 +292,78 @@ WRITE8_MEMBER( squale_state::fdc_sel1_w )
READ8_MEMBER( squale_state::fdc_sel0_r )
{
- UINT8 data = 0xFF;
+ UINT8 data;
+
+ data = fdc_sel0;
#ifdef DBGMODE
- printf("%s: read fdc_sel0_r\n",machine().describe_context());
+ printf("%s: read fdc_sel0_r 0x%.2X\n",machine().describe_context(),data);
#endif
- data = 0x00;
+
return data;
}
READ8_MEMBER( squale_state::fdc_sel1_r )
{
- UINT8 data = 0xFF;
+ UINT8 data;
+
+ data = fdc_sel1;
#ifdef DBGMODE
- printf("%s: read fdc_sel1_r\n",machine().describe_context());
+ printf("%s: read fdc_sel1_r 0x%.2X\n",machine().describe_context(),data);
#endif
- data = 0x00;
+
return data;
}
-READ8_MEMBER( squale_state::pia_u72_porta_r )
-{
- UINT8 data = 0xFF;
+/**********************************
+* Keyboard I/O Handlers *
+***********************************/
+WRITE8_MEMBER( squale_state::pia_u75_porta_w )
+{
+ // U75 PIA Port A : Keyboard rows output
#ifdef DBGMODE
- printf("%s: read pia_u72_porta_r\n",machine().describe_context());
+ printf("%s: write pia_u75_porta_w : 0x%.2X\n",machine().describe_context(),data);
#endif
-
- return data;
+ keyboard_line = data;
+ return;
}
READ8_MEMBER( squale_state::pia_u75_porta_r )
{
- UINT8 data = 0xAA;
+ // U75 PIA Port A : Keyboard rows output
+ UINT8 data;
+
#ifdef DBGMODE
printf("%s: read pia_u75_porta_r\n",machine().describe_context());
#endif
- data = keyboard_line;
- return data;
-}
-READ8_MEMBER( squale_state::pia_u72_portb_r )
-{
- UINT8 data = 0xFF;
- #ifdef DBGMODE
- printf("%s: read pia_u72_portb_r\n",machine().describe_context());
- #endif
+ data = keyboard_line;
return data;
}
READ8_MEMBER( squale_state::pia_u75_portb_r )
{
- char kbdrow[6];
+ // U75 PIA Port B : Keyboard column input
+ char kbdrow[3];
+ unsigned char kbdrow_state;
UINT8 data = 0xFF;
+ kbdrow[0] = 'X';
+ kbdrow[1] = '0';
+ kbdrow[2] = 0;
+
for (int i = 0; i < 8; i++)
{
- sprintf(kbdrow,"X%X",i);
+ kbdrow[1] = '0' + i;
+ kbdrow_state = ioport(kbdrow)->read();
for( int j = 0; j < 8 ; j++)
{
if( !(keyboard_line & (0x01<<j)) )
{
- if ( ioport(kbdrow)->read() & (0x01<<j) )
+ if ( kbdrow_state & (0x01<<j) )
{
data &= ~( 0x01 << i);
}
@@ -241,41 +378,79 @@ READ8_MEMBER( squale_state::pia_u75_portb_r )
return data;
}
-WRITE8_MEMBER( squale_state::pia_u72_porta_w )
+WRITE8_MEMBER( squale_state::pia_u75_portb_w )
{
+ // U75 PIA Port B : Keyboard column input
#ifdef DBGMODE
- printf("%s: write pia_u72_porta_w : 0x%.2X\n",machine().describe_context(),data);
+ printf("%s: write pia_u75_portb_w : 0x%.2X\n",machine().describe_context(),data);
#endif
return;
}
-WRITE8_MEMBER( squale_state::pia_u75_porta_w )
-{
- #ifdef DBGMODE
- printf("%s: write pia_u75_porta_w : 0x%.2X\n",machine().describe_context(),data);
- #endif
- keyboard_line = data;
- return;
-}
+/***********************************
+* AY-8910 I/O Handlers *
+* (Joysticks, Ctrl/Shift keys,...) *
+************************************/
-WRITE8_MEMBER( squale_state::pia_u72_portb_w )
+READ8_MEMBER( squale_state::ay_portb_r )
{
+ // AY-8910 Port B : Joystick 2, Shift, Shift Lock, Ctrl Keys
+ // B7 : Joystick 2 - Fire
+ // B6 : Keyboard - Control
+ // B5 : Keyboard - Shift
+ // B4 : Keyboard - Shift Lock
+ // B3 : Joystick 2 - Up
+ // B2 : Joystick 2 - Down
+ // B1 : Joystick 2 - Left
+ // B0 : Joystick 2 - Right
+
+ UINT8 data;
+
+ data = ( ioport("ay_keys")->read() ) & 0x70;
+ data |= ( ioport("ay_joy_2")->read() ) & 0x8F;
+
#ifdef DBGMODE
- printf("%s: write pia_u72_portb_w : 0x%.2X\n",machine().describe_context(),data);
+ printf("%s: read ay_portb_r : 0x%.2X\n",machine().describe_context(),data);
#endif
- return;
+
+ return data;
}
-WRITE8_MEMBER( squale_state::pia_u75_portb_w )
+READ8_MEMBER( squale_state::ay_porta_r )
{
+ // AY-8910 Port A : Joystick 1, light pen
+ // B7 : Joystick 1 - Fire
+ // B6 : -
+ // B5 : Light pen Int.
+ // B4 : -
+ // B3 : Joystick 1 - Up
+ // B2 : Joystick 1 - Down
+ // B1 : Joystick 1 - Left
+ // B0 : Joystick 1 - Right
+
+ UINT8 data;
+
#ifdef DBGMODE
- printf("%s: write pia_u75_portb_w : 0x%.2X\n",machine().describe_context(),data);
+ printf("%s: read ay_porta_r\n",machine().describe_context());
#endif
- return;
+
+ data = ( ioport("ay_joy_2")->read() ) & 0x8F;
+
+ return data;
}
WRITE8_MEMBER( squale_state::ay_porta_w )
{
+ // AY-8910 Port A : Joystick 1, light pen
+ // B7 : Joystick 1 - Fire
+ // B6 : -
+ // B5 : Light pen Int.
+ // B4 : -
+ // B3 : Joystick 1 - Up
+ // B2 : Joystick 1 - Down
+ // B1 : Joystick 1 - Left
+ // B0 : Joystick 1 - Right
+
#ifdef DBGMODE
printf("%s: write ay_porta_w : 0x%.2X\n",machine().describe_context(),data);
#endif
@@ -284,48 +459,151 @@ WRITE8_MEMBER( squale_state::ay_porta_w )
WRITE8_MEMBER( squale_state::ay_portb_w )
{
+ // AY-8910 Port B : Joystick 2, Shift, Shift Lock, Ctrl Keys
+ // B7 : Joystick 2 - Fire
+ // B6 : Keyboard - Control
+ // B5 : Keyboard - Shift
+ // B4 : Keyboard - Shift Lock
+ // B3 : Joystick 2 - Up
+ // B2 : Joystick 2 - Down
+ // B1 : Joystick 2 - Left
+ // B0 : Joystick 2 - Right
+
#ifdef DBGMODE
printf("%s: write ay_portb_w : 0x%.2X\n",machine().describe_context(),data);
#endif
return;
}
-READ8_MEMBER( squale_state::ay_porta_r )
+/***********************************
+* Cartridge I/O Handlers *
+************************************/
+
+READ8_MEMBER( squale_state::pia_u72_porta_r )
{
- UINT8 data = 0xFF;
+ // U72 PIA Port A : Cartridge data bus
+ UINT8 data;
+
#ifdef DBGMODE
- printf("%s: read ay_porta_r\n",machine().describe_context());
+ printf("%s: read pia_u72_porta_r\n",machine().describe_context());
#endif
+
+ if( m_cart_rom && m_cart_rom->bytes() )
+ data = m_cart_rom->u8( cart_addr_counter % m_cart_rom->bytes() );
+ else
+ data = 0xFF;
+
return data;
}
-READ8_MEMBER( squale_state::ay_portb_r )
+WRITE8_MEMBER( squale_state::pia_u72_porta_w )
{
- UINT8 data = 0xFF;
+ // U72 PIA Port A : Cartridge data bus
- data = ioport("ay_keys")->read();
+ #ifdef DBGMODE
+ printf("%s: write pia_u72_porta_w : 0x%.2X\n",machine().describe_context(),data);
+ #endif
+
+ return;
+}
+
+WRITE_LINE_MEMBER( squale_state::pia_u72_ca2_w )
+{
+ // U72 PIA CA2 : Cartridge address control
#ifdef DBGMODE
- printf("%s: read ay_portb_r : 0x%.2X\n",machine().describe_context(),data);
+ printf("%s: U72 PIA Port CA2 Set to %2x\n", machine().describe_context(),state);
+ #endif
+
+ if( state )
+ {
+ cart_addr_counter_inc_ck = 1;
+ }
+ else
+ {
+ // If not in reset state, increment the address counter (U73 & U74) at the falling edge of ca2.
+ if( cart_addr_counter_inc_ck && !cart_addr_counter_reset )
+ {
+ cart_addr_counter++;
+ }
+
+ cart_addr_counter_inc_ck = 0;
+ }
+}
+
+WRITE_LINE_MEMBER( squale_state::pia_u75_cb2_w )
+{
+ // U75 PIA CB2 : Cartridge address reset
+
+ #ifdef DBGMODE
+ printf("%s: U75 PIA Port CB2 Set to %2x\n", machine().describe_context(),state);
+ #endif
+
+ if( state )
+ {
+ // Cartridge address counter (U73 & U74) reset to 0
+ cart_addr_counter_reset = 1;
+ cart_addr_counter = 0x0000;
+ }
+ else
+ {
+ cart_addr_counter_reset = 0;
+ }
+}
+
+/**********************************
+* Printer I/O Handlers *
+***********************************/
+
+READ8_MEMBER( squale_state::pia_u72_portb_r )
+{
+ // U72 PIA Port B : Printer data bus
+
+ UINT8 data = 0xFF;
+
+ #ifdef DBGMODE
+ printf("%s: read pia_u72_portb_r\n",machine().describe_context());
#endif
return data;
}
-WRITE_LINE_MEMBER(squale_state::pia_u75_ca2_w)
+WRITE8_MEMBER( squale_state::pia_u72_portb_w )
{
+ // U72 PIA Port B : Printer data bus
+
#ifdef DBGMODE
- printf("%s: U75 PIA Port CA2 Set to %2x\n", machine().describe_context(),state);
+ printf("%s: write pia_u72_portb_w : 0x%.2X\n",machine().describe_context(),data);
#endif
+
+ return;
}
-WRITE_LINE_MEMBER(squale_state::pia_u75_cb2_w)
+WRITE_LINE_MEMBER( squale_state::pia_u72_cb2_w )
{
+ // U72 PIA CB2 : Printer Data Strobe line
+
#ifdef DBGMODE
- printf("%s: U75 PIA Port CB2 Set to %2x\n", machine().describe_context(),state);
+ printf("%s: U72 PIA Port CB2 Set to %2x\n", machine().describe_context(),state);
#endif
}
+DEVICE_IMAGE_LOAD_MEMBER( squale_state, squale_cart )
+{
+ UINT32 size = m_cart->common_get_size("rom");
+
+ if ( ! size || size > 0x10000)
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge 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;
+}
+
TIMER_DEVICE_CALLBACK_MEMBER( squale_state::squale_scanline )
{
m_ef9365->update_scanline((UINT16)param);
@@ -336,6 +614,8 @@ static ADDRESS_MAP_START(squale_mem, AS_PROGRAM, 8, squale_state)
AM_RANGE(0x0000,0xefff) AM_RAM
AM_RANGE(0xf000,0xf00f) AM_DEVREADWRITE("ef9365", ef9365_device, data_r, data_w)
AM_RANGE(0xf010,0xf01f) AM_WRITE( ctrl_w )
+ AM_RANGE(0xf020,0xf02f) AM_READ( video_ram_read_reg1 )
+ AM_RANGE(0xf030,0xf03f) AM_READ( video_ram_read_reg2 )
AM_RANGE(0xf044,0xf047) AM_DEVREADWRITE("pia_u75", pia6821_device, read, write)
AM_RANGE(0xf048,0xf04b) AM_DEVREADWRITE("pia_u72", pia6821_device, read, write)
AM_RANGE(0xf050,0xf05f) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w)
@@ -437,20 +717,41 @@ static INPUT_PORTS_START( squale )
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift Lck") PORT_CODE(KEYCODE_RSHIFT)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
+
+ PORT_START("ay_joy_1")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(JOYCODE_Y_UP_SWITCH) PORT_PLAYER(1)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(JOYCODE_Y_DOWN_SWITCH) PORT_PLAYER(1)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(JOYCODE_X_LEFT_SWITCH) PORT_PLAYER(1)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(JOYCODE_X_RIGHT_SWITCH) PORT_PLAYER(1)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(1)
+
+ PORT_START("ay_joy_2")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(JOYCODE_Y_UP_SWITCH) PORT_PLAYER(2)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(JOYCODE_Y_DOWN_SWITCH) PORT_PLAYER(2)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(JOYCODE_X_LEFT_SWITCH) PORT_PLAYER(2)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(JOYCODE_X_RIGHT_SWITCH) PORT_PLAYER(2)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(2)
+
INPUT_PORTS_END
static SLOT_INTERFACE_START( squale_floppies )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
+ SLOT_INTERFACE( "525qd", FLOPPY_525_QD )
SLOT_INTERFACE_END
void squale_state::machine_start()
{
int i;
+ std::string region_tag;
+
+ m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
fdc_sel0 = 0x00;
fdc_sel1 = 0x00;
m_floppy = NULL;
+ cart_addr_counter_reset = 0;
+ cart_addr_counter = 0x0000;
+
membank("rom_bank")->configure_entry(0, memregion("maincpu")->base() + 0x100);
membank("rom_bank")->configure_entry(1, memregion("maincpu")->base() + 0x1100);
membank("rom_bank")->set_entry( 0 );
@@ -458,12 +759,12 @@ void squale_state::machine_start()
// Generate Squale hardware palette
for(i=0;i<8;i++)
{
- m_ef9365->static_set_color_entry(i,(((i&4)>>2)^1) * 255,(((i&2)>>1)^1) * 255, ((i&1)^1) * 255 );
+ m_ef9365->set_color_entry(i,(((i&4)>>2)^1) * 255,(((i&2)>>1)^1) * 255, ((i&1)^1) * 255 );
}
for(i=0;i<8;i++)
{
- m_ef9365->static_set_color_entry(i + 8,(((i&4)>>2)^1) * 127,(((i&2)>>1)^1) * 127, ((i&1)^1) * 127 );
+ m_ef9365->set_color_entry(i + 8,(((i&4)>>2)^1) * 127,(((i&2)>>1)^1) * 127, ((i&1)^1) * 127 );
}
}
@@ -473,7 +774,7 @@ void squale_state::machine_reset()
static MACHINE_CONFIG_START( squale, squale_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",M6809, CPU_CLOCK)
+ MCFG_CPU_ADD("maincpu",M6809E, CPU_CLOCK) // 12/2015 : Should be set to M6809 but it actually have the wrong clock divisor (1 instead of 4) and working 4 times too fast...
MCFG_CPU_PROGRAM_MAP(squale_mem)
MCFG_CPU_IO_MAP(squale_io)
@@ -483,6 +784,8 @@ static MACHINE_CONFIG_START( squale, squale_state )
MCFG_PIA_READPB_HANDLER(READ8(squale_state, pia_u72_portb_r))
MCFG_PIA_WRITEPA_HANDLER(WRITE8(squale_state, pia_u72_porta_w))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(squale_state, pia_u72_portb_w))
+ MCFG_PIA_CA2_HANDLER(WRITELINE(squale_state, pia_u72_ca2_w))
+ MCFG_PIA_CB2_HANDLER(WRITELINE(squale_state, pia_u72_cb2_w))
/* Keyboard pia */
MCFG_DEVICE_ADD("pia_u75", PIA6821, 0)
@@ -490,7 +793,6 @@ static MACHINE_CONFIG_START( squale, squale_state )
MCFG_PIA_READPB_HANDLER(READ8(squale_state, pia_u75_portb_r))
MCFG_PIA_WRITEPA_HANDLER(WRITE8(squale_state, pia_u75_porta_w))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(squale_state, pia_u75_portb_w))
- MCFG_PIA_CA2_HANDLER(WRITELINE(squale_state, pia_u75_ca2_w))
MCFG_PIA_CB2_HANDLER(WRITELINE(squale_state, pia_u75_cb2_w))
/* sound hardware */
@@ -507,22 +809,30 @@ static MACHINE_CONFIG_START( squale, squale_state )
/* screen */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_UPDATE_DEVICE("ef9365", ef9365_device, screen_update)
- MCFG_SCREEN_SIZE(336, 270)
- MCFG_SCREEN_VISIBLE_AREA(00, 336-1, 00, 270-1)
+ MCFG_SCREEN_SIZE(256, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1)
MCFG_PALETTE_ADD("palette", 16)
- MCFG_DEVICE_ADD("ef9365", EF9365, 0)
- MCFG_EF9365_PALETTE("palette")
+ MCFG_DEVICE_ADD("ef9365", EF9365, VIDEO_CLOCK)
+ MCFG_EF936X_PALETTE("palette")
+ MCFG_EF936X_BITPLANES_CNT(4);
+ MCFG_EF936X_DISPLAYMODE(EF936X_256x256_DISPLAY_MODE);
MCFG_TIMER_DRIVER_ADD_SCANLINE("squale_sl", squale_state, squale_scanline, "screen", 0, 10)
/* Floppy */
MCFG_WD1770_ADD("wd1770", XTAL_8MHz )
- MCFG_FLOPPY_DRIVE_ADD("wd1770:0", squale_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:0", squale_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:1", squale_floppies, "525qd", floppy_image_device::default_floppy_formats)
MCFG_SOFTWARE_LIST_ADD("flop525_list", "squale")
+ /* Cartridge slot */
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "squale_cart")
+ MCFG_GENERIC_MANDATORY
+ MCFG_GENERIC_LOAD(squale_state, squale_cart)
+
MACHINE_CONFIG_END
/* ROM definition */
@@ -542,4 +852,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, squale, 0, 0, squale, squale,driver_device, 0, "Apollo 7", "Squale", MACHINE_TYPE_COMPUTER | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1984, squale, 0, 0, squale, squale,driver_device, 0, "Apollo 7", "Squale", MACHINE_TYPE_COMPUTER )
diff --git a/src/mame/drivers/srmp2.cpp b/src/mame/drivers/srmp2.cpp
index fb37d80f5e8..ca80decc53a 100644
--- a/src/mame/drivers/srmp2.cpp
+++ b/src/mame/drivers/srmp2.cpp
@@ -164,8 +164,8 @@ WRITE16_MEMBER(srmp2_state::srmp2_flags_w)
*/
- coin_counter_w( machine(), 0, ((data & 0x01) >> 0) );
- coin_lockout_w( machine(), 0, (((~data) & 0x10) >> 4) );
+ machine().bookkeeping().coin_counter_w(0, ((data & 0x01) >> 0) );
+ machine().bookkeeping().coin_lockout_w(0, (((~data) & 0x10) >> 4) );
m_adpcm_bank = ( (data & 0x20) >> 5 );
m_color_bank = ( (data & 0x80) >> 7 );
}
@@ -178,8 +178,8 @@ WRITE16_MEMBER(srmp2_state::mjyuugi_flags_w)
---x ---- : Coin Lock Out
*/
- coin_counter_w( machine(), 0, ((data & 0x01) >> 0) );
- coin_lockout_w( machine(), 0, (((~data) & 0x10) >> 4) );
+ machine().bookkeeping().coin_counter_w(0, ((data & 0x01) >> 0) );
+ machine().bookkeeping().coin_lockout_w(0, (((~data) & 0x10) >> 4) );
}
@@ -476,8 +476,8 @@ WRITE8_MEMBER(srmp2_state::srmp3_flags_w)
*/
- coin_counter_w( machine(), 0, ((data & 0x01) >> 0) );
- coin_lockout_w( machine(), 0, (((~data) & 0x10) >> 4) );
+ machine().bookkeeping().coin_counter_w(0, ((data & 0x01) >> 0) );
+ machine().bookkeeping().coin_lockout_w(0, (((~data) & 0x10) >> 4) );
m_gfx_bank = (data >> 6) & 0x03;
}
diff --git a/src/mame/drivers/srmp5.cpp b/src/mame/drivers/srmp5.cpp
index 1937daf3d90..1ecfd8a1f0a 100644
--- a/src/mame/drivers/srmp5.cpp
+++ b/src/mame/drivers/srmp5.cpp
@@ -86,8 +86,8 @@ public:
required_ioport_array<4> m_keys;
UINT32 m_chrbank;
- UINT16 *m_tileram;
- UINT16 *m_sprram;
+ std::unique_ptr<UINT16[]> m_tileram;
+ std::unique_ptr<UINT16[]> m_sprram;
UINT8 m_input_select;
@@ -128,9 +128,9 @@ public:
UINT32 srmp5_state::screen_update_srmp5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int x,y,address,xs,xs2,ys,ys2,height,width,xw,yw,xb,yb,sizex,sizey;
- UINT16 *sprite_list=m_sprram;
+ UINT16 *sprite_list=m_sprram.get();
UINT16 *sprite_list_end=&m_sprram[0x4000]; //guess
- UINT8 *pixels=(UINT8 *)m_tileram;
+ UINT8 *pixels=(UINT8 *)m_tileram.get();
const pen_t * const pens = m_palette->pens();
//Table surface seems to be tiles, but display corrupts when switching the scene if always ON.
@@ -249,8 +249,8 @@ void srmp5_state::machine_start()
save_item(NAME(m_cmd2));
save_item(NAME(m_cmd_stat));
save_item(NAME(m_chrbank));
- save_pointer(NAME(m_tileram), 0x100000/2);
- save_pointer(NAME(m_sprram), 0x80000/2);
+ save_pointer(NAME(m_tileram.get()), 0x100000/2);
+ save_pointer(NAME(m_sprram.get()), 0x80000/2);
save_item(NAME(m_vidregs));
}
@@ -612,8 +612,8 @@ DRIVER_INIT_MEMBER(srmp5_state,srmp5)
{
m_maincpu->st0016_game = 9;
- m_tileram = auto_alloc_array(machine(), UINT16, 0x100000/2);
- m_sprram = auto_alloc_array(machine(), UINT16, 0x080000/2);
+ m_tileram = std::make_unique<UINT16[]>(0x100000/2);
+ m_sprram = std::make_unique<UINT16[]>(0x080000/2);
#ifdef DEBUG_CHAR
memset(m_tileduty, 1, 0x2000);
#endif
diff --git a/src/mame/drivers/srmp6.cpp b/src/mame/drivers/srmp6.cpp
index 032ca33c6b4..d6a1eb8af64 100644
--- a/src/mame/drivers/srmp6.cpp
+++ b/src/mame/drivers/srmp6.cpp
@@ -85,13 +85,13 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
- UINT16* m_tileram;
+ std::unique_ptr<UINT16[]> m_tileram;
required_shared_ptr<UINT16> m_sprram;
required_shared_ptr<UINT16> m_chrram;
optional_shared_ptr<UINT16> m_dmaram;
required_shared_ptr<UINT16> m_video_regs;
- UINT16 *m_sprram_old;
+ std::unique_ptr<UINT16[]> m_sprram_old;
int m_brightness;
UINT16 m_input_select;
@@ -167,12 +167,12 @@ void srmp6_state::update_palette()
void srmp6_state::video_start()
{
- m_tileram = auto_alloc_array_clear(machine(), UINT16, 0x100000*16/2);
+ m_tileram = make_unique_clear<UINT16[]>(0x100000*16/2);
m_dmaram.allocate(0x100/2);
- m_sprram_old = auto_alloc_array_clear(machine(), UINT16, 0x80000/2);
+ m_sprram_old = make_unique_clear<UINT16[]>(0x80000/2);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(0, global_alloc(gfx_element(m_palette, tiles8x8_layout, (UINT8*)m_tileram, 0, m_palette->entries() / 256, 0)));
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, tiles8x8_layout, (UINT8*)m_tileram.get(), 0, m_palette->entries() / 256, 0));
m_gfxdecode->gfx(0)->set_granularity(256);
m_brightness = 0x60;
@@ -186,7 +186,7 @@ UINT32 srmp6_state::screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bit
{
int alpha;
int x,y,tileno,height,width,xw,yw,sprite,xb,yb;
- UINT16 *sprite_list = m_sprram_old;
+ UINT16 *sprite_list = m_sprram_old.get();
UINT16 mainlist_offset = 0;
union
@@ -292,12 +292,12 @@ UINT32 srmp6_state::screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bit
mainlist_offset+=8;
}
- memcpy(m_sprram_old, m_sprram, 0x80000);
+ memcpy(m_sprram_old.get(), m_sprram, 0x80000);
if(machine().input().code_pressed_once(KEYCODE_Q))
{
FILE *p=fopen("tileram.bin","wb");
- fwrite(m_tileram, 1, 0x100000*16, p);
+ fwrite(m_tileram.get(), 1, 0x100000*16, p);
fclose(p);
}
@@ -386,7 +386,7 @@ UINT32 srmp6_state::process(UINT8 b,UINT32 dst_offset)
{
int l=0;
- UINT8 *tram=(UINT8*)m_tileram;
+ UINT8 *tram=(UINT8*)m_tileram.get();
if (m_lastb == m_lastb2) //rle
{
diff --git a/src/mame/drivers/srumbler.cpp b/src/mame/drivers/srumbler.cpp
index 22811adddaa..27c8b022602 100644
--- a/src/mame/drivers/srumbler.cpp
+++ b/src/mame/drivers/srumbler.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
diff --git a/src/mame/drivers/sslam.cpp b/src/mame/drivers/sslam.cpp
index 40c5d9d7e5a..70fa00b7b44 100644
--- a/src/mame/drivers/sslam.cpp
+++ b/src/mame/drivers/sslam.cpp
@@ -845,7 +845,7 @@ ROM_END
// other labels seem to be that of the powerbals set below, but with sslam content, maybe it was
// factory converted to powerbals at one time, then back again?
// there are quite a lot of changes from the above sets.
-ROM_START( sslamb )
+ROM_START( sslamb )
ROM_REGION( 0x1000000, "maincpu", ROMREGION_ERASE00 ) /* 68000 Code */
ROM_LOAD16_BYTE( "21.u67", 0x00000, 0x80000, CRC(a7c57d58) SHA1(28964c30a12bf7b236fd10bd3b1da341b54f4b7c) )
ROM_RELOAD_SSLAM(0x100000)
diff --git a/src/mame/drivers/sspeedr.cpp b/src/mame/drivers/sspeedr.cpp
index a85b2103fc0..e6d2ef9f85a 100644
--- a/src/mame/drivers/sspeedr.cpp
+++ b/src/mame/drivers/sspeedr.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -43,9 +43,9 @@ WRITE8_MEMBER(sspeedr_state::sspeedr_int_ack_w)
WRITE8_MEMBER(sspeedr_state::sspeedr_lamp_w)
{
- output_set_value("lampGO", (data >> 0) & 1);
- output_set_value("lampEP", (data >> 1) & 1);
- coin_counter_w(machine(), 0, data & 8);
+ output().set_value("lampGO", (data >> 0) & 1);
+ output().set_value("lampEP", (data >> 1) & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 8);
}
@@ -56,7 +56,7 @@ static const UINT8 ls48_map[16] =
WRITE8_MEMBER(sspeedr_state::sspeedr_time_w)
{
data = data & 15;
- output_set_digit_value(0x18 + offset, ls48_map[data]);
+ output().set_digit_value(0x18 + offset, ls48_map[data]);
m_led_TIME[offset] = data;
}
@@ -66,7 +66,7 @@ WRITE8_MEMBER(sspeedr_state::sspeedr_score_w)
char buf[20];
sprintf(buf, "LED%02d", offset);
data = ~data & 15;
- output_set_digit_value(offset, ls48_map[data]);
+ output().set_digit_value(offset, ls48_map[data]);
m_led_SCORE[offset] = data;
}
diff --git a/src/mame/drivers/ssv.cpp b/src/mame/drivers/ssv.cpp
index 14bd978b709..a698d6bcc9d 100644
--- a/src/mame/drivers/ssv.cpp
+++ b/src/mame/drivers/ssv.cpp
@@ -290,10 +290,10 @@ WRITE16_MEMBER(ssv_state::lockout_w)
// popmessage("%02X",data & 0xff);
if (ACCESSING_BITS_0_7)
{
- coin_lockout_w(machine(), 1,~data & 0x01);
- coin_lockout_w(machine(), 0,~data & 0x02);
- coin_counter_w(machine(), 1, data & 0x04);
- coin_counter_w(machine(), 0, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
// data & 0x40?
enable_video(data & 0x80);
}
@@ -305,10 +305,10 @@ WRITE16_MEMBER(ssv_state::lockout_inv_w)
// popmessage("%02X",data & 0xff);
if (ACCESSING_BITS_0_7)
{
- coin_lockout_w(machine(), 1, data & 0x01);
- coin_lockout_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x04);
- coin_counter_w(machine(), 0, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x01);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
// data & 0x40?
enable_video(data & 0x80);
}
@@ -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/st17xx.cpp b/src/mame/drivers/st17xx.cpp
new file mode 100644
index 00000000000..f3ba9428aea
--- /dev/null
+++ b/src/mame/drivers/st17xx.cpp
@@ -0,0 +1,186 @@
+// license:BSD-3-Clause
+// copyright-holders:Justin Kerk
+/***************************************************************************
+
+ Saturn ST-17xx series DVD players
+
+ Skeleton driver.
+
+****************************************************************************/
+
+/*
+
+ TODO:
+
+ - everything
+
+ Technical info:
+ DVD-player-on-a-chip designs from Mediatek:
+ http://www.mediatek.com/en/products/home-entertainment/consumer-dvd-blu-ray/
+
+ MT1379:
+ http://pdf.datasheetcatalog.com/datasheets/134/477326_DS.pdf
+
+ MT1389:
+ http://newage.mpeg4-players.info/mt1389/mt1389.html
+ http://groups.yahoo.com/group/MEDIATEK1389/
+ http://www.sigmatek-xm600.borec.cz/chip.html
+ http://www.sigmatek-xm600.borec.cz/Info%20-%20MT1389%20v0.3b%20English.doc (rename to .rtf)
+ Includes an 8032, ARM7TDMI, and unknown DSP
+
+ SUNPLUS SPHE8200A:
+ http://pdf.datasheetcatalog.com/datasheets/2300/499420_DS.pdf
+ https://004code.googlecode.com/svn/trunk/h/regmapo_8200.h
+ "32-bit RISC" architecture, but which one?
+
+*/
+
+
+#include "emu.h"
+#include "cpu/arm7/arm7.h"
+#include "cpu/arm7/arm7core.h"
+
+#define SCREEN_TAG "screen"
+
+class st17xx_state : public driver_device
+{
+public:
+ st17xx_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag) { }
+
+ virtual void machine_start() override;
+
+ virtual void video_start() override;
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+};
+
+/* Memory Maps */
+
+static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 32, st17xx_state )
+ AM_RANGE(0x00000000, 0x000fffff) AM_ROM
+ADDRESS_MAP_END
+
+/* Input Ports */
+
+static INPUT_PORTS_START( st17xx )
+INPUT_PORTS_END
+
+/* Video */
+
+void st17xx_state::video_start()
+{
+}
+
+UINT32 st17xx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+/* Machine Initialization */
+
+void st17xx_state::machine_start()
+{
+}
+
+/* Machine Driver */
+
+static MACHINE_CONFIG_START( st17xx, st17xx_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", ARM7, 50000000) /* speed unknown */
+ MCFG_CPU_PROGRAM_MAP(cpu_map)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_UPDATE_DRIVER(st17xx_state, screen_update)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+
+ MCFG_PALETTE_ADD("palette", 64)
+MACHINE_CONFIG_END
+
+/* ROMs */
+
+/*
+Uses MT1379 DVD player chip. There are two versions - with outputs for headphones and karaoke.
+Reads: AudioCD, VCD, MP3, Pictures Kodak, Xvid
+*/
+ROM_START( st1700h )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "st1700headphones.bin", 0x000000, 0x100000, CRC(c219e9df) SHA1(6769bcd2c6b19a2cd4e0e36f01824508a7342e4e) )
+ROM_END
+
+ROM_START( st1701 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "st1701.bin", 0x000000, 0x100000, CRC(e6c08dae) SHA1(00ed616fc4c7955be036ca739d9c34038c0ecd58) )
+ROM_END
+
+ROM_START( st1702 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "st1702.bin", 0x000000, 0x0f67dc, CRC(ca5a1a97) SHA1(21a0632cff4bcb25f9a5f7a4e9bd8aeaa9f715c3) )
+ROM_END
+
+ROM_START( st1703 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "st1703.bin", 0x000000, 0x100000, CRC(04963c10) SHA1(ef7eb45de2fd6dab826c362939ea67370d9bd84b) )
+ROM_END
+
+/*
+Uses MT1389 DVD player chip.
+Reads: Audio CD, VCD, MP3, MPEG4, Pictures Kodak, Xvid
+*/
+ROM_START( st1704 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "st-1704.bin", 0x000000, 0x0feef0, CRC(b834d37e) SHA1(d048b793c2c838f07fdae9592b07fd4fb2ec73b8) )
+ROM_END
+
+ROM_START( st1705 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "st1705.bin", 0x000000, 0x100000, CRC(efda2beb) SHA1(d30505552fc9ffd37ac12f576d792212deb10d84) )
+ROM_END
+
+/*
+SATURN
+ST 1706, 1707, 1708.
+Chip: SUNPLUS SPHE 8200A
+Servo: SUNPLUS SPHE 6300A
+Flash: EN29F040A-70P or ID39F040-70P
+Eeprom: 24C02
+Driver: CD5954CB
+Indication & Key processor : CS16312EN
+Laser head: CSQCL33EI38 (requires clarification)
+*/
+ROM_START( st1706 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "1706_sphe8200.bin", 0x000000, 0x080000, CRC(6a92fa45) SHA1(d40327ebfacd0c3690b170f802d8059e22848aa0) )
+ROM_END
+
+ROM_START( st1707 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "1707_sphe8200.bin", 0x000000, 0x080000, CRC(4d90d176) SHA1(7058b37413c90fd9e7f845944191f7ebe9e03250) )
+ROM_END
+
+ROM_START( st1708 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "1708_sphe8200.bin", 0x000000, 0x080000, CRC(5176c819) SHA1(2f1ae3389380be27fdd6a66da119e3ccdaa2fd59) )
+ROM_END
+
+ROM_START( st1714 )
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD32_DWORD( "st1714.bin", 0x000000, 0x200000, CRC(08fc0a1b) SHA1(74dfd5595e1ab45fb9aff50a6c365fd9c9b33c33) )
+ROM_END
+
+/* System Drivers */
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+CONS( 200?, st1700h, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1700 (headphone version)", MACHINE_IS_SKELETON )
+CONS( 200?, st1701, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1701", MACHINE_IS_SKELETON )
+CONS( 200?, st1702, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1702", MACHINE_IS_SKELETON )
+CONS( 200?, st1703, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1703", MACHINE_IS_SKELETON )
+CONS( 200?, st1704, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1704", MACHINE_IS_SKELETON )
+CONS( 200?, st1705, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1705", MACHINE_IS_SKELETON )
+CONS( 200?, st1706, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1706", MACHINE_IS_SKELETON )
+CONS( 200?, st1707, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1707", MACHINE_IS_SKELETON )
+CONS( 200?, st1708, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1708", MACHINE_IS_SKELETON )
+CONS( 200?, st1714, 0, 0, st17xx, st17xx, driver_device, 0, "Saturn", "ST-1714", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/st_mp100.cpp b/src/mame/drivers/st_mp100.cpp
index 65bda3439a2..7319daffee8 100644
--- a/src/mame/drivers/st_mp100.cpp
+++ b/src/mame/drivers/st_mp100.cpp
@@ -507,7 +507,7 @@ WRITE_LINE_MEMBER( st_mp100_state::u10_cb2_w )
WRITE_LINE_MEMBER( st_mp100_state::u11_ca2_w )
{
- output_set_value("led0", !state);
+ output().set_value("led0", !state);
}
WRITE_LINE_MEMBER( st_mp100_state::u11_cb2_w )
@@ -616,11 +616,11 @@ WRITE8_MEMBER( st_mp100_state::u11_a_w )
if (BIT(data, 0) && (m_counter > 8))
{
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
- output_set_digit_value(m_digit, patterns[m_segment[0]]);
- output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
- output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
- output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
- output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
+ output().set_digit_value(m_digit, patterns[m_segment[0]]);
+ output().set_digit_value(10+m_digit, patterns[m_segment[1]]);
+ output().set_digit_value(20+m_digit, patterns[m_segment[2]]);
+ output().set_digit_value(30+m_digit, patterns[m_segment[3]]);
+ output().set_digit_value(40+m_digit, patterns[m_segment[4]]);
}
}
}
diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp
index bc810c973c7..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);
@@ -331,20 +331,21 @@ WRITE_LINE_MEMBER( st_mp200_state::u10_cb2_w )
WRITE_LINE_MEMBER( st_mp200_state::u11_ca2_w )
{
- output_set_value("led0", !state);
+ 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);
@@ -470,11 +471,11 @@ WRITE8_MEMBER( st_mp200_state::u11_a_w )
if (BIT(data, 0) && (m_counter > 8))
{
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
- output_set_digit_value(m_digit, patterns[m_segment[0]]);
- output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
- output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
- output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
- output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
+ output().set_digit_value(m_digit, patterns[m_segment[0]]);
+ output().set_digit_value(10+m_digit, patterns[m_segment[1]]);
+ output().set_digit_value(20+m_digit, patterns[m_segment[2]]);
+ output().set_digit_value(30+m_digit, patterns[m_segment[3]]);
+ output().set_digit_value(40+m_digit, patterns[m_segment[4]]);
}
}
}
@@ -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/stactics.cpp b/src/mame/drivers/stactics.cpp
index 2b556a6b752..0c0db821402 100644
--- a/src/mame/drivers/stactics.cpp
+++ b/src/mame/drivers/stactics.cpp
@@ -139,7 +139,7 @@ CUSTOM_INPUT_MEMBER(stactics_state::get_rng)
WRITE8_MEMBER(stactics_state::coinlockout_w)
{
- coin_lockout_w(machine(), offset, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(offset, ~data & 0x01);
}
diff --git a/src/mame/drivers/starshp1.cpp b/src/mame/drivers/starshp1.cpp
index d52a674f60d..1ad24cd1cf6 100644
--- a/src/mame/drivers/starshp1.cpp
+++ b/src/mame/drivers/starshp1.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Frank Palazzolo, Stefan Jokisch
/***************************************************************************
@@ -54,8 +54,8 @@ WRITE8_MEMBER(starshp1_state::starshp1_audio_w)
break;
}
- coin_lockout_w(machine(), 0, !m_attract);
- coin_lockout_w(machine(), 1, !m_attract);
+ machine().bookkeeping().coin_lockout_w(0, !m_attract);
+ machine().bookkeeping().coin_lockout_w(1, !m_attract);
}
@@ -158,7 +158,7 @@ WRITE8_MEMBER(starshp1_state::starshp1_misc_w)
m_mux = data;
break;
case 7:
- set_led_status(machine(), 0, !data);
+ output().set_led_value(0, !data);
break;
}
}
diff --git a/src/mame/drivers/starwars.cpp b/src/mame/drivers/starwars.cpp
index d0c9027ff1c..9fdc3c45be0 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
diff --git a/src/mame/drivers/stratos.cpp b/src/mame/drivers/stratos.cpp
index 8ace206949c..62de51b640c 100644
--- a/src/mame/drivers/stratos.cpp
+++ b/src/mame/drivers/stratos.cpp
@@ -28,7 +28,7 @@ public:
required_memory_bank bank_4000;
required_memory_bank nvram_bank;
- UINT8 *nvram_data;
+ std::unique_ptr<UINT8[]> nvram_data;
UINT8 control, led_latch_control;
UINT32 individual_leds;
UINT8 latch_AH_red, latch_AH_green, latch_18_red, latch_18_green;
@@ -52,12 +52,12 @@ public:
DRIVER_INIT_MEMBER( stratos_state, stratos )
{
- nvram_data = auto_alloc_array(machine(), UINT8, 0x2000);
- nvram->set_base(nvram_data, 0x2000);
+ nvram_data = std::make_unique<UINT8[]>(0x2000);
+ nvram->set_base(nvram_data.get(), 0x2000);
bank_8000 ->configure_entries(0, 4, memregion("roms_8000")->base(), 0x8000);
bank_4000 ->configure_entries(0, 4, memregion("roms_4000")->base(), 0x4000);
- nvram_bank->configure_entries(0, 2, nvram_data, 0x1000);
+ nvram_bank->configure_entries(0, 2, nvram_data.get(), 0x1000);
}
void stratos_state::machine_reset()
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/stuntair.cpp b/src/mame/drivers/stuntair.cpp
index 924a6b4434a..749416a13c5 100644
--- a/src/mame/drivers/stuntair.cpp
+++ b/src/mame/drivers/stuntair.cpp
@@ -292,8 +292,8 @@ WRITE8_MEMBER(stuntair_state::stuntair_nmienable_w)
WRITE8_MEMBER(stuntair_state::stuntair_coin_w)
{
// lower 2 bits are coin counters, excluding 1st coin(?)
- coin_counter_w(machine(), 0, data >> 0 & 1);
- coin_counter_w(machine(), 1, data >> 1 & 1);
+ machine().bookkeeping().coin_counter_w(0, data >> 0 & 1);
+ machine().bookkeeping().coin_counter_w(1, data >> 1 & 1);
// other bits: unknown
if (data & 0xfc)
diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp
index be06065508e..c75d566f39d 100644
--- a/src/mame/drivers/stv.cpp
+++ b/src/mame/drivers/stv.cpp
@@ -124,10 +124,10 @@ WRITE8_MEMBER(stv_state::stv_ioga_w)
case 0x07:
m_system_output = data & 0xf;
/*Why does the BIOS tests these as ACTIVE HIGH? A program bug?*/
- coin_counter_w(machine(), 0,~data & 0x01);
- coin_counter_w(machine(), 1,~data & 0x02);
- coin_lockout_w(machine(), 0,~data & 0x04);
- coin_lockout_w(machine(), 1,~data & 0x08);
+ machine().bookkeeping().coin_counter_w(0,~data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,~data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x08);
break;
}
}
@@ -377,9 +377,10 @@ DRIVER_INIT_MEMBER(stv_state,stv)
m_minit_boost_timeslice = attotime::zero;
m_sinit_boost_timeslice = attotime::zero;
- m_scu_regs = auto_alloc_array(machine(), UINT32, 0x100/4);
- m_scsp_regs = auto_alloc_array(machine(), UINT16, 0x1000/2);
- m_backupram = auto_alloc_array_clear(machine(), UINT8, 0x8000);
+ m_scu_regs = std::make_unique<UINT32[]>(0x100/4);
+ m_scsp_regs = std::make_unique<UINT16[]>(0x1000/2);
+ m_backupram = std::make_unique<UINT8[]>(0x8000);
+ memset(m_backupram.get(), 0, sizeof(UINT8) * 0x8000);
install_stvbios_speedups();
@@ -1309,8 +1310,8 @@ MACHINE_START_MEMBER(stv_state,stv)
machine().device<scsp_device>("scsp")->set_ram_base(m_sound_ram);
// save states
- save_pointer(NAME(m_scu_regs), 0x100/4);
- save_pointer(NAME(m_scsp_regs), 0x1000/2);
+ save_pointer(NAME(m_scu_regs.get()), 0x100/4);
+ save_pointer(NAME(m_scsp_regs.get()), 0x1000/2);
save_item(NAME(m_NMI_reset));
save_item(NAME(m_en_68k));
// save_item(NAME(scanline));
diff --git a/src/mame/drivers/su2000.cpp b/src/mame/drivers/su2000.cpp
index 7582673d6bb..2beaf6623ca 100644
--- a/src/mame/drivers/su2000.cpp
+++ b/src/mame/drivers/su2000.cpp
@@ -66,7 +66,7 @@ public:
su2000_state(const machine_config &mconfig, device_type type, const char *tag)
: pcat_base_state(mconfig, type, tag){ }
- UINT32 *m_pc_ram;
+ std::unique_ptr<UINT32[]> m_pc_ram;
virtual void machine_start() override;
virtual void machine_reset() override;
};
@@ -127,16 +127,16 @@ void su2000_state::machine_start()
address_space &space = m_maincpu->space(AS_PROGRAM);
/* Configure RAM */
- m_pc_ram = auto_alloc_array_clear(machine(), UINT32, PC_RAM_SIZE);
+ m_pc_ram = make_unique_clear<UINT32[]>(PC_RAM_SIZE);
/* Conventional memory */
- membank("mem_bank")->set_base(m_pc_ram);
+ membank("mem_bank")->set_base(m_pc_ram.get());
/* HMA */
offs_t ram_limit = 0x100000 + PC_RAM_SIZE - 0x0a0000;
space.install_read_bank(0x100000, ram_limit - 1, "hma_bank");
space.install_write_bank(0x100000, ram_limit - 1, "hma_bank");
- membank("hma_bank")->set_base(m_pc_ram + 0xa0000);
+ membank("hma_bank")->set_base(m_pc_ram.get() + 0xa0000);
}
void su2000_state::machine_reset()
diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp
index 678a7e7c1bc..716d1955f2c 100644
--- a/src/mame/drivers/subsino.cpp
+++ b/src/mame/drivers/subsino.cpp
@@ -269,14 +269,14 @@ public:
tilemap_t *m_reel3_tilemap;
int m_tiles_offset;
UINT8 m_out_c;
- UINT8 *m_reel1_attr;
- UINT8 *m_reel2_attr;
- UINT8 *m_reel3_attr;
+ std::unique_ptr<UINT8[]> m_reel1_attr;
+ std::unique_ptr<UINT8[]> m_reel2_attr;
+ std::unique_ptr<UINT8[]> m_reel3_attr;
UINT8 m_flash_val;
UINT8 m_flash_packet;
UINT8 m_flash_packet_start;
int m_colordac_offs;
- UINT8 *m_stbsub_colorram;
+ std::unique_ptr<UINT8[]> m_stbsub_colorram;
ticket_dispenser_device *m_hopper;
@@ -666,19 +666,19 @@ WRITE8_MEMBER(subsino_state::subsino_out_a_w)
*/
- output_set_lamp_value(8, (data) & 1); /* Lamp 8 */
- output_set_lamp_value(9, (data >> 1) & 1); /* Lamp 9 */
- output_set_lamp_value(10, (data >> 2) & 1); /* Lamp 10 */
- output_set_lamp_value(11, (data >> 3) & 1); /* Lamp 11 */
- output_set_lamp_value(12, (data >> 4) & 1); /* Lamp 12 */
- output_set_lamp_value(13, (data >> 5) & 1); /* Lamp 13 */
- output_set_lamp_value(14, (data >> 6) & 1); /* Lamp 14 */
- output_set_lamp_value(15, (data >> 7) & 1); /* Lamp 15 */
+ output().set_lamp_value(8, (data) & 1); /* Lamp 8 */
+ output().set_lamp_value(9, (data >> 1) & 1); /* Lamp 9 */
+ output().set_lamp_value(10, (data >> 2) & 1); /* Lamp 10 */
+ output().set_lamp_value(11, (data >> 3) & 1); /* Lamp 11 */
+ output().set_lamp_value(12, (data >> 4) & 1); /* Lamp 12 */
+ output().set_lamp_value(13, (data >> 5) & 1); /* Lamp 13 */
+ output().set_lamp_value(14, (data >> 6) & 1); /* Lamp 14 */
+ output().set_lamp_value(15, (data >> 7) & 1); /* Lamp 15 */
- coin_counter_w( machine(), 0, data & 0x01 ); /* coin / keyin */
- coin_counter_w( machine(), 1, data & 0x02 ); /* keyin / coin */
- coin_counter_w( machine(), 2, data & 0x10 ); /* keyout */
- coin_counter_w( machine(), 3, data & 0x20 ); /* payout */
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 ); /* coin / keyin */
+ machine().bookkeeping().coin_counter_w(1, data & 0x02 ); /* keyin / coin */
+ machine().bookkeeping().coin_counter_w(2, data & 0x10 ); /* keyout */
+ machine().bookkeeping().coin_counter_w(3, data & 0x20 ); /* payout */
m_hopper->write(space, 0, (data & 0x0020) ? 0x80 : 0); // hopper motor
@@ -808,14 +808,14 @@ WRITE8_MEMBER(subsino_state::subsino_out_b_w)
*/
- output_set_lamp_value(0, (data) & 1); /* Lamp 0 */
- output_set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 */
- output_set_lamp_value(2, (data >> 2) & 1); /* Lamp 2 */
- output_set_lamp_value(3, (data >> 3) & 1); /* Lamp 3 */
- output_set_lamp_value(4, (data >> 4) & 1); /* Lamp 4 */
- output_set_lamp_value(5, (data >> 5) & 1); /* Lamp 5 */
- output_set_lamp_value(6, (data >> 6) & 1); /* Lamp 6 */
- output_set_lamp_value(7, (data >> 7) & 1); /* Lamp 7 */
+ output().set_lamp_value(0, (data) & 1); /* Lamp 0 */
+ output().set_lamp_value(1, (data >> 1) & 1); /* Lamp 1 */
+ output().set_lamp_value(2, (data >> 2) & 1); /* Lamp 2 */
+ output().set_lamp_value(3, (data >> 3) & 1); /* Lamp 3 */
+ output().set_lamp_value(4, (data >> 4) & 1); /* Lamp 4 */
+ output().set_lamp_value(5, (data >> 5) & 1); /* Lamp 5 */
+ output().set_lamp_value(6, (data >> 6) & 1); /* Lamp 6 */
+ output().set_lamp_value(7, (data >> 7) & 1); /* Lamp 7 */
// popmessage("Out B %02x",data);
}
@@ -3841,15 +3841,15 @@ DRIVER_INIT_MEMBER(subsino_state,stbsub)
rom[0x957] = 0x18; //patch "losing protection" check
#endif
- m_stbsub_colorram = auto_alloc_array(machine(), UINT8, 256*3);
+ m_stbsub_colorram = std::make_unique<UINT8[]>(256*3);
m_reel1_scroll.allocate(0x40);
m_reel2_scroll.allocate(0x40);
m_reel3_scroll.allocate(0x40);
- m_reel1_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel2_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel3_attr = auto_alloc_array(machine(), UINT8, 0x200);
+ m_reel1_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel2_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel3_attr = std::make_unique<UINT8[]>(0x200);
}
DRIVER_INIT_MEMBER(subsino_state, stisub)
@@ -3858,15 +3858,15 @@ DRIVER_INIT_MEMBER(subsino_state, stisub)
rom[0x0FA0] = 0x28;
rom[0x0FA1] = 0x1d; //patch protection check
- m_stbsub_colorram = auto_alloc_array(machine(), UINT8, 256*3);
+ m_stbsub_colorram = std::make_unique<UINT8[]>(256*3);
m_reel1_scroll.allocate(0x40);
m_reel2_scroll.allocate(0x40);
m_reel3_scroll.allocate(0x40);
- m_reel1_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel2_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel3_attr = auto_alloc_array(machine(), UINT8, 0x200);
+ m_reel1_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel2_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel3_attr = std::make_unique<UINT8[]>(0x200);
}
DRIVER_INIT_MEMBER(subsino_state,tesorone)
@@ -3879,15 +3879,15 @@ DRIVER_INIT_MEMBER(subsino_state,tesorone)
rom[0xa84] = 0x18; //patch "losing protection" check
#endif
- m_stbsub_colorram = auto_alloc_array(machine(), UINT8, 256*3);
+ m_stbsub_colorram = std::make_unique<UINT8[]>(256*3);
m_reel1_scroll.allocate(0x40);
m_reel2_scroll.allocate(0x40);
m_reel3_scroll.allocate(0x40);
- m_reel1_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel2_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel3_attr = auto_alloc_array(machine(), UINT8, 0x200);
+ m_reel1_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel2_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel3_attr = std::make_unique<UINT8[]>(0x200);
}
DRIVER_INIT_MEMBER(subsino_state,tesorone230)
@@ -3900,29 +3900,29 @@ DRIVER_INIT_MEMBER(subsino_state,tesorone230)
rom[0xa88] = 0x18; //patch "losing protection" check
#endif
- m_stbsub_colorram = auto_alloc_array(machine(), UINT8, 256*3);
+ m_stbsub_colorram = std::make_unique<UINT8[]>(256*3);
m_reel1_scroll.allocate(0x40);
m_reel2_scroll.allocate(0x40);
m_reel3_scroll.allocate(0x40);
- m_reel1_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel2_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel3_attr = auto_alloc_array(machine(), UINT8, 0x200);
+ m_reel1_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel2_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel3_attr = std::make_unique<UINT8[]>(0x200);
}
DRIVER_INIT_MEMBER(subsino_state,mtrainnv)
{
- m_stbsub_colorram = auto_alloc_array(machine(), UINT8, 256*3);
+ m_stbsub_colorram = std::make_unique<UINT8[]>(256*3);
m_reel1_scroll.allocate(0x40);
m_reel2_scroll.allocate(0x40);
m_reel3_scroll.allocate(0x40);
- m_reel1_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel2_attr = auto_alloc_array(machine(), UINT8, 0x200);
- m_reel3_attr = auto_alloc_array(machine(), UINT8, 0x200);
+ m_reel1_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel2_attr = std::make_unique<UINT8[]>(0x200);
+ m_reel3_attr = std::make_unique<UINT8[]>(0x200);
}
/***************************************************************************
diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp
index 99c9cf97a09..62a727e4b8f 100644
--- a/src/mame/drivers/subsino2.cpp
+++ b/src/mame/drivers/subsino2.cpp
@@ -64,9 +64,9 @@ enum vram_t
// Layers
struct layer_t
{
- UINT8 *videorams[2];
+ std::unique_ptr<UINT8[]> videorams[2];
- UINT8 *scrollrams[2];
+ std::unique_ptr<UINT8[]> scrollrams[2];
int scroll_x;
int scroll_y;
@@ -88,12 +88,12 @@ public:
m_screen(*this, "screen"),
m_palette(*this, "palette") { }
- UINT8 *m_hm86171_colorram;
+ std::unique_ptr<UINT8[]> m_hm86171_colorram;
layer_t m_layers[2];
UINT8 m_ss9601_byte_lo;
UINT8 m_ss9601_byte_lo2;
- UINT8 *m_ss9601_reelrams[2];
- rectangle m_ss9601_reelrects[3];
+ std::unique_ptr<UINT8[]> m_ss9601_reelrams[2];
+ std::unique_ptr<bitmap_ind16> m_reelbitmap;
UINT8 m_ss9601_scrollctrl;
UINT8 m_ss9601_tilesize;
UINT8 m_ss9601_disable;
@@ -165,10 +165,7 @@ public:
TILE_GET_INFO_MEMBER(ss9601_get_tile_info_0);
TILE_GET_INFO_MEMBER(ss9601_get_tile_info_1);
DECLARE_VIDEO_START(subsino2);
- DECLARE_VIDEO_START(mtrain);
- DECLARE_VIDEO_START(xtrain);
UINT32 screen_update_subsino2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(h8_timer_irq);
INTERRUPT_GEN_MEMBER(am188em_int0_irq);
required_device<cpu_device> m_maincpu;
optional_device<okim6295_device> m_oki;
@@ -598,7 +595,7 @@ WRITE8_MEMBER(subsino2_state::ss9601_disable_w)
VIDEO_START_MEMBER(subsino2_state,subsino2)
{
- m_hm86171_colorram = auto_alloc_array(machine(), UINT8, 256*3);
+ m_hm86171_colorram = std::make_unique<UINT8[]>(256*3);
// SS9601 Regs:
@@ -622,25 +619,22 @@ VIDEO_START_MEMBER(subsino2_state,subsino2)
// line scroll
l->tmap->set_scroll_rows(0x200);
- l->videorams[VRAM_HI] = auto_alloc_array(machine(), UINT8, 0x80 * 0x40);
- l->videorams[VRAM_LO] = auto_alloc_array(machine(), UINT8, 0x80 * 0x40);
+ l->videorams[VRAM_HI] = std::make_unique<UINT8[]>(0x80 * 0x40);
+ l->videorams[VRAM_LO] = std::make_unique<UINT8[]>(0x80 * 0x40);
- l->scrollrams[VRAM_HI] = auto_alloc_array(machine(), UINT8, 0x200);
- l->scrollrams[VRAM_LO] = auto_alloc_array(machine(), UINT8, 0x200);
- memset(l->scrollrams[VRAM_HI], 0, 0x200);
- memset(l->scrollrams[VRAM_LO], 0, 0x200);
+ l->scrollrams[VRAM_HI] = std::make_unique<UINT8[]>(0x200);
+ l->scrollrams[VRAM_LO] = std::make_unique<UINT8[]>(0x200);
+ memset(l->scrollrams[VRAM_HI].get(), 0, 0x200);
+ memset(l->scrollrams[VRAM_LO].get(), 0, 0x200);
}
// SS9601 Reels:
- m_ss9601_reelrams[VRAM_HI] = auto_alloc_array(machine(), UINT8, 0x2000);
- m_ss9601_reelrams[VRAM_LO] = auto_alloc_array(machine(), UINT8, 0x2000);
- memset(m_ss9601_reelrams[VRAM_HI], 0, 0x2000);
- memset(m_ss9601_reelrams[VRAM_LO], 0, 0x2000);
- m_ss9601_reelrects[0].set(0, 0, 0x00*8, 0x09*8-1);
- m_ss9601_reelrects[1].set(0, 0, 0x09*8, 0x10*8-1);
- m_ss9601_reelrects[2].set(0, 0, 0x10*8, 256-16-1);
-
+ m_ss9601_reelrams[VRAM_HI] = std::make_unique<UINT8[]>(0x2000);
+ m_ss9601_reelrams[VRAM_LO] = std::make_unique<UINT8[]>(0x2000);
+ memset(m_ss9601_reelrams[VRAM_HI].get(), 0, 0x2000);
+ memset(m_ss9601_reelrams[VRAM_LO].get(), 0, 0x2000);
+ m_reelbitmap = std::make_unique<bitmap_ind16>(0x80*8, 0x40*8);
/*
save_pointer(NAME(m_ss9601_reelrams[VRAM_HI]), 0x2000);
save_pointer(NAME(m_ss9601_reelrams[VRAM_LO]), 0x2000);
@@ -653,19 +647,6 @@ VIDEO_START_MEMBER(subsino2_state,subsino2)
*/
}
-VIDEO_START_MEMBER(subsino2_state,mtrain)
-{
- VIDEO_START_CALL_MEMBER( subsino2 );
-}
-
-VIDEO_START_MEMBER(subsino2_state,xtrain)
-{
- VIDEO_START_CALL_MEMBER( subsino2 );
- m_ss9601_reelrects[0].set(0, 0, 0x00*8, 0x08*8-1);
- m_ss9601_reelrects[1].set(0, 0, 0x08*8, 0x18*8-1);
- m_ss9601_reelrects[2].set(0, 0, 0x18*8, 256-16-1);
-}
-
UINT32 subsino2_state::screen_update_subsino2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int layers_ctrl = ~m_ss9601_disable;
@@ -695,6 +676,8 @@ UINT32 subsino2_state::screen_update_subsino2(screen_device &screen, bitmap_ind1
case 0x07:
mask_y[0] = ~(8-1);
break;
+// case 0x7f: // ptrain
+// break;
case 0xfd:
l0_reel = true;
break;
@@ -732,22 +715,23 @@ UINT32 subsino2_state::screen_update_subsino2(screen_device &screen, bitmap_ind1
l->tmap->set_scroll_rows(1);
l->tmap->set_scroll_cols(1);
- for (auto visible : m_ss9601_reelrects)
+ for (int y = 0; y < 0x20/4; y++)
{
-
-
- for (int x = 0; x < 0x40; x++)
+ for (int x = 0; x < 0x80; x++)
{
+ rectangle visible;
visible.min_x = 8 * x;
visible.max_x = 8 * (x+1) - 1;
+ visible.min_y = 4 * 0x10 * y;
+ visible.max_y = 4 * 0x10 * (y+1) - 1;
- int reeladdr = (visible.min_y / 0x10) * 0x80 + x;
+ int reeladdr = y * 0x80 * 4 + x;
UINT16 reelscroll = (m_ss9601_reelrams[VRAM_HI][reeladdr] << 8) + m_ss9601_reelrams[VRAM_LO][reeladdr];
- l->tmap->set_scrollx(0, (reelscroll >> 9) * 8 + l->scroll_x - visible.min_x);
+ l->tmap->set_scrollx(0, (reelscroll >> 9) * 8 - visible.min_x);
// wrap around at half tilemap (0x100)
- int reelscroll_y = (reelscroll & 0x100) + ((reelscroll + l->scroll_y - visible.min_y/0x10*0x10 + 1) & 0xff);
+ int reelscroll_y = (reelscroll & 0x100) + ((reelscroll - visible.min_y) & 0xff);
int reelwrap_y = 0x100 - (reelscroll_y & 0xff);
rectangle tmp = visible;
@@ -758,7 +742,7 @@ UINT32 subsino2_state::screen_update_subsino2(screen_device &screen, bitmap_ind1
if ( reelwrap_y-1 <= visible.max_y )
tmp.max_y = reelwrap_y-1;
l->tmap->set_scrolly(0, reelscroll_y);
- l->tmap->draw(screen, bitmap, tmp, 0, 0);
+ l->tmap->draw(screen, *m_reelbitmap, tmp, TILEMAP_DRAW_OPAQUE);
tmp.max_y = visible.max_y;
}
@@ -768,11 +752,15 @@ UINT32 subsino2_state::screen_update_subsino2(screen_device &screen, bitmap_ind1
if ( reelwrap_y >= visible.min_y )
tmp.min_y = reelwrap_y;
l->tmap->set_scrolly(0, -((reelwrap_y &0xff) | (reelscroll_y & 0x100)));
- l->tmap->draw(screen, bitmap, tmp, 0, 0);
+ l->tmap->draw(screen, *m_reelbitmap, tmp, TILEMAP_DRAW_OPAQUE);
tmp.min_y = visible.min_y;
}
}
}
+
+ INT32 sx = -l->scroll_x;
+ INT32 sy = -(l->scroll_y + 1);
+ copyscrollbitmap(bitmap, *m_reelbitmap, 1, &sx, 1, &sy, cliprect);
}
else
{
@@ -928,7 +916,7 @@ WRITE16_MEMBER(subsino2_state::bishjan_outputs_w)
{
// coin out data & 0x01;
machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (data & 0x0002) ? 0x80 : 0); // hopper
- coin_counter_w(machine(), 0, data & 0x0010 );
+ machine().bookkeeping().coin_counter_w(0, data & 0x0010 );
}
break;
}
@@ -1000,21 +988,21 @@ WRITE8_MEMBER(subsino2_state::expcard_outputs_w)
break;
case 1: // C
- set_led_status(machine(), 0, data & 0x02); // raise
+ output().set_led_value(0, data & 0x02); // raise
break;
case 2: // B
- set_led_status(machine(), 1, data & 0x04); // hold 4 / small & hold 5 / big ?
- set_led_status(machine(), 2, data & 0x08); // hold 1 / bet
- set_led_status(machine(), 3, data & 0x10); // hold 2 / take ?
- set_led_status(machine(), 4, data & 0x20); // hold 3 / double up ?
+ output().set_led_value(1, data & 0x04); // hold 4 / small & hold 5 / big ?
+ output().set_led_value(2, data & 0x08); // hold 1 / bet
+ output().set_led_value(3, data & 0x10); // hold 2 / take ?
+ output().set_led_value(4, data & 0x20); // hold 3 / double up ?
break;
case 3: // A
- coin_counter_w(machine(), 0, data & 0x01 ); // coin in
- coin_counter_w(machine(), 1, data & 0x02 ); // key in
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 ); // coin in
+ machine().bookkeeping().coin_counter_w(1, data & 0x02 ); // key in
- set_led_status(machine(), 5, data & 0x10); // start
+ output().set_led_value(5, data & 0x10); // start
break;
}
@@ -1032,18 +1020,18 @@ WRITE8_MEMBER(subsino2_state::mtrain_outputs_w)
switch (offset)
{
case 0:
- coin_counter_w(machine(), 0, data & 0x01 ); // key in
- coin_counter_w(machine(), 1, data & 0x02 ); // coin in
- coin_counter_w(machine(), 2, data & 0x10 ); // pay out
-// coin_counter_w(machine(), 3, data & 0x20 ); // hopper motor
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 ); // key in
+ machine().bookkeeping().coin_counter_w(1, data & 0x02 ); // coin in
+ machine().bookkeeping().coin_counter_w(2, data & 0x10 ); // pay out
+// machine().bookkeeping().coin_counter_w(3, data & 0x20 ); // hopper motor
break;
case 1:
- set_led_status(machine(), 0, data & 0x01); // stop reel?
- set_led_status(machine(), 1, data & 0x02); // stop reel? (double or take)
- set_led_status(machine(), 2, data & 0x04); // start all
- set_led_status(machine(), 3, data & 0x08); // bet / stop all
- set_led_status(machine(), 4, data & 0x20); // stop reel? (double or take)
+ output().set_led_value(0, data & 0x01); // stop reel?
+ output().set_led_value(1, data & 0x02); // stop reel? (double or take)
+ output().set_led_value(2, data & 0x04); // start all
+ output().set_led_value(3, data & 0x08); // bet / stop all
+ output().set_led_value(4, data & 0x20); // stop reel? (double or take)
break;
case 2:
@@ -1162,8 +1150,8 @@ WRITE8_MEMBER(subsino2_state::saklove_outputs_w)
switch (offset)
{
case 0:
- coin_counter_w(machine(), 0, data & 0x01 ); // coin in
- coin_counter_w(machine(), 1, data & 0x02 ); // key in
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 ); // coin in
+ machine().bookkeeping().coin_counter_w(1, data & 0x02 ); // key in
break;
case 1:
@@ -1246,22 +1234,22 @@ WRITE8_MEMBER(subsino2_state::xplan_outputs_w)
break;
case 1:
- set_led_status(machine(), 0, data & 0x02); // raise
+ output().set_led_value(0, data & 0x02); // raise
break;
case 2: // B
- set_led_status(machine(), 1, data & 0x04); // hold 1 / big ?
- set_led_status(machine(), 2, data & 0x08); // hold 5 / bet
- set_led_status(machine(), 3, data & 0x10); // hold 4 ?
- set_led_status(machine(), 4, data & 0x20); // hold 2 / double up
- set_led_status(machine(), 5, data & 0x40); // hold 3 / small ?
+ output().set_led_value(1, data & 0x04); // hold 1 / big ?
+ output().set_led_value(2, data & 0x08); // hold 5 / bet
+ output().set_led_value(3, data & 0x10); // hold 4 ?
+ output().set_led_value(4, data & 0x20); // hold 2 / double up
+ output().set_led_value(5, data & 0x40); // hold 3 / small ?
break;
case 3: // A
- coin_counter_w(machine(), 0, data & 0x01 );
- coin_counter_w(machine(), 1, data & 0x02 );
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 );
+ machine().bookkeeping().coin_counter_w(1, data & 0x02 );
- set_led_status(machine(), 6, data & 0x10); // start / take
+ output().set_led_value(6, data & 0x10); // start / take
break;
}
@@ -1345,23 +1333,23 @@ WRITE8_MEMBER(subsino2_state::xtrain_outputs_w)
break;
case 1: // C
- set_led_status(machine(), 0, data & 0x02); // re-double
- set_led_status(machine(), 1, data & 0x04); // half double
+ output().set_led_value(0, data & 0x02); // re-double
+ output().set_led_value(1, data & 0x04); // half double
break;
case 2: // B
- set_led_status(machine(), 2, data & 0x02); // hold 3 / small
- set_led_status(machine(), 3, data & 0x04); // hold 2 / big
- set_led_status(machine(), 4, data & 0x08); // bet
- set_led_status(machine(), 5, data & 0x10); // hold1 / take
- set_led_status(machine(), 6, data & 0x20); // double up
+ output().set_led_value(2, data & 0x02); // hold 3 / small
+ output().set_led_value(3, data & 0x04); // hold 2 / big
+ output().set_led_value(4, data & 0x08); // bet
+ output().set_led_value(5, data & 0x10); // hold1 / take
+ output().set_led_value(6, data & 0x20); // double up
break;
case 3: // A
- coin_counter_w(machine(), 0, data & 0x01 ); // coin in
- coin_counter_w(machine(), 1, data & 0x02 ); // key in
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 ); // coin in
+ machine().bookkeeping().coin_counter_w(1, data & 0x02 ); // key in
- set_led_status(machine(), 7, data & 0x10); // start
+ output().set_led_value(7, data & 0x10); // start
break;
}
@@ -2194,7 +2182,7 @@ static MACHINE_CONFIG_START( mtrain, subsino2_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ss9601 )
MCFG_PALETTE_ADD( "palette", 256 )
- MCFG_VIDEO_START_OVERRIDE(subsino2_state, mtrain )
+ MCFG_VIDEO_START_OVERRIDE(subsino2_state, subsino2 )
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2274,8 +2262,6 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( xtrain, xplan )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(xtrain_io)
-
- MCFG_VIDEO_START_OVERRIDE(subsino2_state, xtrain )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( expcard, xplan )
@@ -2806,6 +2792,6 @@ GAME( 1996, wtrnymph, 0, mtrain, wtrnymph, subsino2_state, wtrnymph, RO
GAME( 1998, expcard, 0, expcard, expcard, subsino2_state, expcard, ROT0, "American Alpha", "Express Card / Top Card (Ver. 1.5)", 0 )
GAME( 1998, saklove, 0, saklove, saklove, subsino2_state, saklove, ROT0, "Subsino", "Ying Hua Lian 2.0 (China, Ver. 1.02)", 0 )
GAME( 1999, xtrain, 0, xtrain, xtrain, subsino2_state, xtrain, ROT0, "Subsino", "X-Train (Ver. 1.3)", 0 )
-GAME( 1999, ptrain, 0, xtrain, xtrain, subsino2_state, ptrain, ROT0, "Subsino", "Panda Train (Novamatic 1.7)", 0 )
+GAME( 1999, ptrain, 0, xtrain, xtrain, subsino2_state, ptrain, ROT0, "Subsino", "Panda Train (Novamatic 1.7)", MACHINE_IMPERFECT_GRAPHICS ) // missing scroll in race screens
GAME( 1999, bishjan, 0, bishjan, bishjan, subsino2_state, bishjan, ROT0, "Subsino", "Bishou Jan (Japan, Ver. 2.03)", MACHINE_NO_SOUND )
GAME( 2006, xplan, 0, xplan, xplan, subsino2_state, xplan, ROT0, "Subsino", "X-Plan (Ver. 1.01)", 0 )
diff --git a/src/mame/drivers/sun3.cpp b/src/mame/drivers/sun3.cpp
index 5cdc1fe8125..00126ba93a9 100644
--- a/src/mame/drivers/sun3.cpp
+++ b/src/mame/drivers/sun3.cpp
@@ -283,7 +283,7 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/timekpr.h"
-#include "machine/8530scc.h"
+#include "machine/z80scc.h"
#include "bus/scsi/scsi.h"
#include "bus/scsi/scsihd.h"
#include "bus/scsi/scsicd.h"
@@ -291,12 +291,15 @@
#include "machine/upd765.h"
#include "formats/pc_dsk.h"
#include "formats/mfi_dsk.h"
+#include "bus/rs232/rs232.h"
#define TIMEKEEPER_TAG "timekpr"
#define SCC1_TAG "scc1"
#define SCC2_TAG "scc2"
#define ESP_TAG "esp"
#define FDC_TAG "fdc"
+#define RS232A_TAG "rs232a"
+#define RS232B_TAG "rs232b"
class sun3_state : public driver_device
{
@@ -312,8 +315,8 @@ public:
{ }
required_device<cpu_device> m_maincpu;
- required_device<scc8530_t> m_scc1;
- required_device<scc8530_t> m_scc2;
+ required_device<z80scc_device> m_scc1;
+ required_device<z80scc_device> m_scc2;
optional_device<n82077aa_device> m_fdc;
virtual void machine_reset() override;
@@ -344,11 +347,6 @@ public:
DECLARE_READ32_MEMBER(fpa_r);
DECLARE_READ32_MEMBER(p4id_r);
- DECLARE_READ8_MEMBER(scc1_r);
- DECLARE_WRITE8_MEMBER(scc1_w);
- DECLARE_READ8_MEMBER(scc2_r);
- DECLARE_WRITE8_MEMBER(scc2_w);
-
DECLARE_FLOPPY_FORMATS( floppy_formats );
TIMER_DEVICE_CALLBACK_MEMBER(sun380_timer);
@@ -379,8 +377,8 @@ static ADDRESS_MAP_START(sun3_80_mem, AS_PROGRAM, 32, sun3_state)
AM_RANGE(0x61001000, 0x61001003) AM_READWRITE(memreg_r, memreg_w)
AM_RANGE(0x61001004, 0x61001007) AM_READWRITE(memrerraddr_r, memrerraddr_w)
AM_RANGE(0x61001400, 0x61001403) AM_READWRITE(irqctrl_r, irqctrl_w)
- AM_RANGE(0x62000000, 0x6200000f) AM_READWRITE8(scc1_r, scc1_w, 0xff00ff00)
- AM_RANGE(0x62002000, 0x6200200f) AM_READWRITE8(scc2_r, scc2_w, 0xff00ff00)
+ AM_RANGE(0x62000000, 0x6200000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
+ AM_RANGE(0x62002000, 0x6200200f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
AM_RANGE(0x63000000, 0x6301ffff) AM_ROM AM_REGION("user1",0)
AM_RANGE(0x64000000, 0x640007ff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0xffffffff)
AM_RANGE(0x66000000, 0x6600003f) AM_DEVREADWRITE8(ESP_TAG, ncr539x_device, read, write, 0xff000000)
@@ -403,8 +401,8 @@ static ADDRESS_MAP_START(sun3_460_mem, AS_PROGRAM, 32, sun3_state)
AM_RANGE(0x61001000, 0x61001003) AM_READWRITE(memreg_r, memreg_w)
AM_RANGE(0x61001004, 0x61001007) AM_READWRITE(memrerraddr_r, memrerraddr_w)
AM_RANGE(0x61001400, 0x61001403) AM_READWRITE(irqctrl_r, irqctrl_w)
- AM_RANGE(0x62000000, 0x6200000f) AM_READWRITE8(scc1_r, scc1_w, 0xff00ff00)
- AM_RANGE(0x62002000, 0x6200200f) AM_READWRITE8(scc2_r, scc2_w, 0xff00ff00)
+ AM_RANGE(0x62000000, 0x6200000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
+ AM_RANGE(0x62002000, 0x6200200f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00)
AM_RANGE(0x63000000, 0x6301ffff) AM_ROM AM_REGION("user1",0)
AM_RANGE(0x6f00003c, 0x6f00003f) AM_READWRITE(printer_r, printer_w)
@@ -504,32 +502,6 @@ WRITE32_MEMBER(sun3_state::ramwrite_w)
COMBINE_DATA(&pRAM[offset]);
}
-// sun3: 0 = B control, 1 = B data, 2 = A control, 3 = A data
-// 8530scc: 0 = B control, 1 = A control, 2 = B data, 3 = A data
-READ8_MEMBER(sun3_state::scc1_r)
-{
- int regsel = ((offset & 1)<<1) | ((offset & 2) >> 1);
- return m_scc1->reg_r(space, regsel);
-}
-
-WRITE8_MEMBER(sun3_state::scc1_w)
-{
- int regsel = ((offset & 1)<<1) | ((offset & 2) >> 1);
- m_scc1->reg_w(space, regsel, data);
-}
-
-READ8_MEMBER(sun3_state::scc2_r)
-{
- int regsel = ((offset & 1)<<1) | ((offset & 2) >> 1);
- return m_scc2->reg_r(space, regsel);
-}
-
-WRITE8_MEMBER(sun3_state::scc2_w)
-{
- int regsel = ((offset & 1)<<1) | ((offset & 2) >> 1);
- m_scc2->reg_w(space, regsel, data);
-}
-
READ32_MEMBER(sun3_state::enable_r)
{
return m_enable;
@@ -759,8 +731,8 @@ static MACHINE_CONFIG_START( sun3, sun3_state )
MCFG_CPU_ADD("maincpu", M68020, 16670000)
MCFG_CPU_PROGRAM_MAP(sun3_mem)
- MCFG_DEVICE_ADD(SCC1_TAG, SCC8530, XTAL_4_9152MHz)
- MCFG_DEVICE_ADD(SCC2_TAG, SCC8530, XTAL_4_9152MHz)
+ MCFG_SCC8530_ADD(SCC1_TAG, XTAL_4_9152MHz, 0, 0, 0, 0)
+ MCFG_SCC8530_ADD(SCC2_TAG, XTAL_4_9152MHz, 0, 0, 0, 0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( sun3_80, sun3_state )
@@ -770,8 +742,20 @@ static MACHINE_CONFIG_START( sun3_80, sun3_state )
MCFG_M48T02_ADD(TIMEKEEPER_TAG)
- MCFG_DEVICE_ADD(SCC1_TAG, SCC8530, XTAL_4_9152MHz)
- MCFG_DEVICE_ADD(SCC2_TAG, SCC8530, XTAL_4_9152MHz)
+ MCFG_SCC8530_ADD(SCC1_TAG, XTAL_4_9152MHz, 0, 0, 0, 0)
+ MCFG_SCC8530_ADD(SCC2_TAG, XTAL_4_9152MHz, 0, 0, 0, 0)
+ MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE(RS232A_TAG, rs232_port_device, write_txd))
+ MCFG_Z80SCC_OUT_TXDB_CB(DEVWRITELINE(RS232B_TAG, rs232_port_device, write_txd))
+
+ MCFG_RS232_PORT_ADD(RS232A_TAG, default_rs232_devices, nullptr)
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, rxa_w))
+ MCFG_RS232_DCD_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, dcda_w))
+ MCFG_RS232_CTS_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, ctsa_w))
+
+ MCFG_RS232_PORT_ADD(RS232B_TAG, default_rs232_devices, nullptr)
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, rxb_w))
+ MCFG_RS232_DCD_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, dcdb_w))
+ MCFG_RS232_CTS_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, ctsb_w))
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
@@ -800,8 +784,20 @@ static MACHINE_CONFIG_START( sun3_460, sun3_state )
MCFG_M48T02_ADD(TIMEKEEPER_TAG)
- MCFG_DEVICE_ADD(SCC1_TAG, SCC8530, XTAL_4_9152MHz)
- MCFG_DEVICE_ADD(SCC2_TAG, SCC8530, XTAL_4_9152MHz)
+ MCFG_SCC8530_ADD(SCC1_TAG, XTAL_4_9152MHz, 0, 0, 0, 0)
+ MCFG_SCC8530_ADD(SCC2_TAG, XTAL_4_9152MHz, 0, 0, 0, 0)
+ MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE(RS232A_TAG, rs232_port_device, write_txd))
+ MCFG_Z80SCC_OUT_TXDB_CB(DEVWRITELINE(RS232B_TAG, rs232_port_device, write_txd))
+
+ MCFG_RS232_PORT_ADD(RS232A_TAG, default_rs232_devices, nullptr)
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, rxa_w))
+ MCFG_RS232_DCD_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, dcda_w))
+ MCFG_RS232_CTS_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, ctsa_w))
+
+ MCFG_RS232_PORT_ADD(RS232B_TAG, default_rs232_devices, nullptr)
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, rxb_w))
+ MCFG_RS232_DCD_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, dcdb_w))
+ MCFG_RS232_CTS_HANDLER(DEVWRITELINE(SCC2_TAG, z80scc_device, ctsb_w))
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/suna16.cpp b/src/mame/drivers/suna16.cpp
index 3e0b4c4b864..e2d375bc148 100644
--- a/src/mame/drivers/suna16.cpp
+++ b/src/mame/drivers/suna16.cpp
@@ -54,11 +54,11 @@ WRITE16_MEMBER(suna16_state::bssoccer_leds_w)
{
if (ACCESSING_BITS_0_7)
{
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x02);
- set_led_status(machine(), 2, data & 0x04);
- set_led_status(machine(), 3, data & 0x08);
- coin_counter_w(machine(), 0, data & 0x10);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
+ output().set_led_value(2, data & 0x04);
+ output().set_led_value(3, data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
}
if (data & ~0x1f) logerror("CPU#0 PC %06X - Leds unknown bits: %04X\n", space.device().safe_pc(), data);
}
@@ -68,9 +68,9 @@ WRITE16_MEMBER(suna16_state::uballoon_leds_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x01);
- set_led_status(machine(), 0, data & 0x02);
- set_led_status(machine(), 1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ output().set_led_value(0, data & 0x02);
+ output().set_led_value(1, data & 0x04);
}
if (data & ~0x07) logerror("CPU#0 PC %06X - Leds unknown bits: %04X\n", space.device().safe_pc(), data);
}
@@ -80,7 +80,7 @@ WRITE16_MEMBER(suna16_state::bestbest_coin_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
}
if (data & ~0x04) logerror("CPU#0 PC %06X - Leds unknown bits: %04X\n", space.device().safe_pc(), data);
}
diff --git a/src/mame/drivers/suna8.cpp b/src/mame/drivers/suna8.cpp
index 0a34955cf34..a09ed61babc 100644
--- a/src/mame/drivers/suna8.cpp
+++ b/src/mame/drivers/suna8.cpp
@@ -293,6 +293,14 @@ rom13: 0?, 1y, 2n, 3n ?,?,?,? (palettes)
membank("bank2")->configure_entries(0, 2, auto_alloc_array(machine(), UINT8, 0x2000 * 2), 0x2000);
}
+DRIVER_INIT_MEMBER(suna8_state, hardhea2b)
+{
+ // no address scramble?
+ // code/data split in first ROM?
+
+ m_bank1->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000);
+ membank("bank2")->configure_entries(0, 2, auto_alloc_array(machine(), UINT8, 0x2000 * 2), 0x2000);
+}
/***************************************************************************
Star Fighter
@@ -542,8 +550,8 @@ WRITE8_MEMBER(suna8_state::hardhead_bankswitch_w)
WRITE8_MEMBER(suna8_state::hardhead_flipscreen_w)
{
flip_screen_set(data & 0x04);
- coin_lockout_w ( machine(), 0, data & 0x08);
- coin_lockout_w ( machine(), 1, data & 0x10);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x10);
}
static ADDRESS_MAP_START( hardhead_map, AS_PROGRAM, 8, suna8_state )
@@ -588,8 +596,8 @@ WRITE8_MEMBER(suna8_state::rranger_bankswitch_w)
m_bank1->set_entry(bank);
flip_screen_set(data & 0x20);
- coin_lockout_w ( machine(), 0, data & 0x40);
- coin_lockout_w ( machine(), 1, data & 0x80);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x40);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x80);
}
/*
@@ -700,9 +708,9 @@ WRITE8_MEMBER(suna8_state::brickzn_rombank_w)
*/
WRITE8_MEMBER(suna8_state::brickzn_leds_w)
{
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
logerror("CPU #0 - PC %04X: leds = %02X\n",space.device().safe_pc(),data);
if (data & ~0x07) logerror("CPU #0 - PC %04X: unknown leds bits: %02X\n",space.device().safe_pc(),data);
@@ -910,9 +918,9 @@ WRITE8_MEMBER(suna8_state::hardhea2_flipscreen_w)
WRITE8_MEMBER(suna8_state::hardhea2_leds_w)
{
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
if (data & ~0x07) logerror("CPU #0 - PC %04X: unknown leds bits: %02X\n",space.device().safe_pc(),data);
}
@@ -1066,9 +1074,9 @@ WRITE8_MEMBER(suna8_state::starfigh_spritebank_w)
*/
WRITE8_MEMBER(suna8_state::starfigh_leds_w)
{
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
m_gfxbank = (data & 0x08) ? 4 : 0;
if (data & ~0x0f) logerror("CPU #0 - PC %04X: unknown leds bits: %02X\n",space.device().safe_pc(),data);
@@ -1180,8 +1188,8 @@ WRITE8_MEMBER(suna8_state::suna8_wram_w)
*/
WRITE8_MEMBER(suna8_state::sparkman_rombank_w)
{
- set_led_status(machine(), 0, data & 0x01);
- set_led_status(machine(), 1, data & 0x02);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
if (data & ~0x03) logerror("CPU #0 - PC %04X: unknown leds bits: %02X\n",space.device().safe_pc(),data);
@@ -1201,7 +1209,7 @@ WRITE8_MEMBER(suna8_state::sparkman_rombank_w)
*/
WRITE8_MEMBER(suna8_state::sparkman_coin_counter_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
// To do: implement this, affects the duration of copyright screen
@@ -2077,6 +2085,13 @@ static MACHINE_CONFIG_DERIVED( hardhea2, brickzn )
MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( hardhea2b, hardhea2 )
+ MCFG_DEVICE_REMOVE("maincpu")
+
+ MCFG_CPU_ADD("maincpu", Z80, SUNA8_MASTER_CLOCK / 4) //bootleg clock not verified (?)
+ MCFG_CPU_PROGRAM_MAP(hardhea2_map)
+MACHINE_CONFIG_END
+
/***************************************************************************
Star Fighter
@@ -2810,6 +2825,33 @@ ROM_START( hardhea2 )
ROM_LOAD( "hrd-hd8", 0x70000, 0x10000, CRC(359597a4) SHA1(ae024dd61c5d12813a661abe8ea63ae6112ddc9c) )
ROM_END
+ROM_START( hardhea2b )
+ ROM_REGION( 0x50000, "maincpu", 0 ) /* Main Z80 Code */
+ ROM_LOAD( "9.F5", 0x00000, 0x10000, CRC(3f31ece3) SHA1(224e9bc60a71ede9d194e9c696c2259a55f16e7d) )
+ ROM_LOAD( "10.H5", 0x10000, 0x10000, CRC(98b34813) SHA1(8aa9cab73480e4526d30880f99332e7cb716ce81) )
+ ROM_LOAD( "11.I5", 0x20000, 0x10000, CRC(12af8f8e) SHA1(1b33a060b70900042fdae00f7dec325228d566f5) )
+ ROM_LOAD( "12.F7", 0x30000, 0x10000, CRC(35d13212) SHA1(2fd03077b89ec9e55d2758b7f9cada970f0bdd91) )
+ ROM_LOAD( "13.H7", 0x40000, 0x10000, CRC(044f956f) SHA1(9361d383b14fc0f4f718d46db7fcac56647405a6) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Music Z80 Code */
+ ROM_LOAD( "14.C6", 0x00000, 0x08000, CRC(79a3be51) SHA1(30bc67cd3a936615c6931f8e15953425dff59611) )
+
+ ROM_REGION( 0x10000, "pcm", 0 ) /* PCM Z80 Code */
+ ROM_LOAD( "15.M10", 0x00000, 0x10000, CRC(bcbd88c3) SHA1(79782d598d9d764de70c54fc07ff9bf0f7d13d62) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT ) /* Sprites */
+ ROM_LOAD( "1.N1", 0x00000, 0x10000, CRC(7e7b7a58) SHA1(1a74260dda64aafcb046c8add92a54655bbc74e4) )
+ ROM_LOAD( "2.O1", 0x10000, 0x10000, CRC(303ec802) SHA1(533c29d9bb54415410c5d3c5af234b8b040190de) )
+ ROM_LOAD( "3.Q1", 0x20000, 0x10000, CRC(3353b2c7) SHA1(a3ec0fc2a97e7e0bc72fafd5897cb1dd4cd32197) )
+ ROM_LOAD( "4.N3", 0x30000, 0x10000, CRC(dbc1f9c1) SHA1(720c729d7825635584632d033b4b46eea2fb1291) )
+ ROM_LOAD( "5.N4", 0x40000, 0x10000, CRC(f738c0af) SHA1(7dda657acd1d6fb7064e8dbd5ce386e9eae3d36a) )
+ ROM_LOAD( "6.O4", 0x50000, 0x10000, CRC(bf90d3ca) SHA1(2d0533d93fc5155fe879c1890bc7bc4581308e16) )
+ ROM_LOAD( "7.Q4", 0x60000, 0x10000, CRC(992ce8cb) SHA1(21c0dd227138ec64003c7cb090855ec27d41719e) )
+ ROM_LOAD( "8.N6", 0x70000, 0x10000, CRC(359597a4) SHA1(ae024dd61c5d12813a661abe8ea63ae6112ddc9c) )
+ROM_END
+
+
+
/***************************************************************************
@@ -3008,6 +3050,7 @@ GAME( 1989, sparkmana, sparkman, sparkman, sparkman, suna8_state, sparkman, ROT
GAME( 1990, starfigh, 0, starfigh, starfigh, suna8_state, starfigh, ROT90, "SunA", "Star Fighter (v1)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1991, hardhea2, 0, hardhea2, hardhea2, suna8_state, hardhea2, ROT0, "SunA", "Hard Head 2 (v2.0)", 0 )
+GAME( 1991, hardhea2b, hardhea2, hardhea2b,hardhea2, suna8_state, hardhea2b, ROT0, "SunA", "Hard Head 2 (v2.0, bootleg)", MACHINE_NOT_WORKING )
GAME( 1992, brickzn, 0, brickzn, brickznv6,suna8_state, brickzn, ROT90, "SunA", "Brick Zone (v6.0, Joystick)", 0 )
GAME( 1992, brickznv5, brickzn, brickzn, brickzn, suna8_state, brickznv5, ROT90, "SunA", "Brick Zone (v5.0, Joystick)", 0 )
diff --git a/src/mame/drivers/supdrapo.cpp b/src/mame/drivers/supdrapo.cpp
index 9eded3118c7..447e0736208 100644
--- a/src/mame/drivers/supdrapo.cpp
+++ b/src/mame/drivers/supdrapo.cpp
@@ -241,12 +241,12 @@ WRITE8_MEMBER(supdrapo_state::debug7c00_w)
WRITE8_MEMBER(supdrapo_state::coinin_w)
{
- coin_counter_w(machine(), 0, data & 0x01); /* Coin In */
+ machine().bookkeeping().coin_counter_w(0, data & 0x01); /* Coin In */
}
WRITE8_MEMBER(supdrapo_state::payout_w)
{
- coin_counter_w(machine(), 1, data & 0x01); /* Payout */
+ machine().bookkeeping().coin_counter_w(1, data & 0x01); /* Payout */
}
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/superchs.cpp b/src/mame/drivers/superchs.cpp
index 42e55078f4c..3f88465df2e 100644
--- a/src/mame/drivers/superchs.cpp
+++ b/src/mame/drivers/superchs.cpp
@@ -147,10 +147,10 @@ WRITE32_MEMBER(superchs_state::superchs_input_w)
{
if (ACCESSING_BITS_24_31)
{
- coin_lockout_w(machine(), 0,~data & 0x01000000);
- coin_lockout_w(machine(), 1,~data & 0x02000000);
- coin_counter_w(machine(), 0, data & 0x04000000);
- coin_counter_w(machine(), 1, data & 0x08000000);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x01000000);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x02000000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04000000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08000000);
m_coin_word=(data >> 16) &0xffff;
}
}
diff --git a/src/mame/drivers/supercon.cpp b/src/mame/drivers/supercon.cpp
index 35c1913fcc5..f40be537c43 100644
--- a/src/mame/drivers/supercon.cpp
+++ b/src/mame/drivers/supercon.cpp
@@ -180,7 +180,7 @@ void supercon_state::set_pieces()
{
int i;
for (i=0;i<64;i++)
- output_set_indexed_value("P", i, m_board[i]);
+ output().set_indexed_value("P", i, m_board[i]);
}
void supercon_state::set_border_pieces()
@@ -188,7 +188,7 @@ void supercon_state::set_border_pieces()
UINT8 i;
for (i=0;i<12;i++)
- output_set_indexed_value("Q", i, m_border_pieces[i]);
+ output().set_indexed_value("Q", i, m_border_pieces[i]);
}
void supercon_state::clear_pieces()
@@ -196,7 +196,7 @@ void supercon_state::clear_pieces()
int i;
for (i=0;i<64;i++)
{
- output_set_indexed_value("P", i, EM);
+ output().set_indexed_value("P", i, EM);
m_board[i]=EM;
}
}
@@ -231,19 +231,19 @@ void supercon_state::update_leds()
for (i = 0; i < 8; i++)
{
if (BIT(m_LED_18, i))
- output_set_led_value(i + 1, 1);
+ output().set_led_value(i + 1, 1);
else
- output_set_led_value(i + 1, 0);
+ output().set_led_value(i + 1, 0);
if (BIT(m_LED_AH, i))
- output_set_led_value(i + 9, 1);
+ output().set_led_value(i + 9, 1);
else
- output_set_led_value(i + 9, 0);
+ output().set_led_value(i + 9, 0);
if (BIT(m_LED_ST, i))
- output_set_led_value(i + 17, 1);
+ output().set_led_value(i + 17, 1);
else
- output_set_led_value(i + 17, 0);
+ output().set_led_value(i + 17, 0);
}
}
@@ -259,7 +259,7 @@ void supercon_state::mouse_update()
{
i = get_first_bit(port_input);
m_moving_piece = m_border_pieces[i];
- output_set_value("MOVING", m_moving_piece);
+ output().set_value("MOVING", m_moving_piece);
return;
}
@@ -269,7 +269,7 @@ void supercon_state::mouse_update()
{
i = get_first_bit(port_input);
m_moving_piece = m_border_pieces[6+i];
- output_set_value("MOVING", m_moving_piece);
+ output().set_value("MOVING", m_moving_piece);
return;
}
@@ -280,7 +280,7 @@ void supercon_state::mouse_update()
if (m_moving_piece)
{
m_moving_piece=0;
- output_set_value("MOVING", m_moving_piece);
+ output().set_value("MOVING", m_moving_piece);
return;
}
}
@@ -439,7 +439,7 @@ READ8_MEMBER( supercon_state::supercon_port4_r )
else
{
set_pieces();
- output_set_value("MOVING",m_moving_piece);
+ output().set_value("MOVING",m_moving_piece);
}
switch ( i_18 )
@@ -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/superdq.cpp b/src/mame/drivers/superdq.cpp
index cea2bc6189a..800684765ee 100644
--- a/src/mame/drivers/superdq.cpp
+++ b/src/mame/drivers/superdq.cpp
@@ -164,8 +164,8 @@ WRITE8_MEMBER(superdq_state::superdq_io_w)
if ( data & 0x40 ) /* bit 6 = irqack */
m_maincpu->set_input_line(0, CLEAR_LINE);
- coin_counter_w( machine(), 0, data & 0x08 );
- coin_counter_w( machine(), 1, data & 0x04 );
+ machine().bookkeeping().coin_counter_w(0, data & 0x08 );
+ machine().bookkeeping().coin_counter_w(1, data & 0x04 );
m_color_bank = ( data & 2 ) ? 1 : 0;
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp
index 8db24ee5ed0..1fb0b9f9b0b 100644
--- a/src/mame/drivers/superqix.cpp
+++ b/src/mame/drivers/superqix.cpp
@@ -116,7 +116,7 @@ SAMPLES_START_CB_MEMBER(superqix_state::pbillian_sh_start)
int i, len = memregion("samples")->bytes();
/* convert 8-bit unsigned samples to 8-bit signed */
- m_samplebuf = auto_alloc_array(machine(), INT16, len);
+ m_samplebuf = std::make_unique<INT16[]>(len);
for (i = 0;i < len;i++)
m_samplebuf[i] = (INT8)(src[i] ^ 0x80) * 256;
}
@@ -133,7 +133,7 @@ WRITE8_MEMBER(superqix_state::pbillian_sample_trigger_w)
while (end < len && src[end] != 0xff)
end++;
- m_samples->start_raw(0, m_samplebuf + start, end - start, 5000); // 5khz ?
+ m_samples->start_raw(0, m_samplebuf.get() + start, end - start, 5000); // 5khz ?
}
@@ -208,13 +208,13 @@ WRITE8_MEMBER(superqix_state::bootleg_mcu_p1_w)
// ???
break;
case 1:
- coin_counter_w(machine(), 0,data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
break;
case 2:
- coin_counter_w(machine(), 1,data & 1);
+ machine().bookkeeping().coin_counter_w(1,data & 1);
break;
case 3:
- coin_lockout_global_w(machine(), (data & 1) ^ m_invert_coin_lockout);
+ machine().bookkeeping().coin_lockout_global_w((data & 1) ^ m_invert_coin_lockout);
break;
case 4:
flip_screen_set(data & 1);
@@ -275,13 +275,13 @@ WRITE8_MEMBER(superqix_state::sqixu_mcu_p2_w)
// bit 0 = unknown (clocked often)
// bit 1 = coin cointer 1
- coin_counter_w(machine(), 0,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 2);
// bit 2 = coin counter 2
- coin_counter_w(machine(), 1,data & 4);
+ machine().bookkeeping().coin_counter_w(1,data & 4);
// bit 3 = coin lockout
- coin_lockout_global_w(machine(), ~data & 8);
+ machine().bookkeeping().coin_lockout_global_w(~data & 8);
// bit 4 = flip screen
flip_screen_set(data & 0x10);
diff --git a/src/mame/drivers/supertnk.cpp b/src/mame/drivers/supertnk.cpp
index bb7b3e06731..938ab46a2fc 100644
--- a/src/mame/drivers/supertnk.cpp
+++ b/src/mame/drivers/supertnk.cpp
@@ -114,7 +114,7 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu") { }
- UINT8 *m_videoram[3];
+ std::unique_ptr<UINT8[]> m_videoram[3];
UINT8 m_rom_bank;
UINT8 m_bitplane_select;
pen_t m_pens[NUM_PENS];
@@ -199,9 +199,9 @@ void supertnk_state::video_start()
m_pens[i] = rgb_t(pal1bit(data >> 2), pal1bit(data >> 5), pal1bit(data >> 6));
}
- m_videoram[0] = auto_alloc_array(machine(), UINT8, 0x2000);
- m_videoram[1] = auto_alloc_array(machine(), UINT8, 0x2000);
- m_videoram[2] = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_videoram[0] = std::make_unique<UINT8[]>(0x2000);
+ m_videoram[1] = std::make_unique<UINT8[]>(0x2000);
+ m_videoram[2] = std::make_unique<UINT8[]>(0x2000);
}
diff --git a/src/mame/drivers/superwng.cpp b/src/mame/drivers/superwng.cpp
index 649b2e448e7..cf599bd80dd 100644
--- a/src/mame/drivers/superwng.cpp
+++ b/src/mame/drivers/superwng.cpp
@@ -302,12 +302,12 @@ WRITE8_MEMBER(superwng_state::superwng_flip_screen_w)
WRITE8_MEMBER(superwng_state::superwng_cointcnt1_w)
{
- coin_counter_w(machine(), 0, data);
+ machine().bookkeeping().coin_counter_w(0, data);
}
WRITE8_MEMBER(superwng_state::superwng_cointcnt2_w)
{
- coin_counter_w(machine(), 1, data);
+ machine().bookkeeping().coin_counter_w(1, data);
}
WRITE8_MEMBER(superwng_state::superwng_hopper_w)
diff --git a/src/mame/drivers/suprgolf.cpp b/src/mame/drivers/suprgolf.cpp
index bed008de237..c83dbb32a0c 100644
--- a/src/mame/drivers/suprgolf.cpp
+++ b/src/mame/drivers/suprgolf.cpp
@@ -47,10 +47,10 @@ public:
required_shared_ptr<UINT8> m_videoram;
tilemap_t *m_tilemap;
- UINT8 *m_paletteram;
- UINT8 *m_bg_vram;
- UINT16 *m_bg_fb;
- UINT16 *m_fg_fb;
+ std::unique_ptr<UINT8[]> m_paletteram;
+ std::unique_ptr<UINT8[]> m_bg_vram;
+ std::unique_ptr<UINT16[]> m_bg_fb;
+ std::unique_ptr<UINT16[]> m_fg_fb;
UINT8 m_rom_bank;
UINT8 m_bg_bank;
UINT8 m_vreg_bank;
@@ -103,10 +103,10 @@ TILE_GET_INFO_MEMBER(suprgolf_state::get_tile_info)
void suprgolf_state::video_start()
{
m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(suprgolf_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 );
- m_paletteram = auto_alloc_array(machine(), UINT8, 0x1000);
- m_bg_vram = auto_alloc_array(machine(), UINT8, 0x2000*0x20);
- m_bg_fb = auto_alloc_array(machine(), UINT16, 0x2000*0x20);
- m_fg_fb = auto_alloc_array(machine(), UINT16, 0x2000*0x20);
+ m_paletteram = std::make_unique<UINT8[]>(0x1000);
+ m_bg_vram = std::make_unique<UINT8[]>(0x2000*0x20);
+ m_bg_fb = std::make_unique<UINT16[]>(0x2000*0x20);
+ m_fg_fb = std::make_unique<UINT16[]>(0x2000*0x20);
m_tilemap->set_transparent_pen(15);
@@ -115,10 +115,10 @@ void suprgolf_state::video_start()
save_item(NAME(m_vreg_pen));
save_item(NAME(m_palette_switch));
save_item(NAME(m_bg_vreg_test));
- save_pointer(NAME(m_paletteram), 0x1000);
- save_pointer(NAME(m_bg_vram), 0x2000*0x20);
- save_pointer(NAME(m_bg_fb), 0x2000*0x20);
- save_pointer(NAME(m_fg_fb), 0x2000*0x20);
+ save_pointer(NAME(m_paletteram.get()), 0x1000);
+ save_pointer(NAME(m_bg_vram.get()), 0x2000*0x20);
+ save_pointer(NAME(m_bg_fb.get()), 0x2000*0x20);
+ save_pointer(NAME(m_fg_fb.get()), 0x2000*0x20);
}
UINT32 suprgolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/suprnova.cpp b/src/mame/drivers/suprnova.cpp
index 3d56e0465b8..95d08b082c5 100644
--- a/src/mame/drivers/suprnova.cpp
+++ b/src/mame/drivers/suprnova.cpp
@@ -605,10 +605,10 @@ WRITE32_MEMBER(skns_state::skns_io_w)
case 2:
if(ACCESSING_BITS_24_31)
{ /* Coin Lock/Count */
-// coin_counter_w(machine(), 0, data & 0x01000000);
-// coin_counter_w(machine(), 1, data & 0x02000000);
-// coin_lockout_w(machine(), 0, ~data & 0x04000000);
-// coin_lockout_w(machine(), 1, ~data & 0x08000000); // Works in puzzloop, others behave strange.
+// machine().bookkeeping().coin_counter_w(0, data & 0x01000000);
+// machine().bookkeeping().coin_counter_w(1, data & 0x02000000);
+// machine().bookkeeping().coin_lockout_w(0, ~data & 0x04000000);
+// machine().bookkeeping().coin_lockout_w(1, ~data & 0x08000000); // Works in puzzloop, others behave strange.
}
if(ACCESSING_BITS_16_23)
{ /* Analogue Input Select */
diff --git a/src/mame/drivers/suprridr.cpp b/src/mame/drivers/suprridr.cpp
index 4072f9dbfac..21319ed6f61 100644
--- a/src/mame/drivers/suprridr.cpp
+++ b/src/mame/drivers/suprridr.cpp
@@ -156,7 +156,7 @@ WRITE8_MEMBER(suprridr_state::sound_irq_ack_w)
WRITE8_MEMBER(suprridr_state::coin_lock_w)
{
/* cleared when 9 credits are hit, but never reset! */
-/* coin_lockout_global_w(machine(), ~data & 1); */
+/* machine().bookkeeping().coin_lockout_global_w(~data & 1); */
}
diff --git a/src/mame/drivers/surpratk.cpp b/src/mame/drivers/surpratk.cpp
index ad65d4db4ab..84ce10061a7 100644
--- a/src/mame/drivers/surpratk.cpp
+++ b/src/mame/drivers/surpratk.cpp
@@ -42,8 +42,8 @@ WRITE8_MEMBER(surpratk_state::surpratk_5fc0_w)
logerror("%04x: 3fc0 = %02x\n",space.device().safe_pc(),data);
/* bit 0/1 = coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 3 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp
index 9b6389ea1a9..da2ff7e3765 100644
--- a/src/mame/drivers/svmu.cpp
+++ b/src/mame/drivers/svmu.cpp
@@ -174,10 +174,10 @@ static LC8670_LCD_UPDATE( svmu_lcd_update )
bitmap.fill(0, cliprect);
}
- output_set_value("file_icon" , lcd_enabled ? BIT(vram[0xc1],6) : 0);
- output_set_value("game_icon" , lcd_enabled ? BIT(vram[0xc2],4) : 0);
- output_set_value("clock_icon", lcd_enabled ? BIT(vram[0xc3],2) : 0);
- output_set_value("flash_icon", lcd_enabled ? BIT(vram[0xc4],0) : 0);
+ device.machine().output().set_value("file_icon" , lcd_enabled ? BIT(vram[0xc1],6) : 0);
+ device.machine().output().set_value("game_icon" , lcd_enabled ? BIT(vram[0xc2],4) : 0);
+ device.machine().output().set_value("clock_icon", lcd_enabled ? BIT(vram[0xc3],2) : 0);
+ device.machine().output().set_value("flash_icon", lcd_enabled ? BIT(vram[0xc4],0) : 0);
return 0;
}
diff --git a/src/mame/drivers/swtpc.cpp b/src/mame/drivers/swtpc.cpp
index 78052d6fec1..f36476d6a62 100644
--- a/src/mame/drivers/swtpc.cpp
+++ b/src/mame/drivers/swtpc.cpp
@@ -61,7 +61,6 @@ public:
DECLARE_READ8_MEMBER(swtpc_status_r);
DECLARE_READ8_MEMBER(swtpc_terminal_r);
DECLARE_READ8_MEMBER(swtpc_tricky_r);
- DECLARE_WRITE8_MEMBER(swtpc_terminal_w);
DECLARE_WRITE8_MEMBER(kbd_put);
UINT8 m_term_data;
virtual void machine_reset() override;
diff --git a/src/mame/drivers/sym1.cpp b/src/mame/drivers/sym1.cpp
index c7d476b2327..231703d1df1 100644
--- a/src/mame/drivers/sym1.cpp
+++ b/src/mame/drivers/sym1.cpp
@@ -97,7 +97,7 @@ WRITE_LINE_MEMBER( sym1_state::sym1_74145_output_5_w ) { if (state) m_led_update
TIMER_CALLBACK_MEMBER( sym1_state::led_refresh )
{
- output_set_digit_value(param, m_riot_port_a);
+ output().set_digit_value(param, m_riot_port_a);
}
READ8_MEMBER( sym1_state::sym1_riot_a_r )
diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp
index 20a7f74594c..3c707a23a24 100644
--- a/src/mame/drivers/system1.cpp
+++ b/src/mame/drivers/system1.cpp
@@ -381,8 +381,8 @@ void system1_state::machine_start()
if (m_banked_decrypted_opcodes)
{
- m_bank0d->set_base(m_banked_decrypted_opcodes);
- m_bank1d->configure_entries(0, numbanks, m_banked_decrypted_opcodes + 0x10000, 0x4000);
+ m_bank0d->set_base(m_banked_decrypted_opcodes.get());
+ m_bank1d->configure_entries(0, numbanks, m_banked_decrypted_opcodes.get() + 0x10000, 0x4000);
m_bank1d->set_entry(0);
}
@@ -445,7 +445,7 @@ WRITE8_MEMBER(system1_state::videomode_w)
m_videomode_prev = data;
/* bit 0 is for the coin counters */
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
/* remaining signals are video-related */
system1_videomode_w(space, 0, data);
@@ -5413,15 +5413,15 @@ DRIVER_INIT_MEMBER(system1_state,gardiab)
DRIVER_INIT_MEMBER(system1_state,wbml)
{
DRIVER_INIT_CALL(bank0c);
- m_banked_decrypted_opcodes = auto_alloc_array(machine(), UINT8, m_maincpu_region->bytes());
- mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes, memregion("key")->base(), m_maincpu_region->bytes());
+ m_banked_decrypted_opcodes = std::make_unique<UINT8[]>(m_maincpu_region->bytes());
+ mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), memregion("key")->base(), m_maincpu_region->bytes());
}
DRIVER_INIT_MEMBER(system1_state,ufosensi)
{
DRIVER_INIT_CALL(bank0c);
- m_banked_decrypted_opcodes = auto_alloc_array(machine(), UINT8, m_maincpu_region->bytes());
- mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes, memregion("key")->base(), m_maincpu_region->bytes());
+ m_banked_decrypted_opcodes = std::make_unique<UINT8[]>(m_maincpu_region->bytes());
+ mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), memregion("key")->base(), m_maincpu_region->bytes());
}
DRIVER_INIT_MEMBER(system1_state,wboysys2)
@@ -5486,8 +5486,8 @@ DRIVER_INIT_MEMBER(system1_state,wboysys2)
DRIVER_INIT_MEMBER(system1_state,dakkochn)
{
m_videomode_custom = &system1_state::dakkochn_custom_w;
- m_banked_decrypted_opcodes = auto_alloc_array(machine(), UINT8, m_maincpu_region->bytes());
- mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes, memregion("key")->base(), m_maincpu_region->bytes());
+ m_banked_decrypted_opcodes = std::make_unique<UINT8[]>(m_maincpu_region->bytes());
+ mc8123_decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), memregion("key")->base(), m_maincpu_region->bytes());
}
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index c71cbeab08c..2c36cdd09af 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -165,10 +165,10 @@ WRITE16_MEMBER(segas1x_bootleg_state::sys16_coinctrl_w)
{
m_coinctrl = data & 0xff;
m_refreshenable = m_coinctrl & 0x20;
- set_led_status(machine(), 1, m_coinctrl & 0x08);
- set_led_status(machine(), 0, m_coinctrl & 0x04);
- coin_counter_w(machine(), 1, m_coinctrl & 0x02);
- coin_counter_w(machine(), 0, m_coinctrl & 0x01);
+ output().set_led_value(1, m_coinctrl & 0x08);
+ output().set_led_value(0, m_coinctrl & 0x04);
+ machine().bookkeeping().coin_counter_w(1, m_coinctrl & 0x02);
+ machine().bookkeeping().coin_counter_w(0, m_coinctrl & 0x01);
/* bit 6 is also used (1 most of the time; 0 in dduxbl, sdi, wb3;
tturf has it normally 1 but 0 after coin insertion) */
/* eswat sets bit 4 */
@@ -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.cpp b/src/mame/drivers/taito.cpp
index 9b2b5fa6f59..74ed96d8703 100644
--- a/src/mame/drivers/taito.cpp
+++ b/src/mame/drivers/taito.cpp
@@ -314,8 +314,8 @@ TIMER_DEVICE_CALLBACK_MEMBER( taito_state::timer_a )
m_out_offs &= 15;
UINT8 digit = m_out_offs << 1;
- output_set_digit_value(digit, patterns[m_p_ram[m_out_offs]>>4]);
- output_set_digit_value(++digit, patterns[m_p_ram[m_out_offs++]&15]);
+ output().set_digit_value(digit, patterns[m_p_ram[m_out_offs]>>4]);
+ output().set_digit_value(++digit, patterns[m_p_ram[m_out_offs++]&15]);
}
static MACHINE_CONFIG_START( taito, taito_state )
diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp
index 768ea171221..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
/***************************************************************************
@@ -423,10 +423,10 @@ WRITE16_MEMBER(taitob_state::player_34_coin_ctrl_w)
COMBINE_DATA(&m_coin_word);
/* coin counters and lockout */
- coin_lockout_w(machine(), 2, ~data & 0x0100);
- coin_lockout_w(machine(), 3, ~data & 0x0200);
- coin_counter_w(machine(), 2, data & 0x0400);
- coin_counter_w(machine(), 3, data & 0x0800);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x0100);
+ machine().bookkeeping().coin_lockout_w(3, ~data & 0x0200);
+ machine().bookkeeping().coin_counter_w(2, data & 0x0400);
+ machine().bookkeeping().coin_counter_w(3, data & 0x0800);
}
READ16_MEMBER(taitob_state::pbobble_input_bypass_r)
diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp
index 446bd8c56f3..05a3b11fecc 100644
--- a/src/mame/drivers/taito_f2.cpp
+++ b/src/mame/drivers/taito_f2.cpp
@@ -283,10 +283,10 @@ WRITE16_MEMBER(taitof2_state::growl_coin_word_w)/* what about coins 3&4 ?? */
{
if (ACCESSING_BITS_0_7)
{
- coin_lockout_w(machine(), 0, ~data & 0x01);
- coin_lockout_w(machine(), 1, ~data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08);
}
}
@@ -294,14 +294,14 @@ WRITE16_MEMBER(taitof2_state::taitof2_4p_coin_word_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_lockout_w(machine(), 0, ~data & 0x01);
- coin_lockout_w(machine(), 1, ~data & 0x02);
- coin_lockout_w(machine(), 2, ~data & 0x04);
- coin_lockout_w(machine(), 3, ~data & 0x08);
- coin_counter_w(machine(), 0, data & 0x10);
- coin_counter_w(machine(), 1, data & 0x20);
- coin_counter_w(machine(), 2, data & 0x40);
- coin_counter_w(machine(), 3, data & 0x80);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x04);
+ machine().bookkeeping().coin_lockout_w(3, ~data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(2, data & 0x40);
+ machine().bookkeeping().coin_counter_w(3, data & 0x80);
}
}
@@ -309,14 +309,14 @@ WRITE16_MEMBER(taitof2_state::ninjak_coin_word_w)
{
if (ACCESSING_BITS_8_15)
{
- coin_lockout_w(machine(), 0, ~data & 0x0100);
- coin_lockout_w(machine(), 1, ~data & 0x0200);
- coin_lockout_w(machine(), 2, ~data & 0x0400);
- coin_lockout_w(machine(), 3, ~data & 0x0800);
- coin_counter_w(machine(), 0, data & 0x1000);
- coin_counter_w(machine(), 1, data & 0x2000);
- coin_counter_w(machine(), 2, data & 0x4000);
- coin_counter_w(machine(), 3, data & 0x8000);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x0100);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x0200);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x0400);
+ machine().bookkeeping().coin_lockout_w(3, ~data & 0x0800);
+ machine().bookkeeping().coin_counter_w(0, data & 0x1000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x2000);
+ machine().bookkeeping().coin_counter_w(2, data & 0x4000);
+ machine().bookkeeping().coin_counter_w(3, data & 0x8000);
}
}
@@ -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 e76e72de430..1d33d59194a 100644
--- a/src/mame/drivers/taito_f3.cpp
+++ b/src/mame/drivers/taito_f3.cpp
@@ -77,10 +77,10 @@ WRITE32_MEMBER(taito_f3_state::f3_control_w)
case 0x01: /* Coin counters & lockouts */
if (ACCESSING_BITS_24_31)
{
- coin_lockout_w(machine(), 0,~data & 0x01000000);
- coin_lockout_w(machine(), 1,~data & 0x02000000);
- coin_counter_w(machine(), 0, data & 0x04000000);
- coin_counter_w(machine(), 1, data & 0x08000000);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x01000000);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x02000000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04000000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08000000);
m_coin_word[0]=(data>>16)&0xffff;
}
return;
@@ -95,10 +95,10 @@ WRITE32_MEMBER(taito_f3_state::f3_control_w)
case 0x05: /* Player 3 & 4 coin counters */
if (ACCESSING_BITS_24_31)
{
- coin_lockout_w(machine(), 2,~data & 0x01000000);
- coin_lockout_w(machine(), 3,~data & 0x02000000);
- coin_counter_w(machine(), 2, data & 0x04000000);
- coin_counter_w(machine(), 3, data & 0x08000000);
+ machine().bookkeeping().coin_lockout_w(2,~data & 0x01000000);
+ machine().bookkeeping().coin_lockout_w(3,~data & 0x02000000);
+ machine().bookkeeping().coin_counter_w(2, data & 0x04000000);
+ machine().bookkeeping().coin_counter_w(3, data & 0x08000000);
m_coin_word[1]=(data>>16)&0xffff;
}
return;
@@ -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 */
@@ -1011,7 +1011,39 @@ ROM_START( hthero93 )
ROM_LOAD32_BYTE("d49-13.20", 0x000000, 0x20000, CRC(ccee5e73) SHA1(5273e3b9bc6fc4fa0c63d9c62aa6b638e9780c24) )
ROM_LOAD32_BYTE("d49-14.19", 0x000001, 0x20000, CRC(2323bf2e) SHA1(e43f9eac6887e39d5c0f39264aa914a5d5f84cca) )
ROM_LOAD32_BYTE("d49-16.18", 0x000002, 0x20000, CRC(8e73f739) SHA1(620a4d52abc00908cd1393babdc600b929019a51) )
- ROM_LOAD32_BYTE("d49-19.17", 0x000003, 0x20000, CRC(f0925800) SHA1(e8d91b216a0409080b77cc1e832b7d15c66a5eef) )
+ ROM_LOAD32_BYTE("d49-19.17", 0x000003, 0x20000, CRC(f0925800) SHA1(e8d91b216a0409080b77cc1e832b7d15c66a5eef) ) /* Need to verify chip ID#: D49-19 is US and follows correct numbering scheme, should be D49-15 */
+
+ ROM_REGION(0xc00000, "gfx1" , 0) /* Sprites */
+ ROM_LOAD16_BYTE("d49-01.12", 0x000000, 0x200000, CRC(1dc89f1c) SHA1(9597b1d8c9b447080ca9401aee83bb4a64bb8332) )
+ ROM_LOAD16_BYTE("d49-02.8", 0x000001, 0x200000, CRC(1e4c374f) SHA1(512edc6a934578d0e7371410a041150d3b13aaad) )
+ ROM_LOAD16_BYTE("d49-06.11", 0x400000, 0x100000, CRC(71ef4ee1) SHA1(1d7729dbc77f7201ff574e8aef65a55bd81c25a7) )
+ ROM_LOAD16_BYTE("d49-07.7", 0x400001, 0x100000, CRC(e5655b8f) SHA1(2c21745370bfe9dbf0e95f7ce42ed34a162bff64) )
+ ROM_LOAD ("d49-03.4", 0x900000, 0x200000, CRC(cf9a8727) SHA1(f21787fdcdd8be2009c2d481a9b2d7fc03ce782e) )
+ ROM_LOAD ("d49-08.3", 0xb00000, 0x100000, CRC(7d3c6536) SHA1(289b4bf79ebd9cbdf64ab956784d226e6d546654) )
+ ROM_FILL ( 0x600000, 0x300000, 0x00 )
+
+ ROM_REGION(0x200000, "gfx2" , 0) /* Tiles */
+ ROM_LOAD16_BYTE("d49-09.47", 0x000000, 0x080000, CRC(257ede01) SHA1(c36397d95706c5e68a7738c84829a51c5e8f5ef7) )
+ ROM_LOAD16_BYTE("d49-10.45", 0x000001, 0x080000, CRC(f587b787) SHA1(22db4904c134756ddd0f753f197419d27e60a827) )
+ ROM_LOAD ("d49-11.43", 0x180000, 0x080000, CRC(11318b26) SHA1(a7153f9f406d52189f59cbe58d65f88f4e2e6fcc) )
+ ROM_FILL ( 0x100000, 0x080000, 0x00 )
+
+ ROM_REGION(0x140000, "audiocpu", 0) /* 68000 sound CPU */
+ ROM_LOAD16_BYTE("d49-17.32", 0x100000, 0x20000, CRC(f2058eba) SHA1(7faaa94fadf02b6304287b61fb9613f9f4169fef) )
+ ROM_LOAD16_BYTE("d49-18.33", 0x100001, 0x20000, CRC(a0fdd270) SHA1(9b5a2c8d35ea3bc6842e3c328447c3bf641b9237) )
+
+ ROM_REGION16_BE(0x800000, "ensoniq.0" , ROMREGION_ERASE00 ) // V1: 2 banks
+ ROM_LOAD16_BYTE("d49-04.38", 0x000000, 0x200000, CRC(44b365a9) SHA1(14c4a6b193a0069360406c74c500ba24f2a55b62) ) // C8 C9 CA CB
+ // half empty
+ ROM_LOAD16_BYTE("d49-05.41", 0x600000, 0x100000, CRC(ed894fe1) SHA1(5bf2fb6abdcf25bc525a2c3b29dbf7aca0b18fea) ) // -std-
+ROM_END
+
+ROM_START( hthero93u )
+ ROM_REGION(0x200000, "maincpu", 0) /* 68020 code */
+ ROM_LOAD32_BYTE("d49-13.24", 0x000000, 0x20000, CRC(ccee5e73) SHA1(5273e3b9bc6fc4fa0c63d9c62aa6b638e9780c24) ) /* Dumped from the single board PCB, not a stardard F3 cart */
+ ROM_LOAD32_BYTE("d49-14.26", 0x000001, 0x20000, CRC(2323bf2e) SHA1(e43f9eac6887e39d5c0f39264aa914a5d5f84cca) )
+ ROM_LOAD32_BYTE("d49-16.37", 0x000002, 0x20000, CRC(8e73f739) SHA1(620a4d52abc00908cd1393babdc600b929019a51) )
+ ROM_LOAD32_BYTE("d49-19.35", 0x000003, 0x20000, CRC(699b09ba) SHA1(b8bf24571cdc0c4b295e0f3d2fdaa1e28ff111e3) )
ROM_REGION(0xc00000, "gfx1" , 0) /* Sprites */
ROM_LOAD16_BYTE("d49-01.12", 0x000000, 0x200000, CRC(1dc89f1c) SHA1(9597b1d8c9b447080ca9401aee83bb4a64bb8332) )
@@ -4135,6 +4167,7 @@ GAME( 1992, commandw, 0, f3_224b, f3, taito_f3_state, commandw, ROT0, "
/* Most of the football games share some GFX roms but shouldn't be considered clones unless they have the same Taito game code for the program roms */
GAME( 1993, cupfinal, 0, f3_224a, f3, taito_f3_state, cupfinal, ROT0, "Taito Corporation Japan", "Taito Cup Finals (Ver 1.0O 1993/02/28)", 0 )
GAME( 1993, hthero93, cupfinal, f3_224a, f3, taito_f3_state, cupfinal, ROT0, "Taito Corporation", "Hat Trick Hero '93 (Ver 1.0J 1993/02/28)", 0 )
+GAME( 1993, hthero93u,cupfinal, f3_224a, f3, taito_f3_state, cupfinal, ROT0, "Taito Corporation", "Hat Trick Hero '93 (Ver 1.0A 1993/02/28)", 0 )
GAME( 1993, trstar, 0, f3, f3, taito_f3_state, trstaroj, ROT0, "Taito Corporation Japan", "Top Ranking Stars (Ver 2.1O 1993/05/21) (New Version)", 0 )
GAME( 1993, trstarj, trstar, f3, f3, taito_f3_state, trstaroj, ROT0, "Taito Corporation", "Top Ranking Stars (Ver 2.1J 1993/05/21) (New Version)", 0 )
GAME( 1993, trstaro, trstar, f3, f3, taito_f3_state, trstaroj, ROT0, "Taito Corporation Japan", "Top Ranking Stars (Ver 2.1O 1993/05/21) (Old Version)", 0 )
diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp
index 41e57d48498..78e5f4ec1a3 100644
--- a/src/mame/drivers/taito_l.cpp
+++ b/src/mame/drivers/taito_l.cpp
@@ -453,10 +453,10 @@ WRITE8_MEMBER(taitol_state::bank3_w)
WRITE8_MEMBER(taitol_state::control2_w)
{
- coin_lockout_w(machine(), 0, ~data & 0x01);
- coin_lockout_w(machine(), 1, ~data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08);
}
READ8_MEMBER(taitol_state::portA_r)
diff --git a/src/mame/drivers/taito_x.cpp b/src/mame/drivers/taito_x.cpp
index 39de0f8e06f..9d068780e0b 100644
--- a/src/mame/drivers/taito_x.cpp
+++ b/src/mame/drivers/taito_x.cpp
@@ -364,10 +364,10 @@ WRITE16_MEMBER(taitox_state::daisenpu_input_w)
switch (offset)
{
case 0x04: /* coin counters and lockout */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
- coin_lockout_w(machine(), 0,~data & 0x04);
- coin_lockout_w(machine(), 1,~data & 0x08);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x08);
//logerror("taitox coin control %04x to offset %04x\n",data,offset);
break;
@@ -382,10 +382,10 @@ WRITE16_MEMBER(taitox_state::kyustrkr_input_w)
switch (offset)
{
case 0x04: /* coin counters and lockout */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
- coin_lockout_w(machine(), 0,data & 0x04);
- coin_lockout_w(machine(), 1,data & 0x08);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0,data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1,data & 0x08);
//logerror("taitox coin control %04x to offset %04x\n",data,offset);
break;
diff --git a/src/mame/drivers/taito_z.cpp b/src/mame/drivers/taito_z.cpp
index ab98008880b..16fbc1beb8c 100644
--- a/src/mame/drivers/taito_z.cpp
+++ b/src/mame/drivers/taito_z.cpp
@@ -1000,15 +1000,15 @@ WRITE16_MEMBER(taitoz_state::chasehq_cpua_ctrl_w)
{
cpua_ctrl_w(space, offset, data, mem_mask);
- output_set_lamp_value(0, (m_cpua_ctrl & 0x20) ? 1 : 0);
- output_set_lamp_value(1, (m_cpua_ctrl & 0x40) ? 1 : 0);
+ output().set_lamp_value(0, (m_cpua_ctrl & 0x20) ? 1 : 0);
+ output().set_lamp_value(1, (m_cpua_ctrl & 0x40) ? 1 : 0);
}
WRITE16_MEMBER(taitoz_state::dblaxle_cpua_ctrl_w)
{
cpua_ctrl_w(space, offset, data, mem_mask);
- output_set_value("Wheel_Vibration", (data & 0x04)>>2);
+ output().set_value("Wheel_Vibration", (data & 0x04)>>2);
}
@@ -1286,8 +1286,8 @@ WRITE16_MEMBER(taitoz_state::spacegun_lightgun_w)
WRITE16_MEMBER(taitoz_state::spacegun_gun_output_w)
{
- output_set_value("Player1_Gun_Recoil",(data & 0x01));
- output_set_value("Player2_Gun_Recoil",(data & 0x02)>>1);
+ output().set_value("Player1_Gun_Recoil",(data & 0x01));
+ output().set_value("Player2_Gun_Recoil",(data & 0x02)>>1);
}
@@ -1350,31 +1350,31 @@ WRITE16_MEMBER(taitoz_state::nightstr_motor_w)
switch (offset)
{
case 0:
- output_set_value("Motor_1_Direction",0);
- if (data & 1) output_set_value("Motor_1_Direction",1);
- if (data & 2) output_set_value("Motor_1_Direction",2);
- output_set_value("Motor_1_Speed",(data & 60)/4);
+ output().set_value("Motor_1_Direction",0);
+ if (data & 1) output().set_value("Motor_1_Direction",1);
+ if (data & 2) output().set_value("Motor_1_Direction",2);
+ output().set_value("Motor_1_Speed",(data & 60)/4);
break;
case 4:
- output_set_value("Motor_2_Direction",0);
- if (data & 1) output_set_value("Motor_2_Direction",1);
- if (data & 2) output_set_value("Motor_2_Direction",2);
- output_set_value("Motor_2_Speed",(data & 60)/4);
+ output().set_value("Motor_2_Direction",0);
+ if (data & 1) output().set_value("Motor_2_Direction",1);
+ if (data & 2) output().set_value("Motor_2_Direction",2);
+ output().set_value("Motor_2_Speed",(data & 60)/4);
break;
case 8:
- output_set_value("Motor_3_Direction",0);
- if (data & 1) output_set_value("Motor_3_Direction",1);
- if (data & 2) output_set_value("Motor_3_Direction",2);
- output_set_value("Motor_3_Speed",(data & 60)/4);
+ output().set_value("Motor_3_Direction",0);
+ if (data & 1) output().set_value("Motor_3_Direction",1);
+ if (data & 2) output().set_value("Motor_3_Direction",2);
+ output().set_value("Motor_3_Speed",(data & 60)/4);
break;
default:
- output_set_value("motor_debug",data);
+ output().set_value("motor_debug",data);
break;
}
diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp
index 45a5b9c5037..df177c2aa40 100644
--- a/src/mame/drivers/taitojc.cpp
+++ b/src/mame/drivers/taitojc.cpp
@@ -669,8 +669,8 @@ WRITE8_MEMBER(taitojc_state::dendego_speedmeter_w)
if (m_speed_meter != dendego_odometer_table[data])
{
m_speed_meter = dendego_odometer_table[data];
- output_set_value("counter2", m_speed_meter / 10);
- output_set_value("counter3", m_speed_meter % 10);
+ output().set_value("counter2", m_speed_meter / 10);
+ output().set_value("counter3", m_speed_meter % 10);
}
}
@@ -679,7 +679,7 @@ WRITE8_MEMBER(taitojc_state::dendego_brakemeter_w)
if (m_brake_meter != dendego_pressure_table[data])
{
m_brake_meter = dendego_pressure_table[data];
- output_set_value("counter4", m_brake_meter);
+ output().set_value("counter4", m_brake_meter);
}
}
@@ -747,7 +747,7 @@ WRITE8_MEMBER(taitojc_state::hc11_output_w)
?
*/
for (int i = 0; i < 8; i++)
- output_set_lamp_value(i, data >> i & 1);
+ output().set_lamp_value(i, data >> i & 1);
m_mcu_output = data;
}
@@ -860,63 +860,17 @@ WRITE16_MEMBER(taitojc_state::dsp_rom_w)
}
}
-WRITE16_MEMBER(taitojc_state::dsp_texture_w)
-{
- int index;
- int x, y;
-
- x = (m_dsp_tex_offset >> 0 & 0x1f) | (m_dsp_tex_offset >> 5 & 0x20);
- y = (m_dsp_tex_offset >> 5 & 0x1f) | (m_dsp_tex_offset >> 6 & 0x20);
-
- index = (((m_texture_y * 32) + y) * 2048) + ((m_texture_x * 32) + x);
- m_texture[index] = data & 0xff;
-
- m_dsp_tex_offset++;
-}
-
-READ16_MEMBER(taitojc_state::dsp_texaddr_r)
-{
- return m_dsp_tex_address;
-}
-
-WRITE16_MEMBER(taitojc_state::dsp_texaddr_w)
-{
- m_dsp_tex_address = data;
-
- m_texture_x = (((data >> 0) & 0x1f) << 1) | ((data >> 12) & 0x1);
- m_texture_y = (((data >> 5) & 0x1f) << 1) | ((data >> 13) & 0x1);
-
- m_dsp_tex_offset = 0;
-}
-
-WRITE16_MEMBER(taitojc_state::dsp_polygon_fifo_w)
-{
- assert (m_polygon_fifo_ptr < TAITOJC_POLYGON_FIFO_SIZE); // never happens
- m_polygon_fifo[m_polygon_fifo_ptr++] = data;
-}
-
-WRITE16_MEMBER(taitojc_state::dsp_unk2_w)
-{
- if (offset == 0)
- {
- taitojc_clear_frame();
- m_renderer->render_polygons(m_polygon_fifo, m_polygon_fifo_ptr);
-
- m_polygon_fifo_ptr = 0;
- }
-}
-
static ADDRESS_MAP_START( tms_program_map, AS_PROGRAM, 16, taitojc_state )
AM_RANGE(0x0000, 0x1fff) AM_RAM AM_MIRROR(0x4000)
AM_RANGE(0x6000, 0x7fff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( tms_data_map, AS_DATA, 16, taitojc_state )
- AM_RANGE(0x6a01, 0x6a02) AM_WRITE(dsp_unk2_w)
+ AM_RANGE(0x6a01, 0x6a02) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, render_w)
AM_RANGE(0x6a11, 0x6a12) AM_NOP // same as 0x6a01..02 for the second renderer chip?
- AM_RANGE(0x6b20, 0x6b20) AM_WRITE(dsp_polygon_fifo_w)
- AM_RANGE(0x6b22, 0x6b22) AM_WRITE(dsp_texture_w)
- AM_RANGE(0x6b23, 0x6b23) AM_READWRITE(dsp_texaddr_r, dsp_texaddr_w)
+ AM_RANGE(0x6b20, 0x6b20) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, poly_fifo_w)
+ AM_RANGE(0x6b22, 0x6b22) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, tex_w)
+ AM_RANGE(0x6b23, 0x6b23) AM_DEVREADWRITE("tc0780fpa", tc0780fpa_device, tex_addr_r, tex_addr_w)
AM_RANGE(0x6c00, 0x6c01) AM_READWRITE(dsp_rom_r, dsp_rom_w)
AM_RANGE(0x7000, 0x7002) AM_WRITE(dsp_math_projection_w)
AM_RANGE(0x7010, 0x7012) AM_WRITE(dsp_math_intersection_w)
@@ -1098,13 +1052,7 @@ void taitojc_state::machine_reset()
m_mcu_data_main = 0;
m_mcu_data_hc11 = 0;
- m_texture_x = 0;
- m_texture_y = 0;
-
m_dsp_rom_pos = 0;
- m_dsp_tex_address = 0;
- m_dsp_tex_offset = 0;
- m_polygon_fifo_ptr = 0;
memset(m_viewport_data, 0, sizeof(m_viewport_data));
memset(m_projection_data, 0, sizeof(m_projection_data));
@@ -1117,17 +1065,12 @@ void taitojc_state::machine_reset()
void taitojc_state::machine_start()
{
// register for savestates
- save_item(NAME(m_texture_x));
- save_item(NAME(m_texture_y));
save_item(NAME(m_dsp_rom_pos));
- save_item(NAME(m_dsp_tex_address));
- save_item(NAME(m_dsp_tex_offset));
save_item(NAME(m_first_dsp_reset));
save_item(NAME(m_viewport_data));
save_item(NAME(m_projection_data));
save_item(NAME(m_intersection_data));
save_item(NAME(m_gfx_index));
- save_item(NAME(m_polygon_fifo_ptr));
save_item(NAME(m_mcu_comm_main));
save_item(NAME(m_mcu_comm_hc11));
@@ -1177,6 +1120,8 @@ static MACHINE_CONFIG_START( taitojc, taitojc_state )
MCFG_PALETTE_ADD("palette", 32768)
+ MCFG_DEVICE_ADD("tc0780fpa", TC0780FPA, 0)
+
/* sound hardware */
MCFG_FRAGMENT_ADD(taito_en_sound)
MACHINE_CONFIG_END
@@ -1225,8 +1170,6 @@ READ16_MEMBER(taitojc_state::dendego2_dsp_idle_skip_r)
DRIVER_INIT_MEMBER(taitojc_state,taitojc)
{
- m_polygon_fifo = auto_alloc_array(machine(), UINT16, TAITOJC_POLYGON_FIFO_SIZE);
-
m_has_dsp_hack = 1;
if (DSP_IDLESKIP)
diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp
index 2f7564322f6..0751d5504b7 100644
--- a/src/mame/drivers/taitopjc.cpp
+++ b/src/mame/drivers/taitopjc.cpp
@@ -77,6 +77,10 @@
0xf010:
0xf020:
+ TLCS -> PPC Commands:
+ 0x7000: DSP ready
+ 0xd000: Vblank
+
*/
#include "emu.h"
@@ -84,16 +88,12 @@
#include "cpu/tlcs900/tlcs900.h"
#include "cpu/mn10200/mn10200.h"
#include "cpu/tms32051/tms32051.h"
+#include "video/tc0780fpa.h"
#include "machine/nvram.h"
#define LOG_TLCS_TO_PPC_COMMANDS 1
#define LOG_PPC_TO_TLCS_COMMANDS 1
-
-
-static UINT32 jc_char_ram[0x2000];
-static UINT32 jc_tile_ram[0x4000];
-//static UINT32 jc_pal_ram[0x8000];
-static UINT32 jc_screen_ram[0x10000];
+#define LOG_DISPLAY_LIST 0
class taitopjc_state : public driver_device
{
@@ -103,13 +103,21 @@ public:
m_maincpu(*this, "maincpu"),
m_iocpu(*this, "iocpu"),
m_soundcpu(*this, "mn10200"),
- m_dsp(*this, "dsp")
+ m_dsp(*this, "dsp"),
+ m_tc0780fpa(*this, "tc0780fpa"),
+ m_palette(*this, "palette"),
+ m_polyrom(*this, "poly"),
+ m_gfxdecode(*this, "gfxdecode")
{ }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_iocpu;
required_device<cpu_device> m_soundcpu;
required_device<cpu_device> m_dsp;
+ required_device<tc0780fpa_device> m_tc0780fpa;
+ required_device<palette_device> m_palette;
+ required_memory_region m_polyrom;
+ required_device<gfxdecode_device> m_gfxdecode;
DECLARE_READ64_MEMBER(video_r);
DECLARE_WRITE64_MEMBER(video_w);
@@ -122,92 +130,167 @@ public:
DECLARE_READ8_MEMBER(tlcs_sound_r);
DECLARE_WRITE8_MEMBER(tlcs_sound_w);
DECLARE_WRITE16_MEMBER(tlcs_unk_w);
+ DECLARE_READ16_MEMBER(tms_dspshare_r);
+ DECLARE_WRITE16_MEMBER(tms_dspshare_w);
+ DECLARE_READ16_MEMBER(dsp_rom_r);
+ DECLARE_WRITE16_MEMBER(dsp_roml_w);
+ DECLARE_WRITE16_MEMBER(dsp_romh_w);
virtual void machine_reset() override;
virtual void video_start() override;
- UINT32 screen_update_taitopjc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_taitopjc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(taitopjc_vbi);
+ UINT32 videochip_r(offs_t address);
+ void videochip_w(offs_t address, UINT32 data);
+ void video_exit();
+ void print_display_list();
+ TILE_GET_INFO_MEMBER(tile_get_info);
+ TILEMAP_MAPPER_MEMBER(tile_scan_layer0);
+ TILEMAP_MAPPER_MEMBER(tile_scan_layer1);
DECLARE_DRIVER_INIT(optiger);
UINT16 m_dsp_ram[0x1000];
UINT16 m_io_share_ram[0x2000];
+
+ std::unique_ptr<UINT32[]> m_screen_ram;
+ std::unique_ptr<UINT32[]> m_pal_ram;
+
+ tilemap_t *m_tilemap[2];
+
+ UINT32 m_video_address;
+
+ UINT32 m_dsp_rom_address;
};
-void taitopjc_state::video_start()
+void taitopjc_state::video_exit()
{
+#if 0
+ FILE *file;
+ int i;
+
+ file = fopen("pjc_screen_ram.bin","wb");
+ for (i=0; i < 0x40000; i++)
+ {
+ fputc((UINT8)(m_screen_ram[i] >> 24), file);
+ fputc((UINT8)(m_screen_ram[i] >> 16), file);
+ fputc((UINT8)(m_screen_ram[i] >> 8), file);
+ fputc((UINT8)(m_screen_ram[i] >> 0), file);
+ }
+ fclose(file);
+
+ file = fopen("pjc_pal_ram.bin","wb");
+ for (i=0; i < 0x8000; i++)
+ {
+ fputc((UINT8)(m_pal_ram[i] >> 24), file);
+ fputc((UINT8)(m_pal_ram[i] >> 16), file);
+ fputc((UINT8)(m_pal_ram[i] >> 8), file);
+ fputc((UINT8)(m_pal_ram[i] >> 0), file);
+ }
+ fclose(file);
+#endif
}
-UINT32 taitopjc_state::screen_update_taitopjc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+TILE_GET_INFO_MEMBER(taitopjc_state::tile_get_info)
{
- {
- UINT8 *s = (UINT8*)jc_char_ram;
- int x,y,t,u;
- for (u=0; u < 48; u++)
- {
- for (t=0; t < 32; t++)
- {
- UINT32 tile = jc_tile_ram[((u*16)+(t/2)) ^ 0];
+ UINT32 val = m_screen_ram[0x3f000 + (tile_index/2)];
- if (t & 1)
- tile &= 0xffff;
- else
- tile >>= 16;
+ if (!(tile_index & 1))
+ val >>= 16;
- tile &= 0xff;
- tile -= 0x40;
+ int color = (val >> 12) & 0xf;
+ int tile = (val & 0xfff);
+ int flags = 0;
- if (tile > 127) tile = 127;
+ SET_TILE_INFO_MEMBER(0, tile, color, flags);
+}
- for (y=0; y < 16; y++)
- {
- UINT32 *fb = &bitmap.pix32(y+(u*16));
- for (x=0; x < 16; x++)
- {
- UINT8 p = s[((tile*256) + ((y*16)+x)) ^3];
- fb[x+(t*16)] = p ? 0xffffffff : 0;
- }
- }
- }
- }
- }
+TILEMAP_MAPPER_MEMBER(taitopjc_state::tile_scan_layer0)
+{
+ /* logical (col,row) -> memory offset */
+ return (row * 64) + col;
+}
- return 0;
+TILEMAP_MAPPER_MEMBER(taitopjc_state::tile_scan_layer1)
+{
+ /* logical (col,row) -> memory offset */
+ return (row * 64) + col + 32;
}
-static UINT32 video_address;
+void taitopjc_state::video_start()
+{
+ static const gfx_layout char_layout =
+ {
+ 16, 16,
+ 4032,
+ 8,
+ { 0,1,2,3,4,5,6,7 },
+ { 3*8, 2*8, 1*8, 0*8, 7*8, 6*8, 5*8, 4*8, 11*8, 10*8, 9*8, 8*8, 15*8, 14*8, 13*8, 12*8 },
+ { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 },
+ 8*256
+ };
+
+ m_screen_ram = std::make_unique<UINT32[]>(0x40000);
+ m_pal_ram = std::make_unique<UINT32[]>(0x8000);
+
+ m_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taitopjc_state::tile_get_info),this), tilemap_mapper_delegate(FUNC(taitopjc_state::tile_scan_layer0),this), 16, 16, 32, 32);
+ 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));
+}
-static UINT32 videochip_r(address_space &space, offs_t address)
+UINT32 taitopjc_state::screen_update_taitopjc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ bitmap.fill(0x000000, cliprect);
+
+ m_tc0780fpa->draw(bitmap, cliprect);
+
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0);
+
+ return 0;
+}
+
+UINT32 taitopjc_state::videochip_r( offs_t address)
{
UINT32 r = 0;
- if (address >= 0x10000000 && address < 0x10010000)
+ if (address >= 0x10000000 && address < 0x10040000)
{
- r = jc_screen_ram[address - 0x10000000];
+ r = m_screen_ram[address - 0x10000000];
}
return r;
}
-static void videochip_w(address_space &space, offs_t address, UINT32 data)
+void taitopjc_state::videochip_w(offs_t address, UINT32 data)
{
if (address >= 0x20000000 && address < 0x20008000)
{
- //UINT32 r = (data >> 16) & 0xff;
- //UINT32 g = (data >> 8) & 0xff;
- //UINT32 b = (data >> 0) & 0xff;
- //palette_set_color_rgb(space.machine, address & 0x7fff, r, g, b);
- }
- else if (address >= 0x1003d000 && address < 0x1003f000)
- {
- jc_char_ram[address - 0x1003d000] = data;
- }
- else if (address >= 0x1003f000 && address < 0x10040000)
- {
- jc_tile_ram[address - 0x1003f000] = data;
+ m_pal_ram[address - 0x20000000] = data;
+
+ int b = (data >> 16) & 0xff;
+ int g = (data >> 8) & 0xff;
+ int r = (data >> 0) & 0xff;
+ m_palette->set_pen_color(address - 0x20000000, rgb_t(r, g, b));
}
- else if (address >= 0x10000000 && address < 0x10010000)
+ else if (address >= 0x10000000 && address < 0x10040000)
{
- jc_screen_ram[address - 0x10000000] = data;
+ UINT32 addr = address - 0x10000000;
+ m_screen_ram[addr] = data;
+
+ if (address >= 0x1003f000)
+ {
+ UINT32 a = address - 0x1003f000;
+ m_tilemap[0]->mark_tile_dirty((a*2));
+ m_tilemap[0]->mark_tile_dirty((a*2)+1);
+ }
+ else
+ {
+ m_gfxdecode->gfx(0)->mark_dirty(addr / 64);
+ }
}
else
{
@@ -223,7 +306,7 @@ READ64_MEMBER(taitopjc_state::video_r)
{
if (ACCESSING_BITS_32_63)
{
- r |= (UINT64)(videochip_r(space, video_address)) << 32;
+ r |= (UINT64)(videochip_r(m_video_address)) << 32;
}
}
@@ -237,14 +320,14 @@ WRITE64_MEMBER(taitopjc_state::video_w)
if (ACCESSING_BITS_32_63)
{
//printf("Address %08X = %08X\n", video_address, (UINT32)(data >> 32));
- videochip_w(space, video_address, (UINT32)(data >> 32));
+ videochip_w(m_video_address, (UINT32)(data >> 32));
}
}
if (offset == 1)
{
if (ACCESSING_BITS_32_63)
{
- video_address = (UINT32)(data >> 32);
+ m_video_address = (UINT32)(data >> 32);
}
}
}
@@ -288,7 +371,10 @@ WRITE64_MEMBER(taitopjc_state::ppc_common_w)
if (offset == 0x7ff && ACCESSING_BITS_48_63)
{
#if LOG_PPC_TO_TLCS_COMMANDS
- printf("PPC -> TLCS cmd %04X\n", m_io_share_ram[0xfff]);
+ if (m_io_share_ram[0xfff] != 0x0000)
+ {
+ printf("PPC -> TLCS cmd %04X\n", m_io_share_ram[0xfff]);
+ }
#endif
m_iocpu->set_input_line(TLCS900_INT6, ASSERT_LINE);
@@ -314,14 +400,82 @@ READ64_MEMBER(taitopjc_state::dsp_r)
return r;
}
-WRITE64_MEMBER(taitopjc_state::dsp_w)
+void taitopjc_state::print_display_list()
{
- printf("dsp_w: %08X, %08X%08X, %08X%08X\n", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
+ int ptr = 0;
- if (offset != 0x7fe)
+ UINT16 cmd = m_dsp_ram[0xffe];
+ if (cmd == 0x5245)
+ {
+ printf("DSP command RE\n");
+ bool end = false;
+ do
+ {
+ UINT16 w = m_dsp_ram[ptr++];
+ if (w & 0x8000)
+ {
+ int count = (w & 0x7fff) + 1;
+ UINT16 d = m_dsp_ram[ptr++];
+ for (int i=0; i < count; i++)
+ {
+ UINT16 s = m_dsp_ram[ptr++];
+ printf(" %04X -> [%04X]\n", s, d);
+ d++;
+ }
+ }
+ else if (w == 0)
+ {
+ end = true;
+ }
+ else
+ {
+ switch (w)
+ {
+ case 0x406d:
+ printf(" Call %04X [%04X %04X]\n", w, m_dsp_ram[ptr], m_dsp_ram[ptr+1]);
+ ptr += 2;
+ break;
+ case 0x40cd:
+ printf(" Call %04X [%04X %04X]\n", w, m_dsp_ram[ptr], m_dsp_ram[ptr+1]);
+ ptr += 2;
+ break;
+ case 0x40ac:
+ printf(" Call %04X [%04X %04X %04X %04X %04X %04X %04X %04X]\n", w, m_dsp_ram[ptr], m_dsp_ram[ptr+1], m_dsp_ram[ptr+2], m_dsp_ram[ptr+3], m_dsp_ram[ptr+4], m_dsp_ram[ptr+5], m_dsp_ram[ptr+6], m_dsp_ram[ptr+7]);
+ ptr += 8;
+ break;
+ case 0x4774:
+ printf(" Call %04X [%04X %04X %04X]\n", w, m_dsp_ram[ptr], m_dsp_ram[ptr+1], m_dsp_ram[ptr+2]);
+ ptr += 3;
+ break;
+ case 0x47d9:
+ printf(" Call %04X [%04X %04X %04X %04X %04X %04X %04X %04X]\n", w, m_dsp_ram[ptr], m_dsp_ram[ptr+1], m_dsp_ram[ptr+2], m_dsp_ram[ptr+3], m_dsp_ram[ptr+4], m_dsp_ram[ptr+5], m_dsp_ram[ptr+6], m_dsp_ram[ptr+7]);
+ ptr += 8;
+ break;
+ default:
+ {
+ printf("Unknown call %04X\n", w);
+ for (int i=0; i < 10; i++)
+ {
+ printf("%04X\n", m_dsp_ram[ptr++]);
+ }
+ fatalerror("Unknown call %04X\n", w);
+ break;
+ }
+ }
+ }
+ } while(!end);
+ }
+ else
{
- logerror("dsp_w: %08X, %08X%08X, %08X%08X\n", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask));
+ if (cmd != 0)
+ printf("DSP command %04X\n", cmd);
+ return;
}
+}
+
+WRITE64_MEMBER(taitopjc_state::dsp_w)
+{
+ //logerror("dsp_w: %08X, %08X%08X, %08X%08X at %08X\n", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask), space.device().safe_pc());
if (offset == 0x7fe)
{
@@ -337,6 +491,10 @@ WRITE64_MEMBER(taitopjc_state::dsp_w)
fclose(f);
}
#endif
+
+#if LOG_DISPLAY_LIST
+ print_display_list();
+#endif
}
if (ACCESSING_BITS_48_63)
@@ -349,25 +507,6 @@ WRITE64_MEMBER(taitopjc_state::dsp_w)
int addr = offset * 2;
m_dsp_ram[addr+1] = (data >> 16) & 0xffff;
}
-
-
-
- if (offset == 0x7fe && ACCESSING_BITS_48_63)
- {
- UINT16 w = data >> 48;
- if (w == 0x4450)
- {
- m_dsp_ram[0xffc] = 0;
- }
- else if (w == 0x4558)
- {
- m_dsp_ram[0xffc] = 0;
- }
- else if (w == 0x5349)
- {
- m_dsp_ram[0xffc] = 0;
- }
- }
}
// BAT Config:
@@ -385,7 +524,7 @@ static ADDRESS_MAP_START( ppc603e_mem, AS_PROGRAM, 64, taitopjc_state )
AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE(video_r, video_w)
AM_RANGE(0x80000000, 0x80003fff) AM_READWRITE(dsp_r, dsp_w)
AM_RANGE(0xc0000000, 0xc0003fff) AM_READWRITE(ppc_common_r, ppc_common_w)
- AM_RANGE(0xff000000, 0xff01ffff) AM_ROM AM_REGION("user2", 0)
+ AM_RANGE(0xfe800000, 0xff7fffff) AM_ROM AM_REGION("gfx1", 0)
AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
@@ -425,10 +564,15 @@ WRITE8_MEMBER(taitopjc_state::tlcs_common_w)
if (offset == 0x1ffd)
{
#if LOG_TLCS_TO_PPC_COMMANDS
- printf("TLCS -> PPC cmd %04X\n", m_io_share_ram[0xffe]);
+ if (m_io_share_ram[0xffe] != 0xd000 &&
+ m_io_share_ram[0xffe] != 0x7000)
+ {
+ printf("TLCS -> PPC cmd %04X\n", m_io_share_ram[0xffe]);
+ }
#endif
m_iocpu->set_input_line(TLCS900_INT1, CLEAR_LINE);
+ m_iocpu->set_input_line(TLCS900_INT2, CLEAR_LINE);
m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
}
}
@@ -460,12 +604,12 @@ WRITE16_MEMBER(taitopjc_state::tlcs_unk_w)
// TLCS900 interrupt vectors
// 0xfc0100: reset
// 0xfc00ea: INT0 (dummy)
-// 0xfc00eb: INT1
-// 0xfc00f0: INT2
+// 0xfc00eb: INT1 vblank?
+// 0xfc00f0: INT2 DSP ready?
// 0xfc00f5: INT3 (dummy)
// 0xfc00f6: INT4 (dummy)
// 0xfc00f7: INT5 (dummy)
-// 0xfc00f8: INT6
+// 0xfc00f8: INT6 PPC command
// 0xfc00fd: INT7 (dummy)
// 0xfc00fe: INT8 (dummy)
// 0xfc0663: INTT1
@@ -488,15 +632,106 @@ ADDRESS_MAP_START( mn10200_map, AS_PROGRAM, 16, driver_device )
ADDRESS_MAP_END
+
+READ16_MEMBER(taitopjc_state::tms_dspshare_r)
+{
+ return m_dsp_ram[offset];
+}
+
+WRITE16_MEMBER(taitopjc_state::tms_dspshare_w)
+{
+ if (offset == 0xffc)
+ {
+ m_iocpu->set_input_line(TLCS900_INT2, ASSERT_LINE);
+ }
+ m_dsp_ram[offset] = data;
+}
+
+READ16_MEMBER(taitopjc_state::dsp_rom_r)
+{
+ assert(m_dsp_rom_address < 0x800000);
+
+ UINT16 data = ((UINT16*)m_polyrom->base())[m_dsp_rom_address];
+ m_dsp_rom_address++;
+ return data;
+}
+
+WRITE16_MEMBER(taitopjc_state::dsp_roml_w)
+{
+ m_dsp_rom_address &= 0xffff0000;
+ m_dsp_rom_address |= data;
+}
+
+WRITE16_MEMBER(taitopjc_state::dsp_romh_w)
+{
+ m_dsp_rom_address &= 0xffff;
+ m_dsp_rom_address |= (UINT32)(data) << 16;
+}
+
+
static ADDRESS_MAP_START( tms_program_map, AS_PROGRAM, 16, taitopjc_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("user2", 0)
+ AM_RANGE(0x4c00, 0xefff) AM_ROM AM_REGION("user2", 0x9800)
ADDRESS_MAP_END
static ADDRESS_MAP_START( tms_data_map, AS_DATA, 16, taitopjc_state )
+ AM_RANGE(0x4000, 0x6fff) AM_ROM AM_REGION("user2", 0x8000)
+ AM_RANGE(0x7000, 0xefff) AM_RAM
+ AM_RANGE(0xf000, 0xffff) AM_READWRITE(tms_dspshare_r, tms_dspshare_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( tms_io_map, AS_IO, 16, taitopjc_state )
+ AM_RANGE(0x0053, 0x0053) AM_WRITE(dsp_roml_w)
+ AM_RANGE(0x0057, 0x0057) AM_WRITE(dsp_romh_w)
+ AM_RANGE(0x0058, 0x0058) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, poly_fifo_w)
+ AM_RANGE(0x005a, 0x005a) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, tex_w)
+ AM_RANGE(0x005b, 0x005b) AM_DEVREADWRITE("tc0780fpa", tc0780fpa_device, tex_addr_r, tex_addr_w)
+ AM_RANGE(0x005f, 0x005f) AM_READ(dsp_rom_r)
ADDRESS_MAP_END
static INPUT_PORTS_START( taitopjc )
+ PORT_START("INPUTS1")
+ PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_COIN1 ) // Coin A
+ PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("INPUTS2")
+ PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service") PORT_CODE(KEYCODE_7) // Service switch
+ PORT_SERVICE_NO_TOGGLE( 0x00000002, IP_ACTIVE_LOW) // Test Button
+ PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START1 ) // Select 1
+ PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_START2 ) // Select 2
+ PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("INPUTS3")
+ PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // P1 trigger
+ PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // P1 bomb
+ PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) // P2 trigger
+ PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) // P2 bomb
+ PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("ANALOG1") // Player 1 X
+ PORT_BIT( 0x3ff, 0x200, IPT_AD_STICK_X ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(30)
+
+ PORT_START("ANALOG2") // Player 1 Y
+ PORT_BIT( 0x3ff, 0x200, IPT_AD_STICK_Y ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(30)
+
+ PORT_START("ANALOG3") // Player 2 X
+ PORT_BIT( 0x3ff, 0x200, IPT_AD_STICK_X ) PORT_PLAYER(2) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(30)
+
+ PORT_START("ANALOG4") // Player 2 Y
+ PORT_BIT( 0x3ff, 0x200, IPT_AD_STICK_Y ) PORT_PLAYER(2) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(30)
INPUT_PORTS_END
@@ -507,7 +742,7 @@ void taitopjc_state::machine_reset()
m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
- m_dsp_ram[0x0ffc] = 0x4f4b;
+ m_dsp_rom_address = 0;
}
@@ -524,6 +759,13 @@ static MACHINE_CONFIG_START( taitopjc, taitopjc_state )
/* TMP95C063F I/O CPU */
MCFG_CPU_ADD("iocpu", TMP95C063, 25000000)
+ MCFG_TMP95C063_PORT5_READ(IOPORT("INPUTS1"))
+ MCFG_TMP95C063_PORTD_READ(IOPORT("INPUTS2"))
+ MCFG_TMP95C063_PORTE_READ(IOPORT("INPUTS3"))
+ MCFG_TMP95C063_AN0_READ(IOPORT("ANALOG1"))
+ MCFG_TMP95C063_AN1_READ(IOPORT("ANALOG2"))
+ MCFG_TMP95C063_AN2_READ(IOPORT("ANALOG3"))
+ MCFG_TMP95C063_AN3_READ(IOPORT("ANALOG4"))
MCFG_CPU_PROGRAM_MAP(tlcs900h_mem)
MCFG_CPU_VBLANK_INT_DRIVER("screen", taitopjc_state, taitopjc_vbi)
@@ -531,6 +773,7 @@ static MACHINE_CONFIG_START( taitopjc, taitopjc_state )
MCFG_CPU_ADD("dsp", TMS32053, 40000000)
MCFG_CPU_PROGRAM_MAP(tms_program_map)
MCFG_CPU_DATA_MAP(tms_data_map)
+ MCFG_CPU_IO_MAP(tms_io_map)
MCFG_CPU_ADD("mn10200", MN1020012A, 10000000) /* MN1020819DA sound CPU - NOTE: May have 64kB internal ROM */
MCFG_CPU_PROGRAM_MAP(mn10200_map)
@@ -542,9 +785,16 @@ static MACHINE_CONFIG_START( taitopjc, taitopjc_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(640, 768)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 767)
+ MCFG_SCREEN_SIZE(512, 384)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
MCFG_SCREEN_UPDATE_DRIVER(taitopjc_state, screen_update_taitopjc)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 32768)
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty)
+
+ MCFG_DEVICE_ADD("tc0780fpa", TC0780FPA, 0)
MACHINE_CONFIG_END
@@ -556,6 +806,12 @@ DRIVER_INIT_MEMBER(taitopjc_state, optiger)
// skip sound check
rom[0x217] = 0x00;
rom[0x218] = 0x00;
+
+#if 0
+ UINT32 *mr = (UINT32*)memregion("user1")->base();
+ //mr[(0x23a5c^4)/4] = 0x60000000;
+ mr[((0x513b0-0x40000)^4)/4] = 0x38600001;
+#endif
}
@@ -566,10 +822,9 @@ ROM_START( optiger )
ROM_LOAD32_BYTE( "e63-31-1_p-lh.8", 0x000002, 0x080000, CRC(ad69e649) SHA1(9fc853d2cb6e7cac87dc06bad91048f191b799c5) )
ROM_LOAD32_BYTE( "e63-30-1_p-ll.7", 0x000003, 0x080000, CRC(a6183479) SHA1(e556c3edf100342079e680ec666f018fca7a82b0) )
- ROM_REGION( 0x20000, "user2", 0 )
- /* More PowerPC code? */
- ROM_LOAD16_BYTE( "e63-04_l.29", 0x000000, 0x010000, CRC(eccae391) SHA1(e5293c16342cace54dc4b6dfb827558e18ac25a4) )
- ROM_LOAD16_BYTE( "e63-03_h.28", 0x000001, 0x010000, CRC(58fce52f) SHA1(1e3d9ee034b25e658ca45a8b900de2aa54b00135) )
+ ROM_REGION16_BE( 0x20000, "user2", 0 )
+ ROM_LOAD16_BYTE( "e63-04_l.29", 0x000001, 0x010000, CRC(eccae391) SHA1(e5293c16342cace54dc4b6dfb827558e18ac25a4) )
+ ROM_LOAD16_BYTE( "e63-03_h.28", 0x000000, 0x010000, CRC(58fce52f) SHA1(1e3d9ee034b25e658ca45a8b900de2aa54b00135) )
ROM_REGION( 0x40000, "io_cpu", 0 )
ROM_LOAD16_BYTE( "e63-28-1_0.59", 0x000000, 0x020000, CRC(ef41ffaf) SHA1(419621f354f548180d37961b861304c469e43a65) )
@@ -579,16 +834,16 @@ ROM_START( optiger )
ROM_LOAD16_BYTE( "e63-17-1_s-l.18", 0x000000, 0x040000, CRC(2a063d5b) SHA1(a2b2fe4d8bad1aef7d9dcc0be607cc4e5bc4f0eb) )
ROM_LOAD16_BYTE( "e63-18-1_s-h.19", 0x000001, 0x040000, CRC(2f590881) SHA1(7fb827a676f45b24380558b0068b76cb858314f6) )
- ROM_REGION( 0x1000000, "gfx1", 0 )
+ ROM_REGION64_BE( 0x1000000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "e63-21_c-h.24", 0x000000, 0x400000, CRC(c818b211) SHA1(dce07bfe71a9ba11c3f028a640226c6e59c6aece) )
ROM_LOAD32_WORD_SWAP( "e63-15_c-l.9", 0x000002, 0x400000, CRC(4ec6a2d7) SHA1(2ee6270cff7ea2459121961a29d42e000cee2921) )
ROM_LOAD32_WORD_SWAP( "e63-22_m-h.25", 0x800000, 0x400000, CRC(6d895eb6) SHA1(473795da42fd29841a926f18a93e5992f4feb27c) )
ROM_LOAD32_WORD_SWAP( "e63-16_m-l.10", 0x800002, 0x400000, CRC(d39c1e34) SHA1(6db0ce2251841db3518a9bd9c4520c3c666d19a0) )
- ROM_REGION( 0xc00000, "poly", 0 )
- ROM_LOAD( "e63-09_poly0.3", 0x000000, 0x400000, CRC(c3e2b1e0) SHA1(ee71f3f59b46e26dbe2ff724da2c509267c8bf2f) )
- ROM_LOAD( "e63-10_poly1.4", 0x400000, 0x400000, CRC(f4a56390) SHA1(fc3c51a7f4639479e66ad50dcc94255d94803c97) )
- ROM_LOAD( "e63-11_poly2.5", 0x800000, 0x400000, CRC(2293d9f8) SHA1(16adaa0523168ee63a7a34b29622c623558fdd82) )
+ ROM_REGION16_BE( 0xc00000, "poly", 0 )
+ ROM_LOAD16_WORD_SWAP( "e63-09_poly0.3", 0x000000, 0x400000, CRC(c3e2b1e0) SHA1(ee71f3f59b46e26dbe2ff724da2c509267c8bf2f) )
+ ROM_LOAD16_WORD_SWAP( "e63-10_poly1.4", 0x400000, 0x400000, CRC(f4a56390) SHA1(fc3c51a7f4639479e66ad50dcc94255d94803c97) )
+ ROM_LOAD16_WORD_SWAP( "e63-11_poly2.5", 0x800000, 0x400000, CRC(2293d9f8) SHA1(16adaa0523168ee63a7a34b29622c623558fdd82) )
// Poly 3 is not populated
ROM_REGION( 0x800000, "sound_data", 0 )
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 5f83ed30285..f0db0bbaeb8 100644
--- a/src/mame/drivers/taitotz.cpp
+++ b/src/mame/drivers/taitotz.cpp
@@ -565,9 +565,9 @@ public:
DECLARE_READ64_MEMBER(video_fifo_r);
DECLARE_WRITE64_MEMBER(video_fifo_w);
- UINT32 *m_screen_ram;
- UINT32 *m_frame_ram;
- UINT32 *m_texture_ram;
+ std::unique_ptr<UINT32[]> m_screen_ram;
+ std::unique_ptr<UINT32[]> m_frame_ram;
+ std::unique_ptr<UINT32[]> m_texture_ram;
UINT32 m_video_unk_reg[0x10];
UINT32 m_video_fifo_ptr;
@@ -590,16 +590,16 @@ public:
UINT32 m_reg105;
- UINT32 m_displist_addr;
int m_count;
- taitotz_renderer *m_renderer;
+ std::unique_ptr<taitotz_renderer> m_renderer;
DECLARE_DRIVER_INIT(batlgr2a);
DECLARE_DRIVER_INIT(batlgr2);
DECLARE_DRIVER_INIT(pwrshovl);
DECLARE_DRIVER_INIT(batlgear);
DECLARE_DRIVER_INIT(landhigh);
DECLARE_DRIVER_INIT(raizpin);
+ DECLARE_DRIVER_INIT(raizpinj);
DECLARE_DRIVER_INIT(styphp);
virtual void machine_start() override;
virtual void machine_reset() override;
@@ -609,7 +609,6 @@ public:
DECLARE_READ16_MEMBER(tlcs_ide0_r);
DECLARE_READ16_MEMBER(tlcs_ide1_r);
DECLARE_WRITE_LINE_MEMBER(ide_interrupt);
- void taitotz_exit();
void draw_tile(UINT32 pos, UINT32 tile);
UINT32 video_mem_r(UINT32 address);
void video_mem_w(UINT32 address, UINT32 data);
@@ -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_zbuffer = auto_bitmap_ind32_alloc(state.machine(), width, height);
+ 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;
- bitmap_ind32 *m_zbuffer;
+ 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;
};
@@ -742,12 +761,12 @@ void taitotz_state::video_start()
int width = m_screen->width();
int height = m_screen->height();
- m_screen_ram = auto_alloc_array(machine(), UINT32, 0x200000);
- m_frame_ram = auto_alloc_array(machine(), UINT32, 0x80000);
- m_texture_ram = auto_alloc_array(machine(), UINT32, 0x800000);
+ m_screen_ram = std::make_unique<UINT32[]>(0x200000);
+ m_frame_ram = std::make_unique<UINT32[]>(0x80000);
+ m_texture_ram = std::make_unique<UINT32[]>(0x800000);
/* create renderer */
- m_renderer = auto_alloc(machine(), taitotz_renderer(*this, width, height, m_texture_ram));
+ 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);
+
+ // 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;
- // 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;
+ // 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;
- float light_x = (float)(ilx) / 127.0f;
- float light_y = (float)(ily) / 127.0f;
- float light_z = (float)(ilz) / 127.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;
+}
- // 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;
+void taitotz_renderer::render_tnl_object(UINT32 address, float scale, UINT8 alpha)
+{
+ UINT32 *src = &m_screen_ram[address];
+ vertex_t v[10];
- int end = 0;
+ 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;
+ m_tnl_fifo[m_tnl_fifo_ptr] = data;
+ m_tnl_fifo_ptr++;
- setup_viewport(0, 0, 256, 192, 256, 192);
-
-
- 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;
+ 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;
+ }
+}
+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];
-
- 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];
+ 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;
- 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,14 @@ 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)
{
- logerror("FIFO packet w: %08X at %08X\n", (UINT32)(data >> 32), space.device().safe_pc());
+ 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++;
}
@@ -1996,7 +1821,29 @@ 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_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)
+ {
+ m_renderer->push_tnl_fifo((UINT32)(data >> 32));
+ }
+ m_video_fifo_ptr++;
+ }
+ if (ACCESSING_BITS_0_31)
+ {
+ if (m_video_fifo_ptr >= 8)
+ {
+ 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:
@@ -2407,6 +2278,15 @@ static INPUT_PORTS_START( taitotz )
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON4 ) // View 2
PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_BUTTON1 ) // Select 1
PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_BUTTON2 ) // Select 2
+
+ PORT_START("ANALOG1")
+ PORT_START("ANALOG2")
+ PORT_START("ANALOG3")
+ PORT_START("ANALOG4")
+ PORT_START("ANALOG5")
+ PORT_START("ANALOG6")
+ PORT_START("ANALOG7")
+ PORT_START("ANALOG8")
INPUT_PORTS_END
static INPUT_PORTS_START( landhigh )
@@ -2462,6 +2342,10 @@ static INPUT_PORTS_START( landhigh )
PORT_START("ANALOG5")
PORT_BIT( 0x3ff, 0x000, IPT_PEDAL3 ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
+
+ PORT_START("ANALOG6")
+ PORT_START("ANALOG7")
+ PORT_START("ANALOG8")
INPUT_PORTS_END
static INPUT_PORTS_START( batlgr2 )
@@ -2511,6 +2395,12 @@ static INPUT_PORTS_START( batlgr2 )
PORT_START("ANALOG3") // Brake Pedal
PORT_BIT( 0x3ff, 0x000, IPT_PEDAL2 ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
+
+ PORT_START("ANALOG4")
+ PORT_START("ANALOG5")
+ PORT_START("ANALOG6")
+ PORT_START("ANALOG7")
+ PORT_START("ANALOG8")
INPUT_PORTS_END
static INPUT_PORTS_START( pwrshovl )
@@ -2624,6 +2514,12 @@ static INPUT_PORTS_START( styphp )
PORT_START("ANALOG3") // Brake Pedal
PORT_BIT( 0x3ff, 0x000, IPT_PEDAL2 ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
+
+ PORT_START("ANALOG4")
+ PORT_START("ANALOG5")
+ PORT_START("ANALOG6")
+ PORT_START("ANALOG7")
+ PORT_START("ANALOG8")
INPUT_PORTS_END
void taitotz_state::machine_reset()
@@ -2668,10 +2564,18 @@ static MACHINE_CONFIG_START( taitotz, taitotz_state )
/* TMP95C063F I/O CPU */
MCFG_CPU_ADD("iocpu", TMP95C063, 25000000)
- MCFG_TMP95C063_PORT9_WRITE(IOPORT("INPUTS1"))
- MCFG_TMP95C063_PORTB_WRITE(IOPORT("INPUTS2"))
- MCFG_TMP95C063_PORTD_WRITE(IOPORT("INPUTS3"))
- MCFG_TMP95C063_PORTE_WRITE(IOPORT("INPUTS4"))
+ MCFG_TMP95C063_PORT9_READ(IOPORT("INPUTS1"))
+ MCFG_TMP95C063_PORTB_READ(IOPORT("INPUTS2"))
+ MCFG_TMP95C063_PORTD_READ(IOPORT("INPUTS3"))
+ MCFG_TMP95C063_PORTE_READ(IOPORT("INPUTS4"))
+ MCFG_TMP95C063_AN0_READ(IOPORT("ANALOG1"))
+ MCFG_TMP95C063_AN1_READ(IOPORT("ANALOG2"))
+ MCFG_TMP95C063_AN2_READ(IOPORT("ANALOG3"))
+ MCFG_TMP95C063_AN3_READ(IOPORT("ANALOG4"))
+ MCFG_TMP95C063_AN4_READ(IOPORT("ANALOG5"))
+ MCFG_TMP95C063_AN5_READ(IOPORT("ANALOG6"))
+ MCFG_TMP95C063_AN6_READ(IOPORT("ANALOG7"))
+ MCFG_TMP95C063_AN7_READ(IOPORT("ANALOG8"))
MCFG_CPU_PROGRAM_MAP(tlcs900h_mem)
MCFG_CPU_VBLANK_INT_DRIVER("screen", taitotz_state, taitotz_vbi)
@@ -2706,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
@@ -2727,6 +2637,9 @@ static const char BATLGR2A_HDD_SERIAL[] = // " 05411645"
static const char RAIZPIN_HDD_SERIAL[] = // "691934013492 "
{ 0x36, 0x39, 0x31, 0x39, 0x33, 0x34, 0x30, 0x31, 0x33, 0x34, 0x39, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 };
+static const char RAIZPINJ_HDD_SERIAL[] = // "824915745143 "
+ { 0x38, 0x32, 0x34, 0x39, 0x31, 0x35, 0x37, 0x34, 0x35, 0x31, 0x34, 0x33, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 };
+
static const char STYPHP_HDD_SERIAL[] = // " 05872160"
{ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x35, 0x38, 0x37, 0x32, 0x31, 0x36, 0x30 };
@@ -2737,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)
@@ -2749,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)
@@ -2760,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)
@@ -2771,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)
@@ -2783,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)
@@ -2794,8 +2697,15 @@ DRIVER_INIT_MEMBER(taitotz_state,raizpin)
m_hdd_serial_number = RAIZPIN_HDD_SERIAL;
m_scr_base = 0x1c0000;
+}
+
+DRIVER_INIT_MEMBER(taitotz_state,raizpinj)
+{
+ init_taitotz_152();
- m_displist_addr = 0x33480c;
+ m_hdd_serial_number = RAIZPINJ_HDD_SERIAL;
+
+ m_scr_base = 0x1c0000;
}
DRIVER_INIT_MEMBER(taitotz_state,styphp)
@@ -2805,8 +2715,6 @@ DRIVER_INIT_MEMBER(taitotz_state,styphp)
m_hdd_serial_number = STYPHP_HDD_SERIAL;
m_scr_base = 0x1e0000;
-
- m_displist_addr = 0x490b70;
}
@@ -2831,6 +2739,24 @@ ROM_START( taitotz )
DISK_REGION( "ata:0:hdd:image" )
ROM_END
+/*
+
+The official drive for (at least) Raizin Ping Pong and Power Shovel is
+
+Quantum Fireball 4.3AT
+
+Formatted Capacity 4,310.43 MB
+Logical Heads 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
+
+*/
+
ROM_START( landhigh )
ROM_REGION64_BE( 0x100000, "user1", 0 )
TAITOTZ_BIOS_V152
@@ -2920,6 +2846,30 @@ ROM_START( pwrshovl )
DISK_IMAGE( "pwrshovl", 0, SHA1(360f63b39f645851c513b4644fb40601b9ba1412) )
ROM_END
+ROM_START( pwrshovla )
+ ROM_REGION64_BE( 0x100000, "user1", 0 )
+ TAITOTZ_BIOS_V111A
+
+ ROM_REGION( 0x40000, "io_cpu", 0 )
+ ROM_LOAD16_BYTE( "e74-04++.ic14", 0x000000, 0x020000, CRC(ef21a261) SHA1(7398826dbf48014b9c7e9454f978f3e419ebc64b) ) // actually labeled E74-04**
+ ROM_LOAD16_BYTE( "e74-05++.ic15", 0x000001, 0x020000, CRC(2466217d) SHA1(dc814da3a1679cff001f179d3c1641af985a6490) ) // actually labeled E74-05**
+
+ ROM_REGION( 0x10000, "sound_cpu", 0 ) /* Internal ROM :( */
+ ROM_LOAD( "e68-01.ic7", 0x000000, 0x010000, NO_DUMP )
+
+ ROM_REGION( 0x20000, "io_cpu2", 0 ) // another TMP95C063F, not hooked up yet
+ ROM_LOAD( "e74-06.ic2", 0x000000, 0x020000, CRC(cd4a99d3) SHA1(ea280e05a68308c1c5f1fc0ee8a25b33923df635) ) // located on the I/O PCB
+
+ ROM_REGION( 0x20000, "oki1", 0 )
+ ROM_LOAD( "e74-07.ic6", 0x000000, 0x020000, CRC(ca5baccc) SHA1(4594b7a6232b912d698fff053f7e3f51d8e1bfb6) ) // located on the I/O PCB
+
+ ROM_REGION( 0x20000, "oki2", 0 )
+ ROM_LOAD( "e74-08.ic8", 0x000000, 0x020000, CRC(ca5baccc) SHA1(4594b7a6232b912d698fff053f7e3f51d8e1bfb6) ) // located on the I/O PCB
+
+ DISK_REGION( "ata:0:hdd:image" )
+ DISK_IMAGE( "POWER SHOVEL VER.2.07J", 0, SHA1(05410d4b4972262ef93400b02f21dd17d10b1c5e) )
+ROM_END
+
ROM_START( raizpin )
ROM_REGION64_BE( 0x100000, "user1", 0 )
TAITOTZ_BIOS_V152
@@ -2935,6 +2885,21 @@ ROM_START( raizpin )
DISK_IMAGE( "raizpin", 0, SHA1(883ebcda03026df31da1cdb95af521e100c171ed) )
ROM_END
+ROM_START( raizpinj )
+ ROM_REGION64_BE( 0x100000, "user1", 0 )
+ TAITOTZ_BIOS_V152
+
+ ROM_REGION( 0x40000, "io_cpu", 0 )
+ ROM_LOAD16_BYTE( "f14-01.ic14", 0x000000, 0x020000, CRC(f86a184d) SHA1(46abd11430c08d4f384fb79a5a3a39e54f83b8d8) )
+ ROM_LOAD16_BYTE( "f14-02.ic15", 0x000001, 0x020000, CRC(bd2d0dee) SHA1(652f810702598184551de9fd69436862d48c1608) )
+
+ ROM_REGION( 0x10000, "sound_cpu", 0 ) /* Internal ROM :( */
+ ROM_LOAD( "e68-01.ic7", 0x000000, 0x010000, NO_DUMP )
+
+ DISK_REGION( "ata:0:hdd:image" )
+ DISK_IMAGE( "RAIZIN PING PONG VER 2.01J", 0, SHA1(eddc803c2507d19f0a3e3cc217bb22a565c04f3e) )
+ROM_END
+
ROM_START( styphp )
ROM_REGION64_BE( 0x100000, "user1", 0 )
TAITOTZ_BIOS_V152
@@ -2953,8 +2918,10 @@ ROM_END
GAME( 1999, taitotz, 0, taitotz, taitotz, driver_device, 0, ROT0, "Taito", "Type Zero BIOS", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT)
GAME( 1999, landhigh, taitotz, landhigh, landhigh, taitotz_state, landhigh, ROT0, "Taito", "Landing High Japan", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 1999, batlgear, taitotz, taitotz, batlgr2, taitotz_state, batlgear, ROT0, "Taito", "Battle Gear", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 1999, pwrshovl, taitotz, taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 1999, pwrshovl, taitotz, taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 1999/8/5 19:13:35
+GAME( 1999, pwrshovla,pwrshovl,taitotz, pwrshovl, taitotz_state, pwrshovl, ROT0, "Taito", "Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J, alt)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // seem to be some differences in drive content, but identifies as the same revision, is it just user data changes??
GAME( 2000, batlgr2, taitotz, taitotz, batlgr2, taitotz_state, batlgr2, ROT0, "Taito", "Battle Gear 2 (v2.04J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2000, batlgr2a, batlgr2, taitotz, batlgr2, taitotz_state, batlgr2a, ROT0, "Taito", "Battle Gear 2 (v2.01J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
GAME( 2000, styphp, taitotz, taitotz, styphp, taitotz_state, styphp, ROT0, "Taito", "Stunt Typhoon Plus", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2002, raizpin, taitotz, taitotz, taitotz, taitotz_state, raizpin, ROT0, "Taito", "Raizin Ping Pong", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2002, raizpin, taitotz, taitotz, taitotz, taitotz_state, raizpin, ROT0, "Taito", "Raizin Ping Pong (V2.01O)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2002, raizpinj, raizpin, taitotz, taitotz, taitotz_state, raizpinj, ROT0, "Taito", "Raizin Ping Pong (V2.01J)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/taitowlf.cpp b/src/mame/drivers/taitowlf.cpp
index 4751803b823..eba6d93fed2 100644
--- a/src/mame/drivers/taitowlf.cpp
+++ b/src/mame/drivers/taitowlf.cpp
@@ -45,7 +45,7 @@ public:
m_bank1(*this, "bank1"),
m_palette(*this, "palette") { }
- UINT32 *m_bios_ram;
+ std::unique_ptr<UINT32[]> m_bios_ram;
UINT8 m_mtxc_config_reg[256];
UINT8 m_piix4_config_reg[4][256];
@@ -261,7 +261,7 @@ WRITE32_MEMBER(taitowlf_state::bios_ram_w)
{
if (m_mtxc_config_reg[0x59] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ram + offset);
+ COMBINE_DATA(m_bios_ram.get() + offset);
}
}
@@ -396,9 +396,9 @@ MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(taitowlf_state,taitowlf)
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x10000/4);
- m_bank1->configure_entry(1, m_bios_ram);
+ m_bank1->configure_entry(1, m_bios_ram.get());
m_bank1->configure_entry(0, memregion("bios")->base() + 0x30000);
intel82439tx_init();
}
diff --git a/src/mame/drivers/tamag1.cpp b/src/mame/drivers/tamag1.cpp
index 7b0a73509a5..1275d33f0c7 100644
--- a/src/mame/drivers/tamag1.cpp
+++ b/src/mame/drivers/tamag1.cpp
@@ -63,14 +63,14 @@ static E0C6S46_PIXEL_UPDATE_CB(tama_pixel_update)
// they are on pin SEG8(x=35) + COM0-3, pin SEG28(x=36) + COM12-15
if (x == 35 && y < 4)
- output_set_lamp_value(y, state);
+ device.machine().output().set_lamp_value(y, state);
else if (x == 36 && y >= 12)
- output_set_lamp_value(y-8, state);
+ device.machine().output().set_lamp_value(y-8, state);
// output for svg2lay
char buf[0x10];
sprintf(buf, "%d.%d", y, x);
- output_set_value(buf, state);
+ device.machine().output().set_value(buf, state);
}
PALETTE_INIT_MEMBER(tamag1_state, tama)
diff --git a/src/mame/drivers/tank8.cpp b/src/mame/drivers/tank8.cpp
index 80ac03680c2..19989e0c21f 100644
--- a/src/mame/drivers/tank8.cpp
+++ b/src/mame/drivers/tank8.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -34,7 +34,7 @@ READ8_MEMBER(tank8_state::collision_r)
WRITE8_MEMBER(tank8_state::lockout_w)
{
- coin_lockout_w(machine(), offset, ~data & 1);
+ machine().bookkeeping().coin_lockout_w(offset, ~data & 1);
}
diff --git a/src/mame/drivers/tankbatt.cpp b/src/mame/drivers/tankbatt.cpp
index dabda547e02..9db62e1f5e2 100644
--- a/src/mame/drivers/tankbatt.cpp
+++ b/src/mame/drivers/tankbatt.cpp
@@ -72,7 +72,7 @@ void tankbatt_state::machine_start()
WRITE8_MEMBER(tankbatt_state::led_w)
{
- set_led_status(machine(), offset,data & 1);
+ output().set_led_value(offset,data & 1);
}
READ8_MEMBER(tankbatt_state::in0_r)
@@ -149,14 +149,14 @@ WRITE8_MEMBER(tankbatt_state::irq_ack_w)
WRITE8_MEMBER(tankbatt_state::coincounter_w)
{
- coin_counter_w(machine(), 0,data & 1);
- coin_counter_w(machine(), 1,data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
+ machine().bookkeeping().coin_counter_w(1,data & 1);
}
WRITE8_MEMBER(tankbatt_state::coinlockout_w)
{
- coin_lockout_w(machine(), 0,data & 1);
- coin_lockout_w(machine(), 1,data & 1);
+ machine().bookkeeping().coin_lockout_w(0,data & 1);
+ machine().bookkeeping().coin_lockout_w(1,data & 1);
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tankbatt_state )
diff --git a/src/mame/drivers/tankbust.cpp b/src/mame/drivers/tankbust.cpp
index 7775c80d6d4..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
/***************************************************************************
@@ -96,7 +96,7 @@ WRITE8_MEMBER(tankbust_state::e0xx_w)
break;
case 2: /* 0xe002 coin counter */
- coin_counter_w(machine(), 0, data&1);
+ machine().bookkeeping().coin_counter_w(0, data&1);
break;
case 6: /* 0xe006 screen disable ?? or disable screen update */
diff --git a/src/mame/drivers/targeth.cpp b/src/mame/drivers/targeth.cpp
index 518346d2b55..89c800b1581 100644
--- a/src/mame/drivers/targeth.cpp
+++ b/src/mame/drivers/targeth.cpp
@@ -61,7 +61,7 @@ WRITE16_MEMBER(targeth_state::OKIM6295_bankswitch_w)
WRITE16_MEMBER(targeth_state::targeth_coin_counter_w)
{
- coin_counter_w( machine(), (offset >> 3) & 0x01, data & 0x01);
+ machine().bookkeeping().coin_counter_w((offset >> 3) & 0x01, data & 0x01);
}
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, targeth_state )
@@ -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/tasman.cpp b/src/mame/drivers/tasman.cpp
index a2a5996109f..a9c65694c9b 100644
--- a/src/mame/drivers/tasman.cpp
+++ b/src/mame/drivers/tasman.cpp
@@ -14,6 +14,10 @@
Thanks to palindrome for PCB scans.
0x38606
+
+ TODO:
+ - dual port sound RAM;
+ - interrupt sources / irq masking;
*/
#include "emu.h"
@@ -34,12 +38,15 @@ public:
optional_shared_ptr<UINT32> m_vram;
DECLARE_READ32_MEMBER(eeprom_r);
- DECLARE_WRITE32_MEMBER(eeprom_w);
+ DECLARE_WRITE8_MEMBER(eeprom_w);
DECLARE_WRITE8_MEMBER(kongambl_ff_w);
DECLARE_READ32_MEMBER(test_r);
// DECLARE_READ32_MEMBER(rng_r);
DECLARE_DRIVER_INIT(kingtut);
DECLARE_VIDEO_START(kongambl);
+ UINT8 m_irq_mask;
+
+ virtual void machine_reset() override { m_irq_mask = 0; };
UINT32 screen_update_kongambl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(kongambl_vblank);
K056832_CB_MEMBER(tile_callback);
@@ -131,12 +138,21 @@ READ32_MEMBER(kongambl_state::eeprom_r)
return retval;
}
-WRITE32_MEMBER(kongambl_state::eeprom_w)
+WRITE8_MEMBER(kongambl_state::eeprom_w)
{
- if (ACCESSING_BITS_8_15)
+ // offset == 3 seems mux writes (active low)
+
+ if (offset == 2)
{
- ioport("EEPROMOUT")->write((data>>8)&0xf, 0xff);
+ ioport("EEPROMOUT")->write(data&0x7, 0xff);
+ if(data & 0xf8)
+ printf("Unused EEPROM bits %02x %02x\n",offset,data);
}
+ else
+ printf("%02x %02x\n",offset,data);
+
+ if(offset == 0)
+ m_irq_mask = data;
}
READ32_MEMBER(kongambl_state::test_r)
@@ -171,7 +187,7 @@ static ADDRESS_MAP_START( kongambl_map, AS_PROGRAM, 32, kongambl_state )
// override konami chips with custom areas until that code is removed
AM_RANGE(0x400000, 0x401fff) AM_ROM AM_REGION("gfx1",0)
AM_RANGE(0x420000, 0x43ffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x480000, 0x48003f) AM_RAM // vregs
+ //AM_RANGE(0x480000, 0x48003f) AM_RAM // vregs
//0x400000 0x400001 "13M" even addresses
//0x400002,0x400003 "13J" odd addresses
@@ -185,13 +201,13 @@ static ADDRESS_MAP_START( kongambl_map, AS_PROGRAM, 32, kongambl_state )
AM_RANGE(0x460000, 0x47ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE(0x4b001c, 0x4b001f) AM_WRITENOP
+ AM_RANGE(0x4b0000, 0x4b001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00ff00)
AM_RANGE(0x4c0000, 0x4c0007) AM_DEVWRITE16("k055673", k055673_device, k053246_word_w, 0xffffffff)
- AM_RANGE(0x4c4000, 0x4c4003) AM_WRITENOP
- AM_RANGE(0x4c4004, 0x4c4007) AM_WRITENOP
- AM_RANGE(0x4c801c, 0x4c801f) AM_WRITENOP
- AM_RANGE(0x4cc01c, 0x4cc01f) AM_WRITENOP
+ //AM_RANGE(0x4c4000, 0x4c4003) AM_WRITENOP
+ //AM_RANGE(0x4c4004, 0x4c4007) AM_WRITENOP
+ //AM_RANGE(0x4c801c, 0x4c801f) AM_WRITENOP
+ //AM_RANGE(0x4cc01c, 0x4cc01f) AM_WRITENOP
AM_RANGE(0x4cc000, 0x4cc00f) AM_DEVREAD16("k055673", k055673_device, k055673_rom_word_r, 0xffffffff)
@@ -199,9 +215,9 @@ static ADDRESS_MAP_START( kongambl_map, AS_PROGRAM, 32, kongambl_state )
AM_RANGE(0x500380, 0x500383) AM_READ(test_r)
AM_RANGE(0x500000, 0x5007ff) AM_RAM
-// AM_RANGE(0x500400, 0x500403) AM_NOP //dual port?
-// AM_RANGE(0x500420, 0x500423) AM_NOP //dual port?
-// AM_RANGE(0x500500, 0x500503) AM_NOP // reads sound ROM in here, polled from m68k?
+ AM_RANGE(0x500400, 0x500403) AM_NOP //dual port?
+ AM_RANGE(0x500420, 0x500423) AM_NOP //dual port?
+ AM_RANGE(0x500500, 0x500503) AM_NOP // reads sound ROM in here, polled from m68k?
AM_RANGE(0x580000, 0x580007) AM_READ(test_r)
AM_RANGE(0x600000, 0x60000f) AM_READ(test_r)
@@ -209,8 +225,8 @@ static ADDRESS_MAP_START( kongambl_map, AS_PROGRAM, 32, kongambl_state )
AM_RANGE(0x700000, 0x700003) AM_READ(eeprom_r)
AM_RANGE(0x700004, 0x700007) AM_READ_PORT("IN1")
AM_RANGE(0x700008, 0x70000b) AM_READ_PORT("IN3")
- AM_RANGE(0x780000, 0x780003) AM_WRITE(eeprom_w)
- AM_RANGE(0x780004, 0x780007) AM_WRITENOP
+ AM_RANGE(0x780000, 0x780003) AM_WRITE8(eeprom_w,0xffffffff)
+ //AM_RANGE(0x780004, 0x780007) AM_WRITENOP
ADDRESS_MAP_END
static ADDRESS_MAP_START( kongamaud_map, AS_PROGRAM, 16, kongambl_state )
@@ -548,14 +564,15 @@ static const gfx_layout charlayout8_tasman =
8,8,
RGN_FRAC(1,1),
8,
- { 0,8,16,24,32,40,48,56 },
- { 0,1,2,3,4,5,6,7 }, // bit order probably not exact - note ramp in first 16 tiles
+ // 0,8,16,24,32,40,48,56
+ { 56,24,40,8,48,16,32,0 },
+ { 0,1,2,3,4,5,6,7 },
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64},
8*64
};
static GFXDECODE_START( tasman )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout8_tasman, 0, 0x8000/256 )
+ GFXDECODE_ENTRY( "gfx1", 0, charlayout8_tasman, 0, 0x8000/(1 << 8) )
GFXDECODE_END
@@ -564,11 +581,18 @@ TIMER_DEVICE_CALLBACK_MEMBER(kongambl_state::kongambl_vblank)
int scanline = param;
// disabled for now since it interferes with the ROM tests
-// if(scanline == 512)
-// m_maincpu->set_input_line(1, HOLD_LINE); // vblank?
+ if(scanline == 384 && m_irq_mask & 1)
+ m_maincpu->set_input_line(1, HOLD_LINE); // vblank?
- if(scanline == 0)
+ //if(scanline == 256 && m_irq_mask & 2)
+ // m_maincpu->set_input_line(2, HOLD_LINE); // unknown (jumps to work RAM via a branch or returns lv 2 exception error, extension board?)
+
+ if(scanline == 0 && m_irq_mask & 4)
m_maincpu->set_input_line(3, HOLD_LINE); // sprite irq?
+
+ if(scanline == 128 && m_irq_mask & 8)
+ m_maincpu->set_input_line(4, HOLD_LINE); // sound irq
+
}
static MACHINE_CONFIG_START( kongambl, kongambl_state )
@@ -580,13 +604,16 @@ static MACHINE_CONFIG_START( kongambl, kongambl_state )
MCFG_CPU_PROGRAM_MAP(kongamaud_map)
MCFG_CPU_PERIODIC_INT_DRIVER(kongambl_state, irq2_line_hold, 480)
+ MCFG_DEVICE_ADD("k053252", K053252, 25000000)
+ MCFG_K053252_OFFSETS(0, 16) // TBD
+ MCFG_K053252_INT1_ACK_CB(WRITELINE(konamigx_state, vblank_irq_ack_w))
+ MCFG_K053252_INT2_ACK_CB(WRITELINE(konamigx_state, hblank_irq_ack_w))
+ MCFG_VIDEO_SET_SCREEN("screen")
+
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_SIZE(96*8, 64*8+16)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 80*8-1, 0*8, 64*8-1)
+ MCFG_SCREEN_RAW_PARAMS(25000000, 288+16+32+48, 0, 287, 224+16+8+16, 0, 223) // fake, they'll be changed by CCU anyway, TBD
MCFG_SCREEN_UPDATE_DRIVER(kongambl_state, screen_update_kongambl)
MCFG_SCREEN_PALETTE("palette")
@@ -743,12 +770,12 @@ ROM_END
DRIVER_INIT_MEMBER(kongambl_state,kingtut)
{
- UINT32 *rom = (UINT32*)memregion("maincpu")->base();
+ //UINT32 *rom = (UINT32*)memregion("maincpu")->base();
-// rom[0x3986c/4] = (rom[0x3986c/4] & 0xffff0000) | 0x600e; // patch ROM check
-// rom[0x2bfc8/4] = (rom[0x2bfc8/4] & 0xffff0000) | 0x6612; // patch VRAM ROM checks
-// rom[0x2acd0/4] = (rom[0x2acd0/4] & 0xffff) | 0x6612<<16; // patch OBJ ROM checks
- rom[0x55e40/4] = (rom[0x55e40/4] & 0xffff0000) | 0x4e71; // goes away from the POST
+ //rom[0x3986c/4] = (rom[0x3986c/4] & 0xffff0000) | 0x600e; // patch ROM check
+ //rom[0x2bfc8/4] = (rom[0x2bfc8/4] & 0xffff0000) | 0x6612; // patch VRAM ROM checks
+ //rom[0x2acd0/4] = (rom[0x2acd0/4] & 0xffff) | 0x6612<<16; // patch OBJ ROM checks
+ //rom[0x55e40/4] = (rom[0x55e40/4] & 0xffff0000) | 0x4e71; // goes away from the POST
}
GAME( 199?, kingtut, 0, kongambl, kongambl, kongambl_state, kingtut, ROT0, "Konami", "King Tut (NSW, Australia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
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 112872f4b05..e0f4e4798c9 100644
--- a/src/mame/drivers/tb303.cpp
+++ b/src/mame/drivers/tb303.cpp
@@ -2,7 +2,7 @@
// copyright-holders:hap
/***************************************************************************
- ** subclass of hh_ucom4_state (includes/hh_ucom4.h, drivers/hh_ucom4.c) **
+ ** subclass of hh_ucom4_state (includes/hh_ucom4.h, drivers/hh_ucom4.cpp) **
Roland TB-303 Bass Line, 1982, designed by Tadao Kikumoto
* NEC uCOM-43 MCU, labeled D650C 133
@@ -24,10 +24,10 @@ 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")
+ m_tp3_off_timer(*this, "tp3_off")
{ }
- required_device<timer_device> m_t3_off_timer;
+ required_device<timer_device> m_tp3_off_timer;
UINT8 m_ram[0xc00];
UINT16 m_ram_address;
@@ -43,8 +43,8 @@ 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);
+ TIMER_DEVICE_CALLBACK_MEMBER(tp3_off);
virtual void machine_start() override;
};
@@ -56,22 +56,22 @@ public:
***************************************************************************/
-// T2 to MCU CLK: LC circuit, stable sine wave, 2.2us interval
-#define TB303_T2_CLOCK_HZ 454545 /* in hz */
+// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval
+#define TP2_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)
+// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
+#define TP3_CLOCK attotime::from_usec(1800)
+#define TP3_OFF (TP3_CLOCK / 8)
-TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::t3_off)
+TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::tp3_off)
{
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::t3_clock)
+TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::tp3_clock)
{
m_maincpu->set_input_line(0, ASSERT_LINE);
- m_t3_off_timer->adjust(TB303_T3_OFF);
+ m_tp3_off_timer->adjust(TP3_OFF);
}
@@ -270,7 +270,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_CLOCK_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 +282,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_CLOCK)
+ MCFG_TIMER_START_DELAY(TP3_CLOCK)
+ MCFG_TIMER_DRIVER_ADD("tp3_off", tb303_state, tp3_off)
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 +307,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/tbowl.cpp b/src/mame/drivers/tbowl.cpp
index 2f8a08eb6c6..4f6a062eb3a 100644
--- a/src/mame/drivers/tbowl.cpp
+++ b/src/mame/drivers/tbowl.cpp
@@ -24,7 +24,7 @@ Might be some priority glitches
WRITE8_MEMBER(tbowl_state::coincounter_w)
{
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
}
/*** Banking
diff --git a/src/mame/drivers/tec1.cpp b/src/mame/drivers/tec1.cpp
index c2f27762dcf..99714f7e97a 100644
--- a/src/mame/drivers/tec1.cpp
+++ b/src/mame/drivers/tec1.cpp
@@ -233,12 +233,12 @@ TIMER_CALLBACK_MEMBER(tec1_state::tec1_kbd_callback)
if (BIT(m_digit, i))
{
m_refresh[i] = 1;
- output_set_digit_value(i, m_segment);
+ output().set_digit_value(i, m_segment);
}
else
if (m_refresh[i] == 0x80)
{
- output_set_digit_value(i, 0);
+ output().set_digit_value(i, 0);
m_refresh[i] = 0;
}
else
diff --git a/src/mame/drivers/techno.cpp b/src/mame/drivers/techno.cpp
index 65c76812bd7..7448583160b 100644
--- a/src/mame/drivers/techno.cpp
+++ b/src/mame/drivers/techno.cpp
@@ -76,12 +76,12 @@ ADDRESS_MAP_END
WRITE16_MEMBER( techno_state::disp1_w )
{
- output_set_digit_value(m_digit, BITSWAP16(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_digit, BITSWAP16(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
}
WRITE16_MEMBER( techno_state::disp2_w )
{
- output_set_digit_value(m_digit+30, BITSWAP16(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(m_digit+30, BITSWAP16(data, 12, 10, 8, 14, 13, 9, 11, 15, 7, 6, 5, 4, 3, 2, 1, 0));
}
WRITE16_MEMBER( techno_state::sound_w )
diff --git a/src/mame/drivers/tecnbras.cpp b/src/mame/drivers/tecnbras.cpp
index 066684f26b2..0d566901141 100644
--- a/src/mame/drivers/tecnbras.cpp
+++ b/src/mame/drivers/tecnbras.cpp
@@ -79,7 +79,7 @@ WRITE8_MEMBER(tecnbras_state::print_column_w)
if((x/5) < ARRAY_LENGTH(m_digit)){
m_digit[x/5][i] &= ~(1 << (x%5));
m_digit[x/5][i] |= BIT(data, 7-i) ? (1 << (x%5)) : 0;
- output_set_indexed_value("dmd_", (x/5)*7 + i, 0x1F & m_digit[x/5][i]);
+ output().set_indexed_value("dmd_", (x/5)*7 + i, 0x1F & m_digit[x/5][i]);
}
}
}
@@ -89,7 +89,7 @@ void tecnbras_state::machine_start()
/*
for (int x=0; x<14; x++){
for (int y=0; y<7; y++){
- output_set_indexed_value("dmd_", x*7 + y, y);
+ output().set_indexed_value("dmd_", x*7 + y, y);
}
}
*/
diff --git a/src/mame/drivers/tek405x.cpp b/src/mame/drivers/tek405x.cpp
index 87475689fcd..a2e58454346 100644
--- a/src/mame/drivers/tek405x.cpp
+++ b/src/mame/drivers/tek405x.cpp
@@ -617,9 +617,9 @@ WRITE8_MEMBER( tek4051_state::kb_pia_pb_w )
*/
// lamps
- output_set_led_value(1, !BIT(data, 5));
- output_set_led_value(2, !BIT(data, 6));
- output_set_led_value(3, !BIT(data, 7));
+ output().set_led_value(1, !BIT(data, 5));
+ output().set_led_value(2, !BIT(data, 6));
+ output().set_led_value(3, !BIT(data, 7));
// end or identify
m_gpib->eoi_w(!BIT(data, 4));
diff --git a/src/mame/drivers/tekxp33x.cpp b/src/mame/drivers/tekxp33x.cpp
index 76345aafe33..5e90c391c22 100644
--- a/src/mame/drivers/tekxp33x.cpp
+++ b/src/mame/drivers/tekxp33x.cpp
@@ -2,35 +2,35 @@
// copyright-holders:Justin Kerk
/***************************************************************************
- Tektronix TekXpress XP33x series X terminals
+ Tektronix TekXpress XP33x series X terminals
- Skeleton driver.
+ Skeleton driver.
****************************************************************************/
/*
- TODO:
-
- - everything
-
- Technical info:
- https://www.linux-mips.org/wiki/Tektronix_TekXPress_XP338
- https://web.archive.org/web/20061013084616/http://tekxp-linux.hopto.org/pmwiki/pmwiki.php/Hardware/XP33x
- http://bio.gsi.de/DOCS/NCD/xp.html
-
- CPU: IDT 79R3052E (MIPS I R3000 embedded core. Big Endian. With MMU, without FPU.)
- Graphic Chipset: Texas Instruments (34020AGBL-40) TI 34010 (TIGA)
- Graphic RAMDAC: Brooktree BT458LPJ135 (Supported in XFree86)
- RAM: 4MB onboard, upgradeable to 52MB, 3 slots for 5V FPM NoParity SIMMs
- ROM: 256Kb, 2 x 27c1024 (64Kx16), with BootMonitor
- Peripherals:
- 1x Ethernet Port (AUI and UTP) -- AMD AM79C98 Chipset
- 2x Serial Ports -- Philips SCC2692 Dual UART chipset
- Keyboard and Mouse controller is a generic PC-Style i8742 with Phoenix BIOS.
- 1x "ERGO" Port (Combined Monitor, Keyboard, Mouse)
- 16K (2K*8) EEPROM is SEEQ NQ2816A-250, AT28C16 compatible. Contains Boot Monitor settings. The content is compressed.
- Micron MT56C0816 - ??? Flash
+ TODO:
+
+ - everything
+
+ Technical info:
+ https://www.linux-mips.org/wiki/Tektronix_TekXPress_XP338
+ https://web.archive.org/web/20061013084616/http://tekxp-linux.hopto.org/pmwiki/pmwiki.php/Hardware/XP33x
+ http://bio.gsi.de/DOCS/NCD/xp.html
+
+ CPU: IDT 79R3052E (MIPS I R3000 embedded core. Big Endian. With MMU, without FPU.)
+ Graphic Chipset: Texas Instruments (34020AGBL-40) TI 34010 (TIGA)
+ Graphic RAMDAC: Brooktree BT458LPJ135 (Supported in XFree86)
+ RAM: 4MB onboard, upgradeable to 52MB, 3 slots for 5V FPM NoParity SIMMs
+ ROM: 256Kb, 2 x 27c1024 (64Kx16), with BootMonitor
+ Peripherals:
+ 1x Ethernet Port (AUI and UTP) -- AMD AM79C98 Chipset
+ 2x Serial Ports -- Philips SCC2692 Dual UART chipset
+ Keyboard and Mouse controller is a generic PC-Style i8742 with Phoenix BIOS.
+ 1x "ERGO" Port (Combined Monitor, Keyboard, Mouse)
+ 16K (2K*8) EEPROM is SEEQ NQ2816A-250, AT28C16 compatible. Contains Boot Monitor settings. The content is compressed.
+ Micron MT56C0816 - ??? Flash
*/
diff --git a/src/mame/drivers/tempest.cpp b/src/mame/drivers/tempest.cpp
index 7d0e939f127..514f705cdbf 100644
--- a/src/mame/drivers/tempest.cpp
+++ b/src/mame/drivers/tempest.cpp
@@ -399,8 +399,8 @@ READ8_MEMBER(tempest_state::input_port_2_bit_r)
WRITE8_MEMBER(tempest_state::tempest_led_w)
{
- set_led_status(machine(), 0, ~data & 0x02);
- set_led_status(machine(), 1, ~data & 0x01);
+ output().set_led_value(0, ~data & 0x02);
+ output().set_led_value(1, ~data & 0x01);
/* FLIP is bit 0x04 */
m_player_select = data & 0x04;
}
@@ -408,9 +408,9 @@ WRITE8_MEMBER(tempest_state::tempest_led_w)
WRITE8_MEMBER(tempest_state::tempest_coin_w)
{
- coin_counter_w(machine(), 0, (data & 0x01));
- coin_counter_w(machine(), 1, (data & 0x02));
- coin_counter_w(machine(), 2, (data & 0x04));
+ machine().bookkeeping().coin_counter_w(0, (data & 0x01));
+ machine().bookkeeping().coin_counter_w(1, (data & 0x02));
+ machine().bookkeeping().coin_counter_w(2, (data & 0x04));
m_avg->set_flip_x(data & 0x08);
m_avg->set_flip_y(data & 0x10);
}
diff --git a/src/mame/drivers/tetrisp2.cpp b/src/mame/drivers/tetrisp2.cpp
index 8982a7657f5..843c7381bdd 100644
--- a/src/mame/drivers/tetrisp2.cpp
+++ b/src/mame/drivers/tetrisp2.cpp
@@ -281,7 +281,7 @@ WRITE16_MEMBER(tetrisp2_state::rocknms_sub2main_w)
WRITE16_MEMBER(tetrisp2_state::tetrisp2_coincounter_w)
{
- coin_counter_w( machine(), 0, (data & 0x0001));
+ machine().bookkeeping().coin_counter_w(0, (data & 0x0001));
}
@@ -331,16 +331,16 @@ WRITE16_MEMBER(tetrisp2_state::nndmseal_coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w( machine(), 0, data & 0x0001 );
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001 );
// data & 0x0004 ?
- coin_lockout_w( machine(), 0,(~data) & 0x0008 );
+ machine().bookkeeping().coin_lockout_w(0,(~data) & 0x0008 );
}
if (ACCESSING_BITS_8_15)
{
- set_led_status( machine(), 0, data & 0x1000 ); // +
- set_led_status( machine(), 1, data & 0x2000 ); // -
- set_led_status( machine(), 2, data & 0x4000 ); // Cancel
- set_led_status( machine(), 3, data & 0x8000 ); // OK
+ output().set_led_value(0, data & 0x1000 ); // +
+ output().set_led_value(1, data & 0x2000 ); // -
+ output().set_led_value(2, data & 0x4000 ); // Cancel
+ output().set_led_value(3, data & 0x8000 ); // OK
}
// popmessage("%04x",data);
}
@@ -575,21 +575,21 @@ WRITE16_MEMBER(stepstag_state::stepstag_leds_w)
// data = COMBINE_DATA()
if (ACCESSING_BITS_0_7)
{
- set_led_status(machine(), 0, data & 0x0001); // P2 Front-Left
- set_led_status(machine(), 1, data & 0x0002); // P2 Front-Right
- set_led_status(machine(), 2, data & 0x0004); // P2 Left
- set_led_status(machine(), 3, data & 0x0008); // P2 Right
- set_led_status(machine(), 4, data & 0x0010); // P2 Back-Left
- set_led_status(machine(), 5, data & 0x0020); // P2 Back-Right
+ output().set_led_value( 0, data & 0x0001); // P2 Front-Left
+ output().set_led_value( 1, data & 0x0002); // P2 Front-Right
+ output().set_led_value( 2, data & 0x0004); // P2 Left
+ output().set_led_value( 3, data & 0x0008); // P2 Right
+ output().set_led_value( 4, data & 0x0010); // P2 Back-Left
+ output().set_led_value( 5, data & 0x0020); // P2 Back-Right
}
if (ACCESSING_BITS_8_15)
{
- set_led_status(machine(), 6, data & 0x0100); // P1 Front-Left
- set_led_status(machine(), 7, data & 0x0200); // P1 Front-Right
- set_led_status(machine(), 8, data & 0x0400); // P1 Left
- set_led_status(machine(), 9, data & 0x0800); // P1 Right
- set_led_status(machine(), 10, data & 0x1000); // P1 Back-Left
- set_led_status(machine(), 11, data & 0x2000); // P1 Back-Right
+ output().set_led_value( 6, data & 0x0100); // P1 Front-Left
+ output().set_led_value( 7, data & 0x0200); // P1 Front-Right
+ output().set_led_value( 8, data & 0x0400); // P1 Left
+ output().set_led_value( 9, data & 0x0800); // P1 Right
+ output().set_led_value(10, data & 0x1000); // P1 Back-Left
+ output().set_led_value(11, data & 0x2000); // P1 Back-Right
}
// popmessage("FEET %02x",data);
diff --git a/src/mame/drivers/thayers.cpp b/src/mame/drivers/thayers.cpp
index 2016c1b4436..88db79b9569 100644
--- a/src/mame/drivers/thayers.cpp
+++ b/src/mame/drivers/thayers.cpp
@@ -409,7 +409,7 @@ WRITE8_MEMBER(thayers_state::laserdsc_control_w)
*/
- coin_counter_w(machine(), 0, BIT(data, 4));
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 4));
if (BIT(data, 5))
{
@@ -445,7 +445,7 @@ WRITE8_MEMBER(thayers_state::den1_w)
*/
- output_set_digit_value(data >> 4, led_map[data & 0x0f]);
+ output().set_digit_value(data >> 4, led_map[data & 0x0f]);
}
WRITE8_MEMBER(thayers_state::den2_w)
@@ -465,7 +465,7 @@ WRITE8_MEMBER(thayers_state::den2_w)
*/
- output_set_digit_value(8 + (data >> 4), led_map[data & 0x0f]);
+ output().set_digit_value(8 + (data >> 4), led_map[data & 0x0f]);
}
/* SSI-263 */
diff --git a/src/mame/drivers/thedealr.cpp b/src/mame/drivers/thedealr.cpp
index 827a3af6d52..d6e9698474a 100644
--- a/src/mame/drivers/thedealr.cpp
+++ b/src/mame/drivers/thedealr.cpp
@@ -152,22 +152,22 @@ WRITE8_MEMBER(thedealr_state::iox_w)
{
case 0x20: // leds
m_iox_leds = data;
- set_led_status(machine(), 0, data & 0x01); // bet
- set_led_status(machine(), 1, data & 0x02); // deal
- set_led_status(machine(), 2, data & 0x04);
- set_led_status(machine(), 3, data & 0x08);
- set_led_status(machine(), 4, data & 0x10); // hold 1-5?
- set_led_status(machine(), 5, data & 0x20);
- set_led_status(machine(), 6, data & 0x40);
- set_led_status(machine(), 7, data & 0x80);
+ output().set_led_value(0, data & 0x01); // bet
+ output().set_led_value(1, data & 0x02); // deal
+ output().set_led_value(2, data & 0x04);
+ output().set_led_value(3, data & 0x08);
+ output().set_led_value(4, data & 0x10); // hold 1-5?
+ output().set_led_value(5, data & 0x20);
+ output().set_led_value(6, data & 0x40);
+ output().set_led_value(7, data & 0x80);
break;
case 0x40: // coin counters
m_iox_coins = data;
- coin_counter_w(machine(), 0, (~data) & 0x02); // coin1 or service coin
- coin_counter_w(machine(), 1, (~data) & 0x04); // coupon
- coin_counter_w(machine(), 2, (~data) & 0x08); // service coin
- coin_counter_w(machine(), 3, (~data) & 0x10); // coin-out
+ machine().bookkeeping().coin_counter_w(0, (~data) & 0x02); // coin1 or service coin
+ machine().bookkeeping().coin_counter_w(1, (~data) & 0x04); // coupon
+ machine().bookkeeping().coin_counter_w(2, (~data) & 0x08); // service coin
+ machine().bookkeeping().coin_counter_w(3, (~data) & 0x10); // coin-out
if ((~data) & 0xe1)
logerror("%s: unknown bits written to command %02X: %02X\n", machine().describe_context(), m_iox_cmd, data);
break;
diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp
index 1d48c2c5bb7..756d5a87bb5 100644
--- a/src/mame/drivers/thoop2.cpp
+++ b/src/mame/drivers/thoop2.cpp
@@ -66,11 +66,11 @@ WRITE16_MEMBER(thoop2_state::thoop2_coin_w)
switch ((offset >> 3)){
case 0x00: /* Coin Lockouts */
case 0x01:
- coin_lockout_w(machine(), (offset >> 3) & 0x01, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w((offset >> 3) & 0x01, ~data & 0x01);
break;
case 0x02: /* Coin Counters */
case 0x03:
- coin_counter_w(machine(), (offset >> 3) & 0x01, data & 0x01);
+ machine().bookkeeping().coin_counter_w((offset >> 3) & 0x01, data & 0x01);
break;
}
}
@@ -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/thunderx.cpp b/src/mame/drivers/thunderx.cpp
index 0149e610533..37dee298876 100644
--- a/src/mame/drivers/thunderx.cpp
+++ b/src/mame/drivers/thunderx.cpp
@@ -325,8 +325,8 @@ WRITE8_MEMBER(thunderx_state::scontra_bankswitch_w)
m_bank5800->set_bank((data & 0x10) >> 4);
// bits 5-6 coin counters
- coin_counter_w(machine(), 0, data & 0x20);
- coin_counter_w(machine(), 1, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
// bit 7 controls layer priority
m_priority = data & 0x80;
@@ -340,8 +340,8 @@ WRITE8_MEMBER(thunderx_state::thunderx_videobank_w)
m_bank5800->set_bank(data & 0x10 ? 2 : (data & 0x1));
/* bits 1-2 coin counters */
- coin_counter_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04);
/* bit 3 controls layer priority */
m_priority = data & 0x08;
@@ -352,8 +352,8 @@ WRITE8_MEMBER(thunderx_state::gbusters_videobank_w)
// same as thunderx without the PMC
m_bank5800->set_bank(data & 0x1);
- coin_counter_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04);
m_priority = data & 0x08;
}
diff --git a/src/mame/drivers/ti74.cpp b/src/mame/drivers/ti74.cpp
index 3469ae70b3b..9c01b6ceea2 100644
--- a/src/mame/drivers/ti74.cpp
+++ b/src/mame/drivers/ti74.cpp
@@ -168,7 +168,7 @@ void ti74_state::update_lcd_indicator(UINT8 y, UINT8 x, int state)
// above | _LOW _ERROR 2nd INV ALPHA LC INS DEGRAD HEX OCT I/O
// screen- | _P{70} <{71} RUN{3}
// area . SYS{4}
- output_set_lamp_value(y * 10 + x, state);
+ output().set_lamp_value(y * 10 + x, state);
}
static HD44780_PIXEL_UPDATE(ti74_pixel_update)
diff --git a/src/mame/drivers/ti99_4p.cpp b/src/mame/drivers/ti99_4p.cpp
index d801c096ee2..0f48e57772b 100644
--- a/src/mame/drivers/ti99_4p.cpp
+++ b/src/mame/drivers/ti99_4p.cpp
@@ -97,7 +97,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(audio_gate);
DECLARE_WRITE_LINE_MEMBER(cassette_output);
DECLARE_WRITE8_MEMBER(tms9901_interrupt);
- DECLARE_WRITE_LINE_MEMBER(handset_ack);
DECLARE_WRITE_LINE_MEMBER(alphaW);
virtual void machine_start() override;
DECLARE_MACHINE_RESET(ti99_4p);
@@ -862,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/tiamc1.cpp b/src/mame/drivers/tiamc1.cpp
index ac9d19a3df8..a7fd52a0015 100644
--- a/src/mame/drivers/tiamc1.cpp
+++ b/src/mame/drivers/tiamc1.cpp
@@ -129,8 +129,8 @@ void tiamc1_state::machine_reset()
WRITE8_MEMBER(tiamc1_state::tiamc1_control_w)
{
- coin_lockout_w(machine(), 0, ~data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
}
diff --git a/src/mame/drivers/ticalc1x.cpp b/src/mame/drivers/ticalc1x.cpp
index 5a8bbae7c16..dcdea37827c 100644
--- a/src/mame/drivers/ticalc1x.cpp
+++ b/src/mame/drivers/ticalc1x.cpp
@@ -2,15 +2,19 @@
// copyright-holders:hap, Sean Riddle
/***************************************************************************
- ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.c) **
+ ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.cpp) **
- Texas Instruments TMS1xxx family handheld calculators (mostly single-chip)
+ Texas Instruments TMS1xxx family handheld calculators (mostly single-chip).
+ For a comprehensive list of MCU serials, see Joerg Woerner's datamath.org:
+ http://www.datamath.org/IC_List.htm
- Refer to their official manuals on how to use them.
+ Refer to the calculators/toys official manuals on how to use them.
TODO:
- MCU clocks are unknown where noted
+ - fake-press ON button when emulation starts for calculators that have
+ it on the button matrix (doesn't look like any relies on it though)
***************************************************************************/
@@ -18,6 +22,7 @@
// internal artwork
#include "dataman.lh"
+#include "ti1250.lh"
#include "ti1270.lh"
#include "ti30.lh"
#include "tisr16.lh"
@@ -52,12 +57,13 @@ void ticalc1x_state::machine_start()
/***************************************************************************
- TI SR-16, SR-16 II
- * SR-16: TMS1000 MCU labeled TMS1001NL. die labeled 1000, 1001A
- * SR-16 II: TMS1000 MCU labeled TMS1016NL. die labeled 1000B, 1016A
+ TI SR-16 (1974, first consumer product with TMS1000 series MCU)
+ * TMS1000 MCU labeled TMS1001NL (die labeled 1000, 1001A)
* 12-digit 7seg LED display
- SR-16 II is a cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
+ 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.
***************************************************************************/
@@ -182,7 +188,6 @@ static INPUT_PORTS_START( tisr16 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
-
static INPUT_PORTS_START( tisr16ii )
PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -251,7 +256,6 @@ static INPUT_PORTS_START( tisr16ii )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
INPUT_PORTS_END
-
static MACHINE_CONFIG_START( tisr16, tisr16_state )
/* basic machine hardware */
@@ -263,8 +267,6 @@ static MACHINE_CONFIG_START( tisr16, tisr16_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_tisr16)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -274,16 +276,33 @@ MACHINE_CONFIG_END
/***************************************************************************
+ TI-1250/TI-1200 (1975 version), Spirit of '76
+ * TMS0950 MCU labeled TMC0952NL, K0952 (die labeled 0950A 0952)
+ * 9-digit 7seg LED display
+
+ 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.
+
TI-1270
- * TMS0970 MCU labeled TMC0974NL ZA0355, DP0974A. die labeled 0970D-74A
+ * TMS0970 MCU labeled TMC0974NL ZA0355, DP0974A (die labeled 0970D-74A)
* 8-digit 7seg LED display
+ * notes: almost same hardware as TMS0972 TI-1250, minor scientific functions
***************************************************************************/
-class ti1270_state : public ticalc1x_state
+class ti1250_state : public ticalc1x_state
{
public:
- ti1270_state(const machine_config &mconfig, device_type type, const char *tag)
+ ti1250_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag)
{ }
@@ -294,13 +313,16 @@ public:
// handlers
-WRITE16_MEMBER(ti1270_state::write_r)
+WRITE16_MEMBER(ti1250_state::write_r)
{
- // R0-R7: select digit (right-to-left)
- display_matrix_seg(8, 8, m_o, data, 0xff);
+ // R8 only has segment G connected
+ m_display_segmask[8] = 0x40;
+
+ // R0-R7(,R8): select digit (right-to-left)
+ display_matrix_seg(8, 9, m_o, data, 0xff);
}
-WRITE16_MEMBER(ti1270_state::write_o)
+WRITE16_MEMBER(ti1250_state::write_o)
{
// O1-O5,O7: input mux
// O0-O7: digit segments
@@ -308,7 +330,7 @@ WRITE16_MEMBER(ti1270_state::write_o)
m_o = data;
}
-READ8_MEMBER(ti1270_state::read_k)
+READ8_MEMBER(ti1250_state::read_k)
{
// K: multiplexed inputs
return read_inputs(6);
@@ -317,9 +339,9 @@ READ8_MEMBER(ti1270_state::read_k)
// config
-static INPUT_PORTS_START( ti1270 )
+static INPUT_PORTS_START( ti1250 )
PORT_START("IN.0") // O1
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CE/C")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
@@ -343,44 +365,74 @@ static INPUT_PORTS_START( ti1270 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY)
PORT_START("IN.4") // O5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("C")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("CS") // named either CS(Change Sign) or +/-
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
+
+ PORT_START("IN.5") // O7
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_NAME("MC")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("MR")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_INSERT) PORT_NAME("M-")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("M+")
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( ti1270 )
+ PORT_INCLUDE( ti1250 )
+
+ PORT_MODIFY("IN.0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CE/C")
+
+ PORT_MODIFY("IN.4")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("STO")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("RCL")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_NAME(UTF8_SMALL_PI)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
- PORT_START("IN.5") // O7
+ PORT_MODIFY("IN.5")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
INPUT_PORTS_END
-static MACHINE_CONFIG_START( ti1270, ti1270_state )
+static MACHINE_CONFIG_START( ti1250, ti1250_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
- MCFG_TMS1XXX_READ_K_CB(READ8(ti1270_state, read_k))
- MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1270_state, write_o))
- MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1270_state, write_r))
+ MCFG_CPU_ADD("maincpu", TMS0950, 200000) // RC osc. R=68K, C=68pf -> ~200kHz
+ MCFG_TMS1XXX_READ_K_CB(READ8(ti1250_state, read_k))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1250_state, write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1250_state, write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
- MCFG_DEFAULT_LAYOUT(layout_ti1270)
-
- /* no video! */
+ MCFG_DEFAULT_LAYOUT(layout_ti1250)
/* no sound! */
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( ti1270, ti1250 )
+
+ /* basic machine hardware */
+ MCFG_CPU_REPLACE("maincpu", TMS0970, 250000) // approximation
+ MCFG_TMS1XXX_READ_K_CB(READ8(ti1250_state, read_k))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1250_state, write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1250_state, write_r))
+
+ MCFG_DEFAULT_LAYOUT(layout_ti1270)
+MACHINE_CONFIG_END
+
/***************************************************************************
- TI-1000
- * TMS1990 MCU labeled TMC1991NL, die labeled 1991-91A
+ TI-1000 (1977 version)
+ * TMS1990 MCU labeled TMC1991NL (die labeled 1991-91A)
* 8-digit 7seg LED display
+ TI-1000 (1978 version)
+ * TMS1990 MCU labeled TMC1992-4NL **not dumped yet
+
***************************************************************************/
class ti1000_state : public ticalc1x_state
@@ -457,7 +509,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( ti1000, ti1000_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
+ MCFG_CPU_ADD("maincpu", TMS1990, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(ti1000_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1000_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1000_state, write_r))
@@ -465,8 +517,6 @@ static MACHINE_CONFIG_START( ti1000, ti1000_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ti1270)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -477,7 +527,7 @@ MACHINE_CONFIG_END
/***************************************************************************
TI WIZ-A-TRON
- * TMS0970 MCU labeled TMC0907NL ZA0379, DP0907BS. die labeled 0970F-07B
+ * TMS0970 MCU labeled TMC0907NL ZA0379, DP0907BS (die labeled 0970F-07B)
* 9-digit 7seg LED display(one custom digit)
***************************************************************************/
@@ -558,7 +608,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( wizatron, wizatron_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
+ MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(wizatron_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(wizatron_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
@@ -566,8 +616,6 @@ static MACHINE_CONFIG_START( wizatron, wizatron_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_wizatron)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -578,7 +626,7 @@ MACHINE_CONFIG_END
/***************************************************************************
TI Little Professor (1976 version)
- * TMS0970 MCU labeled TMS0975NL ZA0356, GP0975CS. die labeled 0970D-75C
+ * TMS0970 MCU labeled TMS0975NL ZA0356, GP0975CS (die labeled 0970D-75C)
* 9-digit 7seg LED display(one custom digit)
The hardware is nearly identical to Wiz-A-Tron (or vice versa, since this
@@ -634,7 +682,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( lilprof, lilprof_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed
+ MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(lilprof_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
@@ -642,8 +690,6 @@ static MACHINE_CONFIG_START( lilprof, lilprof_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_wizatron)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -654,7 +700,7 @@ MACHINE_CONFIG_END
/***************************************************************************
TI Little Professor (1978 version)
- * TMS1990 MCU labeled TMC1993NL. die labeled 1990C-c3C
+ * TMS1990 MCU labeled TMC1993NL (die labeled 1990C-c3C)
* 9-digit 7seg LED display(one custom digit)
1978 re-release, with on/off and level select on buttons instead of
@@ -749,7 +795,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( lilprof78, lilprof78_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed
+ MCFG_CPU_ADD("maincpu", TMS1990, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(lilprof78_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof78_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(lilprof78_state, write_r))
@@ -757,8 +803,6 @@ static MACHINE_CONFIG_START( lilprof78, lilprof78_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_wizatron)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -769,7 +813,7 @@ MACHINE_CONFIG_END
/***************************************************************************
TI DataMan
- * TMS1980 MCU labeled TMC1982NL. die labeled 1980A 82B
+ * TMS1980 MCU labeled TMC1982NL (die labeled 1980A 82B)
* 10-digit cyan VFD display(3 digits are custom)
***************************************************************************/
@@ -871,8 +915,6 @@ static MACHINE_CONFIG_START( dataman, dataman_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_dataman)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -882,10 +924,10 @@ MACHINE_CONFIG_END
/***************************************************************************
- Majestic-line calculators:
- * TI-30(aka SR-40): TMS0980 MCU labeled TMC0981NL. die labeled 0980B-81F
- * TI Programmer: TMS0980 MCU labeled ZA0675NL, JP0983AT. die labeled 0980B-83
- * TI Business Analyst-I: TMS0980 MCU labeled TMC0982NL. die labeled 0980B-82F
+ TMC098x series Majestic-line calculators
+
+ TI-30, SR-40, TI-15(less buttons) and several by Koh-I-Noor
+ * TMS0980 MCU labeled TMC0981NL (die labeled 0980B-81F)
* 9-digit 7seg LED display
Of note is a peripheral by Schoenherr, called the Braillotron. It acts as
@@ -893,12 +935,18 @@ MACHINE_CONFIG_END
refreshable Braille cells. The TI-30 itself is slightly modified to wire
the original LED display to a 25-pin D-Sub connector.
+ TI Business Analyst, TI Business Analyst-I, TI Money Manager, TI-31, TI-41
+ * TMS0980 MCU labeled TMC0982NL (die labeled 0980B-82F)
+
+ TI Programmer
+ * TMS0980 MCU labeled ZA0675NL, JP0983AT (die labeled 0980B-83)
+
***************************************************************************/
-class majestic_state : public ticalc1x_state
+class ti30_state : public ticalc1x_state
{
public:
- majestic_state(const machine_config &mconfig, device_type type, const char *tag)
+ ti30_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag)
{ }
@@ -909,9 +957,9 @@ public:
// handlers
-WRITE16_MEMBER(majestic_state::write_r)
+WRITE16_MEMBER(ti30_state::write_r)
{
- // note: 1st digit only has segments B,F,G,DP
+ // 1st digit only has segments B,F,G,DP
m_display_segmask[0] = 0xe2;
// R0-R8: select digit
@@ -919,7 +967,7 @@ WRITE16_MEMBER(majestic_state::write_r)
display_matrix_seg(8, 9, o, data, 0xff);
}
-WRITE16_MEMBER(majestic_state::write_o)
+WRITE16_MEMBER(ti30_state::write_o)
{
// O0-O2,O4-O7: input mux
// O0-O7: digit segments
@@ -927,7 +975,7 @@ WRITE16_MEMBER(majestic_state::write_o)
m_o = data;
}
-READ8_MEMBER(majestic_state::read_k)
+READ8_MEMBER(ti30_state::read_k)
{
// K: multiplexed inputs (note: the Vss row is always on)
return m_inp_matrix[7]->read() | read_inputs(7);
@@ -995,7 +1043,6 @@ static INPUT_PORTS_START( ti30 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END
-
static INPUT_PORTS_START( tiprog )
PORT_START("IN.0") // O0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_NAME("K")
@@ -1055,8 +1102,7 @@ static INPUT_PORTS_START( tiprog )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END
-
-static INPUT_PORTS_START( tibusan1 )
+static INPUT_PORTS_START( tibusan )
// PORT_NAME lists functions under [2nd] as secondaries.
PORT_START("IN.0") // O0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("y" UTF8_POW_X" " UTF8_POW_X"" UTF8_SQUAREROOT"y") // 2nd one implies xth root of y
@@ -1116,21 +1162,18 @@ static INPUT_PORTS_START( tibusan1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END
-
-static MACHINE_CONFIG_START( majestic, majestic_state )
+static MACHINE_CONFIG_START( ti30, ti30_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed
- MCFG_TMS1XXX_READ_K_CB(READ8(majestic_state, read_k))
- MCFG_TMS1XXX_WRITE_O_CB(WRITE16(majestic_state, write_o))
- MCFG_TMS1XXX_WRITE_R_CB(WRITE16(majestic_state, write_r))
+ MCFG_TMS1XXX_READ_K_CB(READ8(ti30_state, read_k))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti30_state, write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti30_state, write_r))
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ti30)
- /* no video! */
-
/* no sound! */
MACHINE_CONFIG_END
@@ -1166,18 +1209,45 @@ ROM_START( tisr16ii )
ROM_END
+ROM_START( ti1250 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tmc0952nl", 0x0000, 0x0400, CRC(fc0cee65) SHA1(1480e4553181f081281d3b78457721b9ecb20173) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_ti1250_micro.pla", 0, 867, CRC(cb3fd2d6) SHA1(82cf36a65dfc3ccb9dd08e48f45ac4d90f693238) )
+ ROM_REGION( 195, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0950_ti1250_output.pla", 0, 195, CRC(31570eb8) SHA1(c1cb17c31367b65aa777925459515c3d5c565508) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
+ROM_END
+
+ROM_START( ti125076 )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "tms0972nl_za0348", 0x0000, 0x0400, CRC(6e3f8add) SHA1(a249209e2a92f5016e33b7ad2c6c2660df1df959) )
+
+ ROM_REGION( 782, "maincpu:ipla", 0 )
+ ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
+ ROM_REGION( 860, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
+ ROM_REGION( 352, "maincpu:opla", 0 )
+ ROM_LOAD( "tms0980_ti1270_output.pla", 0, 352, CRC(472f95a0) SHA1(32adb17285f2f3f93a4b027a3dd2156ec48000ec) )
+ ROM_REGION( 157, "maincpu:spla", 0 )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
+ROM_END
+
+
ROM_START( ti1270 )
ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "za0355", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) )
+ ROM_LOAD( "tmc0974nl_za0355", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) )
ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_ti1270_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
+ ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_ti1270_output.pla", 0, 352, CRC(f39bf0a4) SHA1(160341490043eb369720d5f487cf0f59f458a93e) )
+ ROM_LOAD( "tms0980_ti1270_output.pla", 0, 352, CRC(472f95a0) SHA1(32adb17285f2f3f93a4b027a3dd2156ec48000ec) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END
@@ -1188,41 +1258,41 @@ ROM_START( ti1000 )
ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
+ ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_ti1000_output.pla", 0, 352, CRC(1d82061a) SHA1(90e4a4b0fb3b4ae5965da90479b7fed737ad8831) )
+ ROM_LOAD( "tms0980_ti1000_output.pla", 0, 352, CRC(a936631e) SHA1(1f900b12a41419d6e1ffbddd5cf72be3adaa4435) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_ti1000_segment.pla", 0, 157, CRC(234ca3a8) SHA1(76844dd87cb380a07c8fcbef143038087e98f138) )
+ ROM_LOAD( "tms0980_common3_segment.pla", 0, 157, CRC(b5b3153f) SHA1(e0145c729695a4f962970aee0571d42cee6f5a9e) )
ROM_END
ROM_START( wizatron )
ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "za0379", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) )
+ ROM_LOAD( "tmc0907nl_za0379", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) )
ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
+ ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_wizatron_output.pla", 0, 352, CRC(745a3900) SHA1(031b55a0cf783c8a88eec4289d4373eb8538f374) )
+ ROM_LOAD( "tms0980_wizatron_output.pla", 0, 352, CRC(c0ee5c04) SHA1(e9fadcef688309adbe6c1c0545aac6883ce4a1ac) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END
ROM_START( lilprof )
ROM_REGION( 0x0400, "maincpu", 0 )
- ROM_LOAD( "za0356", 0x0000, 0x0400, CRC(fef9dd39) SHA1(5c9614c9c5092d55dabeee2d6e0387d50d6ad4d5) )
+ ROM_LOAD( "tms0975nl_za0356", 0x0000, 0x0400, CRC(fef9dd39) SHA1(5c9614c9c5092d55dabeee2d6e0387d50d6ad4d5) )
ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_lilprof_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
+ ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_lilprof_output.pla", 0, 352, CRC(c74daf97) SHA1(c4948000196171b34d4fe9cdd2962a945da9883d) )
+ ROM_LOAD( "tms0980_lilprof_output.pla", 0, 352, CRC(73f9ca93) SHA1(9d6c559e2c1886c62bcd57e3c3aa897e8829b4d2) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
+ ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END
ROM_START( lilprof78 )
@@ -1232,22 +1302,22 @@ ROM_START( lilprof78 )
ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 )
- ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
+ ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0970_lilprof78_output.pla", 0, 352, CRC(03f509c4) SHA1(691554a55db0c5950df848077095f23a991b1909) )
+ ROM_LOAD( "tms0980_lilprof78_output.pla", 0, 352, CRC(b7416cc0) SHA1(57891ffeaf34aafe8a915086c6d2feb78f5113af) )
ROM_REGION( 157, "maincpu:spla", 0 )
- ROM_LOAD( "tms0970_lilprof78_segment.pla", 0, 157, CRC(234ca3a8) SHA1(76844dd87cb380a07c8fcbef143038087e98f138) )
+ ROM_LOAD( "tms0980_common3_segment.pla", 0, 157, CRC(b5b3153f) SHA1(e0145c729695a4f962970aee0571d42cee6f5a9e) )
ROM_END
ROM_START( dataman )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD16_WORD( "tmc1982nl", 0x0000, 0x1000, CRC(3521f53f) SHA1(c46fe7fe20715fdf5aed65833fb867cfd3938062) ) // it matches with source code in patent US4340374
+ ROM_LOAD16_WORD( "tmc1982nl", 0x0000, 0x1000, CRC(3521f53f) SHA1(c46fe7fe20715fdf5aed65833fb867cfd3938062) ) // matches patent US4340374
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
- ROM_REGION( 2056, "maincpu:mpla", 0 )
- ROM_LOAD( "tms1980_dataman_micro.pla", 0, 2056, CRC(b733b621) SHA1(7897d7db72c0c24555e58738a09ebe0f7f7689b0) )
+ ROM_REGION( 2127, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
ROM_REGION( 525, "maincpu:opla", 0 )
ROM_LOAD( "tms1980_dataman_output.pla", 0, 525, CRC(5fc6f451) SHA1(11475c785c34eab5b13c5dc67f413c709cd4bd4d) )
ROM_END
@@ -1262,13 +1332,13 @@ ROM_START( ti30 )
ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_ti30_output.pla", 0, 352, CRC(38788410) SHA1(cb3d1a61190b887cd2e6d9c60b4fdb9b901f7eed) )
+ ROM_LOAD( "tms0980_ti30_output.pla", 0, 352, CRC(00475f99) SHA1(70e04c1472639bd35d4adaab0b9f1ae4a0e394be) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
-ROM_START( tibusan1 )
+ROM_START( tibusan )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD16_WORD( "tmc0982nl", 0x0000, 0x1000, CRC(6954560a) SHA1(6c153a0c9239a811e3514a43d809964c06f8f88e) )
@@ -1277,7 +1347,7 @@ ROM_START( tibusan1 )
ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_tibusan1_output.pla", 0, 352, CRC(38788410) SHA1(cb3d1a61190b887cd2e6d9c60b4fdb9b901f7eed) )
+ ROM_LOAD( "tms0980_ti30_output.pla", 0, 352, CRC(00475f99) SHA1(70e04c1472639bd35d4adaab0b9f1ae4a0e394be) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
@@ -1285,14 +1355,14 @@ ROM_END
ROM_START( tiprog )
ROM_REGION( 0x1000, "maincpu", 0 )
- ROM_LOAD16_WORD( "za0675nl", 0x0000, 0x1000, CRC(82355854) SHA1(03fab373bce04df8ea3fe25352525e8539213626) )
+ ROM_LOAD16_WORD( "za0675nl", 0x0000, 0x1000, CRC(82355854) SHA1(03fab373bce04df8ea3fe25352525e8539213626) ) // tmc0983
ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_tiprog_micro.pla", 0, 1982, CRC(57043284) SHA1(0fa06d5865830ecdb3d870271cb92ac917bed3ca) )
ROM_REGION( 352, "maincpu:opla", 0 )
- ROM_LOAD( "tms0980_tiprog_output.pla", 0, 352, BAD_DUMP CRC(2a63956f) SHA1(26a62ca2b5973d8564e580e12230292f6d2888d9) ) // corrected by hand
+ ROM_LOAD( "tms0980_tiprog_output.pla", 0, 352, BAD_DUMP CRC(125c4ee6) SHA1(b8d865c42fd37c3d9b92c5edbecfc831be558597) ) // corrected by hand
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END
@@ -1303,14 +1373,17 @@ ROM_END
COMP( 1974, tisr16, 0, 0, tisr16, tisr16, driver_device, 0, "Texas Instruments", "SR-16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1975, tisr16ii, 0, 0, tisr16, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 1975, ti1250, 0, 0, ti1250, ti1250, driver_device, 0, "Texas Instruments", "TI-1250 (1975 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 1976, ti125076, ti1250, 0, ti1270, ti1250, driver_device, 0, "Texas Instruments", "TI-1250 (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1976, ti1270, 0, 0, ti1270, ti1270, driver_device, 0, "Texas Instruments", "TI-1270", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-COMP( 1977, ti1000, 0, 0, ti1000, ti1000, driver_device, 0, "Texas Instruments", "TI-1000", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 1977, ti1000, 0, 0, ti1000, ti1000, driver_device, 0, "Texas Instruments", "TI-1000 (1977 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+
COMP( 1977, wizatron, 0, 0, wizatron, wizatron, driver_device, 0, "Texas Instruments", "Wiz-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1976, lilprof, 0, 0, lilprof, lilprof, driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1978, lilprof78, lilprof, 0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1977, dataman, 0, 0, dataman, dataman, driver_device, 0, "Texas Instruments", "DataMan", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-COMP( 1976, ti30, 0, 0, majestic, ti30, driver_device, 0, "Texas Instruments", "TI-30", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-COMP( 1977, tiprog, 0, 0, majestic, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-COMP( 1979, tibusan1, 0, 0, majestic, tibusan1, driver_device, 0, "Texas Instruments", "TI Business Analyst-I", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 1976, ti30, 0, 0, ti30, ti30, driver_device, 0, "Texas Instruments", "TI-30", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 1976, tibusan, 0, 0, ti30, tibusan, driver_device, 0, "Texas Instruments", "TI Business Analyst", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 1977, tiprog, 0, 0, ti30, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/tiki100.cpp b/src/mame/drivers/tiki100.cpp
index 990a4194986..a7487cce617 100644
--- a/src/mame/drivers/tiki100.cpp
+++ b/src/mame/drivers/tiki100.cpp
@@ -287,10 +287,10 @@ WRITE8_MEMBER( tiki100_state::system_w )
if (floppy) floppy->mon_w(!BIT(data, 6));
/* GRAFIKK key led */
- set_led_status(machine(), 1, BIT(data, 5));
+ output().set_led_value(1, BIT(data, 5));
/* LOCK key led */
- set_led_status(machine(), 2, BIT(data, 7));
+ output().set_led_value(2, BIT(data, 7));
/* bankswitch */
m_rome = BIT(data, 2);
diff --git a/src/mame/drivers/timeplt.cpp b/src/mame/drivers/timeplt.cpp
index e5fdf8e2e35..caf5505ee2f 100644
--- a/src/mame/drivers/timeplt.cpp
+++ b/src/mame/drivers/timeplt.cpp
@@ -86,7 +86,7 @@ WRITE8_MEMBER(timeplt_state::nmi_enable_w)
WRITE8_MEMBER(timeplt_state::coincounter_w)
{
- coin_counter_w(machine(), offset >> 1, data);
+ machine().bookkeeping().coin_counter_w(offset >> 1, data);
}
READ8_MEMBER(timeplt_state::psurge_protection_r)
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 12c03a5b5c2..205574b0a5e 100644
--- a/src/mame/drivers/tispeak.cpp
+++ b/src/mame/drivers/tispeak.cpp
@@ -2,7 +2,7 @@
// copyright-holders:hap, Jonathan Gevaryahu, Sean Riddle
/***************************************************************************
- ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.c) **
+ ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.cpp) **
Texas Instruments 1st-gen. handheld speech devices.
@@ -15,7 +15,7 @@
----------------------------------------------------------------------------
-Known devices on this hardware: (* denotes not dumped, ** denotes pending dump)
+Known devices on this hardware: (* denotes not dumped)
ROM (and/or source) code obtained from patents:
@@ -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*
- TMS51xx: CD2801
- VSM: 16KB CD2352
@@ -96,15 +96,17 @@ above expectations. TI continued to manufacture many products for this line.
- notes: it appears that TI ran out of original snspell VFDs in the early 80s?
Speak & Spell Compact (US), 1981
- - MCU: CD8011**
+ - MCU: CD8011, labeled CD8011A-NL (die labeled 1100B)
- TMS51xx: TMC0281D
- VSM: 16KB CD2354, CD2354(rev.A)
- 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: anecdotes from the developer, the same person working on the original UK version:
+ - 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:
"We included a pencil and writing pad - it was now about 'writing'.",
and one about the welcome message:
"I had to manually create a sentence of digital speech from thin air.
@@ -190,7 +192,7 @@ Speak & Read modules:
Touch & Tell:
Touch & Tell (US), 1981
- - MCU: CD8012
+ - MCU: CD8012, labeled CD8012NL (die labeled 1100G CD8012)
- TMS51xx: CD2802
- VSM: 4KB CD2610
- notes: MCU is TMS1100 instead of TMS0270. CD8010 is seen in some devices
@@ -297,6 +299,20 @@ Touch & Tell/Vocaid overlay reference:
- 16: 7h - Do You Remember? II
+Magic Wand "Speaking Reader" or "Speak & Learn":
+
+Limited release barcode reader text-to-speech device, meant for children.
+The text is coded as phonemes. Books were sold separately.
+
+ Magic Wand "Speaking Reader" (US), 1982
+ - MCU: C14007* (TMS1400?)
+ - TMS5220
+ - VSM: 4KB? CD2228*
+
+ Magic Wand "Speak & Learn" (US), 1983
+ - notes: same hardware
+
+
Language Tutor/Translator:
A later device, called Language Teacher, was released without speech hardware.
@@ -381,8 +397,8 @@ public:
required_device<tms6100_device> m_tms6100;
optional_device<generic_slot_device> m_cart;
- DECLARE_INPUT_CHANGED_MEMBER(snspell_power_button);
- void snspell_power_off();
+ virtual DECLARE_INPUT_CHANGED_MEMBER(power_button) override;
+ void power_off();
void prepare_display();
DECLARE_READ8_MEMBER(snspell_read_k);
@@ -391,9 +407,10 @@ public:
DECLARE_WRITE16_MEMBER(snspell_write_r);
DECLARE_WRITE16_MEMBER(lantutor_write_r);
+ DECLARE_READ8_MEMBER(snspellc_read_k);
+ DECLARE_WRITE16_MEMBER(snspellc_write_o);
+ DECLARE_WRITE16_MEMBER(snspellc_write_r);
DECLARE_READ8_MEMBER(tntell_read_k);
- DECLARE_WRITE16_MEMBER(tntell_write_o);
- DECLARE_WRITE16_MEMBER(tntell_write_r);
// cartridge
UINT32 m_cart_max_size;
@@ -496,7 +513,7 @@ WRITE16_MEMBER(tispeak_state::snspell_write_r)
{
// R13: power-off request, on falling edge
if ((m_r >> 13 & 1) && !(data >> 13 & 1))
- snspell_power_off();
+ power_off();
// R0-R7: input mux and select digit (+R8 if the device has 9 digits)
// R15: filament on
@@ -517,16 +534,15 @@ WRITE16_MEMBER(tispeak_state::snspell_write_o)
READ8_MEMBER(tispeak_state::snspell_read_k)
{
- // note: the Vss row is always on
+ // K: multiplexed inputs (note: the Vss row is always on)
return m_inp_matrix[8]->read() | read_inputs(8);
}
-void tispeak_state::snspell_power_off()
+void tispeak_state::power_off()
{
m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_tms5100->reset();
- m_tms6100->reset();
m_power_on = false;
}
@@ -554,42 +570,47 @@ WRITE16_MEMBER(tispeak_state::lantutor_write_r)
}
-// tntell specific
+// snspellc specific
-WRITE16_MEMBER(tispeak_state::tntell_write_r)
+WRITE16_MEMBER(tispeak_state::snspellc_write_r)
{
- // R10: CD2802 PDC pin
+ // R10: TMS5100 PDC pin
m_tms5100->pdc_w(data >> 10);
// R9: power-off request, on falling edge
if ((m_r >> 9 & 1) && !(data >> 9 & 1))
- snspell_power_off();
+ power_off();
// R0-R8: input mux
m_r = m_inp_mux = data;
}
-WRITE16_MEMBER(tispeak_state::tntell_write_o)
+WRITE16_MEMBER(tispeak_state::snspellc_write_o)
{
- // O3210: CD2802 CTL8124
+ // O3210: TMS5100 CTL8124
m_o = BITSWAP8(data,7,6,5,4,3,0,1,2);
m_tms5100->ctl_w(space, 0, m_o & 0xf);
}
-READ8_MEMBER(tispeak_state::tntell_read_k)
+READ8_MEMBER(tispeak_state::snspellc_read_k)
{
- // multiplexed inputs (and K2 from on-button)
- UINT8 k = m_inp_matrix[9]->read() | read_inputs(9);
+ // K4: TMS5100 CTL1
+ UINT8 k4 = m_tms5100->ctl_r(space, 0) << 2 & 4;
- // K4: CD2802 CTL1
- if (m_tms5100->ctl_r(space, 0) & 1)
- k |= 4;
+ // K: multiplexed inputs (note: the Vss row is always on)
+ return k4 | m_inp_matrix[9]->read() | read_inputs(9);
+}
+
+// tntell specific
+
+READ8_MEMBER(tispeak_state::tntell_read_k)
+{
// K8: overlay code from R5,O4-O7
- if (((m_r >> 1 & 0x10) | (m_o >> 4 & 0xf)) & m_overlay)
- k |= 8;
+ UINT8 k8 = (((m_r >> 1 & 0x10) | (m_o >> 4 & 0xf)) & m_overlay) ? 8 : 0;
- return k;
+ // rest is same as snpellc
+ return k8 | snspellc_read_k(space, offset);
}
TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::tntell_get_overlay)
@@ -601,12 +622,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::tntell_get_overlay)
// try to get overlay code from artwork file(in decimal), otherwise pick the
// one that was selected in machine configuration
- m_overlay = output_get_value("overlay_code") & 0x1f;
+ m_overlay = output().get_value("overlay_code") & 0x1f;
if (m_overlay == 0)
m_overlay = m_inp_matrix[10]->read();
for (int i = 0; i < 5; i++)
- output_set_indexed_value("ol", i+1, m_overlay >> i & 1);
+ output().set_indexed_value("ol", i+1, m_overlay >> i & 1);
}
@@ -617,7 +638,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::tntell_get_overlay)
***************************************************************************/
-INPUT_CHANGED_MEMBER(tispeak_state::snspell_power_button)
+INPUT_CHANGED_MEMBER(tispeak_state::power_button)
{
int on = (int)(FPTR)param;
@@ -627,7 +648,7 @@ INPUT_CHANGED_MEMBER(tispeak_state::snspell_power_button)
m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
}
else if (!on && m_power_on)
- snspell_power_off();
+ power_off();
}
static INPUT_PORTS_START( snspell )
@@ -669,7 +690,7 @@ static INPUT_PORTS_START( snspell )
PORT_START("IN.5") // R5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Module")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Module Select")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Erase")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("Enter")
@@ -678,7 +699,7 @@ static INPUT_PORTS_START( snspell )
PORT_START("IN.7") // R7
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_1) PORT_NAME("Go")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_HOME) PORT_NAME("Go")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Replay")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Repeat")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Clue")
@@ -688,7 +709,53 @@ static INPUT_PORTS_START( snspell )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Secret Code")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Letter")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Say It")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spell/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, snspell_power_button, (void *)true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spell/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( snspellfr ) // French button names
+ PORT_INCLUDE( snspell )
+
+ PORT_MODIFY("IN.5")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Module 2")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Efface")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("Essaie")
+
+ PORT_MODIFY("IN.7")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Arr" e_ACUTE "t")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_HOME) PORT_NAME("D" e_ACUTE "part")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Rejoue")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Repete")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Aide")
+
+ PORT_MODIFY("IN.8")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Mot Mystere")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Code Secret")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Lettre")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Dis-le")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Epelle/Marche") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( snspellit ) // Italian button names
+ PORT_INCLUDE( snspell )
+
+ PORT_MODIFY("IN.5")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Moduli")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Cancella")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("Controllo")
+
+ PORT_MODIFY("IN.7")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Stop")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_HOME) PORT_NAME("Via")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Ritorno")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Replica")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Aiuto")
+
+ PORT_MODIFY("IN.8")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Indovina")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Codice")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Alfabeto")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Ripeti")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Scrivi") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
INPUT_PORTS_END
@@ -717,7 +784,7 @@ static INPUT_PORTS_START( snmath )
PORT_START("IN.3") // R3
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Go")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_CODE(KEYCODE_HOME) PORT_NAME("Go")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") // -> auto_power_off
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -740,7 +807,7 @@ static INPUT_PORTS_START( snmath )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("Write It")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("Greater/Less")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Word Problems")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Solve It/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, snspell_power_button, (void *)true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Solve It/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
PORT_START("IN.7")
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNUSED )
@@ -762,7 +829,7 @@ static INPUT_PORTS_START( snread )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_NAME("Picture Read")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_NAME("Letter Stumper")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_NAME("Hear It")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Word Zap/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, snspell_power_button, (void *)true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Word Zap/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
INPUT_PORTS_END
@@ -796,6 +863,76 @@ static INPUT_PORTS_START( lantutor )
INPUT_PORTS_END
+static INPUT_PORTS_START( snspellc )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Letter Stumper")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('J')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S')
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('K')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('T')
+
+ PORT_START("IN.2") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Review")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('L')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('U')
+
+ PORT_START("IN.3") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Repeat")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('M')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('V')
+
+ PORT_START("IN.4") // R4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Erase")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('N')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W')
+
+ PORT_START("IN.5") // R5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_NAME("Module")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
+ 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") // R6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_HOME) PORT_NAME("Go")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('G')
+ 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") // R7
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("Enter")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('H')
+ 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") // R8
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('I')
+ 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_QUOTE) PORT_CHAR('\'')
+
+ PORT_START("IN.9") // Vss!
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spell/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) // speech chip data
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") // -> auto_power_off
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( snspellcuk )
+ PORT_INCLUDE( snspellc )
+
+ PORT_MODIFY("IN.9")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Write/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true) // just the label changed from Spell to Write
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( tntell )
PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("Grid 1-1")
@@ -852,8 +989,10 @@ static INPUT_PORTS_START( tntell )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("Grid 6-3")
PORT_START("IN.9") // Vss!
- PORT_BIT( 0x0d, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Grid 6-6 (On)") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, snspell_power_button, (void *)true)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Grid 6-6 (On)") PORT_CHANGED_MEMBER(DEVICE_SELF, tispeak_state, power_button, (void *)true)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) // speech chip data
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("IN.10")
PORT_CONFNAME( 0x1f, 0x04, "Overlay Code" ) // only if not provided by external artwork
@@ -902,11 +1041,11 @@ INPUT_PORTS_END
static MACHINE_CONFIG_FRAGMENT( tms5110_route )
/* sound hardware */
- MCFG_TMS5110_M0_CB(DEVWRITELINE("tms6100", tms6100_device, tms6100_m0_w))
- MCFG_TMS5110_M1_CB(DEVWRITELINE("tms6100", tms6100_device, tms6100_m1_w))
- MCFG_TMS5110_ADDR_CB(DEVWRITE8("tms6100", tms6100_device, tms6100_addr_w))
- MCFG_TMS5110_DATA_CB(DEVREADLINE("tms6100", tms6100_device, tms6100_data_r))
- MCFG_TMS5110_ROMCLK_CB(DEVWRITELINE("tms6100", tms6100_device, tms6100_romclock_w))
+ MCFG_TMS5110_M0_CB(DEVWRITELINE("tms6100", tms6100_device, m0_w))
+ MCFG_TMS5110_M1_CB(DEVWRITELINE("tms6100", tms6100_device, m1_w))
+ MCFG_TMS5110_ADDR_CB(DEVWRITE8("tms6100", tms6100_device, add_w))
+ MCFG_TMS5110_DATA_CB(DEVREADLINE("tms6100", tms6100_device, data_line_r))
+ MCFG_TMS5110_ROMCLK_CB(DEVWRITELINE("tms6100", tms6100_device, clk_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
MACHINE_CONFIG_END
@@ -925,8 +1064,6 @@ static MACHINE_CONFIG_START( snmath, tispeak_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_snmath)
- /* no video! */
-
/* sound hardware */
MCFG_DEVICE_ADD("tms6100", TMS6100, MASTER_CLOCK/4)
@@ -1009,20 +1146,51 @@ static MACHINE_CONFIG_DERIVED( lantutor, snmath )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_START( snspellc, tispeak_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS1100, MASTER_CLOCK/2)
+ MCFG_TMS1XXX_READ_K_CB(READ8(tispeak_state, snspellc_read_k))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snspellc_write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, snspellc_write_r))
+
+ /* no visual feedback! */
+
+ /* sound hardware */
+ MCFG_DEVICE_ADD("tms6100", TMS6100, MASTER_CLOCK/4)
+
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("tms5100", TMC0281D, MASTER_CLOCK)
+ MCFG_FRAGMENT_ADD(tms5110_route)
+
+ /* cartridge */
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "snspell")
+ MCFG_GENERIC_EXTENSIONS("vsm")
+ MCFG_GENERIC_LOAD(tispeak_state, tispeak_cartridge)
+
+ 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 )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1100, MASTER_CLOCK/2)
MCFG_TMS1XXX_READ_K_CB(READ8(tispeak_state, tntell_read_k))
- MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, tntell_write_o))
- MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, tntell_write_r))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispeak_state, snspellc_write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispeak_state, snspellc_write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_TIMER_DRIVER_ADD_PERIODIC("ol_timer", tispeak_state, tntell_get_overlay, attotime::from_msec(50))
MCFG_DEFAULT_LAYOUT(layout_tntell)
- /* no video! */
-
/* sound hardware */
MCFG_DEVICE_ADD("tms6100", TMS6100, MASTER_CLOCK/4)
@@ -1049,133 +1217,187 @@ 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 1978 version
- ROM_REGION( 0xc000, "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_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
+ ROM_LOAD( "tmc0351nl.vsm", 0x0000, 0x4000, CRC(beea3373) SHA1(8b0f7586d2f12c3d4a885fdb528cf23feffa1a3b) ) // using the one from 1978 version
+ ROM_LOAD( "tmc0352nl.vsm", 0x4000, 0x4000, CRC(d51f0587) SHA1(ddaa484be1bba5fef46b481cafae517e4acaa8ed) ) // "
ROM_END
-ROM_START( snspella )
+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, BAD_DUMP CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) // not verified
ROM_REGION( 1246, "maincpu:opla", 0 )
ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
- ROM_REGION( 0xc000, "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_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_END
-ROM_START( snspellb )
+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( 0xc000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
+ 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) )
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, BAD_DUMP CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) // not verified
ROM_REGION( 1246, "maincpu:opla", 0 )
ROM_LOAD( "tms0270_tmc0271_output.pla", 0, 1246, CRC(9ebe12ab) SHA1(acb4e07ba26f2daca5f1c234885ac0371c7ce87f) )
- ROM_REGION( 0xc000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
+ ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2303.vsm", 0x0000, 0x4000, CRC(0fae755c) SHA1(b68c3120a63a61db474feb5d71a6e5dd67910d80) )
ROM_LOAD( "cd2304.vsm", 0x4000, 0x4000, CRC(e2a270eb) SHA1(c13c95ad15f1923a4841f66504e0f22646e71d99) )
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( 0xc000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
+ 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) )
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( 0xc000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
+ ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2321.vsm", 0x0000, 0x4000, CRC(ac010cce) SHA1(c0200d857b62be696248ac2d684a390c66ab0c31) )
ROM_LOAD( "cd2322.vsm", 0x4000, 0x4000, CRC(b6f4bba4) SHA1(65d686a9385b5ef3f080a5f47c6b2418bb9455b0) )
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( "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, BAD_DUMP CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) // not verified
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_tmc0271h_output.pla", 0, 1246, BAD_DUMP CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) ) // placeholder, use the one we have
- ROM_REGION( 0xc000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
+ 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) )
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( "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, BAD_DUMP CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) ) // not verified
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_tmc0271h_output.pla", 0, 1246, BAD_DUMP CRC(2478c595) SHA1(9a8ac690902731e1e01533279a1c9223011e1537) ) // placeholder, use the one we have
- ROM_REGION( 0xc000, "tms6100", ROMREGION_ERASEFF ) // uses only 1 rom, 8000-bfff = space reserved for cartridge
+ 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) )
ROM_END
+ROM_START( snspellc )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "cd8011a-nl", 0x0000, 0x0800, CRC(8a82a467) SHA1(fa4f8a232392603721bd8136c141a340fd5936a0) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_cd8011_micro.pla", 0, 867, CRC(bbb64ddc) SHA1(602cd5eef897c9115c12db7367c5654ab2297fa1) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_cd8011_output.pla", 0, 365, CRC(b400dd75) SHA1(5a4b5d4532a8932cf4b469ddb71ad6b3b9911672) )
+
+ ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
+ ROM_LOAD( "cd2354.vsm", 0x0000, 0x4000, CRC(3af3232e) SHA1(f89d90dca209ee612634d664d5d4562f1d1786cf) )
+ROM_END
+
+ROM_START( snspellca )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "cd8011a-nl", 0x0000, 0x0800, CRC(8a82a467) SHA1(fa4f8a232392603721bd8136c141a340fd5936a0) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_cd8011_micro.pla", 0, 867, CRC(bbb64ddc) SHA1(602cd5eef897c9115c12db7367c5654ab2297fa1) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_cd8011_output.pla", 0, 365, CRC(b400dd75) SHA1(5a4b5d4532a8932cf4b469ddb71ad6b3b9911672) )
+
+ ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
+ ROM_LOAD( "cd2354a.vsm", 0x0000, 0x4000, CRC(548a940c) SHA1(c37e620c4c70a05cbaaff9a166c6da2e2420196f) )
+ROM_END
+
+ROM_START( snspellcuk )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "cd8011a-nl", 0x0000, 0x0800, CRC(8a82a467) SHA1(fa4f8a232392603721bd8136c141a340fd5936a0) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_cd8011_micro.pla", 0, 867, CRC(bbb64ddc) SHA1(602cd5eef897c9115c12db7367c5654ab2297fa1) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_cd8011_output.pla", 0, 365, CRC(b400dd75) SHA1(5a4b5d4532a8932cf4b469ddb71ad6b3b9911672) )
+
+ ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
+ ROM_LOAD( "cd62174a.vsm", 0x0000, 0x4000, CRC(b7bbaaf3) SHA1(9eb949fcf522982f9c3c4649f207703b746b90ef) )
+ROM_END
+
+
ROM_START( snmath )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "cd2708n2l", 0x0000, 0x1000, CRC(35937360) SHA1(69c362c75bb459056c09c7fab37c91040485474b) )
@@ -1225,7 +1447,7 @@ ROM_START( snread )
ROM_REGION( 1246, "maincpu:opla", 0 )
ROM_LOAD( "tms0270_cd2705_output.pla", 0, 1246, CRC(bf859848) SHA1(66b297fbf534968fa6db7413b99ef0e81cc35ddc) )
- ROM_REGION( 0xc000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
+ ROM_REGION( 0x10000, "tms6100", ROMREGION_ERASEFF ) // 8000-bfff = space reserved for cartridge
ROM_LOAD( "cd2394a.vsm", 0x0000, 0x4000, CRC(cbb0e2b1) SHA1(5e322c683baf806523de171310258ae371671327) )
ROM_LOAD( "cd2395a.vsm", 0x4000, 0x4000, CRC(3d519504) SHA1(76b19ba5a9a3486005e09c98e8a6abc8b88288dd) )
ROM_END
@@ -1248,7 +1470,7 @@ ROM_END
ROM_START( tntell )
ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "cd8012", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) )
+ ROM_LOAD( "cd8012nl", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_cd8012_micro.pla", 0, 867, CRC(46d936c8) SHA1(b0aad486a90a5dec7fd2fb07caa503be771f91c8) )
@@ -1261,7 +1483,7 @@ ROM_END
ROM_START( tntelluk )
ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "cd8012", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) )
+ ROM_LOAD( "cd8012nl", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_cd8012_micro.pla", 0, 867, CRC(46d936c8) SHA1(b0aad486a90a5dec7fd2fb07caa503be771f91c8) )
@@ -1274,7 +1496,7 @@ ROM_END
ROM_START( tntellfr )
ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "cd8012", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) )
+ ROM_LOAD( "cd8012nl", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_cd8012_micro.pla", 0, 867, CRC(46d936c8) SHA1(b0aad486a90a5dec7fd2fb07caa503be771f91c8) )
@@ -1301,7 +1523,7 @@ ROM_END
ROM_START( vocaid )
ROM_REGION( 0x0800, "maincpu", 0 )
- ROM_LOAD( "cd8012", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) )
+ ROM_LOAD( "cd8012nl", 0x0000, 0x0800, CRC(3d0fee24) SHA1(8b1b1df03d50ffe8adea59ece212dece5245fe86) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1100_cd8012_micro.pla", 0, 867, CRC(46d936c8) SHA1(b0aad486a90a5dec7fd2fb07caa503be771f91c8) )
@@ -1314,27 +1536,31 @@ 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( 1978, snspellp, snspell, 0, sns_tmc0281, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
-COMP( 1979, snspella, 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, snspellb, 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, snspell, 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,snspell, tispeak_state, snspell, "Texas Instruments", "Grillo Parlante (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // "
+/* 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, 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( 1980, snspellub, snspell, 0, sns_tmc0281d, snspell, tispeak_state, snspell, "Texas Instruments", "Speak & Spell (US, 1980 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+COMP( 1979, snspellua, snspell, 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, 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 | MACHINE_NOT_WORKING ) // "
+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 | 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( 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, 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( 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, snread, 0, 0, snread, snread, tispeak_state, snspell, "Texas Instruments", "Speak & Read (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+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( 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, 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( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | 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 )
diff --git a/src/mame/drivers/tispellb.cpp b/src/mame/drivers/tispellb.cpp
new file mode 100644
index 00000000000..0afe81d0a49
--- /dev/null
+++ b/src/mame/drivers/tispellb.cpp
@@ -0,0 +1,437 @@
+// license:BSD-3-Clause
+// copyright-holders:hap, Sean Riddle
+/***************************************************************************
+
+ ** subclass of hh_tms1k_state (includes/hh_tms1k.h, drivers/hh_tms1k.cpp) **
+
+ Texas Instruments Spelling B hardware
+
+ The Spelling B was introduced together with the Speak & Spell. It is a
+ handheld educational toy with booklet. Two revisions of the hardware exist.
+ (* indicates not dumped)
+
+ 1st revision:
+
+ Spelling B (US), 1978
+ - TMS0270 MCU TMC0272 (die labeled 0272A T0270B)
+ - TMS1980 MCU TMC1984 (die labeled 1980A 84A)
+ - 8-digit cyan VFD display (seen with and without apostrophe)
+
+ Spelling ABC (UK), 1979: exact same hardware as US version
+
+ 2nd revision:
+
+ Spelling B (US), 1979
+ - TMS0270 MCU TMC0274*
+ - TMC0355 4KB VSM ROM CD2602*
+ - 8-digit cyan VFD display
+ - 1-bit sound (indicated by a music note symbol on the top-right of the casing)
+
+ Spelling ABC (UK), 1979: exact same hardware as US version
+
+ Spelling ABC (Germany), 1979: different VSM
+ - TMC0355 4KB VSM ROM CD2607*
+
+ Mr. Challenger (US), 1979
+ - TMS0270 MCU TMC0273
+ - TMC0355 4KB VSM ROM CD2601
+ - 8-digit cyan VFD display
+ - 1-bit sound
+
+ Letterlogic (UK), 1980: exact same hardware as US Mr. Challenger
+
+ Letterlogic (France), 1980: different VSM
+ - TMC0355 4KB VSM ROM CD2603*
+
+ Letterlogic (Germany), 1980: different VSM
+ - TMC0355 4KB VSM ROM CD2604*
+
+
+----------------------------------------------------------------------------
+
+ TODO:
+ - spellb fetches wrong word sometimes (on lv1 SPOON and ANT) - roms were doublechecked
+
+
+***************************************************************************/
+
+#include "includes/hh_tms1k.h"
+#include "machine/tms6100.h"
+
+// internal artwork
+#include "spellb.lh"
+
+
+class tispellb_state : public hh_tms1k_state
+{
+public:
+ tispellb_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_tms1k_state(mconfig, type, tag),
+ m_subcpu(*this, "subcpu"),
+ m_tms6100(*this, "tms6100")
+ { }
+
+ // devices
+ optional_device<cpu_device> m_subcpu;
+ optional_device<tms6100_device> m_tms6100;
+
+ UINT8 m_rev1_ctl;
+ UINT16 m_sub_o;
+ UINT16 m_sub_r;
+
+ virtual DECLARE_INPUT_CHANGED_MEMBER(power_button) override;
+ void power_off();
+ void prepare_display();
+
+ DECLARE_READ8_MEMBER(main_read_k);
+ DECLARE_WRITE16_MEMBER(main_write_o);
+ DECLARE_WRITE16_MEMBER(main_write_r);
+
+ DECLARE_READ8_MEMBER(rev1_ctl_r);
+ DECLARE_WRITE8_MEMBER(rev1_ctl_w);
+ DECLARE_READ8_MEMBER(sub_read_k);
+ DECLARE_WRITE16_MEMBER(sub_write_o);
+ DECLARE_WRITE16_MEMBER(sub_write_r);
+
+ DECLARE_WRITE16_MEMBER(rev2_write_o);
+ DECLARE_WRITE16_MEMBER(rev2_write_r);
+
+protected:
+ virtual void machine_start() override;
+};
+
+
+void tispellb_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
+ memset(m_display_segmask, ~0, sizeof(m_display_segmask)); // !
+
+ // zerofill
+ m_rev1_ctl = 0;
+ m_sub_o = 0;
+ m_sub_r = 0;
+
+ // register for savestates
+ save_item(NAME(m_rev1_ctl));
+ save_item(NAME(m_sub_o));
+ save_item(NAME(m_sub_r));
+}
+
+
+
+/***************************************************************************
+
+ I/O
+
+***************************************************************************/
+
+// common
+
+void tispellb_state::power_off()
+{
+ m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+ if (m_subcpu)
+ m_subcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+
+ m_power_on = false;
+}
+
+void tispellb_state::prepare_display()
+{
+ // same as snspell
+ UINT16 gridmask = (m_display_decay[15][16] != 0) ? 0xffff : 0x8000;
+ display_matrix_seg(16+1, 16, m_plate | 0x10000, m_grid & gridmask, 0x3fff);
+}
+
+WRITE16_MEMBER(tispellb_state::main_write_o)
+{
+ // reorder opla to led14seg, plus DP as d14 and AP as d15, same as snspell
+ m_plate = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
+ prepare_display();
+}
+
+WRITE16_MEMBER(tispellb_state::main_write_r)
+{
+ // R13: power-off request, on falling edge
+ if ((m_r >> 13 & 1) && !(data >> 13 & 1))
+ power_off();
+
+ // R0-R6: input mux
+ // R0-R7: select digit
+ // R15: filament on
+ m_r = data;
+ m_inp_mux = data & 0x7f;
+ m_grid = data & 0x80ff;
+ prepare_display();
+}
+
+READ8_MEMBER(tispellb_state::main_read_k)
+{
+ // K: multiplexed inputs (note: the Vss row is always on)
+ return m_inp_matrix[7]->read() | read_inputs(7);
+}
+
+
+// 1st revision mcu/mcu comms
+
+WRITE8_MEMBER(tispellb_state::rev1_ctl_w)
+{
+ // main CTL write data
+ m_rev1_ctl = data & 0xf;
+}
+
+READ8_MEMBER(tispellb_state::sub_read_k)
+{
+ // sub K8421 <- main CTL3210
+ return m_rev1_ctl;
+}
+
+WRITE16_MEMBER(tispellb_state::sub_write_o)
+{
+ // sub O write data
+ m_sub_o = data;
+}
+
+READ8_MEMBER(tispellb_state::rev1_ctl_r)
+{
+ // main CTL3210 <- sub O6043
+ return BITSWAP8(m_sub_o,7,5,2,1,6,0,4,3) & 0xf;
+}
+
+WRITE16_MEMBER(tispellb_state::sub_write_r)
+{
+ // sub R: unused?
+ m_sub_r = data;
+}
+
+
+// 2nd revision specifics
+
+WRITE16_MEMBER(tispellb_state::rev2_write_o)
+{
+ // SEG DP: speaker out
+ m_speaker->level_w(data >> 15 & 1);
+
+ // SEG DP and SEG AP are not connected to VFD, rest is same as rev1
+ main_write_o(space, offset, data & 0x6fff);
+}
+
+WRITE16_MEMBER(tispellb_state::rev2_write_r)
+{
+ // R12: TMC0355 CS
+ // R4: TMC0355 M1
+ // R6: TMC0355 M0
+ m_tms6100->cs_w(data >> 12 & 1);
+ m_tms6100->m1_w(data >> 4 & 1);
+ m_tms6100->m0_w(data >> 6 & 1);
+ m_tms6100->clk_w(1);
+ m_tms6100->clk_w(0);
+
+ // rest is same as rev1
+ main_write_r(space, offset, data);
+}
+
+
+
+/***************************************************************************
+
+ Inputs
+
+***************************************************************************/
+
+INPUT_CHANGED_MEMBER(tispellb_state::power_button)
+{
+ int on = (int)(FPTR)param;
+
+ if (on && !m_power_on)
+ {
+ m_power_on = true;
+ m_maincpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
+
+ if (m_subcpu)
+ m_subcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
+ }
+ else if (!on && m_power_on)
+ power_off();
+}
+
+static INPUT_PORTS_START( spellb )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('G')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('H')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('I')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('J')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
+
+ PORT_START("IN.2") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('L')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('M')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('N')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('O')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('K')
+
+ PORT_START("IN.3") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('R')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('T')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('P')
+
+ PORT_START("IN.4") // R4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('V')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('X')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('U')
+
+ PORT_START("IN.5") // R5
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Memory")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Clue")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Erase")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("Enter")
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
+
+ PORT_START("IN.6") // R6
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_HOME) PORT_NAME("Go")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") // -> auto_power_off
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("Level")
+
+ PORT_START("IN.7") // Vss!
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Missing Letter")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Mystery Word")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Scramble")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Spelling B/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, (void *)true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Starts With")
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( mrchalgr )
+ PORT_INCLUDE( spellb ) // same key layout as spellb
+
+ PORT_MODIFY("IN.5")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("2nd Player")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("Score")
+
+ PORT_MODIFY("IN.7")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("Crazy Letters")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_NAME("Letter Guesser")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_NAME("Word Challenge")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_PGUP) PORT_NAME("Mystery Word/On") PORT_CHANGED_MEMBER(DEVICE_SELF, tispellb_state, power_button, (void *)true)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_NAME("Replay")
+INPUT_PORTS_END
+
+
+
+/***************************************************************************
+
+ Machine Config
+
+***************************************************************************/
+
+static MACHINE_CONFIG_START( rev1, tispellb_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS0270, 350000) // approximation
+ MCFG_TMS1XXX_READ_K_CB(READ8(tispellb_state, main_read_k))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispellb_state, main_write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispellb_state, main_write_r))
+ MCFG_TMS0270_READ_CTL_CB(READ8(tispellb_state, rev1_ctl_r))
+ MCFG_TMS0270_WRITE_CTL_CB(WRITE8(tispellb_state, rev1_ctl_w))
+
+ MCFG_CPU_ADD("subcpu", TMS1980, 350000) // approximation
+ MCFG_TMS1XXX_READ_K_CB(READ8(tispellb_state, sub_read_k))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispellb_state, sub_write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispellb_state, sub_write_r))
+
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_spellb)
+
+ /* no sound! */
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( rev2, tispellb_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", TMS0270, 350000) // approximation
+ MCFG_TMS1XXX_READ_K_CB(READ8(tispellb_state, main_read_k))
+ MCFG_TMS1XXX_WRITE_O_CB(WRITE16(tispellb_state, rev2_write_o))
+ MCFG_TMS1XXX_WRITE_R_CB(WRITE16(tispellb_state, rev2_write_r))
+ MCFG_TMS0270_READ_CTL_CB(DEVREAD8("tms6100", tms6100_device, data_r))
+ MCFG_TMS0270_WRITE_CTL_CB(DEVWRITE8("tms6100", tms6100_device, add_w))
+
+ MCFG_DEVICE_ADD("tms6100", TMS6100, 350000)
+ MCFG_TMS6100_4BIT_MODE()
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_spellb)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( spellb )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "tmc0272nl", 0x0000, 0x1000, CRC(f90318ff) SHA1(7cff03fafbc66b0e07b3c70a513fbb0b11eef4ea) )
+
+ 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_spellb_output.pla", 0, 1246, CRC(3e021cbd) SHA1(c9bdfe10601b8a5a70442fe4805e4bfed8bbed35) )
+
+ ROM_REGION( 0x1000, "subcpu", 0 )
+ ROM_LOAD( "tmc1984nl", 0x0000, 0x1000, CRC(78c9c83a) SHA1(6307fe2a0228fd1b8d308fcaae1b8e856d40fe57) )
+
+ ROM_REGION( 1246, "subcpu:ipla", 0 )
+ ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
+ ROM_REGION( 2127, "subcpu:mpla", 0 )
+ ROM_LOAD( "tms0270_common2_micro.pla", 0, 2127, CRC(86737ac1) SHA1(4aa0444f3ddf88738ea74aec404c684bf54eddba) )
+ ROM_REGION( 525, "subcpu:opla", 0 )
+ ROM_LOAD( "tms1980_spellb_output.pla", 0, 525, CRC(1e26a719) SHA1(eb031aa216fe865bc9e40b070ca5de2b1509f13b) )
+ROM_END
+
+
+ROM_START( mrchalgr )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "tmc0273nll", 0x0000, 0x1000, CRC(ef6d23bd) SHA1(194e3b022c299e99a731bbcfba5bf8a3a9f0d07e) ) // matches patent US4421487
+
+ 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_mrchalgr_output.pla", 0, 1246, CRC(4785289c) SHA1(60567af0ea120872a4ccf3128e1365fe84722aa8) )
+
+ ROM_REGION( 0x1000, "tms6100", 0 )
+ ROM_LOAD( "cd2601.vsm", 0x0000, 0x1000, CRC(a9fbe7e9) SHA1(9d480cb30313b8cbce2d048140c1e5e6c5b92452) )
+ROM_END
+
+
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
+COMP( 1978, spellb, 0, 0, rev1, spellb, driver_device, 0, "Texas Instruments", "Spelling B (1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+
+COMP( 1979, mrchalgr, 0, 0, rev2, mrchalgr, driver_device, 0, "Texas Instruments", "Mr. Challenger", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/tk80.cpp b/src/mame/drivers/tk80.cpp
index c6b79cc7d54..b7872fc2d8f 100644
--- a/src/mame/drivers/tk80.cpp
+++ b/src/mame/drivers/tk80.cpp
@@ -79,12 +79,12 @@ public:
READ8_MEMBER( tk80_state::display_r )
{
- return output_get_digit_value(offset);
+ return output().get_digit_value(offset);
}
WRITE8_MEMBER( tk80_state::display_w )
{
- output_set_digit_value(offset, data);
+ output().set_digit_value(offset, data);
}
static ADDRESS_MAP_START(tk80_mem, AS_PROGRAM, 8, tk80_state)
diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp
index d93fcaeb1bc..033e9f8fa1a 100644
--- a/src/mame/drivers/tm990189.cpp
+++ b/src/mame/drivers/tm990189.cpp
@@ -92,8 +92,6 @@ public:
required_device<cassette_image_device> m_cass;
optional_device<tms9918_device> m_tms9918;
- DECLARE_READ8_MEMBER( interrupt_level );
-
DECLARE_READ8_MEMBER(video_vdp_r);
DECLARE_WRITE8_MEMBER(video_vdp_w);
DECLARE_READ8_MEMBER(video_joy_r);
@@ -248,7 +246,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(tm990189_state::display_callback)
{
m_old_segment_state[i] |= m_segment_state[i];
sprintf(ledname,"digit%d",i);
- output_set_digit_value(i, m_old_segment_state[i]);
+ output().set_digit_value(i, m_old_segment_state[i]);
m_old_segment_state[i] = m_segment_state[i];
m_segment_state[i] = 0;
}
@@ -256,7 +254,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(tm990189_state::display_callback)
for (i = 0; i < 7; i++)
{
sprintf(ledname,"led%d",i);
- output_set_value(ledname, !BIT(m_LED_state, i));
+ output().set_value(ledname, !BIT(m_LED_state, i));
}
}
diff --git a/src/mame/drivers/tmc1800.cpp b/src/mame/drivers/tmc1800.cpp
index 728ec7ee446..8cf47eed402 100644
--- a/src/mame/drivers/tmc1800.cpp
+++ b/src/mame/drivers/tmc1800.cpp
@@ -541,7 +541,7 @@ WRITE_LINE_MEMBER( tmc2000_state::q_w )
m_cti->aoe_w(state);
/* set Q led status */
- set_led_status(machine(), 1, state);
+ output().set_led_value(1, state);
/* tape output */
m_cassette->output(state ? 1.0 : -1.0);
@@ -586,7 +586,7 @@ WRITE_LINE_MEMBER( nano_state::q_w )
m_cti->aoe_w(state);
/* set Q led status */
- set_led_status(machine(), 1, state);
+ output().set_led_value(1, state);
/* tape output */
m_cassette->output(state ? 1.0 : -1.0);
@@ -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/tmc2000e.cpp b/src/mame/drivers/tmc2000e.cpp
index c3691141631..8017a685308 100644
--- a/src/mame/drivers/tmc2000e.cpp
+++ b/src/mame/drivers/tmc2000e.cpp
@@ -237,7 +237,7 @@ WRITE_LINE_MEMBER( tmc2000e_state::q_w )
m_cti->aoe_w(state);
// set Q led status
- set_led_status(machine(), 1, state);
+ output().set_led_value(1, state);
// tape out
m_cassette->output(state ? -1.0 : +1.0);
diff --git a/src/mame/drivers/tmmjprd.cpp b/src/mame/drivers/tmmjprd.cpp
index e6184175af4..358867c6e82 100644
--- a/src/mame/drivers/tmmjprd.cpp
+++ b/src/mame/drivers/tmmjprd.cpp
@@ -58,7 +58,7 @@ public:
required_shared_ptr<UINT32> m_spriteregs;
required_shared_ptr<UINT32> m_spriteram;
- UINT32 *m_tilemap_ram[4];
+ std::unique_ptr<UINT32[]> m_tilemap_ram[4];
UINT8 m_mux_data;
UINT8 m_system_in;
double m_old_brt1;
@@ -73,7 +73,6 @@ public:
DECLARE_READ32_MEMBER(tilemap2_r);
DECLARE_READ32_MEMBER(tilemap3_r);
DECLARE_READ32_MEMBER(randomtmmjprds);
- DECLARE_WRITE32_MEMBER(blitter_w);
DECLARE_READ32_MEMBER(mux_r);
DECLARE_WRITE32_MEMBER(brt_1_w);
DECLARE_WRITE32_MEMBER(brt_2_w);
@@ -85,13 +84,11 @@ public:
UINT32 screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_CALLBACK_MEMBER(blit_done);
TIMER_DEVICE_CALLBACK_MEMBER(scanline);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int screen);
void draw_tile(bitmap_ind16 &bitmap, const rectangle &cliprect, int x,int y,int sizex,int sizey, UINT32 tiledata, UINT8* rom);
void draw_tilemap(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32*tileram, UINT32*tileregs, UINT8*rom );
- void do_blit();
};
@@ -319,9 +316,9 @@ UINT32 tmmjprd_state::screen_update_left(screen_device &screen, bitmap_ind16 &bi
bitmap.fill(m_palette->black_pen(), cliprect);
- draw_tilemap(bitmap, cliprect, m_tilemap_ram[3], m_tilemap_regs[3], gfxroms );
+ draw_tilemap(bitmap, cliprect, m_tilemap_ram[3].get(), m_tilemap_regs[3], gfxroms );
draw_sprites(bitmap,cliprect, 1);
- draw_tilemap(bitmap, cliprect, m_tilemap_ram[2], m_tilemap_regs[2], gfxroms );
+ draw_tilemap(bitmap, cliprect, m_tilemap_ram[2].get(), m_tilemap_regs[2], gfxroms );
/*
popmessage("%08x %08x %08x %08x %08x %08x",
@@ -353,9 +350,9 @@ UINT32 tmmjprd_state::screen_update_right(screen_device &screen, bitmap_ind16 &b
bitmap.fill(m_palette->black_pen(), cliprect);
- draw_tilemap(bitmap, cliprect, m_tilemap_ram[1], m_tilemap_regs[1], gfxroms );
+ draw_tilemap(bitmap, cliprect, m_tilemap_ram[1].get(), m_tilemap_regs[1], gfxroms );
draw_sprites(bitmap,cliprect, 0);
- draw_tilemap(bitmap, cliprect, m_tilemap_ram[0], m_tilemap_regs[0], gfxroms );
+ draw_tilemap(bitmap, cliprect, m_tilemap_ram[0].get(), m_tilemap_regs[0], gfxroms );
return 0;
}
@@ -364,16 +361,16 @@ void tmmjprd_state::video_start()
{
/* the tilemaps are bigger than the regions the cpu can see, need to allocate the ram here */
/* or maybe not for this game/hw .... */
- m_tilemap_ram[0] = auto_alloc_array_clear(machine(), UINT32, 0x8000);
- m_tilemap_ram[1] = auto_alloc_array_clear(machine(), UINT32, 0x8000);
- m_tilemap_ram[2] = auto_alloc_array_clear(machine(), UINT32, 0x8000);
- m_tilemap_ram[3] = auto_alloc_array_clear(machine(), UINT32, 0x8000);
+ m_tilemap_ram[0] = make_unique_clear<UINT32[]>(0x8000);
+ m_tilemap_ram[1] = make_unique_clear<UINT32[]>(0x8000);
+ m_tilemap_ram[2] = make_unique_clear<UINT32[]>(0x8000);
+ m_tilemap_ram[3] = make_unique_clear<UINT32[]>(0x8000);
- save_pointer(NAME(m_tilemap_ram[0]), 0x8000);
- save_pointer(NAME(m_tilemap_ram[1]), 0x8000);
- save_pointer(NAME(m_tilemap_ram[2]), 0x8000);
- save_pointer(NAME(m_tilemap_ram[3]), 0x8000);
+ save_pointer(NAME(m_tilemap_ram[0].get()), 0x8000);
+ save_pointer(NAME(m_tilemap_ram[1].get()), 0x8000);
+ save_pointer(NAME(m_tilemap_ram[2].get()), 0x8000);
+ save_pointer(NAME(m_tilemap_ram[3].get()), 0x8000);
save_item(NAME(m_old_brt1));
save_item(NAME(m_old_brt2));
diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp
index 7448c36aff2..828ff045e2a 100644
--- a/src/mame/drivers/tnzs.cpp
+++ b/src/mame/drivers/tnzs.cpp
@@ -652,7 +652,7 @@ SAMPLES_START_CB_MEMBER(tnzs_state::kageki_init_samples)
}
/* 2009-11 FP: should these be saved? */
- m_sampledata[i] = auto_alloc_array(machine(), INT16, size);
+ m_sampledata[i] = std::make_unique<INT16[]>(size);
m_samplesize[i] = size;
@@ -660,7 +660,7 @@ SAMPLES_START_CB_MEMBER(tnzs_state::kageki_init_samples)
start = size = 0;
// signed 8-bit sample to unsigned 8-bit sample convert
- dest = m_sampledata[i];
+ dest = m_sampledata[i].get();
scan = &src[start];
for (n = 0; n < size; n++)
{
@@ -720,7 +720,7 @@ WRITE8_MEMBER(tnzs_state::kageki_csport_w)
else
{
// play samples
- m_samples->start_raw(0, m_sampledata[data], m_samplesize[data], 7000);
+ m_samples->start_raw(0, m_sampledata[data].get(), m_samplesize[data], 7000);
sprintf(mess, "VOICE:%02X PLAY", data);
}
// popmessage(mess);
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp
index 8d85b96fad2..f0d6ff28817 100644
--- a/src/mame/drivers/toaplan2.cpp
+++ b/src/mame/drivers/toaplan2.cpp
@@ -539,14 +539,14 @@ WRITE8_MEMBER(toaplan2_state::toaplan2_coin_w)
if (data & 0x0f)
{
- coin_lockout_w( machine(), 0, ((data & 4) ? 0 : 1) );
- coin_lockout_w( machine(), 1, ((data & 8) ? 0 : 1) );
- coin_counter_w( machine(), 0, (data & 1) );
- coin_counter_w( machine(), 1, (data & 2) );
+ machine().bookkeeping().coin_lockout_w(0, ((data & 4) ? 0 : 1) );
+ machine().bookkeeping().coin_lockout_w(1, ((data & 8) ? 0 : 1) );
+ machine().bookkeeping().coin_counter_w(0, (data & 1) );
+ machine().bookkeeping().coin_counter_w(1, (data & 2) );
}
else
{
- coin_lockout_global_w(machine(), 1); // Lock all coin slots
+ machine().bookkeeping().coin_lockout_global_w(1); // Lock all coin slots
}
if (data & 0xe0)
{
@@ -556,8 +556,8 @@ WRITE8_MEMBER(toaplan2_state::toaplan2_coin_w)
WRITE8_MEMBER(toaplan2_state::pwrkick_coin_w)
{
- coin_counter_w( machine(), 0, (data & 2) >> 1 );
- coin_counter_w( machine(), 1, (data & 8) >> 3 );
+ machine().bookkeeping().coin_counter_w(0, (data & 2) >> 1 );
+ machine().bookkeeping().coin_counter_w(1, (data & 8) >> 3 );
m_pwrkick_hopper = (data & 0x80) >> 7;
}
diff --git a/src/mame/drivers/tomcat.cpp b/src/mame/drivers/tomcat.cpp
index 22343784c84..4b3919afdc1 100644
--- a/src/mame/drivers/tomcat.cpp
+++ b/src/mame/drivers/tomcat.cpp
@@ -116,22 +116,22 @@ READ16_MEMBER(tomcat_state::tomcat_inputs_r)
WRITE16_MEMBER(tomcat_state::tomcat_led1on_w)
{
- set_led_status(machine(), 1, 1);
+ output().set_led_value(1, 1);
}
WRITE16_MEMBER(tomcat_state::tomcat_led2on_w)
{
- set_led_status(machine(), 2, 1);
+ output().set_led_value(2, 1);
}
WRITE16_MEMBER(tomcat_state::tomcat_led2off_w)
{
- set_led_status(machine(), 2, 0);
+ output().set_led_value(2, 0);
}
WRITE16_MEMBER(tomcat_state::tomcat_led1off_w)
{
- set_led_status(machine(), 1, 0);
+ output().set_led_value(1, 0);
}
WRITE16_MEMBER(tomcat_state::tomcat_lnkmodel_w)
diff --git a/src/mame/drivers/tonton.cpp b/src/mame/drivers/tonton.cpp
index 15fa04e69c4..36770d448a8 100644
--- a/src/mame/drivers/tonton.cpp
+++ b/src/mame/drivers/tonton.cpp
@@ -75,8 +75,8 @@ WRITE_LINE_MEMBER(tonton_state::tonton_vdp0_interrupt)
WRITE8_MEMBER(tonton_state::tonton_outport_w)
{
- coin_counter_w(machine(), offset, data & 0x01);
- coin_lockout_global_w(machine(), data & 0x02); /* Coin Lock */
+ machine().bookkeeping().coin_counter_w(offset, data & 0x01);
+ machine().bookkeeping().coin_lockout_global_w(data & 0x02); /* Coin Lock */
m_hopper->write(space, 0, (data & 0x02)); /* Hopper Motor */
// if(data & 0xfe)
diff --git a/src/mame/drivers/toratora.cpp b/src/mame/drivers/toratora.cpp
index b0ba0f65998..b422680e6f9 100644
--- a/src/mame/drivers/toratora.cpp
+++ b/src/mame/drivers/toratora.cpp
@@ -138,9 +138,9 @@ WRITE8_MEMBER(toratora_state::clear_tv_w)
WRITE8_MEMBER(toratora_state::port_b_u1_w)
{
if (m_pia_u1->port_b_z_mask() & 0x20)
- coin_counter_w(machine(), 0, 1);
+ machine().bookkeeping().coin_counter_w(0, 1);
else
- coin_counter_w(machine(), 0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
}
diff --git a/src/mame/drivers/tourtabl.cpp b/src/mame/drivers/tourtabl.cpp
index a1d79b07e6f..c2b2fa57696 100644
--- a/src/mame/drivers/tourtabl.cpp
+++ b/src/mame/drivers/tourtabl.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -36,12 +36,12 @@ public:
WRITE8_MEMBER(tourtabl_state::tourtabl_led_w)
{
- set_led_status(machine(), 0, data & 0x40); /* start 1 */
- set_led_status(machine(), 1, data & 0x20); /* start 2 */
- set_led_status(machine(), 2, data & 0x10); /* start 4 */
- set_led_status(machine(), 3, data & 0x80); /* select game */
+ output().set_led_value(0, data & 0x40); /* start 1 */
+ output().set_led_value(1, data & 0x20); /* start 2 */
+ output().set_led_value(2, data & 0x10); /* start 4 */
+ output().set_led_value(3, data & 0x80); /* select game */
- coin_lockout_global_w(machine(), !(data & 0x80));
+ machine().bookkeeping().coin_lockout_global_w(!(data & 0x80));
}
diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp
index c173c002b7e..769171d5b2f 100644
--- a/src/mame/drivers/tourvis.cpp
+++ b/src/mame/drivers/tourvis.cpp
@@ -17,67 +17,89 @@
Known games:
1943
- Aero Blaster (label shows "Vol. 33") [dumped]
+ Aero Blaster
After Burner
- Ankoku Densetu
+ * Ankoku Densetu
+ Armed-F
Ballistix
- Bomberman (label shows "Vol. 34")
- Columns [dumped]
- Cyber Core
+ Be Ball
+ Bomberman
+ Chozetsurinjin Beraboh Man (Super Foolish Man)
+ Chuka Taisen
+ Columns
+ Coryoon
+ * Cross Wiber
+ * Cyber Core
Daisempuu
Dead Moon
- Die Hard
+ Devil Crash
+ * Die Hard
Dodge Ball
Doraemon Meikyuu Daisakusen
- Doramon II
- Down Load
+ * Doraemon II
+ * Down Load
Dragon Spirit
- Dungeon Explorer [dumped]
+ Dungeon Explorer
Final Blaster
- Final Lap Twin [dumped]
+ Final Lap Twin
Final Match Tennis
- Formation Soccer [dumped]
- Gomola Speed [dumped]
- Jackie Chan [dumped]
+ Formation Soccer
+ Gomola Speed
+ Gunhed
+ Hana Taka Daka (Super Long Nose Goblin)
+ Jackie Chan
Jinmu Densho
Kiki Kaikai
Legend Of Hero Tomna
- Legendary Axe [dumped]
- Liquid Kids
+ Makyo Densetsu - The Legenary Axe
+ Mizubaku Daibouken Liquid Kids
Mr. Heli
- Out Run
+ Ninja Ryukenden
+ Operation Wolf
+ * Out Run
+ Override
Pac-Land
+ * PC Genjin
+ PC Genjin 2
PC Denjin Punkic Cyborg
- PC Genjin
- PC Genjin 2 [dumped]
- Power Eleven [dumped]
- Power Golf
- Power League IV [dumped]
- Power Sports
+ Power Drift
+ Power Eleven
+ * Power Golf
+ Power League IV
+ * Power Sports
+ Pro Yakyuu World Stadium '91
Psycho Chaser
Puzzle Boy
- Rastan Saga II [dumped]
+ R-Type II
+ Rastan Saga II
Saigo no Nindou
Salamander
Shinobi
Side Arms
Skweek
+ * Soldier Blade
Son Son II
- Special Criminal Investigation [dumped]
- Super Star Soldier (label shows "Vol. 30") [dumped]
- Super Volley ball [dumped]
+ Special Criminal Investigation
+ Super Star Soldier
+ Super Volley ball
Tatsujin
Terra Cresta II
- Thunder Blade [dumped]
+ Thunder Blade
+ * Tiger Road
Toy Shop Boys
- Tricky
- USA Pro Basketball [dumped]
+ * Tricky
+ * TV Sports
+ USA Pro Basketball
Veigues
- Vigilante
- Volfied [dumped]
+ * Vigilante
+ # Volfied
W-Ring
+ Winning Shot
Xevious
+* Denotes Not Dumped
+# Denotes Redump Needed
+
_______________________________________________________________________________________________________________________________________________
| |
| ____________ ____________ ____________ ____________ |
@@ -436,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)
@@ -446,30 +470,149 @@ ROM_START(tourvis)
ROM_END
-/*
-Aicom USA Pro Basketball Tourvision cart.
-Notes:
- -4 identical 256KB parts, left unsplit for reference.
- -Cart's A19 and A18 lines seems not connected to anything.
- -CRC of split ROM ("1CAD4B7F") matches the common PC Engine Hu-Card ROM dump.
-*/
+/* 1943 Kai */
+ROM_START(tv1943)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_1943_kia.bin", 0x00000, 0x100000, CRC(de4672ab) SHA1(2da1ee082bfb920c632a95014208f11fb48c58e1) )
+ TOURVISION_BIOS
+ROM_END
-ROM_START(tvusapb)
+/* Aero Blasters - Hudson / Kaneko */
+ROM_START(tvablast)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_usaprobasketball.bin", 0x00000, 0x100000, CRC(f9a86270) SHA1(45f33fd80a0fa16a9271d258d8e827c3d5e8c98d) )
+ ROM_LOAD( "tourv_ablast.bin", 0x00000, 0x100000, CRC(9302f6d0) SHA1(76ef27a6d639514ed261b9d65f37217f2989d1c0) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* After Burner */
+ROM_START(tvaburn)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_afterburner.bin", 0x00000, 0x100000, CRC(5ce31322) SHA1(08918d443891bd70f1b0b0c739522b764b16bc96) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Armed-F */
+ROM_START(tvarmedf)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_armed-f.bin", 0x00000, 0x100000, CRC(056617f5) SHA1(d10eb80b8436b8d217170309647104181cca750a) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Ballistix */
+ROM_START(tvbalstx)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_ballistix.bin", 0x00000, 0x100000, CRC(9d32ed98) SHA1(404cc3695940a7fdc802ac166ec564a858a894d0) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Be Ball */
+ROM_START(tvbeball)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_be_ball.bin", 0x00000, 0x100000, CRC(4b1e2861) SHA1(bea449543284bb6f4b33b1fb4156cd18a782ad6a) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Bomberman */
+ROM_START(tvbomber)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_bomberman.bin", 0x00000, 0x100000, CRC(cfcabe78) SHA1(bdd1766fad43c6c76e1b0d6e8b4f0ba3363442d6) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* 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) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Chuka Taisen */
+ROM_START(tvtaisen)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_chuka_taisen.bin", 0x00000, 0x100000, CRC(3b9e9185) SHA1(96f9f82a9fa6ee2b92c0294e71d47886e27fdc06) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Columns - Telenet Japan */
+ROM_START(tvcolumn)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_column.bin", 0x00000, 0x100000, CRC(bb01dea8) SHA1(24e00aee5117e996becb56b59851e54e3f2fa11f) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Coryoon */
+ROM_START(tvcoryon)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_corycoon.bin", 0x00000, 0x100000, CRC(c377db91) SHA1(1585d886f775ed361b2558839e544660533e9297) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Daisenpu */
+ROM_START(tvdsenpu)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_daisenpu.bin", 0x00000, 0x100000, CRC(5a8cef75) SHA1(00f27127114e4f5bf69c81212e66948caaec755d) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Dead Moon */
+ROM_START(tvdmoon)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_dead_moon.bin", 0x00000, 0x100000, CRC(b54793c1) SHA1(8899947092d9a02f3be61ac9c293642e83a015ec) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Devil Crash */
+ROM_START(tvdevilc)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_devil_crash.bin", 0x00000, 0x100000, CRC(c163e5c1) SHA1(2134b3943df87af556694dbe6c77b30723f9175a) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Dodge Ball */
+ROM_START(tvdodgeb)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_dodge_ball.bin", 0x00000, 0x100000, CRC(7a12cf72) SHA1(c477bc5dae4e82a89766052f185afb73ca2234f3) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* 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) )
TOURVISION_BIOS
ROM_END
/*
-Hudson / Atlus Dungeon Explorer TourVision cart.
+Dungeon Explorer TourVision cart - Hudson / Atlus
Notes:
-Cart's A18 line (pin 32) seems not connected to anything.
*/
-
ROM_START(tvdunexp)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_dungeonexplorer.bin", 0x00000, 0x100000, CRC(6ecc87f4) SHA1(02eb3ae0b336dbcda12166b10c9f19486fb177e0) )
@@ -477,47 +620,190 @@ ROM_START(tvdunexp)
TOURVISION_BIOS
ROM_END
-/*
-Sega Thunder Blade Tourvision cart.
+/* Final Blaster */
+ROM_START(tvfblast)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_final_blaster.bin", 0x00000, 0x100000, CRC(f5f7483c) SHA1(3933719bdd7a0c73cdad76de78d80463112b475a) )
-Notes:
- -1st and 2nd halfs are identical, left unsplit for reference.
- -Cart's A19 line seems not connected to anything.
- -CRC of split ROM ("DDC3E809") matches the common PC Engine Hu-Card ROM dump.
-*/
+ TOURVISION_BIOS
+ROM_END
-ROM_START(tvthbld)
+/* Final Lap Twin - Namco */
+ROM_START(tvflaptw)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_thunderblade.bin", 0x00000, 0x100000, CRC(0b93b85b) SHA1(b7d9fc2f46f95d305aa24326eded13abbe93738c) )
+ ROM_LOAD( "tourv_flaptw.bin", 0x00000, 0x100000, CRC(3ca56272) SHA1(9b5417ae9a9400fead170e882d3dae19edfd7157) )
TOURVISION_BIOS
ROM_END
-/*
-Taito Rastan Saga II Tourvision cart.
+/* Final Match Tennis */
+ROM_START(tvftenis)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_final_match_tennis.bin", 0x00000, 0x100000, CRC(f83ed70f) SHA1(f566bd7a806c11f3d33ba0a976e36026a131e6fd) )
-Notes:
- -Cart's A18 line seems not connected to anything.
+ TOURVISION_BIOS
+ROM_END
-*/
+/* Formation Soccer - Human Cup ' 90 - Human */
+ROM_START(tvfsoc90)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_fsoc90.bin", 0x00000, 0x100000, CRC(428ffeb1) SHA1(5d12f3ed7f42b2b6da4d8eba95a16e2d34616846) )
-ROM_START(tvrs2)
+ TOURVISION_BIOS
+ROM_END
+
+/* Gomola Speed - Human */
+ROM_START(tvgomola)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_rastansagaii.bin", 0x00000, 0x100000, CRC(cfe4c2f1) SHA1(1e39276b7d4bdb49421cc1102ad2fbba946127da) )
+ ROM_LOAD( "tourv_gomola.bin", 0x00000, 0x100000, CRC(41e8e18f) SHA1(210e511b85056bf216fc0d2540ed379a9dc7c18f) )
TOURVISION_BIOS
ROM_END
+/* Gunhed */
+ROM_START(tvgunhed)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_gunhed.bin", 0x00000, 0x100000, CRC(9baace99) SHA1(ab676ba72a80314e8cba3810789041d3cc6298f9) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* 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) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Jakie Chan - Hudson */
+ROM_START(tvjchan)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_jchan.bin", 0x00000, 0x100000, CRC(7fe2b77c) SHA1(f27251451301dfb800e454c09fbb82d43b518592) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* jinmu Densho */
+ROM_START(tvdensho)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_dinmu_densho.bin", 0x00000, 0x100000, CRC(411a8643) SHA1(46258042dcf6510404ebccaf47034421928f72a8) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Kiki Kaikai */
+ROM_START(tvkaikai)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_kiki_kaikai.bin", 0x00000, 0x100000, CRC(2bdd93f9) SHA1(9b08606865abb8cc8fa17a22becae34b172ff81a) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* 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) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Makyo Densetsu - The Legenary Axe - Victor Musical Industries, Inc. */
+ROM_START(tvlegaxe)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_makyodensetsuthelegendaryaxe.bin", 0x00000, 0x100000, CRC(50ec3f97) SHA1(d583fa240a4dfd14b0d53ff78762fbac52694dd2) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Mizubaku Daibouken Liquid Kids */
+ROM_START(tvlqkids)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_liquid_kids.bin", 0x00000, 0x100000, CRC(23a8636d) SHA1(752e03dcf8617b5a39cd250f4db1fe13cd13b761) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Mr Heli */
+ROM_START(tvmrheli)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_mr_heli.bin", 0x00000, 0x100000, CRC(bf197c7a) SHA1(048f91f8ab86220a39ab146e531081950eaf1138) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Ninja Ryukenden */
+ROM_START(tvninjar)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_ninja_ryukenden.bin", 0x00000, 0x100000, CRC(d9cc00ca) SHA1(42d914d338d7d0073b5cc98a4e85729e86bbfad1) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Operation Wolf */
+ROM_START(tvopwolf)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_operation_wolf.bin", 0x00000, 0x100000, CRC(d4a755a9) SHA1(cd236ba0c3439ba2356cb270f56a41a52e0d6dc6) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Override */
+ROM_START(tvovride)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_override.bin", 0x00000, 0x100000, CRC(4dbbf4ef) SHA1(180a68f87a881db1d01ffa3566e0d2e28303d09e) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Pac-Land */
+ROM_START(tvpaclnd)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_pac-land.bin", 0x00000, 0x100000, CRC(32aee4e2) SHA1(900a918e73aaa1dc5752f851ebd85217e736109b) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* 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) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* PC Genjin 2 - Hudson */
+ROM_START(tvpcgen2)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_pckid2.bin", 0x00000, 0x100000, CRC(57fab9ee) SHA1(07c8b18905fceac73c3e18b747e8cf92d8a5f515) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Power 11 - Hudson */
+ROM_START(tvpow11)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_pow11.bin", 0x00000, 0x100000, CRC(375114a3) SHA1(845633345886b335e6c82b3f56ef012d9820e64d) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Power Drift */
+ROM_START(tvpdrift)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_power_drift.bin", 0x00000, 0x100000, CRC(eb2fdf0b) SHA1(da2191dd6e9d186c10c1c4d415254b8d7c456159) )
+
+ TOURVISION_BIOS
+ROM_END
/*
-Hudson Power League IV Tourvision cart.
+Power League IV - Hudson
Notes:
-1st and 2nd halfs are identical, left unsplit for reference.
-Cart's A19 line seems not connected to anything.
-CRC of split ROM ("30cc3563") matches the common PC Engine Hu-Card ROM dump.
*/
-
ROM_START(tvpwlg4)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_powerleague4.bin", 0x00000, 0x100000, CRC(0a6e65f8) SHA1(88adf3f5b9a6d139f216bdb73abf8606bb8e5b16) )
@@ -525,113 +811,201 @@ ROM_START(tvpwlg4)
TOURVISION_BIOS
ROM_END
+/* 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) )
-/*
-Taito Scene Crime Investigation (SCI) Tourvision cart.
+ TOURVISION_BIOS
+ROM_END
-Notes:
- -1st and 2nd halfs are identical, left unsplit for reference.
- -Cart's A19 line seems not connected to anything.
- -CRC of split ROM ("09a0bfcc") matches the common English language PC Engine Hu-Card ROM dump.
+/* Psycho Chaser */
+ROM_START(tvpchasr)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_pyscho_chaser.bin", 0x00000, 0x100000, CRC(e0b65280) SHA1(83248975e9bea62e67b5314c663d372c12b08416) )
-*/
+ TOURVISION_BIOS
+ROM_END
-ROM_START(tvsci)
+/* Puzzle Boy */
+ROM_START(tvpzlboy)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_sci.bin", 0x00000, 0x100000, CRC(4baac6d8) SHA1(4c2431d9553e2bd952cf816e78fc1e3387376ef4) )
+ ROM_LOAD( "tourv_puzzle_boy.bin", 0x00000, 0x100000, CRC(0dd96cda) SHA1(652ce8b06f2aef69698d4372ff67b86362655de5) )
TOURVISION_BIOS
ROM_END
-
-ROM_START(tvlegaxe)
+/* Raiden */
+ROM_START(tvraiden)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_makyodensetsuthelegendaryaxe.bin", 0x00000, 0x100000, CRC(50ec3f97) SHA1(d583fa240a4dfd14b0d53ff78762fbac52694dd2) )
+ ROM_LOAD( "tourv_raiden.bin", 0x00000, 0x100000, CRC(b99a85b6) SHA1(5c8b103c5a7bfeba20dcc490204d672b55e36452) )
TOURVISION_BIOS
ROM_END
+/*
+Rastan Saga II Tourvision cart - Taito
-ROM_START(tvsvball)
+Notes:
+ -Cart's A18 line seems not connected to anything.
+*/
+ROM_START(tvrs2)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_supervolleyball.bin", 0x00000, 0x100000, CRC(8a32a1ca) SHA1(80144fb4035415eb9b2c67d78d55757ed0d641a1) )
+ ROM_LOAD( "tourv_rastansagaii.bin", 0x00000, 0x100000, CRC(cfe4c2f1) SHA1(1e39276b7d4bdb49421cc1102ad2fbba946127da) )
TOURVISION_BIOS
ROM_END
-
-ROM_START(tvablast)
+/* R-Type II */
+ROM_START(tvrtype2)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_ablast.bin", 0x00000, 0x100000, CRC(9302f6d0) SHA1(76ef27a6d639514ed261b9d65f37217f2989d1c0) )
+ ROM_LOAD( "tourv_r-type_ii.bin", 0x00000, 0x100000, CRC(b03bfd7a) SHA1(cc8cec1fc4bae3937d0ed60468ff703d07ce9d0c) )
TOURVISION_BIOS
ROM_END
+/* 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) )
+
+ TOURVISION_BIOS
+ROM_END
-ROM_START(tvcolumn)
+/* Salamander */
+ROM_START(tvslmndr)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_column.bin", 0x00000, 0x100000, CRC(bb01dea8) SHA1(24e00aee5117e996becb56b59851e54e3f2fa11f) )
+ ROM_LOAD( "tourv_salamander.bin", 0x00000, 0x100000, CRC(ae8bcdf1) SHA1(3cc48fa594ab5ce1573c61861ec8e927163b6abb) )
TOURVISION_BIOS
ROM_END
+/* Shinobi */
+ROM_START(tvshnobi)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_shinobi.bin", 0x00000, 0x100000, CRC(091a2b01) SHA1(aac2d5fadc74f837b73f662456f8a308413de57a) )
-ROM_START(tvflaptw)
+ TOURVISION_BIOS
+ROM_END
+
+/* Side arms */
+ROM_START(tvsdarms)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_flaptw.bin", 0x00000, 0x100000, CRC(3ca56272) SHA1(9b5417ae9a9400fead170e882d3dae19edfd7157) )
+ ROM_LOAD( "tourv_side_arms.bin", 0x00000, 0x100000, CRC(04256267) SHA1(a4ff8f19fa528fc8a7aae5ad7e0c574dc52c3388) )
TOURVISION_BIOS
ROM_END
+/* Skweek */
+ROM_START(tvskweek)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_skweek.bin", 0x00000, 0x100000, CRC(b2a86ecc) SHA1(c1b113132ca6be1b0f3f16f31cc5ba894bee7e91) )
-ROM_START(tvfsoc90)
+ TOURVISION_BIOS
+ROM_END
+
+/* Son Son II */
+ROM_START(tvsson2)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_fsoc90.bin", 0x00000, 0x100000, CRC(428ffeb1) SHA1(5d12f3ed7f42b2b6da4d8eba95a16e2d34616846) )
+ ROM_LOAD( "tourv_son_son_ii.bin", 0x00000, 0x100000, CRC(8fb484cd) SHA1(553838dcb3524fe0b620ea60e926a57cc371068d) )
TOURVISION_BIOS
ROM_END
+/*
+Special Criminal Investigation (SCI) - Taito
-ROM_START(tvgomola)
+Notes:
+ -1st and 2nd halfs are identical, left unsplit for reference.
+ -Cart's A19 line seems not connected to anything.
+ -CRC of split ROM ("09a0bfcc") matches the common English language PC Engine Hu-Card ROM dump.
+*/
+ROM_START(tvsci)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_gomola.bin", 0x00000, 0x100000, CRC(41e8e18f) SHA1(210e511b85056bf216fc0d2540ed379a9dc7c18f) )
+ ROM_LOAD( "tourv_sci.bin", 0x00000, 0x100000, CRC(4baac6d8) SHA1(4c2431d9553e2bd952cf816e78fc1e3387376ef4) )
TOURVISION_BIOS
ROM_END
+/* Super Star Soldier - Hudson / Kaneko */
+ROM_START(tvsssold)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_sssold.bin", 0x00000, 0x100000, CRC(bb2a0b14) SHA1(5380d25b4d5bb3e0048ed857fd36a8206e81a234) )
-ROM_START(tvjchan)
+ TOURVISION_BIOS
+ROM_END
+
+/* Super Volley ball - Video System */
+ROM_START(tvsvball)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_jchan.bin", 0x00000, 0x100000, CRC(7fe2b77c) SHA1(f27251451301dfb800e454c09fbb82d43b518592) )
+ ROM_LOAD( "tourv_supervolleyball.bin", 0x00000, 0x100000, CRC(8a32a1ca) SHA1(80144fb4035415eb9b2c67d78d55757ed0d641a1) )
TOURVISION_BIOS
ROM_END
+/* Tatsujin */
+ROM_START(tvtsujin)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_tatsujin.bin", 0x00000, 0x100000, CRC(023adbcc) SHA1(bef7d03fff2e74970a0747c12d31ec8661703deb) )
-ROM_START(tvpcgen2)
+ TOURVISION_BIOS
+ROM_END
+
+/* Terra Cresta II */
+ROM_START(tvtcrst2)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_pckid2.bin", 0x00000, 0x100000, CRC(57fab9ee) SHA1(07c8b18905fceac73c3e18b747e8cf92d8a5f515) )
+ ROM_LOAD( "tourv_terra_cresta_ii.bin", 0x00000, 0x100000, CRC(8e7bb390) SHA1(af13afe006313b0db1273782c977efdad6100291) )
TOURVISION_BIOS
ROM_END
+/*
+Thunder Blade Tourvision cart - Sega / NEC Avenue
-ROM_START(tvpow11)
+Notes:
+ -1st and 2nd halfs are identical, left unsplit for reference.
+ -Cart's A19 line seems not connected to anything.
+ -CRC of split ROM ("DDC3E809") matches the common PC Engine Hu-Card ROM dump.
+*/
+ROM_START(tvthbld)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_pow11.bin", 0x00000, 0x100000, CRC(375114a3) SHA1(845633345886b335e6c82b3f56ef012d9820e64d) )
+ ROM_LOAD( "tourv_thunderblade.bin", 0x00000, 0x100000, CRC(0b93b85b) SHA1(b7d9fc2f46f95d305aa24326eded13abbe93738c) )
TOURVISION_BIOS
ROM_END
+/* Toy Shop Boys */
+ROM_START(tvtsboys)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_toy_shop_boys.bin", 0x00000, 0x100000, CRC(a9ed3440) SHA1(c519744cc16dad7a1455e359020ce95f4ac0b51a) )
-ROM_START(tvsssold)
+ TOURVISION_BIOS
+ROM_END
+
+/*
+USA Pro Basketball - Aicom
+
+Notes:
+ -4 identical 256KB parts, left unsplit for reference.
+ -Cart's A19 and A18 lines seems not connected to anything.
+ -CRC of split ROM ("1CAD4B7F") matches the common PC Engine Hu-Card ROM dump.
+*/
+ROM_START(tvusapb)
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD( "tourv_sssold.bin", 0x00000, 0x100000, CRC(bb2a0b14) SHA1(5380d25b4d5bb3e0048ed857fd36a8206e81a234) )
+ ROM_LOAD( "tourv_usaprobasketball.bin", 0x00000, 0x100000, CRC(f9a86270) SHA1(45f33fd80a0fa16a9271d258d8e827c3d5e8c98d) )
TOURVISION_BIOS
ROM_END
+/* Veigues */
+ROM_START(tveigues)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_veigues.bin", 0x00000, 0x100000, CRC(64ef8be7) SHA1(634191a181cbccbed8cf7a86e4f074691ba9b715) )
+
+ TOURVISION_BIOS
+ROM_END
+/* Volfied - Taito */
ROM_START(tvvolfd)
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tourv_volfd.bin", 0x00000, 0x100000, BAD_DUMP CRC(c33efba5) SHA1(41ad4f85e551321487be61e2adbeae67e65c47de) )
@@ -639,23 +1013,99 @@ ROM_START(tvvolfd)
TOURVISION_BIOS
ROM_END
+/* Winning Shot */
+ROM_START(tvwnshot)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_winning_shot.bin", 0x00000, 0x100000, CRC(7196b2ca) SHA1(a1ae2e875541ad39751a95629d614d2c913b8c02) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* W-Ring */
+ROM_START(tvwring)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_w-ring.bin", 0x00000, 0x100000, CRC(609dc08d) SHA1(191b8751fc5b8700c7d9dae23d194016fe84586c) )
+
+ TOURVISION_BIOS
+ROM_END
+
+/* Xevious */
+ROM_START(tvxvious)
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "tourv_xevious.bin", 0x00000, 0x100000, CRC(3c0fb5a9) SHA1(1fd9ff582da83e1b9fee569da4db4de15e912f62) )
+
+ TOURVISION_BIOS
+ROM_END
+
-GAME( 19??, tourvis, 0, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision)", "Tourvision PCE bootleg", MACHINE_IS_BIOS_ROOT | 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, tvflaptw, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namco", "Final Lap Twin (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1989, tvusapb, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Aicom", "USA Pro Basketball (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1989, tvvolfd, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito", "Volfied (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1989, tvdunexp, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson / Atlus", "Dungeon Explorer (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1990, tvablast, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson / Kaneko", "Aero Blasters (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1990, tvfsoc90, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Human", "Formation Soccer - Human Cup '90 (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1990, tvgomola, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Human", "Gomola Speed (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1990, tvsssold, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson / Kaneko", "Super Star Soldier (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1990, tvthbld, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Sega / NEC Avenue", "Thunder Blade (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1990, tvrs2, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito", "Rastan Saga II (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1990, tvsvball, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Video System", "Super Volley ball (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1991, tvcolumn, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Telenet Japan", "Columns (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1991, tvjchan, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson", "Jackie Chan (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1991, tvpcgen2, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson", "PC Genjin 2 - Pithecanthropus Computerurus (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1991, tvpow11, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson", "Power Eleven (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1991, tvpwlg4, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson", "Power League IV (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
-GAME( 1991, tvsci, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito", "Special Criminal Investigation (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 19??, tourvis, 0, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision)", "Tourvision PCE bootleg", MACHINE_IS_BIOS_ROOT | MACHINE_NOT_WORKING )
+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 )
+GAME( 1989, tvdensho, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Big Club / Wolf Team", "Jinmu Densho (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvmrheli, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / IREM Corp", "Mr Heli (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvpaclnd, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namco / Namcot", "Pac-Land (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvshnobi, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Sega / Asmik Corporation", "Shinobi (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvsdarms, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Capcom / Nec Avenue", "Side Arms (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvsson2, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Capcom / Nec Avenue", "Son Son II (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvusapb, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Aicom Corporation", "USA Pro Basketball (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvvolfd, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito Corporation", "Volfied (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1989, tvwnshot, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Data East Corp.", "Winning Shot (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 1990, tvablast, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Inter State / Kaneko / Hudson Soft", "Aero Blasters (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvaburn, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Sega / Nec Avenue", "After Burner (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+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, 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 )
+GAME( 1990, tvfblast, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namco / Namcot", "Final Blaster (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvfsoc90, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Human", "Formation Soccer - Human Cup '90 (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvgomola, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Human", "Gomola Speed (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvkaikai, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito", "Kiki Kaikai (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvopwolf, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito / Nec Avenue", "Operation Wolf (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvovride, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Sting / Data East Corporation", "Override (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvpdrift, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Sega / Asmik Corporation", "Power Drift (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvpchasr, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Naxat Soft", "Psycho Chaser (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvrs2, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito Corporation", "Rastan Saga II (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvninjas, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / IREM Corp", "Saiga No Nindou - Ninja Spirit (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvsssold, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Inter State / Kaneko / Hudson Soft", "Super Star Soldier (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvsvball, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Video System", "Super Volley ball (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvthbld, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Sega / NEC Avenue", "Thunder Blade (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvtsboys, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Victor Musical Industries, Inc.", "Toy Shop Boys (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tveigues, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Victor Musical Industries, Inc.", "Veigues (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvwring, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Naxat Soft", "W-Ring (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, tvxvious, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namco Ltd. / Namcot", "Xevious (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 1991, tv1943, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Capcom / Naxat Soft", "1943 Kai (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvbalstx, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Psygnosis / Coconuts Japan", "Ballistix (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvcolumn, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Telenet Japan", "Columns (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvcoryon, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Naxat Soft", "Coryoon (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvdmoon, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / T.S.S", "Dead Moon (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvftenis, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Human", "Final Match Tennis (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvhtdaka, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito Corporation", "Hana Taka Daka (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvjchan, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson Soft", "Jackie Chan (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvtonma, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / IREM Corp", "Legend of Hero Tonma (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvpcgen2, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson Soft / Red", "PC Genjin 2 - Pithecanthropus Computerurus (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvpow11, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson Soft", "Power Eleven (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvpwlg4, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson Soft", "Power League IV (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvpros91, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Namco / Namcot", "Pro Yakyuu World Stadium '91 (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvpzlboy, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Atlus / Telenet Japan", "Puzzle Boy (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvraiden, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Seibu Kaihatsu inc / Hudson Soft", "Raiden (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvrtype2, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / IREM Corp", "R-Type II (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvslmndr, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Konami", "Salamander (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvskweek, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Victor Musical Industries, Inc.", "Skweek (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1991, tvsci, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito Corporation", "Special Criminal Investigation (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+
+GAME( 1992, tvtaisen, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito Corporation", "Chuka Taisen (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1992, tvlqkids, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Taito Corporation", "Mizubaku Daibouken Liquid Kids (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1992, tvninjar, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Temco / Hudson Soft", "Ninja Ryukenden (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1992, tvpcybrg, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Hudson Soft / Red", "PC Genjin Punkic Cyborg (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1992, tvtsujin, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Toaplan Co Ltd / Taito Corporation", "Tatsujin (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1992, tvtcrst2, tourvis, tourvision, tourvision, pce_common_state, pce_common, ROT0, "bootleg (Tourvision) / Nichibutsu / Nihon Bussan Co., Ltd", "Terra Cresta II (Tourvision PCE bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/toypop.cpp b/src/mame/drivers/toypop.cpp
index c5141ce1447..1b5d309a7ac 100644
--- a/src/mame/drivers/toypop.cpp
+++ b/src/mame/drivers/toypop.cpp
@@ -488,13 +488,13 @@ READ8_MEMBER(toypop_state::dipB_h){ return ioport("DSW2")->read() >> 4; }
WRITE8_MEMBER(toypop_state::out_coin0)
{
- coin_lockout_global_w(machine(), data & 4);
- coin_counter_w(machine(), 0, ~data & 8);
+ machine().bookkeeping().coin_lockout_global_w(data & 4);
+ machine().bookkeeping().coin_counter_w(0, ~data & 8);
}
WRITE8_MEMBER(toypop_state::out_coin1)
{
- coin_counter_w(machine(), 1, ~data & 1);
+ machine().bookkeeping().coin_counter_w(1, ~data & 1);
}
WRITE8_MEMBER(toypop_state::flip)
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..3842cb0f875
--- /dev/null
+++ b/src/mame/drivers/tr606.cpp
@@ -0,0 +1,130 @@
+// 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),
+ m_tp3_off_timer(*this, "tp3_off")
+ { }
+
+ required_device<timer_device> m_tp3_off_timer;
+
+ TIMER_DEVICE_CALLBACK_MEMBER(tp3_clock);
+ TIMER_DEVICE_CALLBACK_MEMBER(tp3_off);
+
+ virtual void machine_start() override;
+};
+
+
+/***************************************************************************
+
+ Timer/Interrupt
+
+***************************************************************************/
+
+// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval
+#define TP2_CLOCK_HZ 454545 /* in hz */
+
+// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
+#define TP3_CLOCK attotime::from_usec(1800)
+#define TP3_OFF (TP3_CLOCK / 8)
+
+TIMER_DEVICE_CALLBACK_MEMBER(tr606_state::tp3_off)
+{
+ m_maincpu->set_input_line(0, CLEAR_LINE);
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(tr606_state::tp3_clock)
+{
+ m_maincpu->set_input_line(0, ASSERT_LINE);
+ m_tp3_off_timer->adjust(TP3_OFF);
+}
+
+
+
+/***************************************************************************
+
+ 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_CLOCK_HZ)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tr606_state, tp3_clock, TP3_CLOCK)
+ MCFG_TIMER_START_DELAY(TP3_CLOCK)
+ MCFG_TIMER_DRIVER_ADD("tp3_off", tr606_state, tp3_off)
+
+ 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/trackfld.cpp b/src/mame/drivers/trackfld.cpp
index 1fa7fef0ab3..c898f8d4bde 100644
--- a/src/mame/drivers/trackfld.cpp
+++ b/src/mame/drivers/trackfld.cpp
@@ -199,7 +199,7 @@ MAIN BOARD:
WRITE8_MEMBER(trackfld_state::coin_w)
{
- coin_counter_w(machine(), offset, data & 1);
+ machine().bookkeeping().coin_counter_w(offset, data & 1);
}
WRITE8_MEMBER(trackfld_state::questions_bank_w)
diff --git a/src/mame/drivers/triplhnt.cpp b/src/mame/drivers/triplhnt.cpp
index 79371d00ea0..0602cd192a2 100644
--- a/src/mame/drivers/triplhnt.cpp
+++ b/src/mame/drivers/triplhnt.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -60,10 +60,10 @@ void triplhnt_state::triplhnt_update_misc(address_space &space, int offset)
m_sprite_zoom = (m_misc_flags >> 4) & 1;
m_sprite_bank = (m_misc_flags >> 7) & 1;
- set_led_status(machine(), 0, m_misc_flags & 0x02);
+ output().set_led_value(0, m_misc_flags & 0x02);
- coin_lockout_w(machine(), 0, !(m_misc_flags & 0x08));
- coin_lockout_w(machine(), 1, !(m_misc_flags & 0x08));
+ machine().bookkeeping().coin_lockout_w(0, !(m_misc_flags & 0x08));
+ machine().bookkeeping().coin_lockout_w(1, !(m_misc_flags & 0x08));
m_discrete->write(space, TRIPLHNT_SCREECH_EN, m_misc_flags & 0x04); // screech
m_discrete->write(space, TRIPLHNT_LAMP_EN, m_misc_flags & 0x02); // Lamp is used to reset noise
diff --git a/src/mame/drivers/trvquest.cpp b/src/mame/drivers/trvquest.cpp
index 15f657e9c85..7d32adce5a8 100644
--- a/src/mame/drivers/trvquest.cpp
+++ b/src/mame/drivers/trvquest.cpp
@@ -50,7 +50,7 @@ READ8_MEMBER(gameplan_state::trvquest_question_r)
WRITE_LINE_MEMBER(gameplan_state::trvquest_coin_w)
{
- coin_counter_w(machine(), 0, ~state & 1);
+ machine().bookkeeping().coin_counter_w(0, ~state & 1);
}
WRITE_LINE_MEMBER(gameplan_state::trvquest_misc_w)
diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp
index 302dd56320a..f706f95a693 100644
--- a/src/mame/drivers/ts803.cpp
+++ b/src/mame/drivers/ts803.cpp
@@ -1,68 +1,555 @@
// license:BSD-3-Clause
-// copyright-holders:Robbbert
-/***************************************************************************
+// copyright-holders: Gabriele D'Antona, Robbbert
+/*************************************************************************************************
- Skeleton driver for Televideo TS803
+TeleVideo TS-803(H)
+Driver by friol
+Started: 27/12/2015
- TODO:
- - Everything - this is just a skeleton
+Addressable memory space has 2 configurations:
+PAGE SEL bit in PORT0 set to 0:
-****************************************************************************/
+ 0000-2000 - 8k rom
+ 2000-4000 - 8k expansion rom
+ 4000-BFFF - videoram
+ C000-FFFF - 16k cpu RAM
+
+PAGE SEL bit in PORT0 set to 1:
+
+ 0000-dFFF - 56k ram
+ e000-FFFF - OS RAM
+
+ Z80STI:
+ - fails hardware test, left out for now.
+ - provides baud-rate clock for DART ch B (serial printer)
+ - merges FDC and HDC irq into the daisy chain. FDC works without it though.
+
+ Keyboard / Z80DART:
+ - Keyboard has 8048 plus undumped rom. There's no schematic.
+ - Protocol: 9600 baud, 8 data bits, 2 stop bits, no parity, no handshaking.
+ - Problem: every 2nd keystroke is ignored.
+ - Problem: some of the disks cause the keyboard to produce rubbish, unable to find
+ a baud rate that works.
+
+ To Do:
+ - Fix Z80STI and use it
+ - Fix weird problem with keyboard, or better, get the rom and emulate it.
+ - Hard Drive
+ - Videoram has 4 banks, only first bank is currently used for display
+ - Option of a further 64k of main ram.
+ - Dipswitches
+ - 2 more Serial ports (Serial Printer & Mouse; Modem)
+ - Optional RS422 board (has Z80SIO +others)
+ - Diagnostic LEDs
+ - Cleanup
+ - The demo refers to video attributes, but there's no mention of them anywhere else
+
+**************************************************************************************************/
#include "emu.h"
+#include "bus/rs232/rs232.h"
#include "cpu/z80/z80.h"
+#include "cpu/z80/z80daisy.h"
+#include "machine/keyboard.h"
+#include "machine/z80dart.h"
+#include "machine/wd_fdc.h"
+#include "machine/z80sti.h"
+#include "video/mc6845.h"
class ts803_state : public driver_device
{
public:
ts803_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
+ : driver_device(mconfig, type, tag)
+ , m_palette(*this, "palette")
+ , m_maincpu(*this, "maincpu")
+ , m_fdc(*this, "fdc")
+ , m_floppy0(*this, "fdc:0")
+ , m_floppy1(*this, "fdc:1")
+ //, m_sti(*this, "sti")
+ , m_dart(*this, "dart")
+ , m_crtc(*this,"crtc")
{ }
- required_device<cpu_device> m_maincpu;
+ DECLARE_READ8_MEMBER( ts803_port_r );
+ DECLARE_WRITE8_MEMBER( ts803_port_w );
+ DECLARE_READ8_MEMBER( ts803_porthi_r );
+ DECLARE_WRITE8_MEMBER( ts803_porthi_w );
+
+ DECLARE_WRITE8_MEMBER( disk_0_control_w );
+ DECLARE_READ8_MEMBER( disk_0_control_r );
+
+ DECLARE_WRITE8_MEMBER( keyboard_put );
+
+ MC6845_UPDATE_ROW(crtc_update_row);
+ MC6845_ON_UPDATE_ADDR_CHANGED(crtc_update_addr);
+ DECLARE_WRITE8_MEMBER( crtc_controlreg_w );
+ DECLARE_DRIVER_INIT(ts803);
+ TIMER_DEVICE_CALLBACK_MEMBER(dart_tick);
+
+ UINT32 screen_update_ts803(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ required_device<palette_device> m_palette;
+
+private:
+
+ std::unique_ptr<UINT8[]> m_videoram;
+ std::unique_ptr<UINT8[]> m_56kram;
+ UINT8 m_sioidxr=0;
+ UINT8 m_sioarr[256];
+ bool m_graphics_mode;
+ bool m_tick;
+ UINT8 *m_p_chargen;
virtual void machine_reset() override;
+ virtual void machine_start() override;
+
+ required_device<cpu_device> m_maincpu;
+ required_device<fd1793_t> m_fdc;
+ required_device<floppy_connector> m_floppy0;
+ required_device<floppy_connector> m_floppy1;
+ //required_device<z80sti_device> m_sti;
+ required_device<z80dart_device> m_dart;
+ required_device<sy6545_1_device> m_crtc;
};
static ADDRESS_MAP_START(ts803_mem, AS_PROGRAM, 8, ts803_state)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x1000, 0xffff) AM_RAM
+ AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
+ AM_RANGE(0x4000, 0xbfff) AM_RAMBANK("bank4")
+ AM_RANGE(0xc000, 0xffff) AM_RAM
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
+
+*/
static ADDRESS_MAP_START(ts803_io, AS_IO, 8, ts803_state)
-ADDRESS_MAP_END
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00, 0x2f) AM_READWRITE(ts803_port_r, ts803_port_w)
+
+ //AM_RANGE(0x00, 0x1f) AM_READWRITE(ts803_port_r, ts803_port_w)
+ //AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("sti", z80sti_device, read, write)
+ AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("dart", z80dart_device, cd_ba_r, cd_ba_w)
+
+ AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("fdc", fd1793_t, read, write)
+ AM_RANGE(0x90, 0x90) AM_READWRITE(disk_0_control_r,disk_0_control_w)
+ //AM_RANGE(0x91, 0xff) AM_READWRITE(ts803_porthi_r, ts803_porthi_w)
+ AM_RANGE(0x91, 0xbf) AM_READWRITE(ts803_porthi_r, ts803_porthi_w)
+
+ AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("crtc", sy6545_1_device, status_r, address_w)
+ AM_RANGE(0xc2, 0xc2) AM_DEVREADWRITE("crtc", sy6545_1_device, register_r, register_w)
+ AM_RANGE(0xc4, 0xc4) AM_WRITE(crtc_controlreg_w)
+ADDRESS_MAP_END
/* Input ports */
static INPUT_PORTS_START( ts803 )
INPUT_PORTS_END
+/* keyboard */
+
+WRITE8_MEMBER( ts803_state::keyboard_put )
+{
+ if (data)
+ {
+ //printf("Keyboard stroke [%2x]\n",data);
+
+ //m_maincpu->set_input_line_vector(INPUT_LINE_IRQ0, 0x3f);
+ //m_maincpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
+
+ if (data==0x0d) m_maincpu->space(AS_PROGRAM).write_byte(0xf83f,0xC1);
+ else
+ {
+ m_maincpu->space(AS_PROGRAM).write_byte(0xf83f,0x4f);
+ m_maincpu->space(AS_PROGRAM).write_byte(0xf890,data);
+ }
+ }
+}
+
+/* disk drive */
+
+static SLOT_INTERFACE_START( ts803_floppies )
+ SLOT_INTERFACE( "drive0", FLOPPY_525_DD )
+ SLOT_INTERFACE( "drive1", FLOPPY_525_DD )
+SLOT_INTERFACE_END
+
+WRITE8_MEMBER( ts803_state::disk_0_control_w )
+{
+/*
+d0 ready
+d1 motor on
+d2 Side select (active low)
+d3 Double density (active low)
+d4 Drive select 0 (active low)
+d5 Drive select 1 (active low)
+d6 Drive select 2 (active low)
+d7 Drive select 3 (active low)
+*/
+ if ((data & 0xc0)!=0xc0) return;
+ floppy_image_device *floppy = nullptr;
+ if (BIT(data, 4)==0)
+ floppy = m_floppy0->get_device();
+ else
+ if (BIT(data, 5)==0)
+ floppy = m_floppy1->get_device();
+
+ m_fdc->set_floppy(floppy);
+
+ floppy->mon_w(BIT(data, 1));
+
+ floppy->ss_w(BIT(data, 2) ? 0: 1);
+
+ m_fdc->dden_w(BIT(data, 3));
+}
+
+READ8_MEMBER( ts803_state::disk_0_control_r )
+{
+ printf("Disk0 control register read\n");
+ return 0xff;
+}
+
+READ8_MEMBER( ts803_state::ts803_porthi_r )
+{
+ //printf("PortHI read [%x]\n",offset+0x91);
+
+ switch(offset+0x91)
+ {
+ case 0xb2:
+ printf("B2 WDC read\n");
+ return 0x11;
+
+ case 0xb3:
+ printf("B3 WDC read\n");
+ return 0x15;
+
+ case 0xb4:
+ printf("B4 WDC read\n");
+ return 0x55;
+
+ case 0xb5:
+ printf("B5 WDC read\n");
+ return 0x01;
+
+ case 0xb6:
+ printf("B6 WDC read\n");
+ return 0x25;
+
+ }
+
+ return 0x00;
+}
+
+WRITE8_MEMBER( ts803_state::ts803_porthi_w )
+{
+ //printf("PortHI write [%2x] [%2x]\n",offset+0x91,data);
+
+ switch (offset+0x91)
+ {
+ case 0xc4:
+ //printf("Control Register for Alpha or Graphics Mode Selection\n");
+ break;
+
+ default:
+ break;
+ }
+}
+
+READ8_MEMBER( ts803_state::ts803_port_r )
+{
+ printf("Port read [%x]\n",offset);
+
+ switch (offset)
+ {
+ case 0x00:
+ // system status switch 1 (dip switches)
+ // 0,1,2: baud rate
+ // 3: ts803-ts803h
+ // 4: local-remote
+ // 5: required (?)
+ // 6: 60hz-50hz
+ // 7: required
+ return 0x80;
+
+ case 0x20:
+ // STI read (at boot time)
+ return 0x55;
+
+ case 0x26:
+ // STI read (at boot time)
+ return 0x55;
+
+ case 0x27:
+ // STI read (at boot time)
+ return 0x55;
+
+ case 0x2a:
+ // STI read (at boot time)
+ return 0x55;
+
+ case 0x2d:
+ // STI
+ return 0x00;
+
+ case 0x2b:
+ // STI read (at boot time)
+ return 0x55;
+
+ case 0x42:
+ // SIO
+ m_sioidxr++;
+ return m_sioarr[m_sioidxr-1];
+
+ default:
+ return 0xff;
+ }
+
+ return 0xff;
+}
+
+WRITE8_MEMBER( ts803_state::ts803_port_w )
+{
+ //printf("Port write [%2x] [%2x]\n",offset,data);
+
+ switch (offset)
+ {
+ case 0x00:
+ printf("Writing on system status switch\n");
+ break;
+
+ case 0x10:
+ data &= 3;
+ printf("Writing to diagnostic indicators 1 & 2: %X\n", data);
+ break;
+
+ case 0x11:
+ data &= 3;
+ printf("Writing to diagnostic indicators 3 & 4: %X\n", data);
+ break;
+
+ case 0x12:
+ data &= 3;
+ printf("RS-422 control: %X\n", data);
+ break;
+
+ case 0x13:
+ data &= 3;
+ if (BIT(data, 1)==0)
+ {
+ membank("bankr0")->set_entry(BIT(data, 0));
+ membank("bank4")->set_entry(BIT(data, 0));
+ }
+ else
+ printf("Error: unknown memory config: %X.\n", data);
+
+ break;
+
+ case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: case 0x28: case 0x29:
+ case 0x2A: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f:
+ //printf("STI device write [%2x]\n",data);
+ break;
+
+ default:
+ printf("unknown port [%2.2x] write of [%2.2x]\n",offset,data);
+ break;
+ }
+}
+
+MC6845_ON_UPDATE_ADDR_CHANGED( ts803_state::crtc_update_addr )
+{
+ //printf("CRTC::address update [%x]\n",address);
+}
+
+MC6845_UPDATE_ROW( ts803_state::crtc_update_row )
+{
+ const rgb_t *pens = m_palette->palette()->entry_list_raw();
+ UINT8 chr,gfx,inv;
+ UINT16 mem,x;
+ UINT32 *p = &bitmap.pix32(y);
+
+ for (x = 0; x < x_count; x++)
+ {
+ inv = (x == cursor_x) ? 0xff : 0;
+
+ if (m_graphics_mode)
+ {
+ mem = (ra*0x2000 + ma + x) & 0x7fff;
+ gfx = m_videoram[mem] ^ inv;
+ }
+ else
+ {
+ mem = 0x1800 + ((ma + x) & 0x7ff);
+ chr = m_videoram[mem];
+ gfx = (ra > 7) ? 0 : m_p_chargen[(chr<<3) | ((ra+1)&7)] ^ inv;
+ }
+
+ /* Display a scanline of a character (8 pixels) */
+ *p++ = pens[BIT(gfx, 7)];
+ *p++ = pens[BIT(gfx, 6)];
+ *p++ = pens[BIT(gfx, 5)];
+ *p++ = pens[BIT(gfx, 4)];
+ *p++ = pens[BIT(gfx, 3)];
+ *p++ = pens[BIT(gfx, 2)];
+ *p++ = pens[BIT(gfx, 1)];
+ *p++ = pens[BIT(gfx, 0)];
+ }
+}
+
+WRITE8_MEMBER( ts803_state::crtc_controlreg_w )
+{
+/*
+Bit 0 = 0 alpha mode
+ 1 graphics mode
+Bit 1 = 0 page 1 (alpha mode only)
+ 1 page 2 (alpha mode only)
+Bit 2 = 0 alpha memory access (round off)
+ 1 graphics memory access (normal CPU address)
+*/
+
+ //printf("CRTC::c4 write [%2x]\n",data);
+ m_graphics_mode = BIT(data, 0);
+}
+
+// baud rate generator for keyboard, 9600 baud.
+TIMER_DEVICE_CALLBACK_MEMBER( ts803_state::dart_tick )
+{
+ m_tick ^= 1;
+ m_dart->rxca_w(m_tick);
+ m_dart->txca_w(m_tick);
+ m_dart->txcb_w(m_tick); // needed to pass the test
+}
+
+void ts803_state::machine_start()
+{
+ //save these 2 so we can examine them in the debugger
+ save_pointer(NAME(m_videoram.get()), 0x8000);
+ save_pointer(NAME(m_56kram.get()), 0xc000);
+}
void ts803_state::machine_reset()
{
+ m_graphics_mode = false;
+ m_tick = 0;
+
+ m_sioarr[0]=0x00;
+ m_sioarr[1]=0xff;
+
+ //m_sti->reset();
+ membank("bankr0")->set_entry(0);
+ membank("bankw0")->set_entry(0);
+ membank("bank4")->set_entry(0);
}
+DRIVER_INIT_MEMBER( ts803_state, ts803 )
+{
+ m_videoram = std::make_unique<UINT8[]>(0x8000);
+ m_56kram = std::make_unique<UINT8[]>(0xc000);
+
+ m_p_chargen = memregion("chargen")->base();
+ UINT8 *rom = memregion("roms")->base();
+ membank("bankr0")->configure_entry(0, &rom[0]); // rom
+ membank("bankr0")->configure_entry(1, m_56kram.get()); // ram
+ membank("bankw0")->configure_entry(0, m_56kram.get()); // ram
+ membank("bank4")->configure_entry(0, m_videoram.get()); // vram
+ membank("bank4")->configure_entry(1, m_56kram.get()+0x4000); // ram
+}
+
+/* Interrupt priority:
+0: RS-422 option board (highest priority)
+1: Z80A DART (RS-232C serial I/O)
+2: Z80 STI (RS 232C modem port)
+3: FD 1793 floppy disk controller
+4: Winchester disk controller board
+5: Time-of-day clock
+Interrupts 0 through 2 are prioritized in a daisy-chain
+arrangement. Interrupts 3 through 5 are wired to the Z80 STI
+interrupt input pins. */
+static const z80_daisy_config daisy_chain[] =
+{
+ //{ "rs422" }, // not emulated
+ { "dart" },
+ //{ "sti" },
+ { nullptr }
+};
+
static MACHINE_CONFIG_START( ts803, ts803_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", Z80, 4000000)
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/4)
MCFG_CPU_PROGRAM_MAP(ts803_mem)
MCFG_CPU_IO_MAP(ts803_io)
+ MCFG_CPU_CONFIG(daisy_chain)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640,240)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", sy6545_1_device, screen_update)
+ MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
+
+ /* crtc */
+ MCFG_MC6845_ADD("crtc", SY6545_1, "screen", 13608000 / 8)
+ MCFG_MC6845_SHOW_BORDER_AREA(false)
+ MCFG_MC6845_CHAR_WIDTH(8)
+ MCFG_MC6845_UPDATE_ROW_CB(ts803_state, crtc_update_row)
+ MCFG_MC6845_ADDR_CHANGED_CB(ts803_state, crtc_update_addr)
+
+ //MCFG_DEVICE_ADD("sti", Z80STI, XTAL_16MHz/4) // STI baud rates are derived from XTAL_16MHz / 13
+ //MCFG_Z80STI_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+
+ MCFG_Z80DART_ADD("dart", XTAL_16MHz / 4, 0, 0, 0, 0 )
+ MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ //MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
+ //MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
+ //MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
+
+ MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "keyboard")
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE("dart", z80dart_device, rxa_w))
+ //MCFG_RS232_CTS_HANDLER(DEVWRITELINE("dart", z80dart_device, ctsa_w))
+
+ /* floppy disk */
+ MCFG_FD1793_ADD("fdc", XTAL_1MHz)
+ //MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE("sti", z80sti_device, i7_w)) // add when sti is in
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", ts803_floppies, "drive0", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", ts803_floppies, "drive1", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+
+ /* keyboard */
+ //MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
+ //MCFG_GENERIC_KEYBOARD_CB(WRITE8(ts803_state, keyboard_put))
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("dart_tick", ts803_state, dart_tick, attotime::from_hz(153600*2))
+
MACHINE_CONFIG_END
/* ROM definition */
ROM_START( ts803h )
- ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD( "180001-37 rev d 803 5 23 84", 0x0000, 0x2000, CRC(0aa658a7) SHA1(42d0a89c2ff9b6588cd88bdb1f800fac540dccbb) )
+ ROM_REGION(0x4000, "roms", ROMREGION_ERASEFF) // includes space for optional expansion rom
+ ROM_LOAD( "180001-37 rev d 803 5 23 84.a57", 0x0000, 0x2000, CRC(0aa658a7) SHA1(42d0a89c2ff9b6588cd88bdb1f800fac540dccbb) )
+
+ ROM_REGION(0x0100, "proms", 0)
+ ROM_LOAD( "8000134.a59", 0x0000, 0x0100, CRC(231fe6d6) SHA1(3c052ba4b74547e0e2451fa1ae67bbcb83a18bab) )
- ROM_REGION(0x10000, "proms", 0)
- ROM_LOAD( "8000134.bin", 0x000, 0x100, CRC(231fe6d6) SHA1(3c052ba4b74547e0e2451fa1ae67bbcb83a18bab) )
+ ROM_REGION(0x0800, "chargen", 0)
+ ROM_LOAD( "803h_vid.a119", 0x0000, 0x0800, CRC(d5ce2814) SHA1(ce527479464757223dffac384a85ab74b174952c) )
ROM_END
-/* Driver */
-/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */
-COMP( 19??, ts803h, 0, 0, ts803, ts803, driver_device, 0, "Televideo", "TS803H", MACHINE_IS_SKELETON )
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP(1983, ts803h, 0, 0, ts803, ts803, ts803_state, ts803, "Televideo", "TS803H", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp
index 1fb49ea6bd8..f157d504367 100644
--- a/src/mame/drivers/tsamurai.cpp
+++ b/src/mame/drivers/tsamurai.cpp
@@ -127,7 +127,7 @@ WRITE8_MEMBER(tsamurai_state::flip_screen_w)
WRITE8_MEMBER(tsamurai_state::coincounter_w)
{
- coin_counter_w(machine(), offset,data);
+ machine().bookkeeping().coin_counter_w(offset,data);
}
diff --git a/src/mame/drivers/ttchamp.cpp b/src/mame/drivers/ttchamp.cpp
index 75d3ca110bd..8021db87042 100644
--- a/src/mame/drivers/ttchamp.cpp
+++ b/src/mame/drivers/ttchamp.cpp
@@ -106,7 +106,7 @@ public:
int m_pic_latched;
int m_pic_writelatched;
- UINT8* m_bakram;
+ std::unique_ptr<UINT8[]> m_bakram;
UINT16 m_mainram[0x10000 / 2];
@@ -117,7 +117,6 @@ public:
UINT8* m_rom8;
DECLARE_WRITE16_MEMBER(paloff_w);
- DECLARE_WRITE16_MEMBER(pcup_prgbank_w);
DECLARE_WRITE16_MEMBER(paldat_w);
DECLARE_WRITE16_MEMBER(port10_w);
@@ -153,8 +152,8 @@ void ttchamp_state::machine_start()
m_picmodex = PIC_IDLE;
- m_bakram = auto_alloc_array(machine(), UINT8, 0x100);
- machine().device<nvram_device>("backram")->set_base(m_bakram, 0x100);
+ m_bakram = std::make_unique<UINT8[]>(0x100);
+ machine().device<nvram_device>("backram")->set_base(m_bakram.get(), 0x100);
save_item(NAME(m_paloff));
save_item(NAME(m_port10));
diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp
index 5276b0b915f..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
/***************************************************************************
@@ -126,7 +126,7 @@ WRITE8_MEMBER(tubep_state::tubep_LS259_w)
port b0: bit0 - coin 1 counter
port b1 bit0 - coin 2 counter
*/
- coin_counter_w(machine(), offset,data&1);
+ machine().bookkeeping().coin_counter_w(offset,data&1);
break;
case 2:
//something...
@@ -399,7 +399,7 @@ WRITE8_MEMBER(tubep_state::rjammer_LS259_w)
{
case 0:
case 1:
- coin_counter_w(machine(), offset,data&1); /* bit 0 = coin counter */
+ machine().bookkeeping().coin_counter_w(offset,data&1); /* bit 0 = coin counter */
break;
case 5:
//screen_flip_w(offset,data&1); /* bit 0 = screen flip, active high */
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/tunhunt.cpp b/src/mame/drivers/tunhunt.cpp
index cc567c6778e..d45840ddc43 100644
--- a/src/mame/drivers/tunhunt.cpp
+++ b/src/mame/drivers/tunhunt.cpp
@@ -70,9 +70,9 @@ WRITE8_MEMBER(tunhunt_state::control_w)
*/
m_control = data;
- coin_counter_w( machine(), 0,data&0x01 );
- coin_counter_w( machine(), 1,data&0x02 );
- set_led_status( machine(), 0, data&0x40 ); /* start */
+ machine().bookkeeping().coin_counter_w(0,data&0x01 );
+ machine().bookkeeping().coin_counter_w(1,data&0x02 );
+ output().set_led_value(0, data&0x40 ); /* start */
}
diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp
index 66caf369ea4..44807c31aca 100644
--- a/src/mame/drivers/turbo.cpp
+++ b/src/mame/drivers/turbo.cpp
@@ -295,9 +295,9 @@ WRITE8_MEMBER(turbo_state::subroc3d_ppi0b_w)
/* bit 2 = STLA (START LAMP) */
/* bit 3 = NOUSE (n/c) */
/* bit 4 = FLIP (not really flip, just offset) */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
- set_led_status(machine(), 0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ output().set_led_value(0, data & 0x04);
m_subroc3d_flip = (data >> 4) & 1;
}
@@ -342,9 +342,9 @@ WRITE8_MEMBER(turbo_state::buckrog_ppi1c_w)
/* bit 6 = STLA (START LAMP) */
/* bit 7 = NOUSE (BODY SONIC) */
m_buckrog_obch = data & 0x07;
- coin_counter_w(machine(), 0, data & 0x10);
- coin_counter_w(machine(), 1, data & 0x20);
- set_led_status(machine(), 0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
+ output().set_led_value(0, data & 0x40);
}
@@ -364,8 +364,8 @@ WRITE8_MEMBER( turbo_state::digit_w )
static const UINT8 ls48_map[16] =
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 };
- output_set_digit_value(m_i8279_scanlines * 2 + 0, ls48_map[data & 0x0f]);
- output_set_digit_value(m_i8279_scanlines * 2 + 1, ls48_map[(data>>4) & 0x0f]);
+ output().set_digit_value(m_i8279_scanlines * 2 + 0, ls48_map[data & 0x0f]);
+ output().set_digit_value(m_i8279_scanlines * 2 + 1, ls48_map[(data>>4) & 0x0f]);
}
/*************************************
@@ -405,13 +405,13 @@ WRITE8_MEMBER(turbo_state::turbo_coin_and_lamp_w)
switch (offset & 7)
{
case 0:
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
break;
case 1:
- coin_counter_w(machine(), 1, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 1);
break;
case 3:
- set_led_status(machine(), 0, data & 1);
+ output().set_led_value(0, data & 1);
break;
}
}
diff --git a/src/mame/drivers/turrett.cpp b/src/mame/drivers/turrett.cpp
index f4d9bef80a9..a37bf36cfe2 100644
--- a/src/mame/drivers/turrett.cpp
+++ b/src/mame/drivers/turrett.cpp
@@ -34,12 +34,12 @@
void turrett_state::machine_start()
{
// Allocate memory for the two 256kx16 banks of video RAM
- m_video_ram[0] = (UINT16*)auto_alloc_array(machine(), UINT16, VRAM_BANK_WORDS);
- m_video_ram[1] = (UINT16*)auto_alloc_array(machine(), UINT16, VRAM_BANK_WORDS);
+ m_video_ram[0] = std::make_unique<UINT16[]>(VRAM_BANK_WORDS);
+ m_video_ram[1] = std::make_unique<UINT16[]>(VRAM_BANK_WORDS);
// Register our state for saving
- save_pointer(NAME(m_video_ram[0]), VRAM_BANK_WORDS);
- save_pointer(NAME(m_video_ram[1]), VRAM_BANK_WORDS);
+ save_pointer(NAME(m_video_ram[0].get()), VRAM_BANK_WORDS);
+ save_pointer(NAME(m_video_ram[1].get()), VRAM_BANK_WORDS);
save_item(NAME(m_inputs_active));
save_item(NAME(m_last_pixel));
save_item(NAME(m_video_ctrl));
diff --git a/src/mame/drivers/tutankhm.cpp b/src/mame/drivers/tutankhm.cpp
index 8a4d65e4753..e1cf1a85242 100644
--- a/src/mame/drivers/tutankhm.cpp
+++ b/src/mame/drivers/tutankhm.cpp
@@ -106,7 +106,7 @@ WRITE8_MEMBER(tutankhm_state::sound_mute_w)
WRITE8_MEMBER(tutankhm_state::tutankhm_coin_counter_w)
{
- coin_counter_w(machine(), offset ^ 1, data);
+ machine().bookkeeping().coin_counter_w(offset ^ 1, data);
}
diff --git a/src/mame/drivers/tvcapcom.cpp b/src/mame/drivers/tvcapcom.cpp
new file mode 100644
index 00000000000..29e5508ce32
--- /dev/null
+++ b/src/mame/drivers/tvcapcom.cpp
@@ -0,0 +1,84 @@
+// license:BSD-3-Clause
+// copyright-holders:
+/*
+
+ Tatsunoko Vs Capcom : Cross Generation of Heroes
+
+ Wii derived hardware
+
+ -- todo, add more hardware info, seems to have been lost at some point
+
+*/
+
+#include "emu.h"
+#include "cpu/powerpc/ppc.h"
+
+class tvcapcom_state : public driver_device
+{
+public:
+ tvcapcom_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu") { }
+
+ virtual void machine_start() override;
+ virtual void video_start() override;
+ UINT32 screen_update_tvcapcom(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ required_device<ppc_device> m_maincpu;
+};
+
+static ADDRESS_MAP_START( gc_map, AS_PROGRAM, 64, tvcapcom_state )
+ADDRESS_MAP_END
+
+
+void tvcapcom_state::machine_start()
+{
+}
+
+void tvcapcom_state::video_start()
+{
+}
+
+
+UINT32 tvcapcom_state::screen_update_tvcapcom(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+static INPUT_PORTS_START( tvcapcom )
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tvcapcom, tvcapcom_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", PPC603, 72900000) // IBM PowerPC Broadway CPU @ 729 MHz ?
+ MCFG_CPU_PROGRAM_MAP(gc_map)
+ MCFG_DEVICE_DISABLE()
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_SCREEN_UPDATE_DRIVER(tvcapcom_state, screen_update_tvcapcom)
+
+ MCFG_PALETTE_ADD("palette", 65536)
+
+MACHINE_CONFIG_END
+
+ROM_START( tvcapcom )
+ // Bios??
+
+ ROM_REGION( 0x21000898, "flash", ROMREGION_ERASE) // it's possible all these dumps are bad
+
+ ROM_LOAD("tvc_read1.u14", 0x00, 0x21000898, CRC(51de96ac) SHA1(11a631a695140efa299e6fe9e68c0026dcebc766) ) // old dump, lots of data repeats, seems to cut out in the middle of a block?!
+
+ // alt attempts at dumping the same rom, same weird size as above.. the same CRC was read consistently each time, but then differed when read again later without being used inbetween, some blocks seem to get swapped around?!
+ ROM_LOAD("tvc_read2.u14", 0x00, 0x21000898, CRC(efb5911f) SHA1(555e58c2d3744cfe649b7424937c07a3ce675838))
+ ROM_LOAD("tvc_read3.u14", 0x00, 0x21000898, CRC(4a3f143d) SHA1(83bb7abc5f925df9c4e28de0298aed7b3b791e37))
+
+ROM_END
+
+GAME( 2008, tvcapcom, 0, tvcapcom, tvcapcom, driver_device, 0, ROT0, "Capcom", "Tatsunoko Vs Capcom : Cross Generation of Heroes", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/twin16.cpp b/src/mame/drivers/twin16.cpp
index ca384c658a0..d05c6371ccb 100644
--- a/src/mame/drivers/twin16.cpp
+++ b/src/mame/drivers/twin16.cpp
@@ -97,9 +97,9 @@ WRITE16_MEMBER(twin16_state::CPUA_register_w)
if (rising_edge & 0x10)
m_subcpu->set_input_line(M68K_IRQ_6, HOLD_LINE);
- coin_counter_w(machine(), 0, m_CPUA_register & 0x01);
- coin_counter_w(machine(), 1, m_CPUA_register & 0x02);
- coin_counter_w(machine(), 2, m_CPUA_register & 0x04);
+ machine().bookkeeping().coin_counter_w(0, m_CPUA_register & 0x01);
+ machine().bookkeeping().coin_counter_w(1, m_CPUA_register & 0x02);
+ machine().bookkeeping().coin_counter_w(2, m_CPUA_register & 0x04);
}
}
@@ -139,8 +139,8 @@ WRITE16_MEMBER(fround_state::fround_CPU_register_w)
if ((old & 0x08) == 0 && (m_CPUA_register & 0x08))
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
- coin_counter_w(machine(), 0, m_CPUA_register & 0x01);
- coin_counter_w(machine(), 1, m_CPUA_register & 0x02);
+ machine().bookkeeping().coin_counter_w(0, m_CPUA_register & 0x01);
+ machine().bookkeeping().coin_counter_w(1, m_CPUA_register & 0x02);
}
}
diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp
index b96e438101c..5b38a3dd019 100644
--- a/src/mame/drivers/twinkle.cpp
+++ b/src/mame/drivers/twinkle.cpp
@@ -493,24 +493,24 @@ WRITE8_MEMBER(twinkle_state::twinkle_io_w)
case 0x6f:
case 0x77:
case 0x7f:
- output_set_indexed_value( "led", ( m_io_offset - 7 ) / 8, asciicharset[ ( data ^ 0xff ) & 0x7f ] );
+ output().set_indexed_value( "led", ( m_io_offset - 7 ) / 8, asciicharset[ ( data ^ 0xff ) & 0x7f ] );
break;
case 0x87:
- output_set_indexed_value( "spotlight", 0, ( ~data >> 3 ) & 1 );
- output_set_indexed_value( "spotlight", 1, ( ~data >> 2 ) & 1 );
- output_set_indexed_value( "spotlight", 2, ( ~data >> 1 ) & 1 );
- output_set_indexed_value( "spotlight", 3, ( ~data >> 0 ) & 1 );
- output_set_indexed_value( "spotlight", 4, ( ~data >> 4 ) & 1 );
- output_set_indexed_value( "spotlight", 5, ( ~data >> 5 ) & 1 );
- output_set_indexed_value( "spotlight", 6, ( ~data >> 6 ) & 1 );
- output_set_indexed_value( "spotlight", 7, ( ~data >> 7 ) & 1 );
+ output().set_indexed_value( "spotlight", 0, ( ~data >> 3 ) & 1 );
+ output().set_indexed_value( "spotlight", 1, ( ~data >> 2 ) & 1 );
+ output().set_indexed_value( "spotlight", 2, ( ~data >> 1 ) & 1 );
+ output().set_indexed_value( "spotlight", 3, ( ~data >> 0 ) & 1 );
+ output().set_indexed_value( "spotlight", 4, ( ~data >> 4 ) & 1 );
+ output().set_indexed_value( "spotlight", 5, ( ~data >> 5 ) & 1 );
+ output().set_indexed_value( "spotlight", 6, ( ~data >> 6 ) & 1 );
+ output().set_indexed_value( "spotlight", 7, ( ~data >> 7 ) & 1 );
break;
case 0x8f:
- output_set_value( "neonlamp", ( ~data >> 0 ) & 1 );
- output_set_value( "unknown1", ( ~data >> 1 ) & 1 );
- output_set_value( "unknown2", ( ~data >> 2 ) & 1 );
+ output().set_value( "neonlamp", ( ~data >> 0 ) & 1 );
+ output().set_value( "unknown1", ( ~data >> 1 ) & 1 );
+ output().set_value( "unknown2", ( ~data >> 2 ) & 1 );
if( ( data & 0xf8 ) != 0xf8 )
{
diff --git a/src/mame/drivers/tx1.cpp b/src/mame/drivers/tx1.cpp
index f573d8f06a0..18b1c55e79c 100644
--- a/src/mame/drivers/tx1.cpp
+++ b/src/mame/drivers/tx1.cpp
@@ -413,16 +413,16 @@ READ8_MEMBER(tx1_state::ts_r)
WRITE8_MEMBER(tx1_state::tx1_coin_cnt_w)
{
- coin_counter_w(machine(), 0, data & 0x80);
- coin_counter_w(machine(), 1, data & 0x40);
-// coin_counter_w(machine(), 2, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
+// machine().bookkeeping().coin_counter_w(2, data & 0x40);
}
WRITE8_MEMBER(tx1_state::bb_coin_cnt_w)
{
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
-// coin_counter_w(machine(), 2, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+// machine().bookkeeping().coin_counter_w(2, data & 0x04);
}
WRITE8_MEMBER(tx1_state::tx1_ppi_latch_w)
diff --git a/src/mame/drivers/uapce.cpp b/src/mame/drivers/uapce.cpp
index f0d093a0ef4..8d95ceb1eb5 100644
--- a/src/mame/drivers/uapce.cpp
+++ b/src/mame/drivers/uapce.cpp
@@ -153,7 +153,7 @@ WRITE8_MEMBER(uapce_state::jamma_if_control_latch_w)
Pin 'z' is a normally ground connection, but on this board it is isolated from ground.
The wiring harness also has the corresponding wire separate from the others. */
- coin_counter_w(machine(), 0, BIT(data,5));
+ machine().bookkeeping().coin_counter_w(0, BIT(data,5));
/* D4 : Connects the START1 switch input from the JAMMA connector to the
"RUN" key input of the control pad multiplexer.
diff --git a/src/mame/drivers/ultratnk.cpp b/src/mame/drivers/ultratnk.cpp
index 82ae96aa553..50cc6adc43e 100644
--- a/src/mame/drivers/ultratnk.cpp
+++ b/src/mame/drivers/ultratnk.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Phil Stroffolino, Stefan Jokisch
/***************************************************************************
@@ -128,17 +128,17 @@ WRITE8_MEMBER(ultratnk_state::ultratnk_da_latch_w)
WRITE8_MEMBER(ultratnk_state::ultratnk_led_1_w)
{
- set_led_status(machine(), 0, offset & 1); /* left player start */
+ output().set_led_value(0, offset & 1); /* left player start */
}
WRITE8_MEMBER(ultratnk_state::ultratnk_led_2_w)
{
- set_led_status(machine(), 1, offset & 1); /* right player start */
+ output().set_led_value(1, offset & 1); /* right player start */
}
WRITE8_MEMBER(ultratnk_state::ultratnk_lockout_w)
{
- coin_lockout_global_w(machine(), ~offset & 1);
+ machine().bookkeeping().coin_lockout_global_w(~offset & 1);
}
@@ -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/ultrsprt.cpp b/src/mame/drivers/ultrsprt.cpp
index fc39612134f..b79c9784b1d 100644
--- a/src/mame/drivers/ultrsprt.cpp
+++ b/src/mame/drivers/ultrsprt.cpp
@@ -33,12 +33,9 @@ public:
required_shared_ptr<UINT32> m_workram;
required_device<palette_device> m_palette;
- DECLARE_READ32_MEMBER(vram_r);
- DECLARE_WRITE32_MEMBER(vram_w);
DECLARE_READ32_MEMBER(eeprom_r);
DECLARE_WRITE32_MEMBER(eeprom_w);
DECLARE_WRITE32_MEMBER(int_ack_w);
- DECLARE_CUSTOM_INPUT_MEMBER(flip_status_r);
UINT32 screen_update_ultrsprt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -47,7 +44,7 @@ protected:
virtual void machine_reset() override;
private:
- UINT8 *m_vram;
+ std::unique_ptr<UINT8[]> m_vram;
UINT32 m_cpu_vram_page;
};
@@ -56,7 +53,7 @@ private:
UINT32 ultrsprt_state::screen_update_ultrsprt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT8 *vram = m_vram + (m_cpu_vram_page ^ 1) * VRAM_PAGE_BYTES;
+ UINT8 *vram = m_vram.get() + (m_cpu_vram_page ^ 1) * VRAM_PAGE_BYTES;
for (int y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
@@ -120,7 +117,7 @@ WRITE32_MEMBER(ultrsprt_state::eeprom_w)
m_cpu_vram_page = vram_page;
}
- coin_counter_w(machine(), 0, data & 0x10000000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10000000);
m_audiocpu->set_input_line(INPUT_LINE_RESET, data & 0x80000000 ? CLEAR_LINE : ASSERT_LINE);
}
}
@@ -191,11 +188,11 @@ void ultrsprt_state::machine_start()
/* configure fast RAM regions for DRC */
m_maincpu->ppcdrc_add_fastram(0xff000000, 0xff01ffff, FALSE, m_workram);
- m_vram = auto_alloc_array(machine(), UINT8, VRAM_PAGE_BYTES * VRAM_PAGES);
+ m_vram = std::make_unique<UINT8[]>(VRAM_PAGE_BYTES * VRAM_PAGES);
- membank("vram")->configure_entries(0, VRAM_PAGES, m_vram, VRAM_PAGE_BYTES);
+ membank("vram")->configure_entries(0, VRAM_PAGES, m_vram.get(), VRAM_PAGE_BYTES);
- save_pointer(NAME(m_vram), VRAM_PAGE_BYTES * VRAM_PAGES);
+ save_pointer(NAME(m_vram.get()), VRAM_PAGE_BYTES * VRAM_PAGES);
save_item(NAME(m_cpu_vram_page));
}
diff --git a/src/mame/drivers/umipoker.cpp b/src/mame/drivers/umipoker.cpp
index 9cbd21aed21..8d4f49b7db7 100644
--- a/src/mame/drivers/umipoker.cpp
+++ b/src/mame/drivers/umipoker.cpp
@@ -254,12 +254,12 @@ WRITE16_MEMBER(umipoker_state::lamps_w)
--x- ---- ---- ---- START lamp.
*/
- output_set_lamp_value(0, (data >> 5) & 1); /* Lamp 0 - RIGHT */
- output_set_lamp_value(1, (data >> 9) & 1); /* Lamp 1 - TAKE */
- output_set_lamp_value(2, (data >> 10) & 1); /* Lamp 2 - D-UP */
- output_set_lamp_value(3, (data >> 11) & 1); /* Lamp 3 - BET */
- output_set_lamp_value(4, (data >> 12) & 1); /* Lamp 4 - LEFT/STOP */
- output_set_lamp_value(5, (data >> 13) & 1); /* Lamp 5 - START */
+ output().set_lamp_value(0, (data >> 5) & 1); /* Lamp 0 - RIGHT */
+ output().set_lamp_value(1, (data >> 9) & 1); /* Lamp 1 - TAKE */
+ output().set_lamp_value(2, (data >> 10) & 1); /* Lamp 2 - D-UP */
+ output().set_lamp_value(3, (data >> 11) & 1); /* Lamp 3 - BET */
+ output().set_lamp_value(4, (data >> 12) & 1); /* Lamp 4 - LEFT/STOP */
+ output().set_lamp_value(5, (data >> 13) & 1); /* Lamp 5 - START */
}
WRITE16_MEMBER(umipoker_state::umi_counters_w)
@@ -278,9 +278,9 @@ WRITE16_MEMBER(umipoker_state::umi_counters_w)
xxxx xxxx x--x xxx- Unknown / Not used.
*/
- coin_counter_w(machine(), 0, data & 0x20); /* COIN 1 */
- coin_counter_w(machine(), 1, data & 0x40); /* COIN 2 */
- coin_counter_w(machine(), 2, data & 0x01); /* PAYOUT */
+ machine().bookkeeping().coin_counter_w(0, data & 0x20); /* COIN 1 */
+ machine().bookkeeping().coin_counter_w(1, data & 0x40); /* COIN 2 */
+ machine().bookkeeping().coin_counter_w(2, data & 0x01); /* PAYOUT */
}
WRITE16_MEMBER(umipoker_state::saiyu_counters_w)
@@ -300,9 +300,9 @@ WRITE16_MEMBER(umipoker_state::saiyu_counters_w)
x--x xxx- xxxx xxxx Unknown / Not used.
*/
- coin_counter_w(machine(), 0, data & 0x2000); /* COIN 1 */
- coin_counter_w(machine(), 1, data & 0x4000); /* COIN 2 */
- coin_counter_w(machine(), 2, data & 0x0100); /* PAYOUT */
+ machine().bookkeeping().coin_counter_w(0, data & 0x2000); /* COIN 1 */
+ machine().bookkeeping().coin_counter_w(1, data & 0x4000); /* COIN 2 */
+ machine().bookkeeping().coin_counter_w(2, data & 0x0100); /* PAYOUT */
}
diff --git a/src/mame/drivers/undrfire.cpp b/src/mame/drivers/undrfire.cpp
index 43cdfa1751d..25e7dda6841 100644
--- a/src/mame/drivers/undrfire.cpp
+++ b/src/mame/drivers/undrfire.cpp
@@ -268,10 +268,10 @@ WRITE32_MEMBER(undrfire_state::undrfire_input_w)
{
if (ACCESSING_BITS_24_31)
{
- coin_lockout_w(machine(), 0,~data & 0x01000000);
- coin_lockout_w(machine(), 1,~data & 0x02000000);
- coin_counter_w(machine(), 0, data & 0x04000000);
- coin_counter_w(machine(), 1, data & 0x08000000);
+ machine().bookkeeping().coin_lockout_w(0,~data & 0x01000000);
+ machine().bookkeeping().coin_lockout_w(1,~data & 0x02000000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04000000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08000000);
m_coin_word = (data >> 16) &0xffff;
}
}
@@ -398,10 +398,10 @@ WRITE32_MEMBER(undrfire_state::motor_control_w)
if (ACCESSING_BITS_8_15)
{
- output_set_value("P1_lamp_start", (data >> 12) & 1 ); //p1 start
- output_set_value("P2_lamp_start", (data >> 13) & 1 ); //p2 start
- output_set_value("P1_gun_recoil", (data >> 14) & 1 ); //p1 recoil
- output_set_value("P2_gun_recoil", (data >> 15) & 1 ); //p2 recoil
+ output().set_value("P1_lamp_start", (data >> 12) & 1 ); //p1 start
+ output().set_value("P2_lamp_start", (data >> 13) & 1 ); //p2 start
+ output().set_value("P1_gun_recoil", (data >> 14) & 1 ); //p1 recoil
+ output().set_value("P2_gun_recoil", (data >> 15) & 1 ); //p2 recoil
}
}
@@ -411,13 +411,13 @@ WRITE32_MEMBER(undrfire_state::cbombers_cpua_ctrl_w)
........ ..xxxxxx Lamp 1-6 enables
........ .x...... Vibration
*/
- output_set_value("Lamp_1", data & 1 );
- output_set_value("Lamp_2", (data >> 1) & 1 );
- output_set_value("Lamp_3", (data >> 2) & 1 );
- output_set_value("Lamp_4", (data >> 3) & 1 );
- output_set_value("Lamp_5", (data >> 4) & 1 );
- output_set_value("Lamp_6", (data >> 5) & 1 );
- output_set_value("Wheel_vibration", (data >> 6) & 1 );
+ output().set_value("Lamp_1", data & 1 );
+ output().set_value("Lamp_2", (data >> 1) & 1 );
+ output().set_value("Lamp_3", (data >> 2) & 1 );
+ output().set_value("Lamp_4", (data >> 3) & 1 );
+ output().set_value("Lamp_5", (data >> 4) & 1 );
+ output().set_value("Lamp_6", (data >> 5) & 1 );
+ output().set_value("Wheel_vibration", (data >> 6) & 1 );
m_subcpu->set_input_line(INPUT_LINE_RESET, (data & 0x1000) ? CLEAR_LINE : ASSERT_LINE);
}
diff --git a/src/mame/drivers/unico.cpp b/src/mame/drivers/unico.cpp
index bb3b2c5c7d6..91c165fadd9 100644
--- a/src/mame/drivers/unico.cpp
+++ b/src/mame/drivers/unico.cpp
@@ -91,9 +91,9 @@ WRITE16_MEMBER(unico_state::zeropnt_sound_bank_w)
UINT8 *src = dst + 0x80000 + 0x20000 + 0x20000 * bank;
memcpy(dst + 0x20000, src, 0x20000);
- coin_counter_w(machine(), 0,data & 0x1000);
- set_led_status(machine(), 0,data & 0x0800); // Start 1
- set_led_status(machine(), 1,data & 0x0400); // Start 2
+ machine().bookkeeping().coin_counter_w(0,data & 0x1000);
+ output().set_led_value(0,data & 0x0800); // Start 1
+ output().set_led_value(1,data & 0x0400); // Start 2
}
}
@@ -186,9 +186,9 @@ WRITE32_MEMBER(unico_state::zeropnt2_leds_w)
{
if (ACCESSING_BITS_16_23)
{
- coin_counter_w(machine(), 0,data & 0x00010000);
- set_led_status(machine(), 0,data & 0x00800000); // Start 1
- set_led_status(machine(), 1,data & 0x00400000); // Start 2
+ machine().bookkeeping().coin_counter_w(0,data & 0x00010000);
+ output().set_led_value(0,data & 0x00800000); // Start 1
+ output().set_led_value(1,data & 0x00400000); // Start 2
}
}
diff --git a/src/mame/drivers/univac.cpp b/src/mame/drivers/univac.cpp
index 5192cc9e3a3..588b2a1bc39 100644
--- a/src/mame/drivers/univac.cpp
+++ b/src/mame/drivers/univac.cpp
@@ -44,7 +44,6 @@ public:
DECLARE_READ8_MEMBER(vram_r);
DECLARE_WRITE8_MEMBER(vram_w);
DECLARE_WRITE8_MEMBER(port43_w);
- INTERRUPT_GEN_MEMBER(vblank_irq);
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
private:
const UINT8 *m_p_chargen;
diff --git a/src/mame/drivers/unixpc.cpp b/src/mame/drivers/unixpc.cpp
index 586669cd7cf..1e08d3b6574 100644
--- a/src/mame/drivers/unixpc.cpp
+++ b/src/mame/drivers/unixpc.cpp
@@ -103,10 +103,10 @@ WRITE16_MEMBER( unixpc_state::misc_control_w )
{
logerror("misc_control_w: %04x\n", data);
- output_set_value("led_0", !BIT(data, 8));
- output_set_value("led_1", !BIT(data, 9));
- output_set_value("led_2", !BIT(data, 10));
- output_set_value("led_3", !BIT(data, 11));
+ output().set_value("led_0", !BIT(data, 8));
+ output().set_value("led_1", !BIT(data, 9));
+ output().set_value("led_2", !BIT(data, 10));
+ output().set_value("led_3", !BIT(data, 11));
}
diff --git a/src/mame/drivers/upscope.cpp b/src/mame/drivers/upscope.cpp
index 0bbebfb6d39..8454f0c135e 100644
--- a/src/mame/drivers/upscope.cpp
+++ b/src/mame/drivers/upscope.cpp
@@ -148,7 +148,7 @@ WRITE8_MEMBER( upscope_state::upscope_cia_1_porta_w )
case 0x02:
/* coin counter */
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
break;
case 0x03:
diff --git a/src/mame/drivers/usgames.cpp b/src/mame/drivers/usgames.cpp
index 892dfbc9649..ab4fd3878ae 100644
--- a/src/mame/drivers/usgames.cpp
+++ b/src/mame/drivers/usgames.cpp
@@ -45,11 +45,11 @@ WRITE8_MEMBER(usgames_state::rombank_w)
WRITE8_MEMBER(usgames_state::lamps1_w)
{
/* button lamps */
- set_led_status(machine(), 0,data & 0x01);
- set_led_status(machine(), 1,data & 0x02);
- set_led_status(machine(), 2,data & 0x04);
- set_led_status(machine(), 3,data & 0x08);
- set_led_status(machine(), 4,data & 0x10);
+ output().set_led_value(0,data & 0x01);
+ output().set_led_value(1,data & 0x02);
+ output().set_led_value(2,data & 0x04);
+ output().set_led_value(3,data & 0x08);
+ output().set_led_value(4,data & 0x10);
/* bit 5 toggles all the time - extra lamp? */
}
diff --git a/src/mame/drivers/vamphalf.cpp b/src/mame/drivers/vamphalf.cpp
index 98b5a6072a3..97640e10076 100644
--- a/src/mame/drivers/vamphalf.cpp
+++ b/src/mame/drivers/vamphalf.cpp
@@ -110,7 +110,7 @@ public:
int m_semicom_prot_idx;
int m_semicom_prot_which;
UINT16 m_finalgdr_backupram_bank;
- UINT8 *m_finalgdr_backupram;
+ std::unique_ptr<UINT8[]> m_finalgdr_backupram;
UINT8 m_qs1000_data;
DECLARE_WRITE16_MEMBER(flipscreen_w);
@@ -2891,9 +2891,9 @@ DRIVER_INIT_MEMBER(vamphalf_state,yorijori)
DRIVER_INIT_MEMBER(vamphalf_state,finalgdr)
{
m_finalgdr_backupram_bank = 1;
- m_finalgdr_backupram = auto_alloc_array(machine(), UINT8, 0x80*0x100);
+ m_finalgdr_backupram = std::make_unique<UINT8[]>(0x80*0x100);
m_maincpu->space(AS_PROGRAM).install_read_handler(0x005e874, 0x005e877, read32_delegate(FUNC(vamphalf_state::finalgdr_speedup_r), this));
- machine().device<nvram_device>("nvram")->set_base(m_finalgdr_backupram, 0x80*0x100);
+ machine().device<nvram_device>("nvram")->set_base(m_finalgdr_backupram.get(), 0x80*0x100);
m_palshift = 0;
m_flip_bit = 1; //?
@@ -2903,7 +2903,7 @@ DRIVER_INIT_MEMBER(vamphalf_state,finalgdr)
m_semicom_prot_data[1] = 3;
save_item(NAME(m_finalgdr_backupram_bank));
- save_pointer(NAME(m_finalgdr_backupram), 0x80*0x100);
+ save_pointer(NAME(m_finalgdr_backupram.get()), 0x80*0x100);
save_item(NAME(m_semicom_prot_idx));
save_item(NAME(m_semicom_prot_which));
}
@@ -2912,9 +2912,9 @@ DRIVER_INIT_MEMBER(vamphalf_state,mrkickera)
{
// backup ram isn't used
m_finalgdr_backupram_bank = 1;
- m_finalgdr_backupram = auto_alloc_array(machine(), UINT8, 0x80*0x100);
+ m_finalgdr_backupram = std::make_unique<UINT8[]>(0x80*0x100);
m_maincpu->space(AS_PROGRAM).install_read_handler(0x00701a4, 0x00701a7, read32_delegate(FUNC(vamphalf_state::mrkickera_speedup_r), this));
- machine().device<nvram_device>("nvram")->set_base(m_finalgdr_backupram, 0x80*0x100);
+ machine().device<nvram_device>("nvram")->set_base(m_finalgdr_backupram.get(), 0x80*0x100);
m_palshift = 0;
m_flip_bit = 1; //?
diff --git a/src/mame/drivers/vboy.cpp b/src/mame/drivers/vboy.cpp
index ba2625ef020..1524849c555 100644
--- a/src/mame/drivers/vboy.cpp
+++ b/src/mame/drivers/vboy.cpp
@@ -182,16 +182,16 @@ public:
DECLARE_WRITE8_MEMBER(lfb1_w);
DECLARE_WRITE8_MEMBER(rfb0_w);
DECLARE_WRITE8_MEMBER(rfb1_w);
- UINT16 *m_font;
- UINT16 *m_bgmap;
- UINT8 *m_l_frame_0;
- UINT8 *m_l_frame_1;
- UINT8 *m_r_frame_0;
- UINT8 *m_r_frame_1;
+ std::unique_ptr<UINT16[]> m_font;
+ std::unique_ptr<UINT16[]> m_bgmap;
+ std::unique_ptr<UINT8[]> m_l_frame_0;
+ std::unique_ptr<UINT8[]> m_l_frame_1;
+ std::unique_ptr<UINT8[]> m_r_frame_0;
+ std::unique_ptr<UINT8[]> m_r_frame_1;
vboy_regs_t m_vboy_regs;
vip_regs_t m_vip_regs;
vboy_timer_t m_vboy_timer;
- INT32 *m_ovr_tempdraw_map;
+ std::unique_ptr<INT32[]> m_ovr_tempdraw_map;
UINT16 m_frame_count;
UINT8 m_displayfb;
UINT8 m_drawfb;
@@ -219,24 +219,22 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(timer_main_tick);
TIMER_DEVICE_CALLBACK_MEMBER(timer_pad_tick);
TIMER_DEVICE_CALLBACK_MEMBER(vboy_scanlineL);
- TIMER_DEVICE_CALLBACK_MEMBER(vboy_scanlineR);
};
void vboy_state::video_start()
{
// Allocate memory for temporary screens
- m_ovr_tempdraw_map = auto_alloc_array_clear(machine(), INT32, 0x40);
+ m_ovr_tempdraw_map = make_unique_clear<INT32[]>(0x40);
// Allocate memory for framebuffers
- m_l_frame_0 = auto_alloc_array_clear(machine(), UINT8, 0x6000);
- m_l_frame_1 = auto_alloc_array_clear(machine(), UINT8, 0x6000);
- m_r_frame_0 = auto_alloc_array_clear(machine(), UINT8, 0x6000);
- m_r_frame_1 = auto_alloc_array_clear(machine(), UINT8, 0x6000);
-
- m_font = auto_alloc_array_clear(machine(), UINT16, (0x8000 >> 1)*4 * 2);
- m_bgmap = auto_alloc_array(machine(), UINT16, 0x20000 >> 1);
- memset(m_bgmap, 0, sizeof(UINT16) * (0x20000 >> 1));
+ m_l_frame_0 = make_unique_clear<UINT8[]>(0x6000);
+ m_l_frame_1 = make_unique_clear<UINT8[]>(0x6000);
+ m_r_frame_0 = make_unique_clear<UINT8[]>(0x6000);
+ m_r_frame_1 = make_unique_clear<UINT8[]>(0x6000);
+
+ m_font = make_unique_clear<UINT16[]>((0x8000 >> 1)*4 * 2);
+ m_bgmap = make_unique_clear<UINT16[]>(0x20000 >> 1);
}
void vboy_state::put_obj(bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y, UINT16 code, UINT8 pal)
diff --git a/src/mame/drivers/vcombat.cpp b/src/mame/drivers/vcombat.cpp
index baf394599a9..ad72f7770b8 100644
--- a/src/mame/drivers/vcombat.cpp
+++ b/src/mame/drivers/vcombat.cpp
@@ -105,8 +105,8 @@ public:
m_vid_1(*this, "vid_1"),
m_dac(*this, "dac") { }
- UINT16* m_m68k_framebuffer[2];
- UINT16* m_i860_framebuffer[2][2];
+ std::unique_ptr<UINT16[]> m_m68k_framebuffer[2];
+ std::unique_ptr<UINT16[]> m_i860_framebuffer[2][2];
required_device<tlc34076_device> m_tlc34076;
required_shared_ptr<UINT16> m_framebuffer_ctrl;
int m_crtc_select;
@@ -142,8 +142,8 @@ static UINT32 update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const r
int y;
const rgb_t *const pens = state->m_tlc34076->get_pens();
- UINT16 *m68k_buf = state->m_m68k_framebuffer[(*state->m_framebuffer_ctrl & 0x20) ? 1 : 0];
- UINT16 *i860_buf = state->m_i860_framebuffer[index][0];
+ UINT16 *m68k_buf = state->m_m68k_framebuffer[(*state->m_framebuffer_ctrl & 0x20) ? 1 : 0].get();
+ UINT16 *i860_buf = state->m_i860_framebuffer[index][0].get();
/* TODO: It looks like the leftmost chunk of the ground should really be on the right side? */
/* But the i860 draws the background correctly, so it may be an original game issue. */
@@ -284,7 +284,7 @@ WRITE64_MEMBER(vcombat_state::v0_fb_w)
{
/* The frame buffer seems to sit on a 32-bit data bus, while the
i860 uses a 64-bit data bus. Adjust accordingly. */
- char *p = (char *)(m_i860_framebuffer[0][0]);
+ char *p = (char *)(m_i860_framebuffer[0][0].get());
int m = mem_mask;
int o = (offset << 2);
if (m & 0xff000000) {
@@ -307,7 +307,7 @@ WRITE64_MEMBER(vcombat_state::v1_fb_w)
{
/* The frame buffer seems to sit on a 32-bit data bus, while the
i860 uses a 64-bit data bus. Adjust accordingly. */
- char *p = (char *)(m_i860_framebuffer[1][0]);
+ char *p = (char *)(m_i860_framebuffer[1][0].get());
int m = mem_mask;
int o = (offset << 2);
if (m & 0xff000000) {
@@ -434,16 +434,16 @@ DRIVER_INIT_MEMBER(vcombat_state,vcombat)
UINT8 *ROM = memregion("maincpu")->base();
/* Allocate the 68000 framebuffers */
- m_m68k_framebuffer[0] = auto_alloc_array(machine(), UINT16, 0x8000);
- m_m68k_framebuffer[1] = auto_alloc_array(machine(), UINT16, 0x8000);
+ m_m68k_framebuffer[0] = std::make_unique<UINT16[]>(0x8000);
+ m_m68k_framebuffer[1] = std::make_unique<UINT16[]>(0x8000);
/* First i860 */
- m_i860_framebuffer[0][0] = auto_alloc_array(machine(), UINT16, 0x8000);
- m_i860_framebuffer[0][1] = auto_alloc_array(machine(), UINT16, 0x8000);
+ m_i860_framebuffer[0][0] = std::make_unique<UINT16[]>(0x8000);
+ m_i860_framebuffer[0][1] = std::make_unique<UINT16[]>(0x8000);
/* Second i860 */
- m_i860_framebuffer[1][0] = auto_alloc_array(machine(), UINT16, 0x8000);
- m_i860_framebuffer[1][1] = auto_alloc_array(machine(), UINT16, 0x8000);
+ m_i860_framebuffer[1][0] = std::make_unique<UINT16[]>(0x8000);
+ m_i860_framebuffer[1][1] = std::make_unique<UINT16[]>(0x8000);
/* pc==4016 : jump 4038 ... There's something strange about how it waits at 402e (interrupts all masked out)
I think what is happening here is that M0 snags the first time
@@ -464,12 +464,12 @@ DRIVER_INIT_MEMBER(vcombat_state,vcombat)
DRIVER_INIT_MEMBER(vcombat_state,shadfgtr)
{
/* Allocate th 68000 frame buffers */
- m_m68k_framebuffer[0] = auto_alloc_array(machine(), UINT16, 0x8000);
- m_m68k_framebuffer[1] = auto_alloc_array(machine(), UINT16, 0x8000);
+ m_m68k_framebuffer[0] = std::make_unique<UINT16[]>(0x8000);
+ m_m68k_framebuffer[1] = std::make_unique<UINT16[]>(0x8000);
/* Only one i860 */
- m_i860_framebuffer[0][0] = auto_alloc_array(machine(), UINT16, 0x8000);
- m_i860_framebuffer[0][1] = auto_alloc_array(machine(), UINT16, 0x8000);
+ m_i860_framebuffer[0][0] = std::make_unique<UINT16[]>(0x8000);
+ m_i860_framebuffer[0][1] = std::make_unique<UINT16[]>(0x8000);
m_i860_framebuffer[1][0] = nullptr;
m_i860_framebuffer[1][1] = nullptr;
}
diff --git a/src/mame/drivers/vcs80.cpp b/src/mame/drivers/vcs80.cpp
index 7903d237359..1e4540d4643 100644
--- a/src/mame/drivers/vcs80.cpp
+++ b/src/mame/drivers/vcs80.cpp
@@ -179,7 +179,7 @@ WRITE8_MEMBER( vcs80_state::pio_pb_w )
/* skip middle digit */
if (digit > 3) digit++;
- output_set_digit_value(8 - digit, led_data);
+ output().set_digit_value(8 - digit, led_data);
}
/* Z80 Daisy Chain */
diff --git a/src/mame/drivers/vd.cpp b/src/mame/drivers/vd.cpp
index 17e37c2d8d1..f2d17a2d6fa 100644
--- a/src/mame/drivers/vd.cpp
+++ b/src/mame/drivers/vd.cpp
@@ -129,11 +129,11 @@ WRITE8_MEMBER( vd_state::col_w )
if (data != 0x3f)
{
data &= 7;
- output_set_digit_value(data + 11, segment[0]);
- output_set_digit_value(data + 21, segment[1]);
- output_set_digit_value(data + 31, segment[2]);
- output_set_digit_value(data + 41, segment[3]);
- output_set_digit_value(data + 51, segment[4]);
+ output().set_digit_value(data + 11, segment[0]);
+ output().set_digit_value(data + 21, segment[1]);
+ output().set_digit_value(data + 31, segment[2]);
+ output().set_digit_value(data + 41, segment[3]);
+ output().set_digit_value(data + 51, segment[4]);
}
}
diff --git a/src/mame/drivers/vegaeo.cpp b/src/mame/drivers/vegaeo.cpp
index ff3c3ab668d..9d366595ed8 100644
--- a/src/mame/drivers/vegaeo.cpp
+++ b/src/mame/drivers/vegaeo.cpp
@@ -26,7 +26,7 @@ public:
vegaeo_state(const machine_config &mconfig, device_type type, const char *tag)
: eolith_state(mconfig, type, tag) { }
- UINT32 *m_vega_vram;
+ std::unique_ptr<UINT32[]> m_vega_vram;
UINT8 m_vega_vbuffer;
DECLARE_WRITE32_MEMBER(vega_vram_w);
@@ -177,8 +177,8 @@ INPUT_PORTS_END
VIDEO_START_MEMBER(vegaeo_state,vega)
{
- m_vega_vram = auto_alloc_array(machine(), UINT32, 0x14000*2/4);
- save_pointer(NAME(m_vega_vram), 0x14000*2/4);
+ m_vega_vram = std::make_unique<UINT32[]>(0x14000*2/4);
+ save_pointer(NAME(m_vega_vram.get()), 0x14000*2/4);
save_item(NAME(m_vega_vbuffer));
}
diff --git a/src/mame/drivers/vendetta.cpp b/src/mame/drivers/vendetta.cpp
index cee29989869..04795e83708 100644
--- a/src/mame/drivers/vendetta.cpp
+++ b/src/mame/drivers/vendetta.cpp
@@ -167,8 +167,8 @@ void vendetta_state::vendetta_video_banking( int select )
WRITE8_MEMBER(vendetta_state::vendetta_5fe0_w)
{
/* bit 0,1 coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 = BRAMBK ?? */
diff --git a/src/mame/drivers/vicdual.cpp b/src/mame/drivers/vicdual.cpp
index d330de2587e..66b9577f1eb 100644
--- a/src/mame/drivers/vicdual.cpp
+++ b/src/mame/drivers/vicdual.cpp
@@ -112,8 +112,8 @@ INPUT_CHANGED_MEMBER(vicdual_state::coin_changed)
if (newval)
{
/* increment the coin counter */
- coin_counter_w(machine(), 0, 1);
- coin_counter_w(machine(), 0, 0);
+ machine().bookkeeping().coin_counter_w(0, 1);
+ machine().bookkeeping().coin_counter_w(0, 0);
coin_in();
}
@@ -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;
@@ -2301,8 +2300,8 @@ INPUT_CHANGED_MEMBER(vicdual_state::nsub_coin_in)
}
// increment coin counter
- coin_counter_w(machine(), which, 1);
- coin_counter_w(machine(), which, 0);
+ machine().bookkeeping().coin_counter_w(which, 1);
+ machine().bookkeeping().coin_counter_w(which, 0);
break;
// service coin
@@ -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/victory.cpp b/src/mame/drivers/victory.cpp
index fd1f7fcc1db..439aaf32701 100644
--- a/src/mame/drivers/victory.cpp
+++ b/src/mame/drivers/victory.cpp
@@ -112,10 +112,10 @@
WRITE8_MEMBER(victory_state::lamp_control_w)
{
- set_led_status(machine(), 0, data & 0x80);
- set_led_status(machine(), 1, data & 0x40);
- set_led_status(machine(), 2, data & 0x20);
- set_led_status(machine(), 3, data & 0x10);
+ output().set_led_value(0, data & 0x80);
+ output().set_led_value(1, data & 0x40);
+ output().set_led_value(2, data & 0x20);
+ output().set_led_value(3, data & 0x10);
}
diff --git a/src/mame/drivers/videopin.cpp b/src/mame/drivers/videopin.cpp
index 36f089ed347..160a1b0307a 100644
--- a/src/mame/drivers/videopin.cpp
+++ b/src/mame/drivers/videopin.cpp
@@ -146,13 +146,13 @@ WRITE8_MEMBER(videopin_state::led_w)
{ "LED19", "LED14", "LED12", "-" }
};
- output_set_value(matrix[i][0], (data >> 0) & 1);
- output_set_value(matrix[i][1], (data >> 1) & 1);
- output_set_value(matrix[i][2], (data >> 2) & 1);
- output_set_value(matrix[i][3], (data >> 3) & 1);
+ output().set_value(matrix[i][0], (data >> 0) & 1);
+ output().set_value(matrix[i][1], (data >> 1) & 1);
+ output().set_value(matrix[i][2], (data >> 2) & 1);
+ output().set_value(matrix[i][3], (data >> 3) & 1);
if (i == 7)
- set_led_status(machine(), 0, data & 8); /* start button */
+ output().set_led_value(0, data & 8); /* start button */
m_maincpu->set_input_line(0, CLEAR_LINE);
}
@@ -174,7 +174,7 @@ WRITE8_MEMBER(videopin_state::out1_w)
if (m_mask)
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
- coin_lockout_global_w(machine(), ~data & 0x08);
+ machine().bookkeeping().coin_lockout_global_w(~data & 0x08);
/* Convert octave data to divide value and write to sound */
m_discrete->write(space, VIDEOPIN_OCTAVE_DATA, (0x01 << (~data & 0x07)) & 0xfe);
@@ -192,7 +192,7 @@ WRITE8_MEMBER(videopin_state::out2_w)
/* D6 => BELL */
/* D7 => ATTRACT */
- coin_counter_w(machine(), 0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
m_discrete->write(space, VIDEOPIN_BELL_EN, data & 0x40); // Bell
m_discrete->write(space, VIDEOPIN_BONG_EN, data & 0x20); // Bong
diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp
index b3f925fd31c..e73ff6d5883 100644
--- a/src/mame/drivers/videopkr.cpp
+++ b/src/mame/drivers/videopkr.cpp
@@ -366,6 +366,7 @@ public:
DECLARE_PALETTE_INIT(fortune1);
UINT32 screen_update_videopkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(sound_t1_callback);
+ void count_7dig(unsigned long data, UINT8 index);
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
required_device<dac_device> m_dac;
@@ -402,7 +403,7 @@ static UINT8 dec_7seg(int data)
}
/* Display a seven digit counter on layout - Index points to less significant digit*/
-static void count_7dig(unsigned long data, UINT8 index)
+void videopkr_state::count_7dig(unsigned long data, UINT8 index)
{
UINT8 i;
char strn[8];
@@ -410,7 +411,7 @@ static void count_7dig(unsigned long data, UINT8 index)
for (i = 0; i < 7; i++)
{
- output_set_digit_value(index+i, dec_7seg((strn[6 - i] | 0x10) - 0x30));
+ output().set_digit_value(index+i, dec_7seg((strn[6 - i] | 0x10) - 0x30));
}
}
@@ -664,14 +665,14 @@ WRITE8_MEMBER(videopkr_state::videopkr_io_w)
case 0xef: /* Port 2.4 */
{
- output_set_lamp_value(0, (data & 1)); /* L_1 */
- output_set_lamp_value(1, ((data >> 1)& 1)); /* L_2 */
- output_set_lamp_value(2, ((data >> 2) & 1)); /* L_3 */
- output_set_lamp_value(3, ((data >> 3) & 1)); /* L_4 */
- output_set_lamp_value(4, ((data >> 4) & 1)); /* Coin */
- output_set_lamp_value(5, ((data >> 5) & 1)); /* Hopper_1 */
- output_set_lamp_value(6, ((data >> 6) & 1)); /* Hopper_2 */
- output_set_lamp_value(7, ((data >> 7) & 1)); /* Diverter */
+ output().set_lamp_value(0, (data & 1)); /* L_1 */
+ output().set_lamp_value(1, ((data >> 1)& 1)); /* L_2 */
+ output().set_lamp_value(2, ((data >> 2) & 1)); /* L_3 */
+ output().set_lamp_value(3, ((data >> 3) & 1)); /* L_4 */
+ output().set_lamp_value(4, ((data >> 4) & 1)); /* Coin */
+ output().set_lamp_value(5, ((data >> 5) & 1)); /* Hopper_1 */
+ output().set_lamp_value(6, ((data >> 6) & 1)); /* Hopper_2 */
+ output().set_lamp_value(7, ((data >> 7) & 1)); /* Diverter */
m_p24_data = data;
m_hp_1 = (~m_p24_data >> 6) & 1;
m_hp_2 = (~m_p24_data >> 5) & 1;
@@ -701,12 +702,12 @@ WRITE8_MEMBER(videopkr_state::videopkr_p1_data_w)
{
m_p1 = data;
- output_set_lamp_value(8, (data & 1)); /* Aux_0 - Jackpot mech. counter (Baby Games)*/
- output_set_lamp_value(9, ((data >> 1) & 1)); /* Aux_1 - */
- output_set_lamp_value(10, ((data >> 2) & 1)); /* Aux_2 - */
- output_set_lamp_value(11, ((data >> 3) & 1)); /* Aux_3 - */
- output_set_lamp_value(12, ((data >> 4) & 1)); /* Aux_4 - Bell */
- output_set_lamp_value(13, ((data >> 5) & 1)); /* Aux_5 - /CIO */
+ output().set_lamp_value(8, (data & 1)); /* Aux_0 - Jackpot mech. counter (Baby Games)*/
+ output().set_lamp_value(9, ((data >> 1) & 1)); /* Aux_1 - */
+ output().set_lamp_value(10, ((data >> 2) & 1)); /* Aux_2 - */
+ output().set_lamp_value(11, ((data >> 3) & 1)); /* Aux_3 - */
+ output().set_lamp_value(12, ((data >> 4) & 1)); /* Aux_4 - Bell */
+ output().set_lamp_value(13, ((data >> 5) & 1)); /* Aux_5 - /CIO */
m_jckp = m_p1 & 1;
@@ -908,9 +909,9 @@ WRITE8_MEMBER(videopkr_state::baby_sound_p3_w)
m_sbp3 = data;
lmp_ports = m_sbp3 >> 1 & 0x07;
- output_set_value("TOP_1", (lmp_ports >> 0) & 1);
- output_set_value("TOP_2", (lmp_ports >> 1) & 1);
- output_set_value("TOP_3", (lmp_ports >> 2) & 1);
+ output().set_value("TOP_1", (lmp_ports >> 0) & 1);
+ output().set_value("TOP_2", (lmp_ports >> 1) & 1);
+ output().set_value("TOP_3", (lmp_ports >> 2) & 1);
if (!(m_sbp3 & 0x10))
{
diff --git a/src/mame/drivers/vigilant.cpp b/src/mame/drivers/vigilant.cpp
index 3539dd77587..12f0dc881bd 100644
--- a/src/mame/drivers/vigilant.cpp
+++ b/src/mame/drivers/vigilant.cpp
@@ -49,8 +49,8 @@ WRITE8_MEMBER(vigilant_state::vigilant_out2_w)
/* D2 = COB1 = Coin Counter B? */
/* The hardware has both coin counters hooked up to a single meter. */
- coin_counter_w(machine(), 0,data & 0x02);
- coin_counter_w(machine(), 1,data & 0x04);
+ machine().bookkeeping().coin_counter_w(0,data & 0x02);
+ machine().bookkeeping().coin_counter_w(1,data & 0x04);
// data & 0x01 cocktail mode
}
@@ -62,8 +62,8 @@ WRITE8_MEMBER(vigilant_state::kikcubic_coin_w)
/* bit 1 is used but unknown */
/* bits 4/5 are coin counters */
- coin_counter_w(machine(), 0,data & 0x10);
- coin_counter_w(machine(), 1,data & 0x20);
+ machine().bookkeeping().coin_counter_w(0,data & 0x10);
+ machine().bookkeeping().coin_counter_w(1,data & 0x20);
}
diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp
index aa7b5b12fe4..bdac38aecc0 100644
--- a/src/mame/drivers/vii.cpp
+++ b/src/mame/drivers/vii.cpp
@@ -113,8 +113,6 @@ public:
DECLARE_WRITE16_MEMBER(audio_w);
DECLARE_READ16_MEMBER(io_r);
DECLARE_WRITE16_MEMBER(io_w);
- DECLARE_WRITE16_MEMBER(rowscroll_w);
- DECLARE_WRITE16_MEMBER(spriteram_w);
DECLARE_READ16_MEMBER(rom_r);
required_shared_ptr<UINT16> m_p_ram;
required_shared_ptr<UINT16> m_p_rowscroll;
diff --git a/src/mame/drivers/vip.cpp b/src/mame/drivers/vip.cpp
index c9ca8d323ac..9c8c88c4156 100644
--- a/src/mame/drivers/vip.cpp
+++ b/src/mame/drivers/vip.cpp
@@ -459,7 +459,7 @@ READ_LINE_MEMBER( vip_state::ef1_r )
READ_LINE_MEMBER( vip_state::ef2_r )
{
- set_led_status(machine(), LED_TAPE, m_cassette->input() > 0);
+ output().set_led_value(LED_TAPE, m_cassette->input() > 0);
return (m_cassette->input() < 0) ? ASSERT_LINE : CLEAR_LINE;
}
@@ -480,7 +480,7 @@ WRITE_LINE_MEMBER( vip_state::q_w )
m_beeper->write(machine().driver_data()->generic_space(), NODE_01, state);
// Q led
- set_led_status(machine(), LED_Q, state);
+ output().set_led_value(LED_Q, state);
// tape output
m_cassette->output(state ? 1.0 : -1.0);
@@ -617,7 +617,7 @@ void vip_state::machine_start()
}
// turn on power LED
- set_led_status(machine(), LED_POWER, 1);
+ output().set_led_value(LED_POWER, 1);
// reset sound
m_beeper->write(machine().driver_data()->generic_space(), NODE_01, 0);
diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp
index 9fee0bf3ff1..c10c28e55d0 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")
{
}
@@ -421,7 +422,6 @@ public:
INTERRUPT_GEN_MEMBER(viper_vblank);
TIMER_CALLBACK_MEMBER(epic_global_timer_callback);
TIMER_CALLBACK_MEMBER(ds2430_timer_callback);
- const char* epic_get_register_name(UINT32 reg);
void epic_update_interrupts();
void mpc8240_interrupt(int irq);
void mpc8240_epic_init();
@@ -430,6 +430,7 @@ 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)
@@ -440,6 +441,7 @@ UINT32 viper_state::screen_update_viper(screen_device &screen, bitmap_rgb32 &bit
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;
@@ -458,12 +460,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);
}
@@ -472,7 +478,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);
}
/*****************************************************************************/
@@ -1659,41 +1668,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);
}
@@ -2233,6 +2236,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))
@@ -2496,6 +2501,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))
@@ -2503,6 +2510,20 @@ ROM_START(wcombatk) //*
DISK_IMAGE( "c22c02", 0, BAD_DUMP SHA1(8bd1dfbf926ad5b28fa7dafd7e31c475325ec569) )
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) )
+
+ DISK_REGION( "ata:0:hdd:image" )
+ // CHD image provided had evidence of being altered by Windows, probably was put in a Windows machine without write protection hardware (bad idea)
+ // label was the same as this, so this should be a clean and correct version.
+ DISK_IMAGE( "c22d02", 0, SHA1(69a24c9e36b073021d55bec27d89fcc0254a60cc) ) // chs 978,8,3
+ROM_END
+
ROM_START(wcombatj) //*
VIPER_BIOS
@@ -2635,8 +2656,9 @@ GAME(2001, thrild2a, thrild2, viper, viper, viper_state, vipercf, ROT0, "Ko
GAME(2001, thrild2c, thrild2, viper, viper, viper_state, vipercf, ROT0, "Konami", "Thrill Drive 2 (ver EAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
GAME(2002, tsurugi, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Tsurugi (ver EAB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
GAME(2002, tsurugij, tsurugi, viper, viper, viper_state, vipercf, ROT0, "Konami", "Tsurugi (ver JAC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
-GAME(2002, wcombat, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat (ver UAA?)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
-GAME(2002, wcombatk, wcombat, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat (ver KBC)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+GAME(2002, wcombat, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat (ver AAD:B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+GAME(2002, wcombatk, wcombat, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat (ver KBC:B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+GAME(2002, wcombatu, wcombat, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat / Warzaid (ver UCD:B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
GAME(2002, wcombatj, wcombat, viper, viper, viper_state, vipercf, ROT0, "Konami", "World Combat (ver JAA)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
GAME(2002, xtrial, kviper, viper, viper, viper_state, vipercf, ROT0, "Konami", "Xtrial Racing (ver JAB)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/vk100.cpp b/src/mame/drivers/vk100.cpp
index f18d9726cd3..abe616047a8 100644
--- a/src/mame/drivers/vk100.cpp
+++ b/src/mame/drivers/vk100.cpp
@@ -546,13 +546,13 @@ WRITE8_MEMBER(vk100_state::vgEX)
/* port 0x68: "KBDW" d7 is beeper, d6 is keyclick, d5-d0 are keyboard LEDS */
WRITE8_MEMBER(vk100_state::KBDW)
{
- output_set_value("online_led",BIT(data, 5) ? 1 : 0);
- output_set_value("local_led", BIT(data, 5) ? 0 : 1);
- output_set_value("noscroll_led",BIT(data, 4) ? 1 : 0);
- output_set_value("basic_led", BIT(data, 3) ? 1 : 0);
- output_set_value("hardcopy_led", BIT(data, 2) ? 1 : 0);
- output_set_value("l1_led", BIT(data, 1) ? 1 : 0);
- output_set_value("l2_led", BIT(data, 0) ? 1 : 0);
+ output().set_value("online_led",BIT(data, 5) ? 1 : 0);
+ output().set_value("local_led", BIT(data, 5) ? 0 : 1);
+ output().set_value("noscroll_led",BIT(data, 4) ? 1 : 0);
+ output().set_value("basic_led", BIT(data, 3) ? 1 : 0);
+ output().set_value("hardcopy_led", BIT(data, 2) ? 1 : 0);
+ output().set_value("l1_led", BIT(data, 1) ? 1 : 0);
+ output().set_value("l2_led", BIT(data, 0) ? 1 : 0);
#ifdef LED_VERBOSE
if (BIT(data, 6)) logerror("kb keyclick bit 6 set: not emulated yet (multivibrator)!\n");
#endif
@@ -918,14 +918,13 @@ 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);
- output_set_value("basic_led", 1);
- output_set_value("hardcopy_led", 1);
- output_set_value("l1_led", 1);
- output_set_value("l2_led", 1);
+ output().set_value("online_led",1);
+ output().set_value("local_led", 0);
+ output().set_value("noscroll_led",1);
+ output().set_value("basic_led", 1);
+ output().set_value("hardcopy_led", 1);
+ output().set_value("l1_led", 1);
+ output().set_value("l2_led", 1);
m_vsync = 0;
m_dir_a6 = 1;
m_cout = 0;
@@ -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/vlc.cpp b/src/mame/drivers/vlc.cpp
index 303062661ee..9af970eb247 100644
--- a/src/mame/drivers/vlc.cpp
+++ b/src/mame/drivers/vlc.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Yves
/* vlc.c
Multi-games from VLC Nevada 1995
diff --git a/src/mame/drivers/voyager.cpp b/src/mame/drivers/voyager.cpp
index 328c32557d1..7afe5159636 100644
--- a/src/mame/drivers/voyager.cpp
+++ b/src/mame/drivers/voyager.cpp
@@ -31,7 +31,7 @@ public:
{
}
- UINT32 *m_bios_ram;
+ std::unique_ptr<UINT32[]> m_bios_ram;
UINT8 m_mtxc_config_reg[256];
UINT8 m_piix4_config_reg[4][256];
@@ -67,7 +67,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
//if (data & 0x10) // enable RAM access to region 0xf0000 - 0xfffff
if ((data & 0x50) | (data & 0xA0))
{
- state->membank("bank1")->set_base(state->m_bios_ram);
+ state->membank("bank1")->set_base(state->m_bios_ram.get());
}
else // disable RAM access (reads go to BIOS ROM)
{
@@ -213,7 +213,7 @@ WRITE32_MEMBER(voyager_state::bios_ram_w)
//if (m_mtxc_config_reg[0x59] & 0x20) // write to RAM if this region is write-enabled
if (m_mtxc_config_reg[0x63] & 0x50)
{
- COMBINE_DATA(m_bios_ram + offset);
+ COMBINE_DATA(m_bios_ram.get() + offset);
}
}
@@ -499,7 +499,7 @@ MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(voyager_state,voyager)
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x20000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x20000/4);
intel82439tx_init();
}
diff --git a/src/mame/drivers/vpoker.cpp b/src/mame/drivers/vpoker.cpp
index d7dbe58fa84..1a23190c002 100644
--- a/src/mame/drivers/vpoker.cpp
+++ b/src/mame/drivers/vpoker.cpp
@@ -112,7 +112,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
UINT8 m_blit_ram[8];
DECLARE_READ8_MEMBER(blitter_r);
DECLARE_WRITE8_MEMBER(blitter_w);
@@ -127,12 +127,12 @@ public:
void vpoker_state::video_start()
{
- m_videoram = auto_alloc_array(machine(), UINT8, 0x200);
+ m_videoram = std::make_unique<UINT8[]>(0x200);
}
UINT32 vpoker_state::screen_update_vpoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
gfx_element *gfx = m_gfxdecode->gfx(0);
int count = 0x0000;
@@ -163,7 +163,7 @@ READ8_MEMBER(vpoker_state::blitter_r)
WRITE8_MEMBER(vpoker_state::blitter_w)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
m_blit_ram[offset] = data;
diff --git a/src/mame/drivers/vsnes.cpp b/src/mame/drivers/vsnes.cpp
index aceafded7b2..941cb3cb09f 100644
--- a/src/mame/drivers/vsnes.cpp
+++ b/src/mame/drivers/vsnes.cpp
@@ -163,7 +163,7 @@ WRITE8_MEMBER(vsnes_state::sprite_dma_1_w)
WRITE8_MEMBER(vsnes_state::vsnes_coin_counter_w)
{
- coin_counter_w( machine(), 0, data & 0x01 );
+ machine().bookkeeping().coin_counter_w(0, data & 0x01 );
m_coin = data;
//"bnglngby" and "cluclu"
@@ -181,7 +181,7 @@ READ8_MEMBER(vsnes_state::vsnes_coin_counter_r)
WRITE8_MEMBER(vsnes_state::vsnes_coin_counter_1_w)
{
- coin_counter_w( machine(), 1, data & 0x01 );
+ machine().bookkeeping().coin_counter_w(1, data & 0x01 );
if( data & 0xfe ) //vsbball service mode
{
//do something?
@@ -1774,6 +1774,7 @@ static MACHINE_CONFIG_START( vsdual, vsnes_state )
MCFG_MACHINE_RESET_OVERRIDE(vsnes_state,vsdual)
MCFG_MACHINE_START_OVERRIDE(vsnes_state,vsdual)
+
/* video hardware */
MCFG_PALETTE_ADD("palette", 2*8*4*16)
MCFG_PALETTE_INIT_OWNER(vsnes_state,vsdual)
@@ -1811,6 +1812,13 @@ static MACHINE_CONFIG_START( vsdual, vsnes_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( vsdual_pi, vsdual )
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
+ // need high level of interleave to keep screens in sync in Balloon Fight.
+ // however vsmahjng doesn't like perfect interleave? you end up needing to reset it to boot? maybe something in a bad default state? watchdog?
+ // as the board would always be running in 'perfect interleave' the fact the Mahjong game doens't work like this needs investigating.
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( vsnes_bootleg, vsnes_state )
@@ -2821,14 +2829,14 @@ GAME( 1986, vsgshoe, 0, vsgshoe, vsgshoe, vsnes_state, vsgshoe, ROT0,
GAME( 1988, vsfdf, 0, vsnes, vsfdf, vsnes_state, vsfdf, ROT0, "Sunsoft", "Vs. Freedom Force", 0 )
/* Dual games */
-GAME( 1984, vstennis, 0, vsdual, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set TE A-3)" , 0 )
-GAME( 1984, vstennisa,vstennis, vsdual, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set 2)" , 0 )
-GAME( 1984, vstennisb,vstennis, vsdual, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set 3)" , MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1984, wrecking, 0, vsdual, wrecking, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Wrecking Crew", 0 )
-GAME( 1984, balonfgt, 0, vsdual, balonfgt, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Balloon Fight (set BF4 A-3)", 0 )
-GAME( 1984, vsmahjng, 0, vsdual, vsmahjng, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Mahjong (Japan)" , 0 )
-GAME( 1984, vsbball, 0, vsdual, vsbball, vsnes_state, vsdual, ROT0, "Nintendo of America", "Vs. BaseBall (US, set BA E-1)", 0 )
-GAME( 1984, vsbballj, vsbball, vsdual, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-3)", 0 )
-GAME( 1984, vsbballja,vsbball, vsdual, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-2)", 0 )
-GAME( 1984, vsbballjb,vsbball, vsdual, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-1)", 0 )
-GAME( 1984, iceclmrd, 0, vsdual, iceclmrj, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Ice Climber Dual (set IC4-4 A-1)" , 0 )
+GAME( 1984, vstennis, 0, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set TE A-3)" , 0 )
+GAME( 1984, vstennisa,vstennis, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set 2)" , 0 )
+GAME( 1984, vstennisb,vstennis, vsdual_pi, vstennis, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Tennis (Japan/USA, set 3)" , MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1984, wrecking, 0, vsdual_pi, wrecking, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Wrecking Crew", 0 )
+GAME( 1984, balonfgt, 0, vsdual_pi, balonfgt, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Balloon Fight (set BF4 A-3)", 0 )
+GAME( 1984, vsmahjng, 0, vsdual, vsmahjng, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. Mahjong (Japan)" , 0 )
+GAME( 1984, vsbball, 0, vsdual_pi, vsbball, vsnes_state, vsdual, ROT0, "Nintendo of America", "Vs. BaseBall (US, set BA E-1)", 0 )
+GAME( 1984, vsbballj, vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-3)", 0 )
+GAME( 1984, vsbballja,vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-2)", 0 )
+GAME( 1984, vsbballjb,vsbball, vsdual_pi, vsbballj, vsnes_state, vsdual, ROT0, "Nintendo Co., Ltd.", "Vs. BaseBall (Japan, set BA A-1)", 0 )
+GAME( 1984, iceclmrd, 0, vsdual_pi, iceclmrj, vsnes_state, vsdual, ROT0, "Nintendo", "Vs. Ice Climber Dual (set IC4-4 A-1)" , 0 )
diff --git a/src/mame/drivers/vt100.cpp b/src/mame/drivers/vt100.cpp
index d1b88e2dd51..810587b7c46 100644
--- a/src/mame/drivers/vt100.cpp
+++ b/src/mame/drivers/vt100.cpp
@@ -151,14 +151,13 @@ 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);
- output_set_value("l1_led", BIT(data, 3) ? 0 : 1);
- output_set_value("l2_led", BIT(data, 2) ? 0 : 1);
- output_set_value("l3_led", BIT(data, 1) ? 0 : 1);
- output_set_value("l4_led", BIT(data, 0) ? 0 : 1);
+ 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);
+ output().set_value("l1_led", BIT(data, 3) ? 0 : 1);
+ output().set_value("l2_led", BIT(data, 2) ? 0 : 1);
+ output().set_value("l3_led", BIT(data, 1) ? 0 : 1);
+ output().set_value("l4_led", BIT(data, 0) ? 0 : 1);
m_key_scan = BIT(data, 6);
m_speaker->set_state(BIT(data, 7));
}
@@ -352,14 +351,13 @@ 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);
- output_set_value("l1_led", 1);
- output_set_value("l2_led", 1);
- output_set_value("l3_led", 1);
- output_set_value("l4_led", 1);
+ output().set_value("online_led",1);
+ output().set_value("local_led", 0);
+ output().set_value("locked_led",1);
+ output().set_value("l1_led", 1);
+ output().set_value("l2_led", 1);
+ output().set_value("l3_led", 1);
+ output().set_value("l4_led", 1);
m_key_scan = 0;
}
@@ -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/vt240.cpp b/src/mame/drivers/vt240.cpp
index 85efed64fc1..153cc6f249f 100644
--- a/src/mame/drivers/vt240.cpp
+++ b/src/mame/drivers/vt240.cpp
@@ -64,8 +64,6 @@ public:
required_device<upd7220_device> m_hgdc;
DECLARE_READ8_MEMBER( test_r );
- DECLARE_READ8_MEMBER( pcg_r );
- DECLARE_WRITE8_MEMBER( pcg_w );
//UINT16 m_pcg_addr;
//UINT8 m_pcg_internal_addr;
diff --git a/src/mame/drivers/wacky_gator.cpp b/src/mame/drivers/wacky_gator.cpp
index 243375d0acd..77f67d7165e 100644
--- a/src/mame/drivers/wacky_gator.cpp
+++ b/src/mame/drivers/wacky_gator.cpp
@@ -106,7 +106,7 @@ WRITE8_MEMBER(wackygtr_state::status_lamps_w)
set_lamps(0, data & 0x3f);
- coin_counter_w(machine(), 0, BIT(data, 6));
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 6));
m_ticket->write(space, 0, data & 0x80);
}
@@ -132,7 +132,7 @@ WRITE8_MEMBER(wackygtr_state::alligators_ctrl1_w)
m_pit8253_1->write_gate1(BIT(data, 3));
m_pit8253_1->write_gate2(BIT(data, 4));
- coin_lockout_w(machine(), 0, data & 0x40 ? 0 : 1);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x40 ? 0 : 1);
}
WRITE8_MEMBER(wackygtr_state::alligators_ctrl2_w)
@@ -157,7 +157,7 @@ void wackygtr_state::pmm8713_ck(int i, int state)
int alligator_state = m_motors_pos[i] / 10;
if (alligator_state > 5) alligator_state = 5;
if (alligator_state < 0) alligator_state = 0;
- output_set_indexed_value("alligator", i, alligator_state);
+ output().set_indexed_value("alligator", i, alligator_state);
}
}
@@ -190,14 +190,14 @@ void wackygtr_state::machine_reset()
void wackygtr_state::set_digits(int p, UINT8 value)
{
static UINT8 bcd2hex[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // not accurate
- output_set_digit_value(p + 0, bcd2hex[value & 0x0f]);
- output_set_digit_value(p + 1, bcd2hex[(value >> 4) & 0x0f]);
+ output().set_digit_value(p + 0, bcd2hex[value & 0x0f]);
+ output().set_digit_value(p + 1, bcd2hex[(value >> 4) & 0x0f]);
}
void wackygtr_state::set_lamps(int p, UINT8 value)
{
for(int i=0; i<8; i++)
- output_set_lamp_value(p + i, BIT(value, i));
+ output().set_lamp_value(p + i, BIT(value, i));
}
static INPUT_PORTS_START( wackygtr )
diff --git a/src/mame/drivers/wallc.cpp b/src/mame/drivers/wallc.cpp
index ac88a99bfaa..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
/****************************************************************************
@@ -170,7 +170,7 @@ UINT32 wallc_state::screen_update_wallc(screen_device &screen, bitmap_ind16 &bit
WRITE8_MEMBER(wallc_state::wallc_coin_counter_w)
{
- coin_counter_w(machine(), 0,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 2);
}
static ADDRESS_MAP_START( wallc_map, AS_PROGRAM, 8, wallc_state )
diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp
index fc68e3586c0..92e262d04e2 100644
--- a/src/mame/drivers/wangpc.cpp
+++ b/src/mame/drivers/wangpc.cpp
@@ -313,7 +313,7 @@ READ8_MEMBER( wangpc_state::led_on_r )
{
if (LOG) logerror("%s: Diagnostic LED on\n", machine().describe_context());
- output_set_led_value(LED_DIAGNOSTIC, 1);
+ output().set_led_value(LED_DIAGNOSTIC, 1);
return 0xff;
}
@@ -477,7 +477,7 @@ READ8_MEMBER( wangpc_state::led_off_r )
{
if (LOG) logerror("%s: Diagnostic LED off\n", machine().describe_context());
- output_set_led_value(LED_DIAGNOSTIC, 0);
+ output().set_led_value(LED_DIAGNOSTIC, 0);
return 0xff;
}
diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp
index 9a4e1ed7675..ff1aa869416 100644
--- a/src/mame/drivers/warpwarp.cpp
+++ b/src/mame/drivers/warpwarp.cpp
@@ -197,20 +197,20 @@ WRITE8_MEMBER(warpwarp_state::geebee_out7_w)
switch (offset & 7)
{
case 0:
- set_led_status(machine(), 0,data & 1);
+ output().set_led_value(0,data & 1);
break;
case 1:
- set_led_status(machine(), 1,data & 1);
+ output().set_led_value(1,data & 1);
break;
case 2:
- set_led_status(machine(), 2,data & 1);
+ output().set_led_value(2,data & 1);
break;
case 3:
- coin_counter_w(machine(), 0,data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
break;
case 4:
if (strcmp(machine().system().name, "geebeeb"))
- coin_lockout_global_w(machine(), ~data & 1);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
break;
case 5:
if( m_geebee_bgw != (data & 1) )
@@ -284,22 +284,22 @@ WRITE8_MEMBER(warpwarp_state::warpwarp_out3_w)
switch (offset & 7)
{
case 0:
- set_led_status(machine(), 0,data & 1);
+ output().set_led_value(0,data & 1);
break;
case 1:
- set_led_status(machine(), 1,data & 1);
+ output().set_led_value(1,data & 1);
break;
case 2:
- set_led_status(machine(), 2,data & 1);
+ output().set_led_value(2,data & 1);
break;
case 3:
/* n.c. */
break;
case 4:
- coin_lockout_global_w(machine(), ~data & 1);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
break;
case 5:
- coin_counter_w(machine(), 0,data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
break;
case 6:
m_ball_on = data & 1;
diff --git a/src/mame/drivers/wecleman.cpp b/src/mame/drivers/wecleman.cpp
index b529f4b8bfd..f9051f1e77e 100644
--- a/src/mame/drivers/wecleman.cpp
+++ b/src/mame/drivers/wecleman.cpp
@@ -18,7 +18,7 @@ Hot Chase:
- Sound BGMs are regressed (hiccups badly);
- Samples pitch is too low, for instance game over speech;
Common Issues:
-- Too many hacks with protection/blitter/colors.
+- Too many hacks with protection/blitter/colors.
Additionally, there's a bug report that claims that current arrangement is broken for later levels in WEC Le Mans.
007643 / 007645 could do with a rewrite, in short.
- One ROM unused (32K in hotchase, 16K in wecleman)
@@ -676,7 +676,7 @@ WRITE8_MEMBER(wecleman_state::hotchase_sound_control_w)
offset 00000xxx----- channel select (0:channel 0, 1:channel 1)
++------ chip select ( 0:chip 1, 1:chip2, 2:chip3)
data&0x0f left volume (data>>4)&0x0f right volume
- */
+ */
case 0x0:
case 0x1:
m_k007232_1->set_volume( offset&1, (data&0x0f) * 0x08, (data>>4) * 0x08 );
diff --git a/src/mame/drivers/wheelfir.cpp b/src/mame/drivers/wheelfir.cpp
index d461781acb4..e2f2c10c88c 100644
--- a/src/mame/drivers/wheelfir.cpp
+++ b/src/mame/drivers/wheelfir.cpp
@@ -242,10 +242,10 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
- INT32 *m_zoom_table;
- UINT16 *m_blitter_data;
+ std::unique_ptr<INT32[]> m_zoom_table;
+ std::unique_ptr<UINT16[]> m_blitter_data;
- UINT8 *m_palette_ptr;
+ std::unique_ptr<UINT8[]> m_palette_ptr;
INT32 m_palpos;
INT32 m_current_scanline;
@@ -263,7 +263,7 @@ public:
INT16 m_scanline_cnt;
- bitmap_ind16 *m_tmp_bitmap[2];
+ std::unique_ptr<bitmap_ind16> m_tmp_bitmap[2];
INT32 get_scale(INT32 index)
{
@@ -572,8 +572,8 @@ WRITE16_MEMBER(wheelfir_state::wheelfir_blit_w)
void wheelfir_state::video_start()
{
- m_tmp_bitmap[0] = auto_bitmap_ind16_alloc(machine(), 512, 512);
- m_tmp_bitmap[1] = auto_bitmap_ind16_alloc(machine(), 512, 512);
+ m_tmp_bitmap[0] = std::make_unique<bitmap_ind16>(512, 512);
+ m_tmp_bitmap[1] = std::make_unique<bitmap_ind16>(512, 512);
}
UINT32 wheelfir_state::screen_update_wheelfir(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -656,8 +656,8 @@ READ16_MEMBER(wheelfir_state::wheelfir_snd_r)
WRITE16_MEMBER(wheelfir_state::coin_cnt_w)
{
/* bits 0/1 coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
}
@@ -769,11 +769,11 @@ void wheelfir_state::machine_reset()
void wheelfir_state::machine_start()
{
- m_zoom_table = auto_alloc_array(machine(), INT32, ZOOM_TABLE_SIZE);
- m_blitter_data = auto_alloc_array(machine(), UINT16, 16);
+ m_zoom_table = std::make_unique<INT32[]>(ZOOM_TABLE_SIZE);
+ m_blitter_data = std::make_unique<UINT16[]>(16);
m_scanlines = reinterpret_cast<scroll_info*>(auto_alloc_array(machine(), UINT8, sizeof(scroll_info)*(NUM_SCANLINES+NUM_VBLANK_LINES)));
- m_palette_ptr = auto_alloc_array(machine(), UINT8, NUM_COLORS*3);
+ m_palette_ptr = std::make_unique<UINT8[]>(NUM_COLORS*3);
for(int i=0;i<(ZOOM_TABLE_SIZE);++i)
diff --git a/src/mame/drivers/whitestar.cpp b/src/mame/drivers/whitestar.cpp
index 08da3f4ce65..aad4685e0b3 100644
--- a/src/mame/drivers/whitestar.cpp
+++ b/src/mame/drivers/whitestar.cpp
@@ -32,23 +32,12 @@ public:
UINT8 m_dmd_status;
UINT8 m_dmd_busy;
- DECLARE_WRITE8_MEMBER(dmd_latch_w);
- DECLARE_READ8_MEMBER(dmd_latch_r);
- DECLARE_WRITE8_MEMBER(dmd_ctrl_w);
- DECLARE_READ8_MEMBER(dmd_ctrl_r);
- DECLARE_READ8_MEMBER(dmd_status_r);
- DECLARE_WRITE8_MEMBER(dmd_status_w);
-
DECLARE_WRITE8_MEMBER(bank_w);
- DECLARE_WRITE8_MEMBER(dmd_bank_w);
DECLARE_WRITE8_MEMBER(dmddata_w);
- DECLARE_READ8_MEMBER(dips_r);
DECLARE_READ8_MEMBER(switch_r);
DECLARE_WRITE8_MEMBER(switch_w);
- DECLARE_READ8_MEMBER(dedicated_switch_r);
- DECLARE_DRIVER_INIT(whitestar);
- virtual void machine_reset() override;
+ virtual void machine_start() override;
INTERRUPT_GEN_MEMBER(whitestar_firq_interrupt);
};
@@ -102,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...
@@ -112,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
@@ -3172,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/wicat.cpp b/src/mame/drivers/wicat.cpp
index a8f4ad19ce5..81b17bb1bb2 100644
--- a/src/mame/drivers/wicat.cpp
+++ b/src/mame/drivers/wicat.cpp
@@ -374,12 +374,12 @@ WRITE16_MEMBER( wicat_state::parallel_led_w )
{
// bit 0 - parallel port A direction (0 = input)
// bit 1 - parallel port B direction (0 = input)
- output_set_value("led1",data & 0x0400);
- output_set_value("led2",data & 0x0800);
- output_set_value("led3",data & 0x1000);
- output_set_value("led4",data & 0x2000);
- output_set_value("led5",data & 0x4000);
- output_set_value("led6",data & 0x8000);
+ output().set_value("led1",data & 0x0400);
+ output().set_value("led2",data & 0x0800);
+ output().set_value("led3",data & 0x1000);
+ output().set_value("led4",data & 0x2000);
+ output().set_value("led5",data & 0x4000);
+ output().set_value("led6",data & 0x8000);
}
WRITE8_MEMBER( wicat_state::via_a_w )
diff --git a/src/mame/drivers/wico.cpp b/src/mame/drivers/wico.cpp
index d5fbd378e31..d5c3e13a649 100644
--- a/src/mame/drivers/wico.cpp
+++ b/src/mame/drivers/wico.cpp
@@ -301,14 +301,14 @@ INPUT_PORTS_END
WRITE8_MEMBER( wico_state::dled0_w )
{
m_diag_on = 0;
- output_set_digit_value(9, 0);
+ output().set_digit_value(9, 0);
}
// diagnostic display on
WRITE8_MEMBER( wico_state::dled1_w )
{
m_diag_on = 1;
- output_set_digit_value(9, m_diag_segments);
+ output().set_digit_value(9, m_diag_segments);
}
WRITE8_MEMBER( wico_state::csols_w )
@@ -327,9 +327,9 @@ WRITE8_MEMBER( wico_state::muxen_w )
m_diag_segments = patterns[data>>4];
if (m_diag_on)
- output_set_digit_value(9, m_diag_segments);
+ output().set_digit_value(9, m_diag_segments);
else
- output_set_digit_value(9, 0);
+ output().set_digit_value(9, 0);
m_disp_on = BIT(data, 0);
}
@@ -380,7 +380,7 @@ READ8_MEMBER( wico_state::lampst_r )
j = m_shared_ram[0x7f9 + i];
else
j = 0;
- output_set_digit_value(i * 10 + (m_shared_ram[0x96] & 7), BITSWAP16(j, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(i * 10 + (m_shared_ram[0x96] & 7), BITSWAP16(j, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0));
}
return 0xff;
}
diff --git a/src/mame/drivers/wildfire.cpp b/src/mame/drivers/wildfire.cpp
index a3e58893add..d9e7a036bfe 100644
--- a/src/mame/drivers/wildfire.cpp
+++ b/src/mame/drivers/wildfire.cpp
@@ -136,10 +136,10 @@ void wildfire_state::display_update()
if (m_display_cache[i] != active_state[i])
{
if (index_is_7segled(i))
- output_set_digit_value(i, BITSWAP8(active_state[i],7,0,1,2,3,4,5,6) & 0x7f);
+ output().set_digit_value(i, BITSWAP8(active_state[i],7,0,1,2,3,4,5,6) & 0x7f);
for (int j = 0; j < 8; j++)
- output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
+ output().set_lamp_value(i*10 + j, active_state[i] >> j & 1);
}
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
diff --git a/src/mame/drivers/wildpkr.cpp b/src/mame/drivers/wildpkr.cpp
index 46ab481d0ce..546df6a94b5 100644
--- a/src/mame/drivers/wildpkr.cpp
+++ b/src/mame/drivers/wildpkr.cpp
@@ -217,7 +217,7 @@ PALETTE_INIT_MEMBER(wildpkr_state, wildpkr)
*************************/
static ADDRESS_MAP_START( wildpkr_map, AS_PROGRAM, 16, wildpkr_state )
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM
// AM_RANGE(0x800000, 0x800003) ACRTC?
AM_RANGE(0x800180, 0x800181) AM_READNOP // protection, puts m68k code snippets to RAM
@@ -226,6 +226,16 @@ static ADDRESS_MAP_START( wildpkr_map, AS_PROGRAM, 16, wildpkr_state )
AM_RANGE(0x800204, 0x800205) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( tabpkr_map, AS_PROGRAM, 16, wildpkr_state )
+ AM_RANGE(0x000000, 0x2fffff) AM_ROM
+ 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)
+ADDRESS_MAP_END
+
/* Unknown R/W:
@@ -293,12 +303,37 @@ static MACHINE_CONFIG_START( wildpkr, wildpkr_state )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_START( tabpkr, wildpkr_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2)
+ MCFG_CPU_PROGRAM_MAP(tabpkr_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", wildpkr_state, irq2_line_hold) // 2 / 5 are valid
+
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 512)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1)
+ MCFG_SCREEN_UPDATE_DRIVER(wildpkr_state, screen_update_wildpkr)
+ MCFG_SCREEN_PALETTE("palette")
+
+// MCFG_DEVICE_ADD("hd63484", HD63484, 0)
+ MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
+
+ MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_INIT_OWNER(wildpkr_state, wildpkr)
+
+MACHINE_CONFIG_END
+
+
/*************************
* Rom Load *
*************************/
ROM_START( wildpkr )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "vd_1.01_3.bin", 0x000000, 0x40000, CRC(d19d5609) SHA1(87eedb7daaa8ac33c0a73e4e849b9a0f76152261) )
ROM_LOAD16_BYTE( "vd_1.01_1.bin", 0x000001, 0x40000, CRC(f10644ab) SHA1(5872fe41b8c7fec5e83011abdf82a85f064b734f) )
@@ -309,6 +344,32 @@ ROM_START( wildpkr )
ROM_LOAD( "gal6v8s.bin", 0x0000, 0x0117, CRC(389c63a7) SHA1(4ebb26a001ed14a9e96dd268ed1c7f298f0c086b) )
ROM_END
+/* seems to be different hardware, but same basic video chips, keep here or move?
+
+cpu 68000-16
+Xtal 24Mhaz
+cpu ram 2x 6264
+
+Audio DAC AD557JN
+
+video area
+insg176p-66 ramdac?
+hd63487cp Memory interface and video attribute controller
+hd63484cp8 advanced CRT controller
+4x km44c258cz-10 rams
+
+*/
+
+ROM_START( tabpkr )
+ ROM_REGION( 0x300000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "rop1851.bin", 0x000001, 0x80000, CRC(fbe13fa8) SHA1(7c19b6b4d9a9935b6feb70b6261bafc6d9afb59f) )
+ ROM_LOAD16_BYTE( "rop1853.bin", 0x000000, 0x80000, CRC(e0c312b4) SHA1(57c64c82f723067b7b2f9bf3fdaf5aedeb4f9dc3) )
+ // are these missing, or just unpopulated but checked anyway?
+ /* reads 0x100000 - 0x1fffff ? - 2x sockets for same type of roms as above */
+ /* reads 0x200000 - 0x2fffff ? - 1x socket for larger ROM? */
+ROM_END
+
+
/*************************
* Driver Init *
@@ -326,3 +387,4 @@ DRIVER_INIT_MEMBER(wildpkr_state,wildpkr)
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
GAME( 199?, wildpkr, 0, wildpkr, wildpkr, wildpkr_state, wildpkr, ROT0, "TAB Austria", "Wild Poker (ver. D 1.01)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
+GAME( 199?, tabpkr, 0, tabpkr, wildpkr, wildpkr_state, wildpkr, ROT0, "TAB Austria", "Unknown Tab Austria Poker", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp
index 962167b527e..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
@@ -486,6 +484,20 @@
0 0 1 x x x x x x x x x x x x x 2000-3FFF CS PIA IC4
1 1 1 x x x x x x x x x x x x x E000-FFFF 8K ROM
+TODO:
+Mystic Marathon colors are very likely incorrectly derived from schematics.
+
+The video DAC is in the lower right corner of the schematic on page 11 of the Mystic Marathon Drawing Set,
+or page 19 of the Turkey Shoot Service Manual (both are identical as far can be seen). Both schematics
+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.
+
+Reference video: https://www.youtube.com/watch?v=R5OeC6Wc_yI
+
+
***************************************************************************/
#include "emu.h"
@@ -3099,8 +3111,8 @@ GAME( 1985, alienaru, alienar, williams_muxed, alienar, williams_state, alie
GAME( 1987, lottofun, 0, lottofun, lottofun, williams_state, lottofun, ROT0, "H.A.R. Management", "Lotto Fun", MACHINE_SUPPORTS_SAVE )
/* 2nd Generation Williams hardware with tilemaps */
-GAME( 1983, mysticm, 0, mysticm, mysticm, williams2_state, mysticm, ROT0, "Williams", "Mystic Marathon", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, mysticmp, mysticm, mysticm, mysticm, williams2_state, mysticm, ROT0, "Williams", "Mystic Marathon (prototype)", MACHINE_SUPPORTS_SAVE ) // newest roms are 'proto 6' ?
+GAME( 1983, mysticm, 0, mysticm, mysticm, williams2_state, mysticm, ROT0, "Williams", "Mystic Marathon", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE)
+GAME( 1983, mysticmp, mysticm, mysticm, mysticm, williams2_state, mysticm, ROT0, "Williams", "Mystic Marathon (prototype)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // newest roms are 'proto 6' ?
GAME( 1984, tshoot, 0, tshoot, tshoot, williams2_state, tshoot, ROT0, "Williams", "Turkey Shoot", MACHINE_SUPPORTS_SAVE )
GAME( 1984, inferno, 0, williams2, inferno, williams2_state, inferno, ROT0, "Williams", "Inferno (Williams)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, joust2, 0, joust2, joust2, joust2_state, joust2, ROT270, "Williams", "Joust 2 - Survival of the Fittest (revision 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/wink.cpp b/src/mame/drivers/wink.cpp
index f38bf2c1c5e..df9e42a26f7 100644
--- a/src/mame/drivers/wink.cpp
+++ b/src/mame/drivers/wink.cpp
@@ -109,7 +109,7 @@ WRITE8_MEMBER(wink_state::tile_banking_w)
WRITE8_MEMBER(wink_state::wink_coin_counter_w)
{
- coin_counter_w(machine(), offset,data & 1);
+ machine().bookkeeping().coin_counter_w(offset,data & 1);
}
READ8_MEMBER(wink_state::analog_port_r)
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/wiz.cpp b/src/mame/drivers/wiz.cpp
index b2f673bc82a..d6d04e677b8 100644
--- a/src/mame/drivers/wiz.cpp
+++ b/src/mame/drivers/wiz.cpp
@@ -295,7 +295,7 @@ READ8_MEMBER(wiz_state::wiz_protection_r)
WRITE8_MEMBER(wiz_state::wiz_coin_counter_w)
{
- coin_counter_w(machine(), offset, data & 1);
+ machine().bookkeeping().coin_counter_w(offset, data & 1);
}
WRITE8_MEMBER(wiz_state::wiz_main_nmi_mask_w)
diff --git a/src/mame/drivers/wolfpack.cpp b/src/mame/drivers/wolfpack.cpp
index 093f54c5434..6d8514d7fa5 100644
--- a/src/mame/drivers/wolfpack.cpp
+++ b/src/mame/drivers/wolfpack.cpp
@@ -1,8 +1,8 @@
-// license:???
+// license:BSD-3-Clause
// 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,25 +93,24 @@ 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);
}
WRITE8_MEMBER(wolfpack_state::wolfpack_attract_w)
{
- coin_lockout_global_w(machine(), !(data & 1));
+ machine().bookkeeping().coin_lockout_global_w(!(data & 1));
}
WRITE8_MEMBER(wolfpack_state::wolfpack_credit_w)
{
- set_led_status(machine(), 0, !(data & 1));
+ output().set_led_value(0, !(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_95.cpp b/src/mame/drivers/wpc_95.cpp
index b24f1265865..eb305804a4c 100644
--- a/src/mame/drivers/wpc_95.cpp
+++ b/src/mame/drivers/wpc_95.cpp
@@ -112,7 +112,7 @@ private:
UINT32 serial_out1_state, serial_out2_state;
bool afm_led_handler(int sid, bool state);
- static void sc_aux_lamps_handler_update(UINT32 &out, UINT32 mask, bool state, int id);
+ void sc_aux_lamps_handler_update(UINT32 &out, UINT32 mask, bool state, int id);
bool sc_aux_lamps_handler(int sid, bool state);
};
@@ -302,7 +302,7 @@ bool wpc_95_state::afm_led_handler(int sid, bool state)
if(prev_state != serial_data1_state) {
char buffer[32];
sprintf(buffer, "l:Saucer led %d", serial_clock_counter);
- output_set_value(buffer, serial_data1_state);
+ output().set_value(buffer, serial_data1_state);
if(serial_data1_state)
serial_out1_state |= mask;
else
@@ -324,7 +324,7 @@ void wpc_95_state::sc_aux_lamps_handler_update(UINT32 &out, UINT32 mask, bool st
{
bool prev_state = out & mask;
if(prev_state != state) {
- output_set_value(lamps_sc_extra[id], state);
+ output().set_value(lamps_sc_extra[id], state);
if(state)
out |= mask;
else
diff --git a/src/mame/drivers/wpc_an.cpp b/src/mame/drivers/wpc_an.cpp
index ac4043105fa..96e665aa08a 100644
--- a/src/mame/drivers/wpc_an.cpp
+++ b/src/mame/drivers/wpc_an.cpp
@@ -195,8 +195,8 @@ void wpc_an_state::device_timer(emu_timer &timer, device_timer_id id, int param,
// update LED segments
for(x=0;x<16;x++)
{
- output_set_digit_value(x,BITSWAP16(m_wpc->get_alphanumeric(x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
- output_set_digit_value(x+16,BITSWAP16(m_wpc->get_alphanumeric(20+x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(x,BITSWAP16(m_wpc->get_alphanumeric(x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output().set_digit_value(x+16,BITSWAP16(m_wpc->get_alphanumeric(20+x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
}
m_wpc->reset_alphanumeric();
m_vblank_count++;
@@ -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/wyvernf0.cpp b/src/mame/drivers/wyvernf0.cpp
index 1a8aabe32da..01c7bbd83ae 100644
--- a/src/mame/drivers/wyvernf0.cpp
+++ b/src/mame/drivers/wyvernf0.cpp
@@ -58,7 +58,7 @@ public:
// video-related
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
- UINT8 *m_objram;
+ std::unique_ptr<UINT8[]> m_objram;
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
@@ -321,8 +321,8 @@ WRITE8_MEMBER(wyvernf0_state::rambank_w)
flip_screen_x_set(data & 0x01);
flip_screen_y_set(data & 0x02);
- coin_lockout_w(machine(), 0, !(data & 0x40));
- coin_lockout_w(machine(), 1, !(data & 0x40));
+ machine().bookkeeping().coin_lockout_w(0, !(data & 0x40));
+ machine().bookkeeping().coin_lockout_w(1, !(data & 0x40));
m_rambank = data;
membank("rambank")->set_entry((data & 0x80) ? 1 : 0);
@@ -603,9 +603,9 @@ MACHINE_START_MEMBER(wyvernf0_state,wyvernf0)
membank("rombank")->configure_entries(0, 8, ROM, 0x2000);
// sprite codes lookup in banked RAM
- m_objram = auto_alloc_array(machine(), UINT8, 0x1000 * 2);
- save_pointer(NAME(m_objram), 0x1000 * 2);
- membank("rambank")->configure_entries(0, 2, m_objram, 0x1000);
+ m_objram = std::make_unique<UINT8[]>(0x1000 * 2);
+ save_pointer(NAME(m_objram.get()), 0x1000 * 2);
+ membank("rambank")->configure_entries(0, 2, m_objram.get(), 0x1000);
save_item(NAME(m_sound_nmi_enable));
save_item(NAME(m_pending_nmi));
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 f495eab522d..21bd91f6253 100644
--- a/src/mame/drivers/x1.cpp
+++ b/src/mame/drivers/x1.cpp
@@ -224,11 +224,11 @@
VIDEO_START_MEMBER(x1_state,x1)
{
- m_avram = auto_alloc_array_clear(machine(), UINT8, 0x800);
- m_tvram = auto_alloc_array_clear(machine(), UINT8, 0x800);
- m_kvram = auto_alloc_array_clear(machine(), UINT8, 0x800);
- m_gfx_bitmap_ram = auto_alloc_array_clear(machine(), UINT8, 0xc000*2);
- m_pal_4096 = auto_alloc_array_clear(machine(), UINT8, 0x1000*3);
+ m_avram = make_unique_clear<UINT8[]>(0x800);
+ m_tvram = make_unique_clear<UINT8[]>(0x800);
+ m_kvram = make_unique_clear<UINT8[]>(0x800);
+ m_gfx_bitmap_ram = make_unique_clear<UINT8[]>(0xc000*2);
+ m_pal_4096 = make_unique_clear<UINT8[]>(0x1000*3);
}
void x1_state::x1_draw_pixel(bitmap_rgb32 &bitmap,int y,int x,UINT16 pen,UINT8 width,UINT8 height)
@@ -340,7 +340,7 @@ void x1_state::draw_fgtilemap(bitmap_rgb32 &bitmap,const rectangle &cliprect)
int width = BIT(m_avram[((x+y*x_size)+mc6845_start_addr) & 0x7ff], 7);
int height = BIT(m_avram[((x+y*x_size)+mc6845_start_addr) & 0x7ff], 6);
int pcg_bank = BIT(m_avram[((x+y*x_size)+mc6845_start_addr) & 0x7ff], 5);
- UINT8 *gfx_data = pcg_bank ? m_pcg_ram : m_cg_rom; //machine.root_device().memregion(pcg_bank ? "pcg" : "cgrom")->base();
+ UINT8 *gfx_data = pcg_bank ? m_pcg_ram.get() : m_cg_rom; //machine.root_device().memregion(pcg_bank ? "pcg" : "cgrom")->base();
int knj_enable = 0;
int knj_side = 0;
int knj_bank = 0;
@@ -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
@@ -1132,7 +1149,7 @@ READ8_MEMBER( x1_state::x1_pcg_r )
UINT8 y_char_size;
/* addr == 0 reads from the ANK rom */
- gfx_data = addr == 0 ? m_cg_rom : m_pcg_ram;
+ gfx_data = addr == 0 ? m_cg_rom : m_pcg_ram.get();
y_char_size = ((m_crtc_vreg[9]+1) > 8) ? 8 : m_crtc_vreg[9]+1;
if(y_char_size == 0) { y_char_size = 1; }
pcg_offset = m_tvram[get_pcg_addr(m_crtc_vreg[1], y_char_size)]*8;
@@ -2332,7 +2349,7 @@ MACHINE_RESET_MEMBER(x1_state,x1)
//UINT8 *ROM = memregion("x1_cpu")->base();
int i;
- memset(m_gfx_bitmap_ram,0x00,0xc000*2);
+ memset(m_gfx_bitmap_ram.get(),0x00,0xc000*2);
for(i=0;i<0x1800;i++)
{
@@ -2410,17 +2427,17 @@ MACHINE_START_MEMBER(x1_state,x1)
}
m_ipl_rom = memregion("ipl")->base();
- m_work_ram = auto_alloc_array_clear(machine(), UINT8, 0x10000*0x10);
- m_emm_ram = auto_alloc_array_clear(machine(), UINT8, 0x1000000);
- m_pcg_ram = auto_alloc_array_clear(machine(), UINT8, 0x1800);
+ m_work_ram = make_unique_clear<UINT8[]>(0x10000*0x10);
+ m_emm_ram = make_unique_clear<UINT8[]>(0x1000000);
+ m_pcg_ram = make_unique_clear<UINT8[]>(0x1800);
m_cg_rom = memregion("cgrom")->base();
m_kanji_rom = memregion("kanji")->base();
- save_pointer(NAME(m_work_ram), 0x10000*0x10);
- save_pointer(NAME(m_emm_ram), 0x1000000);
- save_pointer(NAME(m_pcg_ram), 0x1800);
+ save_pointer(NAME(m_work_ram.get()), 0x10000*0x10);
+ save_pointer(NAME(m_emm_ram.get()), 0x1000000);
+ save_pointer(NAME(m_pcg_ram.get()), 0x1800);
- m_gfxdecode->set_gfx(3, global_alloc(gfx_element(m_palette, x1_pcg_8x8, (UINT8 *)m_pcg_ram, 0, 1, 0)));
+ m_gfxdecode->set_gfx(3, std::make_unique<gfx_element>(m_palette, x1_pcg_8x8, m_pcg_ram.get(), 0, 1, 0));
}
PALETTE_INIT_MEMBER(x1_state,x1)
@@ -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/x68k.cpp b/src/mame/drivers/x68k.cpp
index 9d5fd248e03..0ddfc818afe 100644
--- a/src/mame/drivers/x68k.cpp
+++ b/src/mame/drivers/x68k.cpp
@@ -199,12 +199,12 @@ TIMER_CALLBACK_MEMBER(x68k_state::x68k_led_callback)
if(m_led_state == 1)
{
for(drive=0;drive<4;drive++)
- output_set_indexed_value("ctrl_drv",drive,m_fdc.led_ctrl[drive] ? 0 : 1);
+ output().set_indexed_value("ctrl_drv",drive,m_fdc.led_ctrl[drive] ? 0 : 1);
}
else
{
for(drive=0;drive<4;drive++)
- output_set_indexed_value("ctrl_drv",drive,1);
+ output().set_indexed_value("ctrl_drv",drive,1);
}
}
@@ -637,7 +637,7 @@ WRITE16_MEMBER(x68k_state::x68k_fdc_w)
{
m_fdc.led_ctrl[drive] = data & 0x80; // blinking drive LED if no disk inserted
m_fdc.led_eject[drive] = data & 0x40; // eject button LED (on when set to 0)
- output_set_indexed_value("eject_drv",drive,(data & 0x40) ? 1 : 0);
+ output().set_indexed_value("eject_drv",drive,(data & 0x40) ? 1 : 0);
if((data & 0x60) == 0x20) // ejects disk
m_fdc.floppy[drive]->unload();
}
@@ -656,9 +656,9 @@ WRITE16_MEMBER(x68k_state::x68k_fdc_w)
if(m_fdc.floppy[i]->exists())
m_fdc.floppy[i]->mon_w(!BIT(data, 7));
- output_set_indexed_value("access_drv",x,0);
+ output().set_indexed_value("access_drv",x,0);
if(x != m_fdc.select_drive)
- output_set_indexed_value("access_drv",m_fdc.select_drive,1);
+ output().set_indexed_value("access_drv",m_fdc.select_drive,1);
m_fdc.select_drive = x;
logerror("FDC: Drive #%i: Drive selection set to %02x\n",x,data);
break;
@@ -1522,18 +1522,18 @@ MACHINE_RESET_MEMBER(x68k_state,x68000)
m_mfpdev->i7_w(1); // h-sync
// reset output values
- output_set_value("key_led_kana",1);
- output_set_value("key_led_romaji",1);
- output_set_value("key_led_code",1);
- output_set_value("key_led_caps",1);
- output_set_value("key_led_insert",1);
- output_set_value("key_led_hiragana",1);
- output_set_value("key_led_fullsize",1);
+ output().set_value("key_led_kana",1);
+ output().set_value("key_led_romaji",1);
+ output().set_value("key_led_code",1);
+ output().set_value("key_led_caps",1);
+ output().set_value("key_led_insert",1);
+ output().set_value("key_led_hiragana",1);
+ output().set_value("key_led_fullsize",1);
for(drive=0;drive<4;drive++)
{
- output_set_indexed_value("eject_drv",drive,1);
- output_set_indexed_value("ctrl_drv",drive,1);
- output_set_indexed_value("access_drv",drive,1);
+ output().set_indexed_value("eject_drv",drive,1);
+ output().set_indexed_value("ctrl_drv",drive,1);
+ output().set_indexed_value("access_drv",drive,1);
}
m_fdc.select_drive = 0;
diff --git a/src/mame/drivers/xain.cpp b/src/mame/drivers/xain.cpp
index 80827dc0eef..7532a8cad5a 100644
--- a/src/mame/drivers/xain.cpp
+++ b/src/mame/drivers/xain.cpp
@@ -849,8 +849,60 @@ ROM_START( xsleenab )
ROM_LOAD( "pt-0.ic59", 0x00000, 0x0100, CRC(fed32888) SHA1(4e9330456b20f7198c1e27ca1ae7200f25595599) ) /* BPROM type MB7114E Priority (not used) */
ROM_END
+ROM_START( xsleenaba )
+ ROM_REGION( 0x14000, "maincpu", 0 )
+ ROM_LOAD( "xs87b-10.7d", 0x08000, 0x8000, CRC(3d5f9fb4) SHA1(d315b5415a471e05ee61b84fcaf739c75f890061) )
+ ROM_LOAD( "xs87b-11.7c", 0x04000, 0x4000, CRC(81c80d54) SHA1(2049c5843c6134560d8fbacf020cbff34833ded7) )
+ ROM_CONTINUE( 0x10000, 0x4000 )
+
+ ROM_REGION( 0x14000, "sub", 0 )
+ ROM_LOAD( "p1-0.ic29", 0x08000, 0x8000, CRC(a1a860e2) SHA1(fb2b152bfafc44608039774436ddf3b17eed979c) )
+ ROM_LOAD( "p0-0.ic15", 0x04000, 0x4000, CRC(948b9757) SHA1(3ea840cc47ae6a66f3e5f6a2f3e88475dcfe1840) )
+ ROM_CONTINUE( 0x10000, 0x4000 )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "p2-0.ic49", 0x8000, 0x8000, CRC(a5318cb8) SHA1(35fb28c5598e39f22552bb036ae356b78422f080) )
+
+ ROM_REGION( 0x08000, "gfx1", 0 )
+ ROM_LOAD( "pb-01.ic24", 0x00000, 0x8000, CRC(83c00dd8) SHA1(8e9b19281039b63072270c7a63d9fb30cda570fd) ) /* chars */
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "pk-0.ic136", 0x00000, 0x8000, CRC(11eb4247) SHA1(5d2f1fa07b8fb1c6bebfdb02c39282d29813791b) ) /* tiles */
+ ROM_LOAD( "pl-0.ic135", 0x08000, 0x8000, CRC(422b536e) SHA1(d5985c0bd1c840cb6f0da6b177a2caaff6db5a04) )
+ ROM_LOAD( "pm-0.ic134", 0x10000, 0x8000, CRC(828c1b0c) SHA1(cb9b64073b0ade3885f61545191db4c445e3066b) )
+ ROM_LOAD( "pn-0.ic133", 0x18000, 0x8000, CRC(d37939e0) SHA1(301d9f6720857c64a4e070444a07a38138ddd4ef) )
+ ROM_LOAD( "pc-0.ic114", 0x20000, 0x8000, CRC(8f0aa1a7) SHA1(be3fdb6204b77dba28b14c5b880d65d7c1d6a161) )
+ ROM_LOAD( "pd-0.ic113", 0x28000, 0x8000, CRC(45681910) SHA1(60c3eb4bc08bf11bf09bcd27549c6427fafbb1fb) )
+ ROM_LOAD( "pe-0.ic112", 0x30000, 0x8000, CRC(a8eeabc8) SHA1(e5dc31df0b223b65144af3602be5bcb2ff9eebbd) )
+ ROM_LOAD( "pf-0.ic111", 0x38000, 0x8000, CRC(e59a2f27) SHA1(4643cea85f8613c36b416f46f9d1753fa9839237) )
+
+ ROM_REGION( 0x40000, "gfx3", 0 )
+ ROM_LOAD( "p5-0.ic44", 0x00000, 0x8000, CRC(5c6c453c) SHA1(68c0028d15da8f5e53f09e3d154d18cd9f219601) ) /* tiles */
+ ROM_LOAD( "p4-0.ic45", 0x08000, 0x8000, CRC(59d87a9a) SHA1(f23cb9a9d6c6249a8a1f8e2acbc235086b008c7b) )
+ ROM_LOAD( "p3-0.ic46", 0x10000, 0x8000, CRC(84884a2e) SHA1(5087010a72226e91a084a61b5089c110dba7e933) )
+ /* 0x60000-0x67fff empty */
+ ROM_LOAD( "p6-0.ic43", 0x20000, 0x8000, CRC(8d637639) SHA1(301a7893de8f1bb526f5075e2af8203b8af4b0d3) )
+ ROM_LOAD( "p7-0.ic42", 0x28000, 0x8000, CRC(71eec4e6) SHA1(3417c52a39a6fc43c51ad707168180f54153177a) )
+ ROM_LOAD( "p8-0.ic41", 0x30000, 0x8000, CRC(7fc9704f) SHA1(b6f353fb7fec58f68b9e28be2aa29146ac64ffd4) )
+ /* 0x80000-0x87fff empty */
+
+ ROM_REGION( 0x40000, "gfx4", 0 )
+ ROM_LOAD( "po-0.ic131", 0x00000, 0x8000, CRC(252976ae) SHA1(534c9148d33e453f3541543a8c0eb4afc59c7de8) ) /* sprites */
+ ROM_LOAD( "pp-0.ic130", 0x08000, 0x8000, CRC(e6f1e8d5) SHA1(2ee0227361d1f1358f5b5964dab7e691243cd9ae) )
+ ROM_LOAD( "pq-0.ic129", 0x10000, 0x8000, CRC(785381ed) SHA1(95bf4eb29830c589a9793a4138e645e5b77f0c06) )
+ ROM_LOAD( "pr-0.ic128", 0x18000, 0x8000, CRC(59754e3d) SHA1(d1781dbc83965fc84492f7282d6813507ba1e81b) )
+ ROM_LOAD( "pg-0.ic109", 0x20000, 0x8000, CRC(4d977f33) SHA1(30b446ddb2f32354334ea780c435f2407d128808) )
+ ROM_LOAD( "ph-0.ic108", 0x28000, 0x8000, CRC(3f3b62a0) SHA1(ab7e8f0ff707771401e679b6151ad0ea85cfc792) )
+ ROM_LOAD( "pi-0.ic107", 0x30000, 0x8000, CRC(76641ee3) SHA1(8fba0fa6639e7bdfb3f7be5e945a55b64411d242) )
+ ROM_LOAD( "pj-0.ic106", 0x38000, 0x8000, CRC(37671f36) SHA1(1494eec4ecde9ae1f1101aa13eb301b3f3d06602) )
+
+ ROM_REGION( 0x0100, "proms", 0 ) /* Priority */
+ ROM_LOAD( "pt-0.ic59", 0x00000, 0x0100, CRC(fed32888) SHA1(4e9330456b20f7198c1e27ca1ae7200f25595599) ) /* BPROM type MB7114E Priority (not used) */
+ROM_END
+
GAME( 1986, xsleena, 0, xsleena, xsleena, driver_device, 0, ROT0, "Technos Japan (Taito license)", "Xain'd Sleena (World)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, xsleenaj, xsleena, xsleena, xsleena, driver_device, 0, ROT0, "Technos Japan", "Xain'd Sleena (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, solrwarr, xsleena, xsleena, xsleena, driver_device, 0, ROT0, "Technos Japan (Taito / Memetron license)", "Solar-Warrior (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, xsleenab, xsleena, xsleenab, xsleena, driver_device, 0, ROT0, "bootleg", "Xain'd Sleena (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, xsleenaba,xsleena, xsleenab, xsleena, driver_device, 0, ROT0, "bootleg", "Xain'd Sleena (bootleg, bugfixed)", MACHINE_SUPPORTS_SAVE ) // newer bootleg, fixes some of the issues with the other one
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/xexex.cpp b/src/mame/drivers/xexex.cpp
index 93b5cf555fe..24098d42aca 100644
--- a/src/mame/drivers/xexex.cpp
+++ b/src/mame/drivers/xexex.cpp
@@ -662,7 +662,7 @@ ROM_START( xexexa ) /* Asia, Version AA */
ROM_LOAD( "067b07.1e", 0x200000, 0x100000, CRC(ec87fe1b) SHA1(ec9823aea5a1fc5c47c8262e15e10b28be87231c) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
- ROM_LOAD( "er5911.19b", 0x0000, 0x0080, CRC(051c14c6) SHA1(23addbaa2ce323c06551b343ca45dea4fd2b9eee) ) // sldh - No actual label so create a unique one for this set
+ ROM_LOAD( "er5911.19b", 0x0000, 0x0080, CRC(051c14c6) SHA1(23addbaa2ce323c06551b343ca45dea4fd2b9eee) )
ROM_END
ROM_START( xexexj ) /* Japan, Version AA */
@@ -693,7 +693,7 @@ ROM_START( xexexj ) /* Japan, Version AA */
ROM_LOAD( "067b07.1e", 0x200000, 0x100000, CRC(ec87fe1b) SHA1(ec9823aea5a1fc5c47c8262e15e10b28be87231c) )
ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
- ROM_LOAD( "er5911.19b", 0x0000, 0x0080, CRC(79a79c7b) SHA1(02eb235226949af0147d6d0fd2bd3d7a68083ae6) ) // sldh - No actual label so create a unique one for this set
+ ROM_LOAD( "er5911.19b", 0x0000, 0x0080, CRC(79a79c7b) SHA1(02eb235226949af0147d6d0fd2bd3d7a68083ae6) )
ROM_END
diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp
index f0cac836222..fb5e3a62705 100644
--- a/src/mame/drivers/xmen.cpp
+++ b/src/mame/drivers/xmen.cpp
@@ -38,7 +38,7 @@ WRITE16_MEMBER(xmen_state::eeprom_w)
if (ACCESSING_BITS_0_7)
{
/* bit 0 = coin counter */
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
/* bit 2 is data */
/* bit 3 is clock (active high) */
diff --git a/src/mame/drivers/xtheball.cpp b/src/mame/drivers/xtheball.cpp
index 61cdffba992..f08785b3726 100644
--- a/src/mame/drivers/xtheball.cpp
+++ b/src/mame/drivers/xtheball.cpp
@@ -156,7 +156,7 @@ WRITE16_MEMBER(xtheball_state::bit_controls_w)
break;
case 8:
- set_led_status(machine(), 0, data & 1);
+ output().set_led_value(0, data & 1);
break;
}
}
diff --git a/src/mame/drivers/xtom3d.cpp b/src/mame/drivers/xtom3d.cpp
index 3e7a9c3548d..c017d160442 100644
--- a/src/mame/drivers/xtom3d.cpp
+++ b/src/mame/drivers/xtom3d.cpp
@@ -56,13 +56,13 @@ public:
: pcat_base_state(mconfig, type, tag)
{ }
- UINT32 *m_bios_ram;
- UINT32 *m_bios_ext1_ram;
- UINT32 *m_bios_ext2_ram;
- UINT32 *m_bios_ext3_ram;
- UINT32 *m_bios_ext4_ram;
- UINT32 *m_isa_ram1;
- UINT32 *m_isa_ram2;
+ std::unique_ptr<UINT32[]> m_bios_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext1_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext2_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext3_ram;
+ std::unique_ptr<UINT32[]> m_bios_ext4_ram;
+ std::unique_ptr<UINT32[]> m_isa_ram1;
+ std::unique_ptr<UINT32[]> m_isa_ram2;
UINT8 m_mtxc_config_reg[256];
UINT8 m_piix4_config_reg[4][256];
@@ -120,7 +120,7 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
case 0x59: // PAM0
{
if (data & 0x10) // enable RAM access to region 0xf0000 - 0xfffff
- state->membank("bios_bank")->set_base(state->m_bios_ram);
+ state->membank("bios_bank")->set_base(state->m_bios_ram.get());
else // disable RAM access (reads go to BIOS ROM)
state->membank("bios_bank")->set_base(state->memregion("bios")->base() + 0x10000);
break;
@@ -128,12 +128,12 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
case 0x5a: // PAM1
{
if (data & 0x1)
- state->membank("video_bank1")->set_base(state->m_isa_ram1);
+ state->membank("video_bank1")->set_base(state->m_isa_ram1.get());
else
state->membank("video_bank1")->set_base(state->memregion("video_bios")->base() + 0);
if (data & 0x10)
- state->membank("video_bank2")->set_base(state->m_isa_ram2);
+ state->membank("video_bank2")->set_base(state->m_isa_ram2.get());
else
state->membank("video_bank2")->set_base(state->memregion("video_bios")->base() + 0x4000);
@@ -142,12 +142,12 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
case 0x5e: // PAM5
{
if (data & 0x1)
- state->membank("bios_ext1")->set_base(state->m_bios_ext1_ram);
+ state->membank("bios_ext1")->set_base(state->m_bios_ext1_ram.get());
else
state->membank("bios_ext1")->set_base(state->memregion("bios")->base() + 0);
if (data & 0x10)
- state->membank("bios_ext2")->set_base(state->m_bios_ext2_ram);
+ state->membank("bios_ext2")->set_base(state->m_bios_ext2_ram.get());
else
state->membank("bios_ext2")->set_base(state->memregion("bios")->base() + 0x4000);
@@ -156,12 +156,12 @@ static void mtxc_config_w(device_t *busdevice, device_t *device, int function, i
case 0x5f: // PAM6
{
if (data & 0x1)
- state->membank("bios_ext3")->set_base(state->m_bios_ext3_ram);
+ state->membank("bios_ext3")->set_base(state->m_bios_ext3_ram.get());
else
state->membank("bios_ext3")->set_base(state->memregion("bios")->base() + 0x8000);
if (data & 0x10)
- state->membank("bios_ext4")->set_base(state->m_bios_ext4_ram);
+ state->membank("bios_ext4")->set_base(state->m_bios_ext4_ram.get());
else
state->membank("bios_ext4")->set_base(state->memregion("bios")->base() + 0xc000);
@@ -287,7 +287,7 @@ WRITE32_MEMBER(xtom3d_state::isa_ram1_w)
{
if (m_mtxc_config_reg[0x5a] & 0x2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_isa_ram1 + offset);
+ COMBINE_DATA(m_isa_ram1.get() + offset);
}
}
@@ -295,7 +295,7 @@ WRITE32_MEMBER(xtom3d_state::isa_ram2_w)
{
if (m_mtxc_config_reg[0x5a] & 0x2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_isa_ram2 + offset);
+ COMBINE_DATA(m_isa_ram2.get() + offset);
}
}
@@ -303,7 +303,7 @@ WRITE32_MEMBER(xtom3d_state::bios_ext1_ram_w)
{
if (m_mtxc_config_reg[0x5e] & 0x2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext1_ram + offset);
+ COMBINE_DATA(m_bios_ext1_ram.get() + offset);
}
}
@@ -312,7 +312,7 @@ WRITE32_MEMBER(xtom3d_state::bios_ext2_ram_w)
{
if (m_mtxc_config_reg[0x5e] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext2_ram + offset);
+ COMBINE_DATA(m_bios_ext2_ram.get() + offset);
}
}
@@ -321,7 +321,7 @@ WRITE32_MEMBER(xtom3d_state::bios_ext3_ram_w)
{
if (m_mtxc_config_reg[0x5f] & 0x2) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext3_ram + offset);
+ COMBINE_DATA(m_bios_ext3_ram.get() + offset);
}
}
@@ -330,7 +330,7 @@ WRITE32_MEMBER(xtom3d_state::bios_ext4_ram_w)
{
if (m_mtxc_config_reg[0x5f] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ext4_ram + offset);
+ COMBINE_DATA(m_bios_ext4_ram.get() + offset);
}
}
@@ -339,7 +339,7 @@ WRITE32_MEMBER(xtom3d_state::bios_ram_w)
{
if (m_mtxc_config_reg[0x59] & 0x20) // write to RAM if this region is write-enabled
{
- COMBINE_DATA(m_bios_ram + offset);
+ COMBINE_DATA(m_bios_ram.get() + offset);
}
}
@@ -372,13 +372,13 @@ ADDRESS_MAP_END
void xtom3d_state::machine_start()
{
- m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
- m_bios_ext1_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_ext2_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_ext3_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_bios_ext4_ram = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_isa_ram1 = auto_alloc_array(machine(), UINT32, 0x4000/4);
- m_isa_ram2 = auto_alloc_array(machine(), UINT32, 0x4000/4);
+ m_bios_ram = std::make_unique<UINT32[]>(0x10000/4);
+ m_bios_ext1_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_ext2_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_ext3_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_bios_ext4_ram = std::make_unique<UINT32[]>(0x4000/4);
+ m_isa_ram1 = std::make_unique<UINT32[]>(0x4000/4);
+ m_isa_ram2 = std::make_unique<UINT32[]>(0x4000/4);
intel82439tx_init();
}
diff --git a/src/mame/drivers/xyonix.cpp b/src/mame/drivers/xyonix.cpp
index 35847a7f445..8086885d7a4 100644
--- a/src/mame/drivers/xyonix.cpp
+++ b/src/mame/drivers/xyonix.cpp
@@ -60,8 +60,8 @@ void xyonix_state::handle_coins(int coin)
m_credits += coinage_table[tmp][1];
m_coins -= coinage_table[tmp][0];
}
- coin_lockout_global_w(machine(), 0); /* Unlock all coin slots */
- coin_counter_w(machine(),1,1); coin_counter_w(machine(),1,0); /* Count slot B */
+ machine().bookkeeping().coin_lockout_global_w(0); /* Unlock all coin slots */
+ machine().bookkeeping().coin_counter_w(1,1); machine().bookkeeping().coin_counter_w(1,0); /* Count slot B */
}
if (coin & 2) // Coin 1 !
@@ -73,8 +73,8 @@ void xyonix_state::handle_coins(int coin)
m_credits += coinage_table[tmp][1];
m_coins -= coinage_table[tmp][0];
}
- coin_lockout_global_w(machine(), 0); /* Unlock all coin slots */
- coin_counter_w(machine(),0,1); coin_counter_w(machine(),0,0); /* Count slot A */
+ machine().bookkeeping().coin_lockout_global_w(0); /* Unlock all coin slots */
+ machine().bookkeeping().coin_counter_w(0,1); machine().bookkeeping().coin_counter_w(0,0); /* Count slot A */
}
if (m_credits >= 9)
diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp
index 071df17fc95..7addd6407cd 100644
--- a/src/mame/drivers/z100.cpp
+++ b/src/mame/drivers/z100.cpp
@@ -198,7 +198,7 @@ public:
DECLARE_WRITE8_MEMBER(video_pia_B_w);
DECLARE_WRITE_LINE_MEMBER(video_pia_CA2_w);
DECLARE_WRITE_LINE_MEMBER(video_pia_CB2_w);
- UINT8 *m_gvram;
+ std::unique_ptr<UINT8[]> m_gvram;
UINT8 m_keyb_press,m_keyb_status;
UINT8 m_vram_enable;
UINT8 m_gbank;
@@ -239,7 +239,7 @@ public:
void z100_state::video_start()
{
- m_gvram = auto_alloc_array_clear(machine(), UINT8, 0x30000);
+ m_gvram = make_unique_clear<UINT8[]>(0x30000);
}
UINT32 z100_state::screen_update_z100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/drivers/z80dev.cpp b/src/mame/drivers/z80dev.cpp
index aa9377a2ca1..b18d93529a8 100644
--- a/src/mame/drivers/z80dev.cpp
+++ b/src/mame/drivers/z80dev.cpp
@@ -44,7 +44,7 @@ WRITE8_MEMBER( z80dev_state::display_w )
// xxxx ---- ???
static const UINT8 hex_7seg[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
- output_set_digit_value(offset, hex_7seg[data&0x0f]);
+ output().set_digit_value(offset, hex_7seg[data&0x0f]);
}
READ8_MEMBER( z80dev_state::test_r )
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/zac_1.cpp b/src/mame/drivers/zac_1.cpp
index 6fcc94b64bd..ae94d5a5b96 100644
--- a/src/mame/drivers/zac_1.cpp
+++ b/src/mame/drivers/zac_1.cpp
@@ -226,7 +226,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_1_state::zac_1_outtimer)
{
UINT8 display = (m_out_offs >> 3) & 7;
UINT8 digit = m_out_offs & 7;
- output_set_digit_value(display * 10 + digit, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(display * 10 + digit, patterns[m_p_ram[m_out_offs]&15]);
}
else
if (m_out_offs == 0x4a) // outhole
diff --git a/src/mame/drivers/zac_2.cpp b/src/mame/drivers/zac_2.cpp
index a06f51b8e18..659e38ae6aa 100644
--- a/src/mame/drivers/zac_2.cpp
+++ b/src/mame/drivers/zac_2.cpp
@@ -196,7 +196,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_2_state::zac_2_outtimer)
{
UINT8 display = (m_out_offs >> 3) & 7;
UINT8 digit = m_out_offs & 7;
- output_set_digit_value(display * 10 + digit, patterns[m_p_ram[m_out_offs]&15]);
+ output().set_digit_value(display * 10 + digit, patterns[m_p_ram[m_out_offs]&15]);
}
}
diff --git a/src/mame/drivers/zac_proto.cpp b/src/mame/drivers/zac_proto.cpp
index 7d82da1a88b..af6b1f604e5 100644
--- a/src/mame/drivers/zac_proto.cpp
+++ b/src/mame/drivers/zac_proto.cpp
@@ -217,9 +217,9 @@ WRITE8_MEMBER( zac_proto_state::digit_w )
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; // 9368 (outputs 0-9,A-F)
static const UINT8 decimals[10] = { 0, 0, 0x80, 0, 0, 0x80, 0, 0, 0, 0 };
offset<<=1;
- output_set_digit_value(offset, patterns[data&15] | decimals[offset]);
+ output().set_digit_value(offset, patterns[data&15] | decimals[offset]);
offset++;
- output_set_digit_value(offset, patterns[data>>4] | decimals[offset]);
+ output().set_digit_value(offset, patterns[data>>4] | decimals[offset]);
}
WRITE8_MEMBER( zac_proto_state::sound_w )
@@ -229,7 +229,7 @@ WRITE8_MEMBER( zac_proto_state::sound_w )
void zac_proto_state::machine_reset()
{
- output_set_digit_value(10, 0x3f); // units shows zero all the time
+ output().set_digit_value(10, 0x3f); // units shows zero all the time
}
static MACHINE_CONFIG_START( zac_proto, zac_proto_state )
diff --git a/src/mame/drivers/zaccaria.cpp b/src/mame/drivers/zaccaria.cpp
index fbb47193d40..a002b46b6d0 100644
--- a/src/mame/drivers/zaccaria.cpp
+++ b/src/mame/drivers/zaccaria.cpp
@@ -175,7 +175,7 @@ WRITE8_MEMBER(zaccaria_state::port1b_w)
m_acs = ~data & 0x08;
// bit 4 = led (for testing?)
- set_led_status(machine(), 0,~data & 0x10);
+ output().set_led_value(0,~data & 0x10);
}
@@ -237,7 +237,7 @@ READ8_MEMBER(zaccaria_state::prot2_r)
WRITE8_MEMBER(zaccaria_state::coin_w)
{
- coin_counter_w(machine(), 0,data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
}
WRITE8_MEMBER(zaccaria_state::nmi_mask_w)
diff --git a/src/mame/drivers/zapcomputer.cpp b/src/mame/drivers/zapcomputer.cpp
index 263cfa2b1e9..f6dab84cc73 100644
--- a/src/mame/drivers/zapcomputer.cpp
+++ b/src/mame/drivers/zapcomputer.cpp
@@ -70,16 +70,16 @@ WRITE8_MEMBER( zapcomp_state::display_7seg_w )
{
switch (offset){
case 0: //Port 0x05 : address HI
- output_set_digit_value(0, decode7seg(data >> 4));
- output_set_digit_value(1, decode7seg(data));
+ output().set_digit_value(0, decode7seg(data >> 4));
+ output().set_digit_value(1, decode7seg(data));
break;
case 1: //Port 0x06 : address LOW
- output_set_digit_value(2, decode7seg(data >> 4));
- output_set_digit_value(3, decode7seg(data));
+ output().set_digit_value(2, decode7seg(data >> 4));
+ output().set_digit_value(3, decode7seg(data));
break;
case 2: //Port 0x07 : data
- output_set_digit_value(4, decode7seg(data >> 4));
- output_set_digit_value(5, decode7seg(data));
+ output().set_digit_value(4, decode7seg(data >> 4));
+ output().set_digit_value(5, decode7seg(data));
break;
default:
break;
diff --git a/src/mame/drivers/zaxxon.cpp b/src/mame/drivers/zaxxon.cpp
index e17ab41afe6..e87d8125f91 100644
--- a/src/mame/drivers/zaxxon.cpp
+++ b/src/mame/drivers/zaxxon.cpp
@@ -380,7 +380,7 @@ CUSTOM_INPUT_MEMBER(zaxxon_state::razmataz_dial_r)
WRITE8_MEMBER(zaxxon_state::zaxxon_coin_counter_w)
{
- coin_counter_w(machine(), offset, data & 0x01);
+ machine().bookkeeping().coin_counter_w(offset, data & 0x01);
}
@@ -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 871ebaba7a0..c4de6dc757f 100644
--- a/src/mame/drivers/zn.cpp
+++ b/src/mame/drivers/zn.cpp
@@ -123,7 +123,6 @@ protected:
private:
inline void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ... );
- inline UINT16 psxreadword( UINT32 *p_n_psxram, UINT32 n_address );
inline void psxwriteword( UINT32 *p_n_psxram, UINT32 n_address, UINT16 n_data );
UINT8 m_n_znsecsel;
@@ -131,7 +130,7 @@ private:
UINT16 m_bam2_mcu_command;
int m_jdredd_gun_mux;
- UINT8* m_fx1b_fram;
+ std::unique_ptr<UINT8[]> m_fx1b_fram;
UINT16 m_vt83c461_latch;
@@ -1228,8 +1227,8 @@ ADDRESS_MAP_END
DRIVER_INIT_MEMBER(zn_state,coh1000tb)
{
- m_fx1b_fram = auto_alloc_array(machine(), UINT8, 0x200);
- machine().device<nvram_device>("fm1208s")->set_base(m_fx1b_fram, 0x200);
+ m_fx1b_fram = std::make_unique<UINT8[]>(0x200);
+ machine().device<nvram_device>("fm1208s")->set_base(m_fx1b_fram.get(), 0x200);
}
MACHINE_RESET_MEMBER(zn_state,coh1000tb)
@@ -4080,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/zodiack.cpp b/src/mame/drivers/zodiack.cpp
index 2e1c0737769..64692f27fb8 100644
--- a/src/mame/drivers/zodiack.cpp
+++ b/src/mame/drivers/zodiack.cpp
@@ -136,8 +136,8 @@ WRITE8_MEMBER( zodiack_state::master_soundlatch_w )
WRITE8_MEMBER( zodiack_state::control_w )
{
/* Bit 0-1 - coin counters */
- coin_counter_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x01);
/* Bit 2 - ???? */
}
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/zr107.cpp b/src/mame/drivers/zr107.cpp
index e5779c89ac6..f838f3e21e2 100644
--- a/src/mame/drivers/zr107.cpp
+++ b/src/mame/drivers/zr107.cpp
@@ -227,7 +227,7 @@ public:
required_shared_ptr<UINT32> m_generic_paletteram_32;
required_device<konppc_device> m_konppc;
- UINT32 *m_sharc_dataram;
+ std::unique_ptr<UINT32[]> m_sharc_dataram;
UINT8 m_led_reg0;
UINT8 m_led_reg1;
int m_ccu_vcth;
@@ -909,7 +909,7 @@ MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(zr107_state,common)
{
- m_sharc_dataram = auto_alloc_array(machine(), UINT32, 0x100000/4);
+ m_sharc_dataram = std::make_unique<UINT32[]>(0x100000/4);
m_led_reg0 = m_led_reg1 = 0x7f;
m_ccu_vcth = m_ccu_vctl = 0;
}
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/etc/template_cpu.cpp b/src/mame/etc/template_cpu.cpp
index eaf99a72996..3f85ad1dddc 100644
--- a/src/mame/etc/template_cpu.cpp
+++ b/src/mame/etc/template_cpu.cpp
@@ -107,7 +107,7 @@ xxx_cpu_device::xxx_cpu_device(const machine_config &mconfig, const char *tag, d
}
-void xxx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+void xxx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
switch (entry.index())
{
diff --git a/src/mame/etc/template_cpu.h b/src/mame/etc/template_cpu.h
index d174e572f4c..07fb81e6284 100644
--- a/src/mame/etc/template_cpu.h
+++ b/src/mame/etc/template_cpu.h
@@ -28,26 +28,26 @@ public:
protected:
// device-level overrides
- virtual void device_start();
- virtual void device_reset();
+ virtual void device_start() override;
+ virtual void device_reset() override;
// device_execute_interface overrides
- virtual UINT32 execute_min_cycles() const { return 1; }
- virtual UINT32 execute_max_cycles() const { return 7; }
- virtual UINT32 execute_input_lines() const { return 0; }
- virtual void execute_run();
- virtual void execute_set_input(int inputnum, int state);
+ virtual UINT32 execute_min_cycles() const override { return 1; }
+ virtual UINT32 execute_max_cycles() const override { return 7; }
+ virtual UINT32 execute_input_lines() const override { return 0; }
+ virtual void execute_run() override;
+ virtual void execute_set_input(int inputnum, int state) override;
// device_memory_interface overrides
- virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : NULL ); }
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : NULL ); }
// device_state_interface overrides
- void state_string_export(const device_state_entry &entry, std::string &str);
+ virtual 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 { return 4; }
- virtual UINT32 disasm_max_opcode_bytes() const { return 4; }
- virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
+ virtual UINT32 disasm_min_opcode_bytes() const override { return 4; }
+ virtual UINT32 disasm_max_opcode_bytes() const override { return 4; }
+ virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) override;
private:
address_space_config m_program_config;
diff --git a/src/mame/etc/template_driver.cpp b/src/mame/etc/template_driver.cpp
index 82b10681476..c233db1b6ba 100644
--- a/src/mame/etc/template_driver.cpp
+++ b/src/mame/etc/template_driver.cpp
@@ -151,8 +151,8 @@ static MACHINE_CONFIG_START( xxx, xxx_state )
MCFG_SCREEN_UPDATE_DRIVER(xxx_state, screen_update)
// MCFG_SCREEN_SIZE(32*8, 32*8)
// MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
- MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 442, 0, 320, 264, 0, 240) /* generic NTSC video timing at 320x240 */
- //MCFG_SCREEN_RAW_PARAMS(SYS_A_CPU_CLOCK/4, 442, 0, 256, 263, 16, 240) /* generic NTSC video timing at 256x224 */
+ MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK/2, 442, 0, 320, 264, 0, 240) /* generic NTSC video timing at 320x240 */
+ //MCFG_SCREEN_RAW_PARAMS(SYS_A_CPU_CLOCK/4, 442, 0, 256, 263, 16, 240) /* generic NTSC video timing at 256x224 */
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", xxx)
diff --git a/src/mame/etc/template_readme.txt b/src/mame/etc/template_readme.txt
index 59c68e132e3..49410ff2b2e 100644
--- a/src/mame/etc/template_readme.txt
+++ b/src/mame/etc/template_readme.txt
@@ -1,5 +1,5 @@
The template family tree is an attempt to ease the pain to write CPUs/drivers/devices
-from scratch (especially for smaller projects).
+from scratch (useful especially for smaller targets).
===
Usage:
@@ -38,3 +38,6 @@ TODO:
- Write template drivers for different endianesses;
- Write template header for drivers;
- Write tool program that auto-generate contents;
+- Fix SCREEN_RAW_PARAMS, perhaps actually link to a framework class/macro list, a couple of references are:
+ http://www.ntsc-tv.com/ntsc-index-02.htm
+ http://www.intersil.com/content/dam/Intersil/documents/tb36/tb368.pdf
diff --git a/src/mame/includes/1942.h b/src/mame/includes/1942.h
index 1ac2214fb50..2a35641950f 100644
--- a/src/mame/includes/1942.h
+++ b/src/mame/includes/1942.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Couriersud
/***************************************************************************
diff --git a/src/mame/includes/1943.h b/src/mame/includes/1943.h
index dcd0b17d126..9e926cbf8b6 100644
--- a/src/mame/includes/1943.h
+++ b/src/mame/includes/1943.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
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/3do.h b/src/mame/includes/3do.h
index 0bd7b0b84ad..c826052faa4 100644
--- a/src/mame/includes/3do.h
+++ b/src/mame/includes/3do.h
@@ -131,9 +131,9 @@ struct SVF {
};
struct DSPP {
- UINT16 *N;
- UINT16 *EI;
- UINT16 *EO;
+ std::unique_ptr<UINT16[]> N;
+ std::unique_ptr<UINT16[]> EI;
+ std::unique_ptr<UINT16[]> EO;
};
class _3do_state : public driver_device
diff --git a/src/mame/includes/40love.h b/src/mame/includes/40love.h
index 222a91a02ce..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"
@@ -31,17 +31,19 @@ public:
optional_shared_ptr<UINT8> m_mcu_ram;
/* video-related */
- bitmap_ind16 *m_tmp_bitmap1;
- bitmap_ind16 *m_tmp_bitmap2;
+ std::unique_ptr<bitmap_ind16> m_tmp_bitmap1;
+ std::unique_ptr<bitmap_ind16> m_tmp_bitmap2;
tilemap_t *m_bg_tilemap;
UINT8 m_flipscreen;
UINT8 m_pix_redraw;
UINT8 m_xoffset;
- UINT8 *m_pixram1;
- UINT8 *m_pixram2;
+ std::unique_ptr<UINT8[]> m_pixram1;
+ std::unique_ptr<UINT8[]> m_pixram2;
bitmap_ind16 *m_pixel_bitmap1;
bitmap_ind16 *m_pixel_bitmap2;
int m_pixram_sel;
+ bool m_color_bank;
+ bool m_screen_disable;
/* sound-related */
int m_sound_nmi_enable;
@@ -79,11 +81,9 @@ public:
DECLARE_WRITE8_MEMBER(sound_command_w);
DECLARE_WRITE8_MEMBER(nmi_disable_w);
DECLARE_WRITE8_MEMBER(nmi_enable_w);
- DECLARE_WRITE8_MEMBER(fortyl_coin_counter_w);
DECLARE_WRITE8_MEMBER(bank_select_w);
DECLARE_WRITE8_MEMBER(pix1_w);
DECLARE_WRITE8_MEMBER(pix2_w);
- DECLARE_READ8_MEMBER(pix1_r);
DECLARE_READ8_MEMBER(pix2_r);
DECLARE_WRITE8_MEMBER(undoukai_mcu_w);
DECLARE_READ8_MEMBER(undoukai_mcu_r);
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/abc1600.h b/src/mame/includes/abc1600.h
index 1a8a7504b8f..5269a352c47 100644
--- a/src/mame/includes/abc1600.h
+++ b/src/mame/includes/abc1600.h
@@ -127,13 +127,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
- UINT8 read_io(offs_t offset);
- void write_io(offs_t offset, UINT8 data);
- UINT8 read_internal_io(offs_t offset);
- void write_internal_io(offs_t offset, UINT8 data);
- UINT8 read_external_io(offs_t offset);
- void write_external_io(offs_t offset, UINT8 data);
-
void update_drdy0();
void update_drdy1();
void update_drdy2();
diff --git a/src/mame/includes/abc80x.h b/src/mame/includes/abc80x.h
index 6eb19e39ab3..ff688fd9702 100644
--- a/src/mame/includes/abc80x.h
+++ b/src/mame/includes/abc80x.h
@@ -120,10 +120,6 @@ public:
void clock_cassette(int state);
DECLARE_READ8_MEMBER( pling_r );
- DECLARE_READ8_MEMBER( keyboard_col_r );
- DECLARE_WRITE8_MEMBER( keyboard_row_w );
- DECLARE_WRITE8_MEMBER( keyboard_ctrl_w );
- DECLARE_READ8_MEMBER( keyboard_t1_r );
DECLARE_WRITE8_MEMBER( hrs_w );
DECLARE_WRITE8_MEMBER( hrc_w );
DECLARE_WRITE_LINE_MEMBER( ctc_z0_w );
diff --git a/src/mame/includes/aim65.h b/src/mame/includes/aim65.h
index 7e7fd7fba1b..8ef3a8e98c2 100644
--- a/src/mame/includes/aim65.h
+++ b/src/mame/includes/aim65.h
@@ -56,9 +56,7 @@ public:
DECLARE_WRITE8_MEMBER(aim65_pia_b_w);
DECLARE_READ8_MEMBER(aim65_riot_b_r);
DECLARE_WRITE8_MEMBER(aim65_riot_a_w);
- DECLARE_WRITE8_MEMBER(aim65_pa_w);
DECLARE_WRITE8_MEMBER(aim65_pb_w);
- DECLARE_WRITE8_MEMBER(aim65_printer_on);
DECLARE_READ8_MEMBER(aim65_pb_r);
UINT8 m_pia_a;
UINT8 m_pia_b;
@@ -78,7 +76,6 @@ public:
required_device<dl1416_device> m_ds4;
required_device<dl1416_device> m_ds5;
virtual void machine_start() override;
- TIMER_CALLBACK_MEMBER(aim65_printer_timer);
void aim65_pia();
DECLARE_WRITE16_MEMBER(aim65_update_ds1);
diff --git a/src/mame/includes/amstrad.h b/src/mame/includes/amstrad.h
index e87597da5f6..ce09d777428 100644
--- a/src/mame/includes/amstrad.h
+++ b/src/mame/includes/amstrad.h
@@ -50,7 +50,7 @@
****************************/
struct gate_array_t
{
- bitmap_ind16 *bitmap; /* The bitmap we work on */
+ std::unique_ptr<bitmap_ind16> bitmap; /* The bitmap we work on */
UINT8 pen_selected; /* Pen selection */
UINT8 mrer; /* Mode and ROM Enable Register */
UINT8 upper_bank;
@@ -245,7 +245,6 @@ public:
DECLARE_WRITE8_MEMBER(amstrad_ppi_portc_w);
DECLARE_WRITE_LINE_MEMBER( cpc_romdis );
- DECLARE_WRITE_LINE_MEMBER( cpc_romen );
DECLARE_WRITE8_MEMBER(rom_select);
DECLARE_FLOPPY_FORMATS( aleste_floppy_formats );
diff --git a/src/mame/includes/apollo.h b/src/mame/includes/apollo.h
index 2666fc17aa5..978d2ef0257 100644
--- a/src/mame/includes/apollo.h
+++ b/src/mame/includes/apollo.h
@@ -24,6 +24,7 @@
#include "machine/am9517a.h"
#include "machine/pic8259.h"
#include "machine/mc146818.h"
+#include "machine/apollo_dbg.h"
#include "machine/apollo_kbd.h"
#include "machine/clock.h"
#include "bus/isa/isa.h"
@@ -56,10 +57,6 @@
// Do *not* report any issues on Mametesters if this is enabled!
// #define APOLLO_XXL
-/*----------- machine/apollo_dbg.c -----------*/
-
-int apollo_debug_instruction_hook(m68000_base_device *device, offs_t curpc);
-
/*----------- drivers/apollo.c -----------*/
// return the current CPU context for log file entries
@@ -167,8 +164,6 @@ public:
DECLARE_READ8_MEMBER(cache_status_register_r);
DECLARE_WRITE8_MEMBER(task_alias_register_w);
DECLARE_READ8_MEMBER(task_alias_register_r);
- DECLARE_WRITE16_MEMBER(apollo_node_id_w);
- DECLARE_READ16_MEMBER(apollo_node_id_r);
DECLARE_WRITE16_MEMBER(latch_page_on_parity_error_register_w);
DECLARE_READ16_MEMBER(latch_page_on_parity_error_register_r);
DECLARE_WRITE8_MEMBER(master_req_register_w);
@@ -194,8 +189,6 @@ public:
DECLARE_READ8_MEMBER(dn5500_11500_r);
DECLARE_WRITE8_MEMBER(dn5500_io_protection_map_w);
DECLARE_READ8_MEMBER(dn5500_io_protection_map_r);
- DECLARE_READ32_MEMBER(apollo_f8_r);
- DECLARE_WRITE32_MEMBER(apollo_f8_w);
DECLARE_DRIVER_INIT(dsp3000);
DECLARE_DRIVER_INIT(dsp5500);
DECLARE_DRIVER_INIT(dn3500);
@@ -212,7 +205,6 @@ public:
IRQ_CALLBACK_MEMBER(apollo_irq_acknowledge);
IRQ_CALLBACK_MEMBER(apollo_pic_acknowledge);
void apollo_bus_error();
- DECLARE_WRITE8_MEMBER( apollo_kbd_putchar );
DECLARE_READ_LINE_MEMBER( apollo_kbd_is_german );
DECLARE_WRITE_LINE_MEMBER( apollo_dma8237_out_eop );
DECLARE_WRITE_LINE_MEMBER( apollo_dma_1_hrq_changed );
@@ -532,7 +524,7 @@ protected:
int m_p_clock;
int m_data_clock;
- UINT16 *m_image_memory;
+ std::unique_ptr<UINT16[]> m_image_memory;
int m_image_plane_size;
int m_image_memory_size;
diff --git a/src/mame/includes/apple2.h b/src/mame/includes/apple2.h
index f353598e614..0216a80236e 100644
--- a/src/mame/includes/apple2.h
+++ b/src/mame/includes/apple2.h
@@ -177,7 +177,7 @@ public:
double m_joystick_x2_time;
double m_joystick_y2_time;
apple2_memmap_config m_mem_config;
- apple2_meminfo *m_current_meminfo;
+ std::unique_ptr<apple2_meminfo[]> m_current_meminfo;
int m_fdc_diskreg;
const UINT8 *m_a2_videoram, *m_a2_videoaux, *m_textgfx_data;
UINT32 m_a2_videomask, m_textgfx_datalen;
@@ -186,8 +186,8 @@ public:
int m_bgcolor;
int m_flash;
int m_alt_charset_value;
- UINT16 *m_hires_artifact_map;
- UINT16 *m_dhires_artifact_map;
+ std::unique_ptr<UINT16[]> m_hires_artifact_map;
+ std::unique_ptr<UINT16[]> m_dhires_artifact_map;
bool m_monochrome_dhr;
int m_inh_slot;
int m_reset_flag;
@@ -371,7 +371,7 @@ private:
UINT8 m_exp_bankhior;
int m_exp_addrmask;
UINT8 m_exp_regs[0x10];
- UINT8 *m_exp_ram;
+ std::unique_ptr<UINT8[]> m_exp_ram;
int m_exp_wptr, m_exp_liveptr;
};
/*----------- defined in drivers/apple2.c -----------*/
diff --git a/src/mame/includes/apple2gs.h b/src/mame/includes/apple2gs.h
index eddd8445cd5..6812cc2b466 100644
--- a/src/mame/includes/apple2gs.h
+++ b/src/mame/includes/apple2gs.h
@@ -113,7 +113,7 @@ public:
required_ioport m_adb_mousex, m_adb_mousey;
required_device<palette_device> m_palette;
- UINT8 *m_slowmem;
+ std::unique_ptr<UINT8[]> m_slowmem;
UINT8 m_newvideo;
UINT16 m_bordercolor;
UINT8 m_vgcint;
@@ -159,7 +159,7 @@ public:
UINT8 m_sndglu_ctrl;
int m_sndglu_addr;
int m_sndglu_dummy_read;
- bitmap_ind16 *m_legacy_gfx;
+ std::unique_ptr<bitmap_ind16> m_legacy_gfx;
bool m_is_rom3;
UINT8 m_echo_bank;
UINT64 m_last_adb_time;
diff --git a/src/mame/includes/apple3.h b/src/mame/includes/apple3.h
index 1d389c0b435..4d53b0bba56 100644
--- a/src/mame/includes/apple3.h
+++ b/src/mame/includes/apple3.h
@@ -93,8 +93,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(apple3_sync_w);
DECLARE_READ8_MEMBER(apple3_c0xx_r);
DECLARE_WRITE8_MEMBER(apple3_c0xx_w);
- DECLARE_READ8_MEMBER(apple3_00xx_r);
- DECLARE_WRITE8_MEMBER(apple3_00xx_w);
DECLARE_DRIVER_INIT(apple3);
DECLARE_MACHINE_RESET(apple3);
DECLARE_VIDEO_START(apple3);
@@ -111,7 +109,6 @@ public:
void apple3_video_text40(bitmap_ind16 &bitmap);
void apple3_video_text80(bitmap_ind16 &bitmap);
void apple3_video_graphics_hgr(bitmap_ind16 &bitmap);
- UINT8 swap_bits(UINT8 b);
void apple3_video_graphics_chgr(bitmap_ind16 &bitmap);
void apple3_video_graphics_shgr(bitmap_ind16 &bitmap);
void apple3_video_graphics_chires(bitmap_ind16 &bitmap);
@@ -148,7 +145,7 @@ private:
offs_t m_zpa;
UINT8 m_last_n;
UINT8 m_char_mem[0x800];
- UINT32 *m_hgr_map;
+ std::unique_ptr<UINT32[]> m_hgr_map;
bool m_sync;
bool m_rom_has_been_disabled;
diff --git a/src/mame/includes/aquarium.h b/src/mame/includes/aquarium.h
index 878651098ef..2741a17be17 100644
--- a/src/mame/includes/aquarium.h
+++ b/src/mame/includes/aquarium.h
@@ -26,7 +26,7 @@ public:
required_shared_ptr<UINT16> m_bak_videoram;
required_shared_ptr<UINT16> m_txt_videoram;
required_shared_ptr<UINT16> m_scroll;
-
+
/* video-related */
tilemap_t *m_txt_tilemap;
tilemap_t *m_mid_tilemap;
@@ -54,7 +54,6 @@ public:
virtual void machine_reset() override;
virtual void video_start() override;
UINT32 screen_update_aquarium(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs );
UINT8 aquarium_snd_bitswap( UINT8 scrambled_data );
required_device<cpu_device> m_maincpu;
required_device<okim6295_device> m_oki;
diff --git a/src/mame/includes/arabian.h b/src/mame/includes/arabian.h
index c2d92febffa..0dc5fc7fde2 100644
--- a/src/mame/includes/arabian.h
+++ b/src/mame/includes/arabian.h
@@ -23,8 +23,8 @@ public:
required_shared_ptr<UINT8> m_custom_cpu_ram;
required_shared_ptr<UINT8> m_blitter;
- UINT8 * m_main_bitmap;
- UINT8 * m_converted_gfx;
+ std::unique_ptr<UINT8[]> m_main_bitmap;
+ std::unique_ptr<UINT8[]> m_converted_gfx;
/* video-related */
UINT8 m_video_control;
diff --git a/src/mame/includes/arcadia.h b/src/mame/includes/arcadia.h
index 7e8cd46fc15..164c095852c 100644
--- a/src/mame/includes/arcadia.h
+++ b/src/mame/includes/arcadia.h
@@ -94,7 +94,7 @@ public:
UINT8 ram3[3][16];
} d;
} m_reg;
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
DECLARE_DRIVER_INIT(arcadia);
virtual void machine_start() override;
virtual void video_start() override;
diff --git a/src/mame/includes/argus.h b/src/mame/includes/argus.h
index 9aa56173f83..1274f9a5d58 100644
--- a/src/mame/includes/argus.h
+++ b/src/mame/includes/argus.h
@@ -46,7 +46,7 @@ public:
UINT16 m_palette_intensity;
// argus specific
- UINT8 *m_dummy_bg0ram;
+ std::unique_ptr<UINT8[]> m_dummy_bg0ram;
int m_lowbitscroll;
int m_prvscrollx;
@@ -55,7 +55,7 @@ public:
UINT8 *m_butasan_bg0ram;
UINT8 *m_butasan_bg0backram;
UINT8 *m_butasan_txbackram;
- UINT8 *m_butasan_pagedram[2];
+ std::unique_ptr<UINT8[]> m_butasan_pagedram[2];
UINT8 m_butasan_page_latch;
UINT8 m_butasan_bg1_status;
UINT8 m_butasan_unknown;
@@ -85,7 +85,6 @@ public:
DECLARE_WRITE8_MEMBER(butasan_bg0_status_w);
DECLARE_WRITE8_MEMBER(butasan_bg1_status_w);
DECLARE_WRITE8_MEMBER(butasan_paletteram_w);
- DECLARE_READ8_MEMBER(butasan_bg1ram_r);
DECLARE_WRITE8_MEMBER(butasan_bg1ram_w);
DECLARE_WRITE8_MEMBER(butasan_pageselect_w);
DECLARE_READ8_MEMBER(butasan_pagedram_r);
diff --git a/src/mame/includes/arkanoid.h b/src/mame/includes/arkanoid.h
index 7fc6ba11d03..483975bd45f 100644
--- a/src/mame/includes/arkanoid.h
+++ b/src/mame/includes/arkanoid.h
@@ -15,6 +15,11 @@ enum {
class arkanoid_state : public driver_device
{
public:
+ enum
+ {
+ TIMER_68705_PRESCALER_EXPIRED,
+ };
+
arkanoid_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_videoram(*this,"videoram"),
@@ -38,18 +43,26 @@ public:
/* input-related */
UINT8 m_paddle_select;
- /* misc */
+ /* bootleg related */
int m_bootleg_id;
- UINT8 m_z80write;
- UINT8 m_fromz80;
- UINT8 m_m68705write;
- UINT8 m_toz80;
+ UINT8 m_bootleg_cmd;
+
+ /* mcu interface related */
+ bool m_z80HasWritten; // z80 has written to latch flag
+ UINT8 m_fromz80; // byte latch for z80->68705 comms
+ bool m_68705HasWritten; // 68705 has written to latch flag
+ UINT8 m_toz80; // byte latch for 68705->z80 comms
+
+ /* mcu internal related */
UINT8 m_port_a_in;
UINT8 m_port_a_out;
UINT8 m_ddr_a;
+ UINT8 m_port_c_internal;
UINT8 m_port_c_out;
UINT8 m_ddr_c;
- UINT8 m_bootleg_cmd;
+ UINT8 m_tdr;
+ UINT8 m_tcr;
+
/* hexaa */
UINT8 m_hexaa_from_main;
@@ -69,10 +82,13 @@ public:
DECLARE_READ8_MEMBER(arkanoid_68705_port_c_r);
DECLARE_WRITE8_MEMBER(arkanoid_68705_port_c_w);
DECLARE_WRITE8_MEMBER(arkanoid_68705_ddr_c_w);
+ DECLARE_READ8_MEMBER(arkanoid_68705_tdr_r);
+ DECLARE_WRITE8_MEMBER(arkanoid_68705_tdr_w);
+ DECLARE_READ8_MEMBER(arkanoid_68705_tcr_r);
+ DECLARE_WRITE8_MEMBER(arkanoid_68705_tcr_w);
DECLARE_READ8_MEMBER(arkanoid_bootleg_f000_r);
DECLARE_READ8_MEMBER(arkanoid_bootleg_f002_r);
DECLARE_WRITE8_MEMBER(arkanoid_bootleg_d018_w);
- DECLARE_READ8_MEMBER(block2_bootleg_f000_r);
DECLARE_READ8_MEMBER(arkanoid_bootleg_d008_r);
DECLARE_WRITE8_MEMBER(arkanoid_videoram_w);
DECLARE_WRITE8_MEMBER(arkanoid_d008_w);
@@ -102,7 +118,10 @@ public:
virtual void video_start() override;
UINT32 screen_update_arkanoid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_hexa(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_CALLBACK_MEMBER(test);
+ TIMER_CALLBACK_MEMBER(timer_68705_increment);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void arkanoid_bootleg_init( );
+
+protected:
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
};
diff --git a/src/mame/includes/armedf.h b/src/mame/includes/armedf.h
index 4934f2d6d00..b09b256ee45 100644
--- a/src/mame/includes/armedf.h
+++ b/src/mame/includes/armedf.h
@@ -28,7 +28,7 @@ public:
required_device<buffered_spriteram16_device> m_spriteram;
/* memory pointers */
- UINT8 *m_text_videoram;
+ std::unique_ptr<UINT8[]> m_text_videoram;
required_shared_ptr<UINT16> m_spr_pal_clut;
required_shared_ptr<UINT16> m_fg_videoram;
required_shared_ptr<UINT16> m_bg_videoram;
diff --git a/src/mame/includes/asterix.h b/src/mame/includes/asterix.h
index 9cabb6f1957..04a65a6aee3 100644
--- a/src/mame/includes/asterix.h
+++ b/src/mame/includes/asterix.h
@@ -44,7 +44,6 @@ public:
required_device<k056832_device> m_k056832;
required_device<k05324x_device> m_k053244;
required_device<k053251_device> m_k053251;
- DECLARE_READ16_MEMBER(control2_r);
DECLARE_WRITE16_MEMBER(control2_w);
DECLARE_WRITE8_MEMBER(sound_arm_nmi_w);
DECLARE_WRITE16_MEMBER(sound_irq_w);
diff --git a/src/mame/includes/astrocde.h b/src/mame/includes/astrocde.h
index 5a3657eb0a6..99ec5cc7e39 100644
--- a/src/mame/includes/astrocde.h
+++ b/src/mame/includes/astrocde.h
@@ -94,7 +94,7 @@ public:
UINT8 m_port_2_last;
UINT8 m_ram_write_enable;
UINT8 m_input_select;
- UINT8 *m_sparklestar;
+ std::unique_ptr<UINT8[]> m_sparklestar;
UINT8 m_interrupt_enabl;
UINT8 m_interrupt_vector;
UINT8 m_interrupt_scanline;
@@ -120,7 +120,7 @@ public:
UINT8 m_pattern_skip;
UINT8 m_pattern_width;
UINT8 m_pattern_height;
- UINT16 *m_profpac_videoram;
+ std::unique_ptr<UINT16[]> m_profpac_videoram;
UINT16 m_profpac_palette[16];
UINT8 m_profpac_colormap[4];
UINT8 m_profpac_intercept;
diff --git a/src/mame/includes/astrof.h b/src/mame/includes/astrof.h
index 46631763fd0..f45a3681777 100644
--- a/src/mame/includes/astrof.h
+++ b/src/mame/includes/astrof.h
@@ -25,7 +25,7 @@ public:
/* video-related */
required_shared_ptr<UINT8> m_videoram;
- UINT8 * m_colorram;
+ std::unique_ptr<UINT8[]> m_colorram;
required_shared_ptr<UINT8> m_astrof_color;
optional_shared_ptr<UINT8> m_tomahawk_protection;
diff --git a/src/mame/includes/at.h b/src/mame/includes/at.h
index 63391195f90..7d1d8e84d4b 100644
--- a/src/mame/includes/at.h
+++ b/src/mame/includes/at.h
@@ -125,8 +125,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(pc_dack5_w);
DECLARE_WRITE_LINE_MEMBER(pc_dack6_w);
DECLARE_WRITE_LINE_MEMBER(pc_dack7_w);
- DECLARE_READ32_MEMBER(ide_r);
- DECLARE_WRITE32_MEMBER(ide_w);
DECLARE_READ8_MEMBER(at_dma8237_2_r);
DECLARE_WRITE8_MEMBER(at_dma8237_2_w);
DECLARE_READ8_MEMBER(at_keybc_r);
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 e38a467a336..3cef67afe31 100644
--- a/src/mame/includes/atarig1.h
+++ b/src/mame/includes/atarig1.h
@@ -34,7 +34,7 @@ public:
required_shared_ptr<UINT16> m_mo_command;
UINT16 * m_bslapstic_base;
- void * m_bslapstic_bank0;
+ std::unique_ptr<UINT8[]> m_bslapstic_bank0;
UINT8 m_bslapstic_bank;
bool m_bslapstic_primed;
@@ -47,7 +47,6 @@ public:
virtual void device_post_load() override;
virtual void update_interrupts() override;
virtual void scanline_update(screen_device &screen, int scanline) override;
- DECLARE_WRITE16_MEMBER(mo_control_w);
DECLARE_WRITE16_MEMBER(mo_command_w);
DECLARE_READ16_MEMBER(special_port0_r);
DECLARE_WRITE16_MEMBER(a2d_select_w);
diff --git a/src/mame/includes/atarig42.h b/src/mame/includes/atarig42.h
index 0d4208de271..048d0c5384e 100644
--- a/src/mame/includes/atarig42.h
+++ b/src/mame/includes/atarig42.h
@@ -73,5 +73,4 @@ public:
DECLARE_MACHINE_RESET(atarig42);
DECLARE_VIDEO_START(atarig42);
UINT32 screen_update_atarig42(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void screen_eof_atarig42(screen_device &screen, bool state);
};
diff --git a/src/mame/includes/atarist.h b/src/mame/includes/atarist.h
index 9c85bbd8b9d..34a6be7972e 100644
--- a/src/mame/includes/atarist.h
+++ b/src/mame/includes/atarist.h
@@ -393,7 +393,6 @@ public:
DECLARE_READ16_MEMBER( microwire_mask_r );
DECLARE_WRITE16_MEMBER( microwire_mask_w );
- DECLARE_READ8_MEMBER( mfp_gpio_r );
DECLARE_WRITE_LINE_MEMBER( write_monochrome );
void dmasound_set_state(int level);
diff --git a/src/mame/includes/atarisy1.h b/src/mame/includes/atarisy1.h
index 95a8bf5e161..a2e27c24704 100644
--- a/src/mame/includes/atarisy1.h
+++ b/src/mame/includes/atarisy1.h
@@ -61,7 +61,6 @@ public:
DECLARE_READ16_MEMBER(joystick_r);
DECLARE_WRITE16_MEMBER(joystick_w);
DECLARE_READ16_MEMBER(trakball_r);
- DECLARE_READ16_MEMBER(port4_r);
DECLARE_READ8_MEMBER(switch_6502_r);
DECLARE_WRITE8_MEMBER(led_w);
DECLARE_WRITE8_MEMBER(via_pa_w);
diff --git a/src/mame/includes/atom.h b/src/mame/includes/atom.h
index e0db227bcba..af9ecff57cf 100644
--- a/src/mame/includes/atom.h
+++ b/src/mame/includes/atom.h
@@ -86,9 +86,6 @@ public:
required_ioport m_rpt;
virtual void machine_start() override;
- UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
- void bankswitch();
DECLARE_WRITE8_MEMBER( ppi_pa_w );
DECLARE_READ8_MEMBER( ppi_pb_r );
diff --git a/src/mame/includes/banctec.h b/src/mame/includes/banctec.h
index f16850a6532..d41e87c777e 100644
--- a/src/mame/includes/banctec.h
+++ b/src/mame/includes/banctec.h
@@ -20,8 +20,6 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_videoram(*this, "videoram") { }
- DECLARE_READ8_MEMBER(banctec_read);
- DECLARE_WRITE8_MEMBER(banctec_write);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
MC6845_ON_UPDATE_ADDR_CHANGED(crtc_addr);
virtual void machine_reset() override;
diff --git a/src/mame/includes/battlane.h b/src/mame/includes/battlane.h
index 48a1b7acce2..1a6e6124a12 100644
--- a/src/mame/includes/battlane.h
+++ b/src/mame/includes/battlane.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
diff --git a/src/mame/includes/bbc.h b/src/mame/includes/bbc.h
index e6122615b8f..8a5851a664f 100644
--- a/src/mame/includes/bbc.h
+++ b/src/mame/includes/bbc.h
@@ -138,6 +138,9 @@ public:
DECLARE_MACHINE_RESET(bbcb);
DECLARE_VIDEO_START(bbcb);
+ DECLARE_MACHINE_START(torch);
+ DECLARE_MACHINE_RESET(torch);
+
DECLARE_MACHINE_START(bbcbp);
DECLARE_MACHINE_RESET(bbcbp);
DECLARE_VIDEO_START(bbcbp);
@@ -150,10 +153,8 @@ public:
DECLARE_MACHINE_RESET(bbcmc);
DECLARE_PALETTE_INIT(bbc);
- UINT32 screen_update_bbc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(bbcb_vsync);
INTERRUPT_GEN_MEMBER(bbcb_keyscan);
- INTERRUPT_GEN_MEMBER(bbcm_keyscan);
TIMER_CALLBACK_MEMBER(bbc_tape_timer_cb);
DECLARE_WRITE_LINE_MEMBER(write_acia_clock);
DECLARE_WRITE_LINE_MEMBER(bbcb_acia6850_irq_w);
@@ -417,11 +418,6 @@ public: // HACK FOR MC6845
void bbc_setvideoshadow(int vdusel);
void common_init(int memorySize);
void set_pixel_lookup();
- void set_cursor(bbc_state *state);
- void BBC_Clock_CR(bbc_state *state);
- void BBC_Set_HSync(int offset, int data);
- void BBC_Set_VSync(int offset, int data);
- void BBC_Set_CRE(int offset, int data);
int vdudriverset();
int bbcm_vdudriverset();
int bbc_keyboard(address_space &space, int data);
diff --git a/src/mame/includes/beathead.h b/src/mame/includes/beathead.h
index 95d17a73b43..5913cb4a997 100644
--- a/src/mame/includes/beathead.h
+++ b/src/mame/includes/beathead.h
@@ -67,9 +67,6 @@ public:
DECLARE_READ32_MEMBER( interrupt_control_r );
DECLARE_WRITE32_MEMBER( eeprom_data_w );
DECLARE_WRITE32_MEMBER( eeprom_enable_w );
- DECLARE_READ32_MEMBER( input_2_r );
- DECLARE_READ32_MEMBER( sound_data_r );
- DECLARE_WRITE32_MEMBER( sound_data_w );
DECLARE_WRITE32_MEMBER( sound_reset_w );
DECLARE_WRITE32_MEMBER( coin_count_w );
DECLARE_READ32_MEMBER( speedup_r );
diff --git a/src/mame/includes/bebox.h b/src/mame/includes/bebox.h
index 6b72184add8..80ace184a53 100644
--- a/src/mame/includes/bebox.h
+++ b/src/mame/includes/bebox.h
@@ -96,8 +96,6 @@ public:
DECLARE_WRITE64_MEMBER(bebox_cpu1_imask_w);
DECLARE_WRITE64_MEMBER(bebox_crossproc_interrupts_w);
DECLARE_WRITE64_MEMBER(bebox_processor_resets_w);
- DECLARE_WRITE8_MEMBER(bebox_800001F0_w);
- DECLARE_WRITE64_MEMBER(bebox_800003F0_w);
DECLARE_WRITE8_MEMBER(bebox_page_w);
DECLARE_WRITE8_MEMBER(bebox_80000480_w);
DECLARE_WRITE8_MEMBER(bebox_flash_w);
diff --git a/src/mame/includes/bfm_sc45.h b/src/mame/includes/bfm_sc45.h
index 690be3ce8e3..5844cdc9a1b 100644
--- a/src/mame/includes/bfm_sc45.h
+++ b/src/mame/includes/bfm_sc45.h
@@ -629,7 +629,7 @@ public:
{ }
UINT32* m_adder4cpuregion;
- UINT32* m_adder4ram;
+ std::unique_ptr<UINT32[]> m_adder4ram;
DECLARE_READ32_MEMBER(adder4_mem_r);
DECLARE_WRITE32_MEMBER(adder4_mem_w);
diff --git a/src/mame/includes/bigevglf.h b/src/mame/includes/bigevglf.h
index d4dd3f8a451..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"
@@ -25,7 +25,7 @@ public:
/* video-related */
bitmap_ind16 m_tmp_bitmap[4];
- UINT8 *m_vidram;
+ std::unique_ptr<UINT8[]> m_vidram;
UINT32 m_vidram_bank;
UINT32 m_plane_selected;
UINT32 m_plane_visible;
diff --git a/src/mame/includes/bionicc.h b/src/mame/includes/bionicc.h
index f73849bf72c..afe83c076cb 100644
--- a/src/mame/includes/bionicc.h
+++ b/src/mame/includes/bionicc.h
@@ -1,5 +1,6 @@
-// license:???
-// copyright-holders:Steven Frew, Phil Stroffolino, Paul Leaman
+// license:BSD-3-Clause
+// copyright-holders:Phil Stroffolino, Paul Leaman
+// thanks-to: Steven Frew (the author of Slutte)
/***************************************************************************
Bionic Commando
diff --git a/src/mame/includes/bking.h b/src/mame/includes/bking.h
index 1b32797ba62..ffd455d3421 100644
--- a/src/mame/includes/bking.h
+++ b/src/mame/includes/bking.h
@@ -70,13 +70,6 @@ public:
DECLARE_WRITE8_MEMBER(bking3_addr_h_w);
DECLARE_READ8_MEMBER(bking3_extrarom_r);
DECLARE_READ8_MEMBER(bking3_ext_check_r);
- DECLARE_READ8_MEMBER(bking3_68705_port_a_r);
- DECLARE_WRITE8_MEMBER(bking3_68705_port_a_w);
- DECLARE_WRITE8_MEMBER(bking3_68705_ddr_a_w);
- DECLARE_READ8_MEMBER(bking3_68705_port_b_r);
- DECLARE_WRITE8_MEMBER(bking3_68705_port_b_w);
- DECLARE_WRITE8_MEMBER(bking3_68705_ddr_b_w);
- DECLARE_READ8_MEMBER(bking3_68705_port_c_r);
DECLARE_WRITE8_MEMBER(bking_xld1_w);
DECLARE_WRITE8_MEMBER(bking_yld1_w);
DECLARE_WRITE8_MEMBER(bking_xld2_w);
diff --git a/src/mame/includes/blktiger.h b/src/mame/includes/blktiger.h
index 7a399ba839a..c464103385e 100644
--- a/src/mame/includes/blktiger.h
+++ b/src/mame/includes/blktiger.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
@@ -32,7 +32,7 @@ public:
UINT32 m_scroll_bank;
UINT8 m_scroll_x[2];
UINT8 m_scroll_y[2];
- UINT8 *m_scroll_ram;
+ std::unique_ptr<UINT8[]> m_scroll_ram;
UINT8 m_screen_layout;
UINT8 m_chon;
UINT8 m_objon;
diff --git a/src/mame/includes/blstroid.h b/src/mame/includes/blstroid.h
index bddeed9d95d..d1cedbeead6 100644
--- a/src/mame/includes/blstroid.h
+++ b/src/mame/includes/blstroid.h
@@ -34,7 +34,6 @@ public:
virtual void update_interrupts() override;
virtual void scanline_update(screen_device &screen, int scanline) override;
DECLARE_WRITE16_MEMBER(blstroid_halt_until_hblank_0_w);
- DECLARE_READ16_MEMBER(inputs_r);
DECLARE_DRIVER_INIT(blstroid);
TILE_GET_INFO_MEMBER(get_playfield_tile_info);
DECLARE_MACHINE_START(blstroid);
diff --git a/src/mame/includes/brkthru.h b/src/mame/includes/brkthru.h
index 617292d5a3c..c3cfd0d6daa 100644
--- a/src/mame/includes/brkthru.h
+++ b/src/mame/includes/brkthru.h
@@ -55,6 +55,5 @@ public:
DECLARE_PALETTE_INIT(brkthru);
UINT32 screen_update_brkthru(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
- void show_register( bitmap_ind16 &bitmap, int x, int y, UINT32 data );
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int prio );
};
diff --git a/src/mame/includes/btime.h b/src/mame/includes/btime.h
index fbda90ffd2d..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;
@@ -39,7 +42,7 @@ public:
optional_shared_ptr<UINT8> m_audio_rambase;
/* video-related */
- bitmap_ind16 *m_background_bitmap;
+ std::unique_ptr<bitmap_ind16> m_background_bitmap;
UINT8 m_btime_palette;
UINT8 m_bnj_scroll1;
UINT8 m_bnj_scroll2;
@@ -62,14 +65,9 @@ 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(lnc_w);
- DECLARE_WRITE8_MEMBER(mmonkey_w);
- DECLARE_WRITE8_MEMBER(btime_w);
- DECLARE_WRITE8_MEMBER(tisland_w);
- DECLARE_WRITE8_MEMBER(zoar_w);
- DECLARE_WRITE8_MEMBER(disco_w);
DECLARE_WRITE8_MEMBER(audio_command_w);
DECLARE_READ8_MEMBER(audio_command_r);
DECLARE_READ8_MEMBER(zoar_dsw1_read);
diff --git a/src/mame/includes/bullet.h b/src/mame/includes/bullet.h
index 5feecceacdb..206b5dac222 100644
--- a/src/mame/includes/bullet.h
+++ b/src/mame/includes/bullet.h
@@ -89,7 +89,6 @@ public:
DECLARE_WRITE8_MEMBER( exdma_w );
DECLARE_WRITE8_MEMBER( hdcon_w );
DECLARE_WRITE8_MEMBER( segst_w );
- DECLARE_WRITE8_MEMBER( dart_w );
DECLARE_READ8_MEMBER( dma_mreq_r );
DECLARE_WRITE8_MEMBER( dma_mreq_w );
DECLARE_READ8_MEMBER( pio_pb_r );
@@ -101,9 +100,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( write_centronics_fault );
DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
- void bankswitch();
void update_dma_rdy();
-
// memory state
int m_segst;
int m_brom;
@@ -170,8 +167,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( cstrb_w );
DECLARE_WRITE_LINE_MEMBER( req_w );
- void fdc_intrq_w(bool state);
-
void update_dma_rdy();
int m_rome;
diff --git a/src/mame/includes/bwing.h b/src/mame/includes/bwing.h
index d3060324cfb..215cb663122 100644
--- a/src/mame/includes/bwing.h
+++ b/src/mame/includes/bwing.h
@@ -61,7 +61,6 @@ public:
DECLARE_WRITE8_MEMBER(bwp3_nmiack_w);
DECLARE_WRITE8_MEMBER(bwp1_ctrl_w);
DECLARE_WRITE8_MEMBER(bwp2_ctrl_w);
- DECLARE_WRITE8_MEMBER(spriteram_w);
DECLARE_WRITE8_MEMBER(videoram_w);
DECLARE_WRITE8_MEMBER(fgscrollram_w);
DECLARE_WRITE8_MEMBER(bgscrollram_w);
diff --git a/src/mame/includes/cabal.h b/src/mame/includes/cabal.h
index 4f80222fbb3..6f5a3e71cfb 100644
--- a/src/mame/includes/cabal.h
+++ b/src/mame/includes/cabal.h
@@ -72,6 +72,4 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
-
- void seibu_sound_bootleg(const char *cpu,int length);
};
diff --git a/src/mame/includes/carpolo.h b/src/mame/includes/carpolo.h
index 469ad2c268a..62978cef335 100644
--- a/src/mame/includes/carpolo.h
+++ b/src/mame/includes/carpolo.h
@@ -68,11 +68,11 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- bitmap_ind16 *m_sprite_sprite_collision_bitmap1;
- bitmap_ind16 *m_sprite_sprite_collision_bitmap2;
- bitmap_ind16 *m_sprite_goal_collision_bitmap1;
- bitmap_ind16 *m_sprite_goal_collision_bitmap2;
- bitmap_ind16 *m_sprite_border_collision_bitmap;
+ std::unique_ptr<bitmap_ind16> m_sprite_sprite_collision_bitmap1;
+ std::unique_ptr<bitmap_ind16> m_sprite_sprite_collision_bitmap2;
+ std::unique_ptr<bitmap_ind16> m_sprite_goal_collision_bitmap1;
+ std::unique_ptr<bitmap_ind16> m_sprite_goal_collision_bitmap2;
+ std::unique_ptr<bitmap_ind16> m_sprite_border_collision_bitmap;
DECLARE_READ8_MEMBER(carpolo_ball_screen_collision_cause_r);
DECLARE_READ8_MEMBER(carpolo_car_ball_collision_x_r);
DECLARE_READ8_MEMBER(carpolo_car_ball_collision_y_r);
diff --git a/src/mame/includes/cave.h b/src/mame/includes/cave.h
index b8616cfcbc1..938a4757559 100644
--- a/src/mame/includes/cave.h
+++ b/src/mame/includes/cave.h
@@ -85,7 +85,7 @@ public:
int m_spriteram_bank[4];
int m_spriteram_bank_delay[4];
- UINT16 *m_palette_map[4];
+ std::unique_ptr<UINT16[]> m_palette_map[4];
int m_layers_offs_x;
int m_layers_offs_y;
@@ -161,7 +161,6 @@ public:
DECLARE_WRITE8_MEMBER(sailormn_rombank_w);
DECLARE_WRITE8_MEMBER(sailormn_okibank_w);
DECLARE_WRITE8_MEMBER(sailormn_oki2bank_w);
- DECLARE_WRITE16_MEMBER(donpachi_videoregs_w);
DECLARE_WRITE16_MEMBER(cave_vram_0_w);
DECLARE_WRITE16_MEMBER(cave_vram_1_w);
DECLARE_WRITE16_MEMBER(cave_vram_2_w);
diff --git a/src/mame/includes/cbasebal.h b/src/mame/includes/cbasebal.h
index 6c2ede6d076..b64eb70e6f8 100644
--- a/src/mame/includes/cbasebal.h
+++ b/src/mame/includes/cbasebal.h
@@ -22,8 +22,9 @@ public:
/* video-related */
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
- UINT8 *m_textram;
- UINT8 *m_scrollram;
+ std::unique_ptr<UINT8[]> m_textram;
+ std::unique_ptr<UINT8[]> m_scrollram;
+ std::unique_ptr<UINT8[]> m_decoded;
UINT8 m_scroll_x[2];
UINT8 m_scroll_y[2];
int m_tilebank;
diff --git a/src/mame/includes/cbm2.h b/src/mame/includes/cbm2.h
index 189fdfa0b79..78ddb7824da 100644
--- a/src/mame/includes/cbm2.h
+++ b/src/mame/includes/cbm2.h
@@ -202,8 +202,6 @@ public:
DECLARE_WRITE8_MEMBER( cia_pa_w );
DECLARE_READ8_MEMBER( cia_pb_r );
- DECLARE_WRITE_LINE_MEMBER( tape_read_w );
-
DECLARE_READ8_MEMBER( ext_tpi_pb_r );
DECLARE_WRITE8_MEMBER( ext_tpi_pb_w );
DECLARE_WRITE8_MEMBER( ext_tpi_pc_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/cclimber.h b/src/mame/includes/cclimber.h
index e4fd5acc1d1..2d0b64f566a 100644
--- a/src/mame/includes/cclimber.h
+++ b/src/mame/includes/cclimber.h
@@ -49,6 +49,7 @@ public:
tilemap_t *m_pf_tilemap;
tilemap_t *m_bs_tilemap;
tilemap_t *m_toproller_bg_tilemap;
+ std::unique_ptr<UINT8[]> m_opcodes;
DECLARE_WRITE8_MEMBER(swimmer_sh_soundlatch_w);
DECLARE_WRITE8_MEMBER(yamato_p0_w);
@@ -97,7 +98,6 @@ public:
void toprollr_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx);
void swimmer_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx);
void cclimber_decode(const UINT8 convtable[8][16]);
- void cannonb_patch();
INTERRUPT_GEN_MEMBER(vblank_irq);
};
diff --git a/src/mame/includes/cdi.h b/src/mame/includes/cdi.h
index d8b81c01558..2e7b13ada04 100644
--- a/src/mame/includes/cdi.h
+++ b/src/mame/includes/cdi.h
@@ -18,20 +18,58 @@ class cdi_state : public driver_device
{
public:
cdi_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_planea(*this, "planea"),
- m_planeb(*this, "planeb"),
- m_input1(*this, "INPUT1"),
- m_input2(*this, "INPUT2"),
- m_mousex(*this, "MOUSEX"),
- m_mousey(*this, "MOUSEY"),
- m_mousebtn(*this, "MOUSEBTN"),
- m_slave(*this, "slave"),
- m_scc(*this, "scc68070"),
- m_cdic(*this, "cdic"),
- m_cdda(*this, "cdda"),
- m_mcd212(*this, "mcd212"){ }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_planea(*this, "planea")
+ , m_planeb(*this, "planeb")
+ , m_input1(*this, "INPUT1")
+ , m_input2(*this, "INPUT2")
+ , m_mousex(*this, "MOUSEX")
+ , m_mousey(*this, "MOUSEY")
+ , m_mousebtn(*this, "MOUSEBTN")
+ , m_slave_hle(*this, "slave_hle")
+ , m_servo(*this, "servo")
+ , m_slave(*this, "slave")
+ , m_scc(*this, "scc68070")
+ , m_cdic(*this, "cdic")
+ , m_cdda(*this, "cdda")
+ , m_mcd212(*this, "mcd212") { }
+
+ enum m68hc05eg_io_reg_t
+ {
+ PORT_A_DATA = 0x00,
+ PORT_B_DATA = 0x01,
+ PORT_C_DATA = 0x02,
+ PORT_D_INPUT = 0x03,
+ PORT_A_DDR = 0x04,
+ PORT_B_DDR = 0x05,
+ PORT_C_DDR = 0x06,
+ SPI_CTRL = 0x0a,
+ SPI_STATUS = 0x0b,
+ SPI_DATA = 0x0c,
+ SCC_BAUD = 0x0d,
+ SCC_CTRL1 = 0x0e,
+ SCC_CTRL2 = 0x0f,
+ SCC_STATUS = 0x10,
+ SCC_DATA = 0x11,
+ TIMER_CTRL = 0x12,
+ TIMER_STATUS = 0x13,
+ ICAP_HI = 0x14,
+ ICAP_LO = 0x15,
+ OCMP_HI = 0x16,
+ OCMP_LO = 0x17,
+ COUNT_HI = 0x18,
+ COUNT_LO = 0x19,
+ ACOUNT_HI = 0x1a,
+ ACOUNT_LO = 0x1b
+ };
+
+ enum servo_portc_bit_t
+ {
+ INV_JUC_OUT = (1 << 2),
+ INV_DIV4_IN = (1 << 5),
+ INV_CADDYSWITCH_IN = (1 << 7)
+ };
required_device<cpu_device> m_maincpu;
required_shared_ptr<UINT16> m_planea;
@@ -41,9 +79,11 @@ public:
required_ioport m_mousex;
required_ioport m_mousey;
required_ioport m_mousebtn;
- required_device<cdislave_device> m_slave;
+ optional_device<cdislave_device> m_slave_hle;
+ optional_device<cpu_device> m_servo;
+ optional_device<cpu_device> m_slave;
required_device<cdi68070_device> m_scc;
- required_device<cdicdic_device> m_cdic;
+ optional_device<cdicdic_device> m_cdic;
required_device<cdda_device> m_cdda;
required_device<mcd212_device> m_mcd212;
@@ -51,13 +91,21 @@ public:
INTERRUPT_GEN_MEMBER( mcu_frame );
+ UINT8 m_servo_io_regs[0x20];
+ UINT8 m_slave_io_regs[0x20];
+
UINT8 m_timer_set;
emu_timer *m_test_timer;
+
bitmap_rgb32 m_lcdbitmap;
+
DECLARE_INPUT_CHANGED_MEMBER(mcu_input);
- virtual void machine_start() override;
+
+ virtual void machine_start() override { }
virtual void video_start() override;
- DECLARE_MACHINE_RESET(cdi);
+
+ DECLARE_MACHINE_RESET(cdimono1);
+ DECLARE_MACHINE_RESET(cdimono2);
DECLARE_MACHINE_RESET(quizard12);
DECLARE_MACHINE_RESET(quizard17);
DECLARE_MACHINE_RESET(quizard18);
@@ -68,13 +116,18 @@ public:
DECLARE_MACHINE_RESET(quizard4r40);
DECLARE_MACHINE_RESET(quizard4r41);
DECLARE_MACHINE_RESET(quizard4r42);
+ DECLARE_READ8_MEMBER(servo_io_r);
+ DECLARE_WRITE8_MEMBER(servo_io_w);
+ DECLARE_READ8_MEMBER(slave_io_r);
+ DECLARE_WRITE8_MEMBER(slave_io_w);
+
UINT32 screen_update_cdimono1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
UINT32 screen_update_cdimono1_lcd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
/*----------- debug defines -----------*/
-#define VERBOSE_LEVEL (0)
+#define VERBOSE_LEVEL (1)
#define ENABLE_VERBOSE_LOG (0)
diff --git a/src/mame/includes/changela.h b/src/mame/includes/changela.h
index 220c5acf3a3..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
@@ -25,8 +25,8 @@ public:
bitmap_ind16 m_river_bitmap;
bitmap_ind16 m_tree0_bitmap;
bitmap_ind16 m_tree1_bitmap;
- UINT8* m_tree_ram;
- UINT8* m_memory_devices;
+ std::unique_ptr<UINT8[]> m_tree_ram;
+ std::unique_ptr<UINT8[]> m_memory_devices;
UINT32 m_mem_dev_selected; /* an offset within memory_devices area */
UINT32 m_slopeROM_bank;
UINT8 m_tree_en;
diff --git a/src/mame/includes/cheekyms.h b/src/mame/includes/cheekyms.h
index ffda1850317..7957a0802f6 100644
--- a/src/mame/includes/cheekyms.h
+++ b/src/mame/includes/cheekyms.h
@@ -35,7 +35,7 @@ public:
/* video-related */
tilemap_t *m_cm_tilemap;
- bitmap_ind16 *m_bitmap_buffer;
+ std::unique_ptr<bitmap_ind16> m_bitmap_buffer;
UINT8 m_irq_mask;
diff --git a/src/mame/includes/chihiro.h b/src/mame/includes/chihiro.h
index fe8f74fde5e..a9efcc711e3 100644
--- a/src/mame/includes/chihiro.h
+++ b/src/mame/includes/chihiro.h
@@ -393,6 +393,8 @@ public:
depthformat_rendertarget = NV2A_RT_DEPTH_FORMAT::Z24S8;
colorformat_rendertarget = NV2A_COLOR_FORMAT::A8R8G8B8;
bytespixel_rendertarget = 4;
+ clear_rendertarget.set(0, 0, 639, 479);
+ primitive_type = NV2A_BEGIN_END::STOP;
antialias_control = 0;
rendertarget = nullptr;
depthbuffer = nullptr;
@@ -449,7 +451,6 @@ public:
UINT32 dilate0(UINT32 value, int bits);
UINT32 dilate1(UINT32 value, int bits);
void computedilated(void);
- void putpixtex(int xp, int yp, int up, int vp);
int toggle_register_combiners_usage();
int toggle_wait_vblank_support();
void debug_grab_texture(int type, const char *filename);
@@ -462,6 +463,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);
+ void clear_render_target(int what, UINT32 value);
void clear_depth_buffer(int what, UINT32 value);
inline UINT8 *direct_access_ptr(offs_t address);
TIMER_CALLBACK_MEMBER(puller_timer_work);
@@ -494,6 +496,7 @@ public:
NV2A_RT_DEPTH_FORMAT depthformat_rendertarget;
NV2A_COLOR_FORMAT colorformat_rendertarget;
int bytespixel_rendertarget;
+ rectangle clear_rendertarget;
UINT32 antialias_control;
UINT32 *rendertarget;
UINT32 *depthbuffer;
@@ -512,10 +515,16 @@ public:
int rectangle_pitch;
void *buffer;
} texture[4];
+ NV2A_BEGIN_END primitive_type;
int primitives_count;
int indexesleft_count;
int indexesleft_first;
- UINT32 indexesleft[8];
+ UINT32 indexesleft[1024]; // vertex indices sent by the software to the 3d accelerator
+ int vertex_count;
+ unsigned int vertex_first;
+ vertex_nv vertex_software[1024+2]; // vertex attributes sent by the software to the 3d accelerator
+ vertex_t vertex_xy[1024+2]; // vertex attributes computed by the 3d accelerator
+
struct {
float variable_A[4]; // 0=R 1=G 2=B 3=A
float variable_B[4];
@@ -641,9 +650,9 @@ public:
bool logical_operation_enabled;
NV2A_LOGIC_OP logical_operation;
struct {
- float modelview[16];
- float modelview_inverse[16];
- float projection[16];
+ float modelview[4][4];
+ float modelview_inverse[4][4];
+ float projection[4][4];
float translate[4];
float scale[4];
} matrix;
diff --git a/src/mame/includes/cidelsa.h b/src/mame/includes/cidelsa.h
index b89a544693a..a6f77e9eb2d 100644
--- a/src/mame/includes/cidelsa.h
+++ b/src/mame/includes/cidelsa.h
@@ -80,8 +80,8 @@ public:
int m_cdp1869_pcb;
UINT8 *m_pageram;
- UINT8 *m_pcbram;
- UINT8 *m_charram;
+ std::unique_ptr<UINT8[]> m_pcbram;
+ std::unique_ptr<UINT8[]> m_charram;
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
diff --git a/src/mame/includes/cischeat.h b/src/mame/includes/cischeat.h
index a76aae04b12..30b7bb40e27 100644
--- a/src/mame/includes/cischeat.h
+++ b/src/mame/includes/cischeat.h
@@ -2,6 +2,7 @@
// copyright-holders:Luca Elia
/* TODO: some variables are per-game specifics */
#include "sound/okim6295.h"
+#include "machine/ticket.h"
class cischeat_state : public driver_device
{
@@ -22,7 +23,17 @@ public:
m_oki1(*this, "oki1"),
m_oki2(*this, "oki2"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_captflag_hopper(*this, "hopper"),
+ m_captflag_motor_left(*this, "motor_left"),
+ m_captflag_motor_right(*this, "motor_right"),
+ m_oki1_bank(*this, "oki1_bank"),
+ m_oki2_bank(*this, "oki2_bank")
+ {
+ for (int side = 0; side < 2; ++side)
+ m_captflag_motor_command[side] = m_captflag_motor_pos[side] = 0;
+ m_captflag_leds = 0;
+ }
required_shared_ptr<UINT16> m_vregs;
optional_shared_ptr_array<UINT16,3> m_scrollram;
@@ -114,4 +125,28 @@ public:
required_device<okim6295_device> m_oki2;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+
+ // captflag
+ optional_device<ticket_dispenser_device> m_captflag_hopper;
+
+ optional_device<timer_device> m_captflag_motor_left;
+ optional_device<timer_device> m_captflag_motor_right;
+ UINT16 m_captflag_motor_command[2];
+ UINT16 m_captflag_motor_pos[2];
+
+ DECLARE_WRITE16_MEMBER(captflag_motor_command_right_w);
+ DECLARE_WRITE16_MEMBER(captflag_motor_command_left_w);
+ void captflag_motor_move(int side, UINT16 data);
+ DECLARE_CUSTOM_INPUT_MEMBER(captflag_motor_busy_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(captflag_motor_pos_r);
+
+ optional_memory_bank m_oki1_bank;
+ optional_memory_bank m_oki2_bank;
+ DECLARE_WRITE16_MEMBER(captflag_oki_bank_w);
+
+ UINT16 m_captflag_leds;
+ DECLARE_WRITE16_MEMBER(captflag_leds_w);
+
+ DECLARE_DRIVER_INIT(captflag);
+ TIMER_DEVICE_CALLBACK_MEMBER(captflag_scanline);
};
diff --git a/src/mame/includes/cloak.h b/src/mame/includes/cloak.h
index 416df7bd7b6..c3f3c127b49 100644
--- a/src/mame/includes/cloak.h
+++ b/src/mame/includes/cloak.h
@@ -25,11 +25,11 @@ public:
UINT8 m_bitmap_videoram_selected;
UINT8 m_bitmap_videoram_address_x;
UINT8 m_bitmap_videoram_address_y;
- UINT8 *m_bitmap_videoram1;
- UINT8 *m_bitmap_videoram2;
+ std::unique_ptr<UINT8[]> m_bitmap_videoram1;
+ std::unique_ptr<UINT8[]> m_bitmap_videoram2;
UINT8 *m_current_bitmap_videoram_accessed;
UINT8 *m_current_bitmap_videoram_displayed;
- UINT16 *m_palette_ram;
+ std::unique_ptr<UINT16[]> m_palette_ram;
tilemap_t *m_bg_tilemap;
DECLARE_WRITE8_MEMBER(cloak_led_w);
DECLARE_WRITE8_MEMBER(cloak_coin_counter_w);
diff --git a/src/mame/includes/cloud9.h b/src/mame/includes/cloud9.h
index 3bc0e140ab6..b1f4e70f12f 100644
--- a/src/mame/includes/cloud9.h
+++ b/src/mame/includes/cloud9.h
@@ -26,7 +26,7 @@ public:
required_device<m6502_device> m_maincpu;
required_device<x2212_device> m_nvram;
/* memory pointers */
- UINT8 * m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
required_shared_ptr<UINT8> m_spriteram;
required_shared_ptr<UINT8> m_paletteram;
diff --git a/src/mame/includes/coco.h b/src/mame/includes/coco.h
index d1c2663486f..f083911afbc 100644
--- a/src/mame/includes/coco.h
+++ b/src/mame/includes/coco.h
@@ -209,7 +209,6 @@ private:
soundmux_status_t soundmux_status(void);
void update_sound(void);
- bool joyin(void);
void poll_joystick(bool *joyin, UINT8 *buttons);
void poll_keyboard(void);
void poll_hires_joystick(void);
diff --git a/src/mame/includes/combatsc.h b/src/mame/includes/combatsc.h
index 13eae759fd4..6d5871da384 100644
--- a/src/mame/includes/combatsc.h
+++ b/src/mame/includes/combatsc.h
@@ -27,7 +27,7 @@ public:
UINT8 * m_videoram;
UINT8 * m_scrollram;
UINT8 * m_io_ram;
- UINT8 * m_spriteram[2];
+ std::unique_ptr<UINT8[]> m_spriteram[2];
/* video-related */
tilemap_t *m_bg_tilemap[2];
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/comquest.h b/src/mame/includes/comquest.h
index 5296e796ced..32b6ef2c935 100644
--- a/src/mame/includes/comquest.h
+++ b/src/mame/includes/comquest.h
@@ -23,8 +23,6 @@ public:
int m_dma_activ;
int m_state;
int m_count;
- DECLARE_READ8_MEMBER(comquest_read);
- DECLARE_WRITE8_MEMBER(comquest_write);
virtual void machine_reset() override;
virtual void video_start() override;
UINT32 screen_update_comquest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/contra.h b/src/mame/includes/contra.h
index 1f37b794ab2..454a3ca21f9 100644
--- a/src/mame/includes/contra.h
+++ b/src/mame/includes/contra.h
@@ -29,8 +29,8 @@ public:
m_palette(*this, "palette") { }
/* memory pointers */
- UINT8 * m_buffered_spriteram;
- UINT8 * m_buffered_spriteram_2;
+ std::unique_ptr<UINT8[]> m_buffered_spriteram;
+ std::unique_ptr<UINT8[]> m_buffered_spriteram_2;
required_shared_ptr<UINT8> m_fg_cram;
required_shared_ptr<UINT8> m_fg_vram;
required_shared_ptr<UINT8> m_tx_cram;
diff --git a/src/mame/includes/cosmic.h b/src/mame/includes/cosmic.h
index 02e3dce20f1..706b69befea 100644
--- a/src/mame/includes/cosmic.h
+++ b/src/mame/includes/cosmic.h
@@ -47,7 +47,6 @@ public:
/* misc */
UINT32 m_pixel_clock;
int m_ic_state; // for 9980
- DECLARE_READ8_MEMBER( interrupt_level );
/* devices */
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h
index 3b2d893cf9a..a26495d923b 100644
--- a/src/mame/includes/cps1.h
+++ b/src/mame/includes/cps1.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
@@ -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 */
@@ -138,21 +139,22 @@ public:
UINT16 * m_scroll3;
UINT16 * m_obj;
UINT16 * m_other;
- UINT16 * m_buffered_obj;
+ std::unique_ptr<UINT16[]> m_buffered_obj;
optional_shared_ptr<UINT8> m_qsound_sharedram1;
optional_shared_ptr<UINT8> m_qsound_sharedram2;
+ std::unique_ptr<UINT8[]> m_decrypt_kabuki;
// cps2
optional_shared_ptr<UINT16> m_objram1;
optional_shared_ptr<UINT16> m_objram2;
optional_shared_ptr<UINT16> m_output;
-
+
optional_ioport m_io_in0;
optional_ioport m_io_in1;
- UINT16 * m_cps2_buffered_obj;
+ std::unique_ptr<UINT16[]> m_cps2_buffered_obj;
// game-specific
- UINT16 * m_gigaman2_dummyqsound_ram;
+ std::unique_ptr<UINT16[]> m_gigaman2_dummyqsound_ram;
UINT16 sf2ceblp_prot;
-
+
/* video-related */
tilemap_t *m_bg_tilemap[3];
int m_scanline1;
@@ -183,11 +185,11 @@ public:
int m_cps2digitalvolumelevel;
int m_cps2disabledigitalvolume;
emu_timer *m_digital_volume_timer;
- int m_cps2_dial_type;
- int m_ecofghtr_dial_direction0;
- int m_ecofghtr_dial_direction1;
- int m_ecofghtr_dial_last0;
- int m_ecofghtr_dial_last1;
+ int m_cps2_dial_type;
+ int m_ecofghtr_dial_direction0;
+ int m_ecofghtr_dial_direction1;
+ int m_ecofghtr_dial_last0;
+ int m_ecofghtr_dial_last1;
/* fcrash sound hw */
@@ -231,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 fd909a355ff..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,23 +53,25 @@ 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;
- UINT32* m_nops;
- UINT32* m_char_ram;
- UINT32* m_eeprom;
+ std::unique_ptr<UINT32[]> m_char_ram;
+ std::unique_ptr<UINT32[]> m_eeprom;
UINT32 m_ss_pal_base;
UINT32 m_unk_vidregs[0x20/4];
UINT32 m_ss_bank_base;
UINT32 m_screenwidth;
- UINT32* m_mame_colours;
+ 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;
- UINT32* m_ss_ram;
+ std::unique_ptr<UINT32[]> m_ss_ram;
UINT32 m_cram_bank;
UINT16 m_current_eeprom_read;
UINT32 m_paldma_source;
@@ -82,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/crgolf.h b/src/mame/includes/crgolf.h
index 5d68877ac21..c337a5f8263 100644
--- a/src/mame/includes/crgolf.h
+++ b/src/mame/includes/crgolf.h
@@ -24,8 +24,8 @@ public:
m_msm(*this, "msm"){ }
/* memory pointers */
- UINT8 * m_videoram_a;
- UINT8 * m_videoram_b;
+ std::unique_ptr<UINT8[]> m_videoram_a;
+ std::unique_ptr<UINT8[]> m_videoram_b;
required_shared_ptr<UINT8> m_color_select;
required_shared_ptr<UINT8> m_screen_flip;
required_shared_ptr<UINT8> m_screen_select;
diff --git a/src/mame/includes/crshrace.h b/src/mame/includes/crshrace.h
index 9589a7ce5d0..eb809fbceba 100644
--- a/src/mame/includes/crshrace.h
+++ b/src/mame/includes/crshrace.h
@@ -65,7 +65,6 @@ public:
void screen_eof_crshrace(screen_device &screen, bool state);
void draw_bg( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
void draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void crshrace_patch_code( UINT16 offset );
DECLARE_WRITE_LINE_MEMBER(irqhandler);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/cvs.h b/src/mame/includes/cvs.h
index 4633709964c..de9dee5a059 100644
--- a/src/mame/includes/cvs.h
+++ b/src/mame/includes/cvs.h
@@ -92,7 +92,6 @@ public:
DECLARE_READ_LINE_MEMBER(speech_rom_read_bit);
DECLARE_WRITE_LINE_MEMBER(write_s2650_flag);
DECLARE_READ8_MEMBER(cvs_input_r);
- DECLARE_READ8_MEMBER(cvs_393hz_clock_r);
DECLARE_WRITE8_MEMBER(cvs_speech_rom_address_lo_w);
DECLARE_WRITE8_MEMBER(cvs_speech_rom_address_hi_w);
DECLARE_READ8_MEMBER(cvs_speech_command_r);
diff --git a/src/mame/includes/cyberbal.h b/src/mame/includes/cyberbal.h
index 05d67022b50..0bc65bccb57 100644
--- a/src/mame/includes/cyberbal.h
+++ b/src/mame/includes/cyberbal.h
@@ -79,9 +79,7 @@ public:
DECLARE_DRIVER_INIT(cyberbal2p);
DECLARE_DRIVER_INIT(cyberbal);
TILE_GET_INFO_MEMBER(get_alpha_tile_info);
- TILE_GET_INFO_MEMBER(get_alpha2_tile_info);
TILE_GET_INFO_MEMBER(get_playfield_tile_info);
- TILE_GET_INFO_MEMBER(get_playfield2_tile_info);
DECLARE_MACHINE_START(cyberbal);
DECLARE_MACHINE_RESET(cyberbal);
DECLARE_VIDEO_START(cyberbal);
@@ -99,5 +97,4 @@ private:
void cyberbal_sound_reset();
UINT32 update_one_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int index);
void update_sound_68k_interrupts();
- inline void set_palette_entry(int entry, UINT16 value);
};
diff --git a/src/mame/includes/cybiko.h b/src/mame/includes/cybiko.h
index 7210460ae6d..0c6ad30b5aa 100644
--- a/src/mame/includes/cybiko.h
+++ b/src/mame/includes/cybiko.h
@@ -61,7 +61,6 @@ public:
m_input(*this, "A")
{ }
- DECLARE_READ16_MEMBER(serflash_r);
DECLARE_WRITE16_MEMBER(serflash_w);
DECLARE_READ16_MEMBER(clock_r);
DECLARE_WRITE16_MEMBER(clock_w);
diff --git a/src/mame/includes/darius.h b/src/mame/includes/darius.h
index b3117427d8d..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
/*************************************************************************
@@ -101,7 +101,6 @@ public:
DECLARE_WRITE16_MEMBER(darius_ioc_w);
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
DECLARE_WRITE8_MEMBER(adpcm_command_w);
- DECLARE_WRITE8_MEMBER(display_value);
DECLARE_WRITE8_MEMBER(darius_fm0_pan);
DECLARE_WRITE8_MEMBER(darius_fm1_pan);
DECLARE_WRITE8_MEMBER(darius_psg0_pan);
diff --git a/src/mame/includes/dbz.h b/src/mame/includes/dbz.h
index 2e2c56b6c36..734a9a0b2d3 100644
--- a/src/mame/includes/dbz.h
+++ b/src/mame/includes/dbz.h
@@ -55,7 +55,6 @@ public:
required_device<k053936_device> m_k053936_2;
required_device<gfxdecode_device> m_gfxdecode;
- DECLARE_READ16_MEMBER(dbzcontrol_r);
DECLARE_WRITE16_MEMBER(dbzcontrol_w);
DECLARE_WRITE16_MEMBER(dbz_sound_command_w);
DECLARE_WRITE16_MEMBER(dbz_sound_cause_nmi);
diff --git a/src/mame/includes/dc.h b/src/mame/includes/dc.h
index f27f71b70ef..a45e2e506d3 100644
--- a/src/mame/includes/dc.h
+++ b/src/mame/includes/dc.h
@@ -57,7 +57,6 @@ class dc_state : public driver_device
virtual void machine_reset() override;
TIMER_CALLBACK_MEMBER(g2_dma_irq);
TIMER_CALLBACK_MEMBER(ch2_dma_irq);
- TIMER_CALLBACK_MEMBER(yuv_fifo_irq);
DECLARE_READ32_MEMBER(dc_aica_reg_r);
DECLARE_WRITE32_MEMBER(dc_aica_reg_w);
DECLARE_READ32_MEMBER(dc_arm_aica_r);
diff --git a/src/mame/includes/dcheese.h b/src/mame/includes/dcheese.h
index eb2b5832cf9..d8c9455f899 100644
--- a/src/mame/includes/dcheese.h
+++ b/src/mame/includes/dcheese.h
@@ -28,7 +28,7 @@ public:
UINT16 m_blitter_yparam[16];
UINT16 m_blitter_vidparam[32];
- bitmap_ind16 *m_dstbitmap;
+ std::unique_ptr<bitmap_ind16> m_dstbitmap;
emu_timer *m_blitter_timer;
/* misc */
diff --git a/src/mame/includes/ddragon3.h b/src/mame/includes/ddragon3.h
index aebbeb15528..5513ca9076f 100644
--- a/src/mame/includes/ddragon3.h
+++ b/src/mame/includes/ddragon3.h
@@ -103,7 +103,6 @@ public:
//required_device<buffered_spriteram16_device> m_spriteram;
DECLARE_WRITE8_MEMBER(wwfwfest_priority_w);
- DECLARE_WRITE16_MEMBER(wwfwfest_scroll_write);
DECLARE_WRITE16_MEMBER(wwfwfest_irq_ack_w);
DECLARE_WRITE16_MEMBER(wwfwfest_flipscreen_w);
DECLARE_READ16_MEMBER(wwfwfest_paletteram_r);
diff --git a/src/mame/includes/deco32.h b/src/mame/includes/deco32.h
index ba84805c2dd..c1ce644b7d1 100644
--- a/src/mame/includes/deco32.h
+++ b/src/mame/includes/deco32.h
@@ -83,9 +83,9 @@ public:
int m_byteAddr; // tattass
int m_ace_ram_dirty; // nslasher and tattass
int m_has_ace_ram; // all - config
- UINT8 *m_dirty_palette; // all but captaven
+ std::unique_ptr<UINT8[]> m_dirty_palette; // all but captaven
int m_pri; // captaven, fghthist, nslasher and tattass
- bitmap_ind16 *m_tilemap_alpha_bitmap; // nslasher
+ std::unique_ptr<bitmap_ind16> m_tilemap_alpha_bitmap; // nslasher
UINT16 m_spriteram16[0x1000]; // captaven, fghthist, nslasher and tattass
UINT16 m_spriteram16_buffered[0x1000]; // captaven, fghthist, nslasher and tattass
UINT16 m_spriteram16_2[0x1000]; //nslasher and tattass
diff --git a/src/mame/includes/deco_mlc.h b/src/mame/includes/deco_mlc.h
index 50a454eb814..e9bde7e7bb7 100644
--- a/src/mame/includes/deco_mlc.h
+++ b/src/mame/includes/deco_mlc.h
@@ -38,9 +38,9 @@ public:
int m_lastScanline[9];
UINT32 m_colour_mask;
- UINT16 *m_mlc_spriteram;
- UINT16 *m_mlc_spriteram_spare;
- UINT16 *m_mlc_buffered_spriteram;
+ std::unique_ptr<UINT16[]> m_mlc_spriteram;
+ std::unique_ptr<UINT16[]> m_mlc_spriteram_spare;
+ std::unique_ptr<UINT16[]> m_mlc_buffered_spriteram;
DECLARE_READ32_MEMBER(test2_r);
DECLARE_READ32_MEMBER(mlc_440008_r);
DECLARE_READ32_MEMBER(mlc_44001c_r);
@@ -68,7 +68,6 @@ public:
UINT32 screen_update_mlc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void screen_eof_mlc(screen_device &screen, bool state);
TIMER_DEVICE_CALLBACK_MEMBER(interrupt_gen);
- void blitRaster(bitmap_rgb32 &bitmap, int rasterMode);
void draw_sprites( const rectangle &cliprect, int scanline, UINT32* dest);
void descramble_sound( );
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/dgn_beta.h b/src/mame/includes/dgn_beta.h
index 9f29d447c83..a55d157aaa1 100644
--- a/src/mame/includes/dgn_beta.h
+++ b/src/mame/includes/dgn_beta.h
@@ -213,7 +213,6 @@ public:
void cpu1_recalc_firq(int state);
void ScanInKeyboard(void);
void dgn_beta_frame_interrupt (int data);
- void dgn_beta_line_interrupt (int data);
required_device<ram_device> m_ram;
required_device<wd2797_t> m_fdc;
required_device<floppy_connector> m_floppy0;
diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h
index bd1b4bbac10..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;
@@ -140,8 +142,10 @@ public:
UINT8 m_hardware_type;
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/dogfgt.h b/src/mame/includes/dogfgt.h
index 7eaf9658327..c63ff99abc2 100644
--- a/src/mame/includes/dogfgt.h
+++ b/src/mame/includes/dogfgt.h
@@ -27,7 +27,7 @@ public:
/* video-related */
bitmap_ind16 m_pixbitmap;
tilemap_t *m_bg_tilemap;
- UINT8 *m_bitmapram;
+ std::unique_ptr<UINT8[]> m_bitmapram;
int m_bm_plane;
int m_pixcolor;
int m_scroll[4];
diff --git a/src/mame/includes/dooyong.h b/src/mame/includes/dooyong.h
index bd4b69d3bfa..4c51451c986 100644
--- a/src/mame/includes/dooyong.h
+++ b/src/mame/includes/dooyong.h
@@ -10,7 +10,8 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette")
+ m_palette(*this, "palette"),
+ m_palette_bank(0)
{ }
DECLARE_WRITE8_MEMBER(bgscroll_w);
@@ -24,6 +25,7 @@ public:
inline void get_tile_info(tile_data &tileinfo, int tile_index, UINT8 const *tilerom, UINT8 const *scroll, int graphics);
inline void scroll8_w(offs_t offset, UINT8 data, UINT8 *scroll, tilemap_t *map);
+
tilemap_t *m_bg_tilemap;
tilemap_t *m_bg2_tilemap;
tilemap_t *m_fg_tilemap;
@@ -46,6 +48,7 @@ public:
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ UINT8 m_palette_bank;
};
class dooyong_z80_state : public dooyong_state
@@ -69,6 +72,7 @@ public:
DECLARE_WRITE8_MEMBER(bankswitch_w);
DECLARE_WRITE8_MEMBER(txvideoram_w);
DECLARE_WRITE8_MEMBER(primella_ctrl_w);
+ DECLARE_READ8_MEMBER(paletteram_flytiger_r);
DECLARE_WRITE8_MEMBER(paletteram_flytiger_w);
DECLARE_WRITE8_MEMBER(flytiger_ctrl_w);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
@@ -82,9 +86,8 @@ public:
DECLARE_VIDEO_START(primella);
required_shared_ptr<UINT8> m_txvideoram;
- UINT8* m_paletteram_flytiger;
+ std::unique_ptr<UINT8[]> m_paletteram_flytiger;
UINT8 m_sprites_disabled;
- UINT8 m_flytiger_palette_bank;
UINT8 m_flytiger_pri;
UINT8 m_tx_pri;
int m_tx_tilemap_mode;
diff --git a/src/mame/includes/dragrace.h b/src/mame/includes/dragrace.h
index bb33da88bb5..1fb1f52a4ec 100644
--- a/src/mame/includes/dragrace.h
+++ b/src/mame/includes/dragrace.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/*************************************************************************
diff --git a/src/mame/includes/drmicro.h b/src/mame/includes/drmicro.h
index 812a2eb9d54..2494ef9557a 100644
--- a/src/mame/includes/drmicro.h
+++ b/src/mame/includes/drmicro.h
@@ -18,7 +18,7 @@ public:
m_palette(*this, "palette") { }
/* memory pointers */
- UINT8 * m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
/* video-related */
tilemap_t *m_bg1;
diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h
index 694487d4120..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,9 +44,19 @@ 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)
- UINT8 * m_pixmap[8][2];
+ std::unique_ptr<UINT8[]> m_pixmap[8][2];
/* irq */
typedef void (dynax_state::*irq_func)(); // some games trigger IRQ at blitter end, some don't
@@ -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/einstein.h b/src/mame/includes/einstein.h
index 71fcc7d24cf..027b2370ba3 100644
--- a/src/mame/includes/einstein.h
+++ b/src/mame/includes/einstein.h
@@ -97,7 +97,7 @@ public:
/* 80 column device */
optional_device<mc6845_device> m_mc6845;
optional_device<screen_device> m_crtc_screen;
- UINT8 *m_crtc_ram;
+ std::unique_ptr<UINT8[]> m_crtc_ram;
UINT8 m_de;
int m_centronics_busy;
diff --git a/src/mame/includes/eolith.h b/src/mame/includes/eolith.h
index 975f107b527..3269f784949 100644
--- a/src/mame/includes/eolith.h
+++ b/src/mame/includes/eolith.h
@@ -41,7 +41,7 @@ public:
int m_coin_counter_bit;
int m_buffer;
- UINT32 *m_vram;
+ std::unique_ptr<UINT32[]> m_vram;
UINT8 m_sound_data;
diff --git a/src/mame/includes/ep64.h b/src/mame/includes/ep64.h
index 9b262c8effa..85c0ae27a97 100644
--- a/src/mame/includes/ep64.h
+++ b/src/mame/includes/ep64.h
@@ -85,8 +85,6 @@ public:
DECLARE_READ8_MEMBER( rd0_r );
DECLARE_WRITE8_MEMBER( wr0_w );
DECLARE_READ8_MEMBER( rd1_r );
- DECLARE_WRITE8_MEMBER( wr1_w );
- DECLARE_READ8_MEMBER( rd2_r );
DECLARE_WRITE8_MEMBER( wr2_w );
UINT8 m_key;
diff --git a/src/mame/includes/equites.h b/src/mame/includes/equites.h
index 07d254a72ab..a3808e6265a 100644
--- a/src/mame/includes/equites.h
+++ b/src/mame/includes/equites.h
@@ -36,7 +36,7 @@ public:
/* memory pointers */
required_shared_ptr<UINT16> m_bg_videoram;
- UINT8 *m_fg_videoram; // 8bits
+ std::unique_ptr<UINT8[]> m_fg_videoram; // 8bits
required_shared_ptr<UINT16> m_spriteram;
optional_shared_ptr<UINT16> m_spriteram_2;
optional_shared_ptr<UINT8> m_mcuram;
diff --git a/src/mame/includes/esripsys.h b/src/mame/includes/esripsys.h
index cdb1dd673a3..43994ec4ada 100644
--- a/src/mame/includes/esripsys.h
+++ b/src/mame/includes/esripsys.h
@@ -29,9 +29,9 @@
struct line_buffer_t
{
- UINT8 *colour_buf;
- UINT8 *intensity_buf;
- UINT8 *priority_buf;
+ std::unique_ptr<UINT8[]> colour_buf;
+ std::unique_ptr<UINT8[]> intensity_buf;
+ std::unique_ptr<UINT8[]> priority_buf;
};
class esripsys_state : public driver_device
@@ -63,7 +63,7 @@ public:
int m_io_firq_status;
UINT8 m_cmos_ram_a2_0;
UINT8 m_cmos_ram_a10_3;
- UINT8 *m_cmos_ram;
+ std::unique_ptr<UINT8[]> m_cmos_ram;
UINT8 m_u56a;
UINT8 m_u56b;
UINT8 m_g_to_s_latch1;
@@ -73,8 +73,8 @@ public:
UINT8 m_dac_msb;
UINT8 m_dac_vol;
UINT8 m_tms_data;
- UINT8 *m_fdt_a;
- UINT8 *m_fdt_b;
+ std::unique_ptr<UINT8[]> m_fdt_a;
+ std::unique_ptr<UINT8[]> m_fdt_b;
struct line_buffer_t m_line_buffer[2];
int m_fasel;
int m_fbsel;
@@ -85,8 +85,8 @@ public:
int m_video_firq_en;
emu_timer *m_hblank_end_timer;
emu_timer *m_hblank_start_timer;
- UINT8 *m_fig_scale_table;
- UINT8 *m_scale_table;
+ std::unique_ptr<UINT8[]> m_fig_scale_table;
+ std::unique_ptr<UINT8[]> m_scale_table;
int m_video_firq;
UINT8 m_bg_intensity;
DECLARE_WRITE8_MEMBER(uart_w);
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/exerion.h b/src/mame/includes/exerion.h
index f787ed9709d..7bf606e2180 100644
--- a/src/mame/includes/exerion.h
+++ b/src/mame/includes/exerion.h
@@ -43,7 +43,7 @@ public:
UINT8 m_char_palette;
UINT8 m_sprite_palette;
UINT8 m_char_bank;
- UINT16 *m_background_gfx[4];
+ std::unique_ptr<UINT16[]> m_background_gfx[4];
UINT8 *m_background_mixer;
UINT8 m_background_latches[13];
diff --git a/src/mame/includes/exidy440.h b/src/mame/includes/exidy440.h
index 87835b7fbc1..e6f7048ac8a 100644
--- a/src/mame/includes/exidy440.h
+++ b/src/mame/includes/exidy440.h
@@ -41,8 +41,8 @@ public:
UINT8 m_firq_beam;
UINT8 *m_topsecex_yscroll;
UINT8 m_latched_x;
- UINT8 *m_local_videoram;
- UINT8 *m_local_paletteram;
+ std::unique_ptr<UINT8[]> m_local_videoram;
+ std::unique_ptr<UINT8[]> m_local_paletteram;
UINT8 m_firq_enable;
UINT8 m_firq_select;
UINT8 m_palettebank_io;
diff --git a/src/mame/includes/exp85.h b/src/mame/includes/exp85.h
index 2ced2152701..3e53385eb25 100644
--- a/src/mame/includes/exp85.h
+++ b/src/mame/includes/exp85.h
@@ -37,7 +37,6 @@ public:
DECLARE_WRITE8_MEMBER( i8355_a_w );
DECLARE_READ_LINE_MEMBER( sid_r );
DECLARE_WRITE_LINE_MEMBER( sod_w );
- DECLARE_WRITE_LINE_MEMBER( terminal_w );
DECLARE_INPUT_CHANGED_MEMBER( trigger_reset );
DECLARE_INPUT_CHANGED_MEMBER( trigger_rst75 );
diff --git a/src/mame/includes/exprraid.h b/src/mame/includes/exprraid.h
index f6a6f0f5eae..833c3c351b1 100644
--- a/src/mame/includes/exprraid.h
+++ b/src/mame/includes/exprraid.h
@@ -72,7 +72,6 @@ public:
TILE_GET_INFO_MEMBER(get_fg_tile_info);
UINT32 screen_update_exprraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(exprraid_interrupt);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void exprraid_gfx_expand();
};
diff --git a/src/mame/includes/fgoal.h b/src/mame/includes/fgoal.h
index 9580c4c39b9..3271bc56f2d 100644
--- a/src/mame/includes/fgoal.h
+++ b/src/mame/includes/fgoal.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
#include "machine/mb14241.h"
diff --git a/src/mame/includes/fidelz80.h b/src/mame/includes/fidelz80.h
index e79b156c49a..c9aea6bafc4 100644
--- a/src/mame/includes/fidelz80.h
+++ b/src/mame/includes/fidelz80.h
@@ -1,79 +1,59 @@
// license:BSD-3-Clause
-// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco
-/***************************************************************************
-
- Fidelity Electronics Z80 based board driver
-
-****************************************************************************/
-
-#pragma once
-
-#ifndef _FIDELZ80_H_
-#define _FIDELZ80_H_
-
-#include "sound/beep.h"
+// copyright-holders:Kevin Horton,Jonathan Gevaryahu,Sandro Ronco,hap
+/******************************************************************************
+*
+* Fidelity Electronics Z80 based board driver
+*
+******************************************************************************/
+
+#include "emu.h"
#include "sound/s14001a.h"
-class fidelz80_state : public driver_device
+class fidelz80base_state : public driver_device
{
public:
- fidelz80_state(const machine_config &mconfig, device_type type, const char *tag)
+ 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_beep(*this, "beeper"),
- m_i8041(*this, "mcu"),
- m_i8243(*this, "i8243")
+ m_speech_rom(*this, "speech"),
+ m_display_wait(33),
+ m_display_maxy(1),
+ m_display_maxx(0)
{ }
+ // devices/pointers
required_device<cpu_device> m_maincpu;
+ optional_ioport_array<10> m_inp_matrix; // max 10
optional_device<s14001a_device> m_speech;
- optional_device<beep_device> m_beep;
- optional_device<i8041_device> m_i8041;
- optional_device<i8243_device> m_i8243;
+ optional_region_ptr<UINT8> m_speech_rom;
- UINT16 m_kp_matrix; // keypad/leds matrix
- UINT8 m_led_data; // data for the two individual leds, in 0bxxxx12xx format
- UINT8 m_led_selected; // 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_digit_data; // data for seg leds
- UINT8 m_digit_line_status[4]; // prevent overwrite of m_digit_data
+ // 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_speech_bank;
- //model VCC/UVC
- void update_display();
- DECLARE_READ8_MEMBER(fidelz80_portc_r);
- DECLARE_WRITE8_MEMBER(fidelz80_portb_w);
- DECLARE_WRITE8_MEMBER(fidelz80_portc_w);
- DECLARE_WRITE8_MEMBER(cc10_porta_w);
- DECLARE_READ8_MEMBER(vcc_portb_r);
- DECLARE_WRITE8_MEMBER(vcc_porta_w);
+ UINT16 read_inputs(int columns);
- //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);
+ // 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)
- //model VSC
- DECLARE_WRITE8_MEMBER(vsc_porta_w);
- DECLARE_WRITE8_MEMBER(vsc_portb_w);
- DECLARE_WRITE8_MEMBER(vsc_portc_w);
- 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);
- TIMER_DEVICE_CALLBACK_MEMBER(nmi_timer);
+ 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)
- DECLARE_WRITE8_MEMBER(digit_w);
+ 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);
+protected:
virtual void machine_start() override;
+ virtual void machine_reset() override;
};
-
-
-#endif // _FIDELZ80_H_
diff --git a/src/mame/includes/flower.h b/src/mame/includes/flower.h
index 24979ea9ca3..cc2ff96ced2 100644
--- a/src/mame/includes/flower.h
+++ b/src/mame/includes/flower.h
@@ -100,7 +100,6 @@ protected:
private:
void make_mixer_table(int voices, int gain);
- void show_soundregs();
// internal state
emu_timer *m_effect_timer;
@@ -115,9 +114,9 @@ private:
sound_stream * m_stream;
/* mixer tables and internal buffers */
- INT16 *m_mixer_table;
+ std::unique_ptr<INT16[]> m_mixer_table;
INT16 *m_mixer_lookup;
- short *m_mixer_buffer;
+ std::unique_ptr<short[]> m_mixer_buffer;
UINT8 m_soundregs1[0x40];
UINT8 m_soundregs2[0x40];
diff --git a/src/mame/includes/fm7.h b/src/mame/includes/fm7.h
index 97f1de1eb9d..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;
- 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/fmtowns.h b/src/mame/includes/fmtowns.h
index 8fea8129e8a..1989b2ea3a9 100644
--- a/src/mame/includes/fmtowns.h
+++ b/src/mame/includes/fmtowns.h
@@ -146,12 +146,12 @@ class towns_state : public driver_device
UINT32 m_towns_ankcg_enable;
UINT32 m_towns_mainmem_enable;
UINT32 m_towns_ram_enable;
- UINT32* m_towns_vram;
- UINT8* m_towns_gfxvram;
- UINT8* m_towns_txtvram;
+ std::unique_ptr<UINT32[]> m_towns_vram;
+ std::unique_ptr<UINT8[]> m_towns_gfxvram;
+ std::unique_ptr<UINT8[]> m_towns_txtvram;
int m_towns_selected_drive;
UINT8 m_towns_fdc_irq6mask;
- UINT8* m_towns_serial_rom;
+ std::unique_ptr<UINT8[]> m_towns_serial_rom;
int m_towns_srom_position;
UINT8 m_towns_srom_clk;
UINT8 m_towns_srom_reset;
@@ -229,8 +229,6 @@ class towns_state : public driver_device
DECLARE_WRITE8_MEMBER(towns_sound_ctrl_w);
DECLARE_READ8_MEMBER(towns_padport_r);
DECLARE_WRITE8_MEMBER(towns_pad_mask_w);
- DECLARE_READ8_MEMBER(towns_cmos8_r);
- DECLARE_WRITE8_MEMBER(towns_cmos8_w);
DECLARE_READ8_MEMBER(towns_cmos_low_r);
DECLARE_WRITE8_MEMBER(towns_cmos_low_w);
DECLARE_READ8_MEMBER(towns_cmos_r);
@@ -282,7 +280,6 @@ class towns_state : public driver_device
void kb_sendcode(UINT8 scancode, int release);
UINT8 speaker_get_spk();
void speaker_set_spkrdata(UINT8 data);
- void speaker_set_input(UINT8 data);
UINT8 towns_cdrom_read_byte_software();
required_ioport m_ctrltype;
diff --git a/src/mame/includes/fromanc2.h b/src/mame/includes/fromanc2.h
index 562daa42187..8041c7974f3 100644
--- a/src/mame/includes/fromanc2.h
+++ b/src/mame/includes/fromanc2.h
@@ -16,8 +16,8 @@ public:
m_rpalette(*this, "rpalette") { }
/* memory pointers */
- UINT16 *m_videoram[2][4];
- UINT8 *m_bankedram;
+ std::unique_ptr<UINT16[]> m_videoram[2][4];
+ std::unique_ptr<UINT8[]> m_bankedram;
/* video-related */
tilemap_t *m_tilemap[2][4];
diff --git a/src/mame/includes/fromance.h b/src/mame/includes/fromance.h
index 30e7b0ec204..d8562d4deb9 100644
--- a/src/mame/includes/fromance.h
+++ b/src/mame/includes/fromance.h
@@ -35,8 +35,8 @@ public:
/* video-related */
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
- UINT8 *m_local_videoram[2];
- UINT8 *m_local_paletteram;
+ std::unique_ptr<UINT8[]> m_local_videoram[2];
+ std::unique_ptr<UINT8[]> m_local_paletteram;
UINT8 m_selected_videoram;
UINT8 m_selected_paletteram;
UINT32 m_scrollx[2];
diff --git a/src/mame/includes/fuukifg3.h b/src/mame/includes/fuukifg3.h
index cb6147a7c06..90af6ad1893 100644
--- a/src/mame/includes/fuukifg3.h
+++ b/src/mame/includes/fuukifg3.h
@@ -85,7 +85,6 @@ public:
inline void get_tile_info8bpp(tile_data &tileinfo, tilemap_memory_index tile_index, int _N_);
inline void get_tile_info4bpp(tile_data &tileinfo, tilemap_memory_index tile_index, int _N_);
inline void vram_w(offs_t offset, UINT32 data, UINT32 mem_mask, int _N_);
- void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
void draw_layer( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int i, int flag, int pri );
protected:
diff --git a/src/mame/includes/gaelco2.h b/src/mame/includes/gaelco2.h
index 880937eeba2..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,12 +28,20 @@ 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;
+
UINT16 *m_videoram;
tilemap_t *m_pant[2];
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);
@@ -42,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/gaelco3d.h b/src/mame/includes/gaelco3d.h
index 0ed2a2e7afd..8aaf90e1dc9 100644
--- a/src/mame/includes/gaelco3d.h
+++ b/src/mame/includes/gaelco3d.h
@@ -44,8 +44,8 @@ private:
UINT32 m_polygons;
offs_t m_texture_size;
offs_t m_texmask_size;
- UINT8 *m_texture;
- UINT8 *m_texmask;
+ std::unique_ptr<UINT8[]> m_texture;
+ std::unique_ptr<UINT8[]> m_texmask;
void render_noz_noperspective(INT32 scanline, const extent_t &extent, const gaelco3d_object_data &extra, int threadid);
void render_normal(INT32 scanline, const extent_t &extent, const gaelco3d_object_data &extra, int threadid);
@@ -96,12 +96,12 @@ public:
offs_t m_adsp_incs;
offs_t m_adsp_size;
dmadac_sound_device *m_dmadac[SOUND_CHANNELS];
- rgb_t *m_palette;
- UINT32 *m_polydata_buffer;
+ std::unique_ptr<rgb_t[]> m_palette;
+ std::unique_ptr<UINT32[]> m_polydata_buffer;
UINT32 m_polydata_count;
int m_lastscan;
int m_video_changed;
- gaelco3d_renderer *m_poly;
+ std::unique_ptr<gaelco3d_renderer> m_poly;
DECLARE_WRITE16_MEMBER(irq_ack_w);
DECLARE_WRITE32_MEMBER(irq_ack32_w);
DECLARE_WRITE16_MEMBER(sound_data_w);
diff --git a/src/mame/includes/galastrm.h b/src/mame/includes/galastrm.h
index e5c1be6f2b6..c2413a6d11d 100644
--- a/src/mame/includes/galastrm.h
+++ b/src/mame/includes/galastrm.h
@@ -78,10 +78,10 @@ public:
int m_tc0610_1_addr;
UINT32 m_mem[2];
INT16 m_tc0610_ctrl_reg[2][8];
- struct gs_tempsprite *m_spritelist;
+ std::unique_ptr<gs_tempsprite[]> m_spritelist;
struct gs_tempsprite *m_sprite_ptr_pre;
bitmap_ind16 m_tmpbitmaps;
- galastrm_renderer *m_poly;
+ std::unique_ptr<galastrm_renderer> m_poly;
int m_rsxb;
int m_rsyb;
@@ -101,7 +101,6 @@ public:
INTERRUPT_GEN_MEMBER(galastrm_interrupt);
void draw_sprites_pre(int x_offs, int y_offs);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, const int *primasks, int priority);
- void tc0610_rotate_draw(bitmap_ind16 &bitmap, bitmap_ind16 &srcbitmap, const rectangle &clip);
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h
index b704281dd41..ac1e84a7b33 100644
--- a/src/mame/includes/galaxian.h
+++ b/src/mame/includes/galaxian.h
@@ -118,7 +118,7 @@ public:
UINT32 m_star_rng_origin;
UINT32 m_star_rng_origin_frame;
rgb_t m_star_color[64];
- UINT8 *m_stars;
+ std::unique_ptr<UINT8[]> m_stars;
UINT8 m_stars_enabled;
UINT8 m_stars_blink_state;
rgb_t m_bullet_color[8];
@@ -285,8 +285,6 @@ public:
void turtles_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void frogger_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void quaak_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
- int flip_and_clip(rectangle &draw, int xstart, int xend, const rectangle &cliprect);
- void amidar_draw_background(bitmap_rgb32 &bitmap, const rectangle &cliprect);
inline void galaxian_draw_pixel(bitmap_rgb32 &bitmap, const rectangle &cliprect, int y, int x, rgb_t color);
void galaxian_draw_bullet(bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
void mshuttle_draw_bullet(bitmap_rgb32 &bitmap, const rectangle &cliprect, int offs, int x, int y);
diff --git a/src/mame/includes/galaxold.h b/src/mame/includes/galaxold.h
index b7c8d1482d3..6159915b451 100644
--- a/src/mame/includes/galaxold.h
+++ b/src/mame/includes/galaxold.h
@@ -75,7 +75,7 @@ public:
UINT8 m_flipscreen_y;
UINT8 m_color_mask;
tilemap_t *m_dambustr_tilemap2;
- UINT8 *m_dambustr_videoram2;
+ std::unique_ptr<UINT8[]> m_dambustr_videoram2;
int m_leftclip;
void (galaxold_state::*m_modify_charcode)(UINT16 *code, UINT8 x); /* function to call to do character banking */
@@ -99,7 +99,7 @@ public:
int m_dambustr_bg_color_2;
int m_dambustr_bg_priority;
int m_dambustr_char_bank;
- bitmap_ind16 *m_dambustr_tmpbitmap;
+ std::unique_ptr<bitmap_ind16> m_dambustr_tmpbitmap;
void (galaxold_state::*m_draw_stars)(bitmap_ind16 &, const rectangle &); /* function to call to draw the star layer */
int m_stars_colors_start;
@@ -133,8 +133,6 @@ public:
DECLARE_WRITE8_MEMBER(galaxold_attributesram_w);
DECLARE_WRITE8_MEMBER(galaxold_flip_screen_x_w);
DECLARE_WRITE8_MEMBER(galaxold_flip_screen_y_w);
- DECLARE_WRITE8_MEMBER(gteikob2_flip_screen_x_w);
- DECLARE_WRITE8_MEMBER(gteikob2_flip_screen_y_w);
DECLARE_WRITE8_MEMBER(hotshock_flip_screen_w);
DECLARE_WRITE8_MEMBER(scrambold_background_enable_w);
DECLARE_WRITE8_MEMBER(scrambold_background_red_w);
@@ -223,7 +221,6 @@ public:
void state_save_register();
void video_start_common();
void pisces_modify_spritecode(UINT8 *spriteram, int *code, int *flipx, int *flipy, int offs);
- void theend_draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int x, int y);
void mooncrst_modify_spritecode(UINT8 *spriteram, int *code, int *flipx, int *flipy, int offs);
void batman2_modify_charcode(UINT16 *code, UINT8 x);
void rockclim_draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/includes/gameplan.h b/src/mame/includes/gameplan.h
index 5861cc7907d..d01d6d969a9 100644
--- a/src/mame/includes/gameplan.h
+++ b/src/mame/includes/gameplan.h
@@ -50,7 +50,7 @@ public:
optional_shared_ptr<UINT8> m_trvquest_question;
/* video state */
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
size_t m_videoram_size;
UINT8 m_video_x;
UINT8 m_video_y;
diff --git a/src/mame/includes/gb.h b/src/mame/includes/gb.h
index 47a9771e4e9..59f5ee91de3 100644
--- a/src/mame/includes/gb.h
+++ b/src/mame/includes/gb.h
@@ -130,8 +130,6 @@ protected:
void gb_timer_check_irq();
void gb_init();
void gb_init_regs();
- void gb_video_reset(int mode);
- void gb_video_start(int mode);
void save_gb_base();
void save_gbc_only();
diff --git a/src/mame/includes/gba.h b/src/mame/includes/gba.h
index 559f01e54c1..8037ecb5795 100644
--- a/src/mame/includes/gba.h
+++ b/src/mame/includes/gba.h
@@ -239,12 +239,6 @@ public:
DECLARE_WRITE32_MEMBER(gba_oam_w);
DECLARE_READ32_MEMBER(gba_bios_r);
DECLARE_READ32_MEMBER(gba_10000000_r);
- DECLARE_READ32_MEMBER(sram_r);
- DECLARE_WRITE32_MEMBER(sram_w);
- DECLARE_READ32_MEMBER(flash_r);
- DECLARE_WRITE32_MEMBER(flash_w);
- DECLARE_READ32_MEMBER(eeprom_r);
- DECLARE_WRITE32_MEMBER(eeprom_w);
DECLARE_DRIVER_INIT(gbadv);
virtual void machine_start() override;
virtual void machine_reset() override;
diff --git a/src/mame/includes/gcpinbal.h b/src/mame/includes/gcpinbal.h
index a8acae9616e..fa32062eb1c 100644
--- a/src/mame/includes/gcpinbal.h
+++ b/src/mame/includes/gcpinbal.h
@@ -62,8 +62,6 @@ public:
DECLARE_WRITE16_MEMBER(ioc_w);
DECLARE_READ16_MEMBER(gcpinbal_tilemaps_word_r);
DECLARE_WRITE16_MEMBER(gcpinbal_tilemaps_word_w);
- DECLARE_READ16_MEMBER(gcpinbal_ctrl_word_r);
- DECLARE_WRITE16_MEMBER(gcpinbal_ctrl_word_w);
TILE_GET_INFO_MEMBER(get_bg0_tile_info);
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
@@ -73,7 +71,6 @@ public:
UINT32 screen_update_gcpinbal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(gcpinbal_interrupt);
void gcpinbal_core_vh_start( );
- void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int y_offs );
DECLARE_WRITE_LINE_MEMBER(gcp_adpcm_int);
required_device<excellent_spr_device> m_sprgen;
diff --git a/src/mame/includes/glass.h b/src/mame/includes/glass.h
index e4f4fcbc9d8..4fc0cbe59ee 100644
--- a/src/mame/includes/glass.h
+++ b/src/mame/includes/glass.h
@@ -27,7 +27,7 @@ public:
/* video-related */
tilemap_t *m_pant[2];
- bitmap_ind16 *m_screen_bitmap;
+ std::unique_ptr<bitmap_ind16> m_screen_bitmap;
/* misc */
int m_current_bit;
diff --git a/src/mame/includes/goal92.h b/src/mame/includes/goal92.h
index 9ed63e29827..a1b6a996e0f 100644
--- a/src/mame/includes/goal92.h
+++ b/src/mame/includes/goal92.h
@@ -28,7 +28,7 @@ public:
required_shared_ptr<UINT16> m_tx_data;
required_shared_ptr<UINT16> m_spriteram;
required_shared_ptr<UINT16> m_scrollram;
- UINT16 * m_buffered_spriteram;
+ std::unique_ptr<UINT16[]> m_buffered_spriteram;
/* video-related */
tilemap_t *m_bg_layer;
diff --git a/src/mame/includes/goldstar.h b/src/mame/includes/goldstar.h
index a15241c3df3..2eb7e47df05 100644
--- a/src/mame/includes/goldstar.h
+++ b/src/mame/includes/goldstar.h
@@ -32,7 +32,6 @@ public:
DECLARE_WRITE8_MEMBER(p2_lamps_w);
DECLARE_WRITE8_MEMBER(ncb3_port81_w);
DECLARE_WRITE8_MEMBER(cm_coincount_w);
- DECLARE_WRITE8_MEMBER(ladylinr_outport_w);
DECLARE_WRITE8_MEMBER(goldstar_fg_vidram_w);
DECLARE_WRITE8_MEMBER(goldstar_fg_atrram_w);
DECLARE_WRITE8_MEMBER(goldstar_reel1_ram_w);
diff --git a/src/mame/includes/gomoku.h b/src/mame/includes/gomoku.h
index da6f91a9d33..375a08f7f5c 100644
--- a/src/mame/includes/gomoku.h
+++ b/src/mame/includes/gomoku.h
@@ -97,9 +97,9 @@ private:
sound_stream *m_stream;
/* mixer tables and internal buffers */
- INT16 *m_mixer_table;
+ std::unique_ptr<INT16[]> m_mixer_table;
INT16 *m_mixer_lookup;
- short *m_mixer_buffer;
+ std::unique_ptr<short[]> m_mixer_buffer;
short *m_mixer_buffer_2;
UINT8 m_soundregs1[0x20];
diff --git a/src/mame/includes/gottlieb.h b/src/mame/includes/gottlieb.h
index 630f93646fa..8f539ff234f 100644
--- a/src/mame/includes/gottlieb.h
+++ b/src/mame/includes/gottlieb.h
@@ -76,7 +76,7 @@ public:
UINT8 m_laserdisc_select;
UINT8 m_laserdisc_status;
UINT16 m_laserdisc_philips_code;
- UINT8 *m_laserdisc_audio_buffer;
+ std::unique_ptr<UINT8[]> m_laserdisc_audio_buffer;
UINT16 m_laserdisc_audio_address;
INT16 m_laserdisc_last_samples[2];
attotime m_laserdisc_last_time;
diff --git a/src/mame/includes/gp32.h b/src/mame/includes/gp32.h
index 270d6c5f01d..65ae4f28ed0 100644
--- a/src/mame/includes/gp32.h
+++ b/src/mame/includes/gp32.h
@@ -107,7 +107,7 @@ public:
virtual void video_start() override;
required_shared_ptr<UINT32> m_s3c240x_ram;
- UINT8 *m_eeprom_data;
+ std::unique_ptr<UINT8[]> m_eeprom_data;
UINT32 m_s3c240x_lcd_regs[0x400/4];
emu_timer *m_s3c240x_lcd_timer;
s3c240x_lcd_t m_s3c240x_lcd;
@@ -240,10 +240,6 @@ protected:
void s3c240x_lcd_render_04( );
void s3c240x_lcd_render_08( );
void s3c240x_lcd_render_16( );
- UINT8 i2cmem_read_byte( int last);
- void i2cmem_write_byte( UINT8 data);
- void i2cmem_start( );
- void i2cmem_stop( );
};
diff --git a/src/mame/includes/grchamp.h b/src/mame/includes/grchamp.h
index a6739bb0fb6..3e654dcfd50 100644
--- a/src/mame/includes/grchamp.h
+++ b/src/mame/includes/grchamp.h
@@ -97,9 +97,6 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void draw_objects(int y, UINT8 *objdata);
- int collision_check(bitmap_ind16 &bitmap, int which );
- void draw_fog(bitmap_ind16 &bitmap, const rectangle &cliprect, int fog);
- void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
};
/* Discrete Sound Input Nodes */
diff --git a/src/mame/includes/gridlee.h b/src/mame/includes/gridlee.h
index 72c7a8f49ac..4aea8304969 100644
--- a/src/mame/includes/gridlee.h
+++ b/src/mame/includes/gridlee.h
@@ -41,14 +41,14 @@ public:
UINT8 m_last_analog_input[2];
UINT8 m_last_analog_output[2];
- UINT8 *m_poly17;
+ std::unique_ptr<UINT8[]> m_poly17;
UINT8 *m_rand17;
emu_timer *m_irq_off;
emu_timer *m_irq_timer;
emu_timer *m_firq_off;
emu_timer *m_firq_timer;
UINT8 m_cocktail_flip;
- UINT8 *m_local_videoram;
+ std::unique_ptr<UINT8[]> m_local_videoram;
UINT8 m_palettebank_vis;
DECLARE_READ8_MEMBER(analog_port_r);
diff --git a/src/mame/includes/groundfx.h b/src/mame/includes/groundfx.h
index 6793b1d371a..60c8e76ac43 100644
--- a/src/mame/includes/groundfx.h
+++ b/src/mame/includes/groundfx.h
@@ -43,7 +43,7 @@ public:
UINT16 m_coin_word;
UINT16 m_frame_counter;
UINT16 m_port_sel;
- struct gfx_tempsprite *m_spritelist;
+ std::unique_ptr<gfx_tempsprite[]> m_spritelist;
UINT16 m_rotate_ctrl[8];
rectangle m_hack_cliprect;
diff --git a/src/mame/includes/gstriker.h b/src/mame/includes/gstriker.h
index f30bc1e333a..7491fe1aa40 100644
--- a/src/mame/includes/gstriker.h
+++ b/src/mame/includes/gstriker.h
@@ -51,7 +51,6 @@ public:
// common
DECLARE_READ16_MEMBER(dmmy_8f);
DECLARE_WRITE16_MEMBER(sound_command_w);
- DECLARE_READ16_MEMBER(pending_command_r);
DECLARE_WRITE8_MEMBER(sh_pending_command_clear_w);
DECLARE_WRITE8_MEMBER(sh_bankswitch_w);
diff --git a/src/mame/includes/gsword.h b/src/mame/includes/gsword.h
index 8d30bc143d1..014cc175082 100644
--- a/src/mame/includes/gsword.h
+++ b/src/mame/includes/gsword.h
@@ -78,5 +78,4 @@ public:
UINT32 screen_update_gsword(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(gsword_snd_interrupt);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
- int coins_in(void); //if 0'd
};
diff --git a/src/mame/includes/gunbustr.h b/src/mame/includes/gunbustr.h
index 5e1f71c87d9..95aef16b0e3 100644
--- a/src/mame/includes/gunbustr.h
+++ b/src/mame/includes/gunbustr.h
@@ -44,7 +44,7 @@ public:
bool m_coin_lockout;
UINT16 m_coin_word;
- struct gb_tempsprite *m_spritelist;
+ std::unique_ptr<gb_tempsprite[]> m_spritelist;
UINT32 m_mem[2];
DECLARE_WRITE32_MEMBER(gunbustr_input_w);
diff --git a/src/mame/includes/gunsmoke.h b/src/mame/includes/gunsmoke.h
index ad3c9941cbf..2c5d43e0446 100644
--- a/src/mame/includes/gunsmoke.h
+++ b/src/mame/includes/gunsmoke.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/*************************************************************************
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 9a6d8f5b8d4..4a7ccb99467 100644
--- a/src/mame/includes/hh_tms1k.h
+++ b/src/mame/includes/hh_tms1k.h
@@ -30,19 +30,19 @@ public:
// devices
required_device<cpu_device> m_maincpu;
- optional_ioport_array<11> m_inp_matrix; // max 11
+ optional_ioport_array<18> m_inp_matrix; // max 18
optional_device<speaker_sound_device> m_speaker;
// misc common
UINT16 m_r; // MCU R-pins data
UINT16 m_o; // MCU O-pins data
- UINT16 m_inp_mux; // multiplexed inputs mask
+ UINT32 m_inp_mux; // multiplexed inputs mask
bool m_power_on;
bool m_power_led;
UINT8 read_inputs(int columns);
- DECLARE_INPUT_CHANGED_MEMBER(power_button);
- DECLARE_WRITE_LINE_MEMBER(auto_power_off);
+ virtual DECLARE_INPUT_CHANGED_MEMBER(power_button);
+ virtual DECLARE_WRITE_LINE_MEMBER(auto_power_off);
// display common
int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
diff --git a/src/mame/includes/hng64.h b/src/mame/includes/hng64.h
index 26e96851a80..7da413bf645 100644
--- a/src/mame/includes/hng64.h
+++ b/src/mame/includes/hng64.h
@@ -118,14 +118,14 @@ public:
hng64_state& state() { return m_state; }
bitmap_rgb32& colorBuffer3d() { return m_colorBuffer3d; }
- float* depthBuffer3d() { return m_depthBuffer3d; }
+ float* depthBuffer3d() { return m_depthBuffer3d.get(); }
private:
hng64_state& m_state;
// (Temporarily class members - someday they will live in the memory map)
bitmap_rgb32 m_colorBuffer3d;
- float* m_depthBuffer3d;
+ std::unique_ptr<float[]> m_depthBuffer3d;
};
@@ -174,7 +174,7 @@ public:
required_shared_ptr<UINT32> m_videoregs;
required_shared_ptr<UINT32> m_tcram;
- UINT16* m_dl;
+ std::unique_ptr<UINT16[]> m_dl;
required_shared_ptr<UINT32> m_3dregs;
required_shared_ptr<UINT32> m_3d_1;
required_shared_ptr<UINT32> m_3d_2;
@@ -188,12 +188,12 @@ public:
int m_mcu_type;
- UINT16 *m_soundram;
- UINT16 *m_soundram2;
+ std::unique_ptr<UINT16[]> m_soundram;
+ std::unique_ptr<UINT16[]> m_soundram2;
/* Communications stuff */
- UINT8 *m_com_op_base;
- UINT8 *m_com_virtual_mem;
+ std::unique_ptr<UINT8[]> m_com_op_base;
+ std::unique_ptr<UINT8[]> m_com_virtual_mem;
UINT8 m_com_shared[8];
INT32 m_dma_start;
@@ -236,7 +236,6 @@ public:
float m_lightStrength;
float m_lightVector[3];
- DECLARE_READ32_MEMBER(hng64_random_read);
DECLARE_READ32_MEMBER(hng64_com_r);
DECLARE_WRITE32_MEMBER(hng64_com_w);
DECLARE_WRITE8_MEMBER(hng64_com_share_w);
@@ -274,10 +273,6 @@ public:
DECLARE_WRITE32_MEMBER(hng64_sprite_clear_even_w);
DECLARE_WRITE32_MEMBER(hng64_sprite_clear_odd_w);
- DECLARE_WRITE32_MEMBER(trap_write);
- DECLARE_WRITE32_MEMBER(activate_3d_buffer);
- DECLARE_READ8_MEMBER(hng64_comm_shared_r);
- DECLARE_WRITE8_MEMBER(hng64_comm_shared_w);
DECLARE_WRITE32_MEMBER(hng64_videoram_w);
DECLARE_READ8_MEMBER(hng64_comm_space_r);
DECLARE_WRITE8_MEMBER(hng64_comm_space_w);
@@ -295,7 +290,7 @@ public:
void set_irq(UINT32 irq_vector);
UINT32 m_irq_pending;
UINT8 *m_comm_rom;
- UINT8 *m_comm_ram;
+ std::unique_ptr<UINT8[]> m_comm_ram;
UINT8 m_mmu_regs[8];
UINT32 m_mmua[6];
UINT16 m_mmub[6];
@@ -340,7 +335,7 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(acc_down_r);
DECLARE_CUSTOM_INPUT_MEMBER(brake_down_r);
- hng64_poly_renderer* m_poly_renderer;
+ std::unique_ptr<hng64_poly_renderer> m_poly_renderer;
TIMER_CALLBACK_MEMBER(hng64_3dfifo_processed);
@@ -386,13 +381,6 @@ public:
DECLARE_WRITE16_MEMBER(hng64_sound_port_0080_w);
- DECLARE_WRITE16_MEMBER(hng64_sound_port_0100_w);
- DECLARE_WRITE16_MEMBER(hng64_sound_port_0102_w);
- DECLARE_READ16_MEMBER(hng64_sound_port_0104_r);
- DECLARE_READ16_MEMBER(hng64_sound_port_0106_r);
- DECLARE_WRITE16_MEMBER(hng64_sound_port_0108_w);
- DECLARE_WRITE16_MEMBER(hng64_sound_port_010a_w);
-
DECLARE_WRITE16_MEMBER(hng64_sound_bank_w);
DECLARE_READ16_MEMBER(main_sound_comms_r);
DECLARE_WRITE16_MEMBER(main_sound_comms_w);
diff --git a/src/mame/includes/hp48.h b/src/mame/includes/hp48.h
index 15e029632a2..748a81bee55 100644
--- a/src/mame/includes/hp48.h
+++ b/src/mame/includes/hp48.h
@@ -69,7 +69,7 @@ public:
*/
UINT32 m_port_size[2];
UINT8 m_port_write[2];
- UINT8* m_port_data[2];
+ std::unique_ptr<UINT8[]> m_port_data[2];
UINT32 m_bank_switch;
UINT32 m_io_addr;
@@ -97,7 +97,6 @@ public:
DECLARE_WRITE8_MEMBER(hp49_bank_w);
TIMER_CALLBACK_MEMBER(hp48_rs232_byte_recv_cb);
TIMER_CALLBACK_MEMBER(hp48_rs232_byte_sent_cb);
- TIMER_CALLBACK_MEMBER(hp48_chardev_byte_recv_cb);
TIMER_CALLBACK_MEMBER(hp48_kbd_cb);
TIMER_CALLBACK_MEMBER(hp48_timer1_cb);
TIMER_CALLBACK_MEMBER(hp48_timer2_cb);
diff --git a/src/mame/includes/huebler.h b/src/mame/includes/huebler.h
index 4beff84f9b3..bb6b4c29344 100644
--- a/src/mame/includes/huebler.h
+++ b/src/mame/includes/huebler.h
@@ -97,7 +97,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_tick);
DECLARE_WRITE_LINE_MEMBER(ctc_z0_w);
DECLARE_WRITE_LINE_MEMBER(ctc_z2_w);
- DECLARE_READ_LINE_MEMBER(cassette_r);
DECLARE_WRITE_LINE_MEMBER(cassette_w);
};
diff --git a/src/mame/includes/hyprduel.h b/src/mame/includes/hyprduel.h
index 718a81b4694..f037f61c555 100644
--- a/src/mame/includes/hyprduel.h
+++ b/src/mame/includes/hyprduel.h
@@ -46,16 +46,16 @@ public:
required_shared_ptr<UINT16> m_videoregs;
required_shared_ptr<UINT16> m_sharedram1;
required_shared_ptr<UINT16> m_sharedram3;
- UINT16 * m_tiletable_old;
+ std::unique_ptr<UINT16[]> m_tiletable_old;
/* video-related */
tilemap_t *m_bg_tilemap[3];
- UINT8 *m_empty_tiles;
- UINT8 *m_dirtyindex;
+ std::unique_ptr<UINT8[]> m_empty_tiles;
+ std::unique_ptr<UINT8[]> m_dirtyindex;
int m_sprite_xoffs;
int m_sprite_yoffs;
int m_sprite_yoffs_sub;
- UINT8 * m_expanded_gfx1;
+ std::unique_ptr<UINT8[]> m_expanded_gfx1;
/* misc */
emu_timer *m_magerror_irq_timer;
diff --git a/src/mame/includes/intv.h b/src/mame/includes/intv.h
index 789caf7f844..7f14c7fb55a 100644
--- a/src/mame/includes/intv.h
+++ b/src/mame/includes/intv.h
@@ -102,7 +102,6 @@ public:
virtual void machine_reset() override;
virtual void video_start() override;
DECLARE_PALETTE_INIT(intv);
- void ecs_banks_restore();
UINT32 screen_update_intv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_intvkbd(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(intv_interrupt2);
@@ -131,24 +130,7 @@ protected:
ioport_port *m_discy[4];
ioport_port *m_intv_keyboard[10];
- int intv_load_rom_file(device_image_interface &image);
UINT8 intv_control_r(int hand);
- void intv_set_pixel(bitmap_ind16 &bitmap, int x, int y, UINT32 color);
- UINT32 intv_get_pixel(bitmap_ind16 &bitmap, int x, int y);
- void intv_plot_box(bitmap_ind16 &bm, int x, int y, int w, int h, int color);
- int sprites_collide(int spriteNum1, int spriteNum2);
- void determine_sprite_collisions();
- void render_sprites();
- void render_line(bitmap_ind16 &bitmap, UINT8 nextByte, UINT16 x, UINT16 y, UINT8 fgcolor, UINT8 bgcolor);
- void render_colored_squares(bitmap_ind16 &bitmap, UINT16 x, UINT16 y, UINT8 color0, UINT8 color1, UINT8 color2, UINT8 color3);
- void render_color_stack_mode(bitmap_ind16 &bitmap);
- void render_fg_bg_mode(bitmap_ind16 &bitmap);
- void copy_sprites_to_background(bitmap_ind16 &bitmap);
- void render_background(bitmap_ind16 &bitmap);
- void draw_borders(bitmap_ind16 &bm);
- void intv_stic_screenrefresh();
- void draw_background(bitmap_ind16 &bitmap, int transparency);
- void draw_sprites(bitmap_ind16 &bitmap, int behind_foreground);
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
};
diff --git a/src/mame/includes/inufuku.h b/src/mame/includes/inufuku.h
index 49bebe7dcef..24ed3325158 100644
--- a/src/mame/includes/inufuku.h
+++ b/src/mame/includes/inufuku.h
@@ -35,7 +35,7 @@ public:
int m_bg_raster;
int m_bg_palettebank;
int m_tx_palettebank;
- UINT16* m_spriteram1_old;
+ std::unique_ptr<UINT16[]> m_spriteram1_old;
UINT32 inufuku_tile_callback( UINT32 code );
/* misc */
diff --git a/src/mame/includes/irobot.h b/src/mame/includes/irobot.h
index 3c2d3b05e1e..a2fc05d6fea 100644
--- a/src/mame/includes/irobot.h
+++ b/src/mame/includes/irobot.h
@@ -61,8 +61,8 @@ public:
const irmb_ops *m_irmb_stack[16];
UINT32 m_irmb_regs[16];
UINT32 m_irmb_latch;
- UINT8 *m_polybitmap1;
- UINT8 *m_polybitmap2;
+ std::unique_ptr<UINT8[]> m_polybitmap1;
+ std::unique_ptr<UINT8[]> m_polybitmap2;
int m_ir_xmin;
int m_ir_ymin;
int m_ir_xmax;
diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h
index 257def50b98..3c7be2530f1 100644
--- a/src/mame/includes/itech32.h
+++ b/src/mame/includes/itech32.h
@@ -47,7 +47,7 @@ public:
void nvram_init(nvram_device &nvram, void *base, size_t length);
- UINT16 *m_videoram;
+ std::unique_ptr<UINT16[]> m_videoram;
UINT8 m_vint_state;
UINT8 m_xint_state;
UINT8 m_qint_state;
@@ -117,10 +117,6 @@ public:
DECLARE_READ32_MEMBER(drivedge_tms1_speedup_r);
DECLARE_READ32_MEMBER(drivedge_tms2_speedup_r);
DECLARE_WRITE32_MEMBER(int1_ack32_w);
- DECLARE_READ32_MEMBER(test1_r);
- DECLARE_WRITE32_MEMBER(test1_w);
- DECLARE_READ32_MEMBER(test2_r);
- DECLARE_WRITE32_MEMBER(test2_w);
DECLARE_WRITE16_MEMBER(timekill_colora_w);
DECLARE_WRITE16_MEMBER(timekill_colorbc_w);
DECLARE_WRITE16_MEMBER(timekill_intensity_w);
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 b8e8f8c437d..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;
@@ -239,7 +241,6 @@ public:
int quickload(device_image_interface &image, const char *file_type, int quickload_size);
void cart_start();
- int cart_load(device_image_interface &image);
IRQ_CALLBACK_MEMBER(jaguar_irq_callback);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( jaguar_cart );
DECLARE_QUICKLOAD_LOAD_MEMBER( jaguar );
@@ -338,9 +339,6 @@ protected:
void blitter_01800001_xxxxxx_xxxxxx(UINT32 command, UINT32 a1flags, UINT32 a2flags);
void blitter_x1800x01_xxxxxx_xxxxxx(UINT32 command, UINT32 a1flags, UINT32 a2flags);
- emu_file *jaguar_nvram_fopen( UINT32 openflags);
- void jaguar_nvram_load();
- void jaguar_nvram_save();
optional_device<eeprom_serial_93cxx_device> m_eeprom;
optional_device<vt83c461_device> m_ide;
required_device<screen_device> m_screen;
diff --git a/src/mame/includes/jpmimpct.h b/src/mame/includes/jpmimpct.h
index c681af26435..8be7a680e5a 100644
--- a/src/mame/includes/jpmimpct.h
+++ b/src/mame/includes/jpmimpct.h
@@ -5,6 +5,7 @@
JPM IMPACT with Video hardware
****************************************************************************/
+#include "machine/meters.h"
#include "machine/roc10937.h"
#include "machine/steppers.h"
#include "cpu/tms34010/tms34010.h"
@@ -71,7 +72,8 @@ public:
m_reel2(*this, "reel2"),
m_reel3(*this, "reel3"),
m_reel4(*this, "reel4"),
- m_reel5(*this, "reel5")
+ m_reel5(*this, "reel5"),
+ m_meters(*this, "meters")
{ }
UINT8 m_tms_irq;
@@ -145,4 +147,5 @@ public:
optional_device<stepper_device> m_reel3;
optional_device<stepper_device> m_reel4;
optional_device<stepper_device> m_reel5;
+ required_device<meters_device> m_meters;
};
diff --git a/src/mame/includes/jpmsys5.h b/src/mame/includes/jpmsys5.h
index 8ab5cbb7616..d63877f4aba 100644
--- a/src/mame/includes/jpmsys5.h
+++ b/src/mame/includes/jpmsys5.h
@@ -27,7 +27,8 @@ public:
m_tms34061(*this, "tms34061"),
m_vfd(*this, "vfd"),
m_direct_port(*this, "DIRECT"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_meters(*this, "meters") { }
required_device<cpu_device> m_maincpu;
required_device<acia6850_device> m_acia6850_0;
@@ -38,6 +39,7 @@ public:
optional_device<s16lf01_t> m_vfd;
required_ioport m_direct_port;
optional_device<palette_device> m_palette;
+ optional_device<meters_device> m_meters; //jpmsys5v doesn't use this
UINT8 m_palette_val[16][3];
int m_pal_addr;
diff --git a/src/mame/includes/kaneko16.h b/src/mame/includes/kaneko16.h
index 2dc6aa3887f..fa80cab978a 100644
--- a/src/mame/includes/kaneko16.h
+++ b/src/mame/includes/kaneko16.h
@@ -74,7 +74,8 @@ public:
DECLARE_WRITE16_MEMBER(kaneko16_ay1_YM2149_w);
DECLARE_READ16_MEMBER(kaneko16_ay2_YM2149_r);
DECLARE_WRITE16_MEMBER(kaneko16_ay2_YM2149_w);
- DECLARE_WRITE16_MEMBER(bakubrkr_oki_bank_sw);
+ DECLARE_WRITE16_MEMBER(bakubrkr_oki_bank_w);
+ DECLARE_WRITE8_MEMBER(wingforc_oki_bank_w);
DECLARE_READ8_MEMBER(eeprom_r);
DECLARE_WRITE8_MEMBER(eeprom_w);
@@ -95,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/kangaroo.h b/src/mame/includes/kangaroo.h
index 3627dc4f47a..2b73a14c28e 100644
--- a/src/mame/includes/kangaroo.h
+++ b/src/mame/includes/kangaroo.h
@@ -21,7 +21,7 @@ public:
required_shared_ptr<UINT8> m_video_control;
/* video-related */
- UINT32 *m_videoram;
+ std::unique_ptr<UINT32[]> m_videoram;
/* misc */
UINT8 m_mcu_clock;
diff --git a/src/mame/includes/karnov.h b/src/mame/includes/karnov.h
index 2af9e810f91..12d44893b99 100644
--- a/src/mame/includes/karnov.h
+++ b/src/mame/includes/karnov.h
@@ -39,7 +39,7 @@ public:
required_device<palette_device> m_palette;
/* video-related */
- bitmap_ind16 *m_bitmap_f;
+ std::unique_ptr<bitmap_ind16> m_bitmap_f;
tilemap_t *m_fix_tilemap;
int m_flipscreen;
UINT16 m_scroll[2];
diff --git a/src/mame/includes/kaypro.h b/src/mame/includes/kaypro.h
index 61f93d96f03..f2b5cc3df29 100644
--- a/src/mame/includes/kaypro.h
+++ b/src/mame/includes/kaypro.h
@@ -48,7 +48,6 @@ public:
DECLARE_WRITE8_MEMBER(kaypro2x_register_w);
DECLARE_WRITE8_MEMBER(kaypro2x_videoram_w);
DECLARE_READ8_MEMBER(pio_system_r);
- DECLARE_WRITE8_MEMBER(common_pio_system_w);
DECLARE_WRITE8_MEMBER(kayproii_pio_system_w);
DECLARE_WRITE8_MEMBER(kaypro4_pio_system_w);
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
diff --git a/src/mame/includes/kc.h b/src/mame/includes/kc.h
index fa56b4028fa..65af7aeedb7 100644
--- a/src/mame/includes/kc.h
+++ b/src/mame/includes/kc.h
@@ -110,7 +110,6 @@ public:
// CTC callback
DECLARE_WRITE_LINE_MEMBER( ctc_zc0_callback );
DECLARE_WRITE_LINE_MEMBER( ctc_zc1_callback );
- DECLARE_WRITE_LINE_MEMBER( ctc_zc2_callback );
// keyboard
DECLARE_WRITE_LINE_MEMBER( keyboard_cb );
diff --git a/src/mame/includes/kickgoal.h b/src/mame/includes/kickgoal.h
index 9575f813080..94ddc5d3bd9 100644
--- a/src/mame/includes/kickgoal.h
+++ b/src/mame/includes/kickgoal.h
@@ -65,7 +65,6 @@ public:
DECLARE_WRITE16_MEMBER(kickgoal_fgram_w);
DECLARE_WRITE16_MEMBER(kickgoal_bgram_w);
DECLARE_WRITE16_MEMBER(kickgoal_bg2ram_w);
- DECLARE_WRITE16_MEMBER(kickgoal_snd_w);
DECLARE_WRITE16_MEMBER(actionhw_snd_w);
DECLARE_DRIVER_INIT(kickgoal);
TILE_GET_INFO_MEMBER(get_kickgoal_fg_tile_info);
@@ -82,7 +81,6 @@ public:
UINT32 screen_update_kickgoal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(kickgoal_interrupt);
void kickgoal_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
- void kickgoal_play(okim6295_device *oki, int melody, int data);
required_device<cpu_device> m_maincpu;
required_device<okim6295_device> m_oki;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/includes/konamigx.h b/src/mame/includes/konamigx.h
index 33857ba0129..f5ee6f795d5 100644
--- a/src/mame/includes/konamigx.h
+++ b/src/mame/includes/konamigx.h
@@ -52,7 +52,7 @@ public:
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_soundcpu;
optional_device<tms57002_device> m_dasp;
- optional_device<k053252_device> m_k053252; // not hooked up in tasman.cpp yet (does it even have it?)
+ required_device<k053252_device> m_k053252; // not hooked up in tasman.cpp yet (does it even have it?)
required_device<k055673_device> m_k055673;
required_device<k055555_device> m_k055555;
required_device<k056832_device> m_k056832;
@@ -79,9 +79,6 @@ public:
DECLARE_WRITE32_MEMBER(esc_w);
DECLARE_WRITE32_MEMBER(eeprom_w);
DECLARE_WRITE32_MEMBER(control_w);
- DECLARE_READ32_MEMBER(waitskip_r);
- DECLARE_READ32_MEMBER(sound020_r);
- DECLARE_WRITE32_MEMBER(sound020_w);
DECLARE_READ32_MEMBER(le2_gun_H_r);
DECLARE_READ32_MEMBER(le2_gun_V_r);
DECLARE_READ32_MEMBER(type1_roz_r1);
@@ -98,8 +95,6 @@ public:
DECLARE_WRITE16_MEMBER(K053990_martchmp_word_w);
DECLARE_WRITE32_MEMBER(fantjour_dma_w);
DECLARE_WRITE32_MEMBER(konamigx_type3_psac2_bank_w);
- DECLARE_WRITE32_MEMBER(konamigx_555_palette_w);
- DECLARE_WRITE32_MEMBER(konamigx_555_palette2_w);
DECLARE_WRITE32_MEMBER(konamigx_tilebank_w);
DECLARE_WRITE32_MEMBER(konamigx_t1_psacmap_w);
DECLARE_WRITE32_MEMBER(konamigx_t4_psacmap_w);
@@ -130,7 +125,6 @@ public:
INTERRUPT_GEN_MEMBER(konamigx_type2_vblank_irq);
TIMER_DEVICE_CALLBACK_MEMBER(konamigx_type2_scanline);
TIMER_DEVICE_CALLBACK_MEMBER(konamigx_type4_scanline);
- INTERRUPT_GEN_MEMBER(tms_sync);
DECLARE_WRITE_LINE_MEMBER(k054539_irq_gen);
TIMER_CALLBACK_MEMBER(dmaend_callback);
TIMER_CALLBACK_MEMBER(boothack_callback);
@@ -199,6 +193,7 @@ public:
int m_gx_cfgport;
int m_suspension_active, m_resume_trigger;
int m_last_prot_op, m_last_prot_clk;
+ UINT8 m_prev_pixel_clock;
UINT8 m_esc_program[4096];
esc_cb m_esc_cb;
@@ -221,20 +216,21 @@ public:
UINT16 m_gx_wrport2;
// 2nd-Tier GX/MW Graphics Variables
- UINT8 *m_gx_objzbuf, *m_gx_shdzbuf;
+ UINT8 *m_gx_objzbuf;
+ std::unique_ptr<UINT8[]> m_gx_shdzbuf;
int m_layer_colorbase[4];
INT32 m_gx_tilebanks[8], m_gx_oldbanks[8];
int m_gx_tilemode, m_gx_rozenable, m_psac_colorbase, m_last_psac_colorbase;
int m_gx_specialrozenable; // type 1 roz, with voxel height-map, rendered from 2 source tilemaps (which include height data) to temp bitmap for further processing
int m_gx_rushingheroes_hack;
- int m_gx_le2_textcolour_hack;
+
tilemap_t *m_gx_psac_tilemap, *m_gx_psac_tilemap2;
- bitmap_ind16 *m_type3_roz_temp_bitmap;
+ std::unique_ptr<bitmap_ind16> m_type3_roz_temp_bitmap;
tilemap_t *m_gx_psac_tilemap_alt;
int m_konamigx_has_dual_screen;
int m_konamigx_palformat;
- bitmap_rgb32 *m_dualscreen_left_tempbitmap;
- bitmap_rgb32 *m_dualscreen_right_tempbitmap;
+ std::unique_ptr<bitmap_rgb32> m_dualscreen_left_tempbitmap;
+ std::unique_ptr<bitmap_rgb32> m_dualscreen_right_tempbitmap;
/* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data
the 'voxel' effect to give the pixels height is a post-process operation on the
@@ -252,8 +248,8 @@ public:
*/
- bitmap_ind16 *m_gxtype1_roz_dstbitmap;
- bitmap_ind16 *m_gxtype1_roz_dstbitmap2;
+ std::unique_ptr<bitmap_ind16> m_gxtype1_roz_dstbitmap;
+ std::unique_ptr<bitmap_ind16> m_gxtype1_roz_dstbitmap2;
rectangle m_gxtype1_roz_dstbitmapclip;
int m_konamigx_type3_psac2_actual_bank;
diff --git a/src/mame/includes/ladyfrog.h b/src/mame/includes/ladyfrog.h
index 293b964d39c..39114c577dd 100644
--- a/src/mame/includes/ladyfrog.h
+++ b/src/mame/includes/ladyfrog.h
@@ -23,7 +23,7 @@ public:
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
- UINT8 * m_spriteram;
+ std::unique_ptr<UINT8[]> m_spriteram;
required_shared_ptr<UINT8> m_scrlram;
std::vector<UINT8> m_paletteram;
std::vector<UINT8> m_paletteram_ext;
@@ -57,7 +57,6 @@ public:
DECLARE_READ8_MEMBER(ladyfrog_palette_r);
DECLARE_WRITE8_MEMBER(ladyfrog_gfxctrl_w);
DECLARE_WRITE8_MEMBER(ladyfrog_gfxctrl2_w);
- DECLARE_READ8_MEMBER(ladyfrog_gfxctrl_r);
DECLARE_READ8_MEMBER(ladyfrog_scrlram_r);
DECLARE_WRITE8_MEMBER(ladyfrog_scrlram_w);
DECLARE_WRITE8_MEMBER(unk_w);
diff --git a/src/mame/includes/laserbat.h b/src/mame/includes/laserbat.h
index d2fdf4d0b92..f50cd4e1bd9 100644
--- a/src/mame/includes/laserbat.h
+++ b/src/mame/includes/laserbat.h
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Pierpaolo Prazzoli
+// copyright-holders:Vas Crabb
/*************************************************************************
Laser Battle / Lazarian - Cat and Mouse
@@ -7,95 +7,221 @@
*************************************************************************/
#include "machine/6821pia.h"
-#include "sound/ay8910.h"
+#include "machine/pla.h"
#include "machine/s2636.h"
+
+#include "sound/ay8910.h"
#include "sound/sn76477.h"
+#include "sound/tms3615.h"
+
-class laserbat_state : public driver_device
+class laserbat_state_base : public driver_device
{
public:
- laserbat_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "audiocpu"),
- m_ay1(*this, "ay1"),
- m_ay2(*this, "ay2"),
- m_s2636_1(*this, "s2636_1"),
- m_s2636_2(*this, "s2636_2"),
- m_s2636_3(*this, "s2636_3"),
- m_sn(*this, "snsnd"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette")
+
+ laserbat_state_base(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_row0(*this, "ROW0")
+ , m_row1(*this, "ROW1")
+ , m_row2(*this, "ROW2")
+ , m_sw1(*this, "SW1")
+ , m_sw2(*this, "SW2")
+ , m_maincpu(*this, "maincpu")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_gfxmix(*this, "gfxmix")
+ , m_pvi1(*this, "pvi1")
+ , m_pvi2(*this, "pvi2")
+ , m_pvi3(*this, "pvi3")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_scanline_timer(nullptr)
+ , m_gfx1(nullptr)
+ , m_gfx2(nullptr)
+ , m_input_mux(0)
+ , m_mpx_p_1_2(false)
+ , m_mpx_bkeff(false)
+ , m_nave(false)
+ , m_clr_lum(0)
+ , m_shp(0)
+ , m_wcoh(0)
+ , m_wcov(0)
+ , m_abeff1(false)
+ , m_abeff2(false)
+ , m_mpx_eff2_sh(false)
+ , m_coleff(0)
+ , m_neg1(false)
+ , m_neg2(false)
+ , m_rhsc(0)
+ , m_whsc(0)
+ , m_csound1(0)
+ , m_csound2(0)
{
}
- required_device<cpu_device> m_maincpu;
- optional_device<cpu_device> m_audiocpu;
- optional_device<ay8910_device> m_ay1;
- optional_device<ay8910_device> m_ay2;
- required_device<s2636_device> m_s2636_1;
- required_device<s2636_device> m_s2636_2;
- required_device<s2636_device> m_s2636_3;
- optional_device<sn76477_device> m_sn;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<palette_device> m_palette;
-
- /* video-related */
- tilemap_t *m_bg_tilemap;
- int m_video_page;
-
- /* misc */
- int m_input_mux;
- int m_active_8910;
- int m_port0a;
- int m_last_port0b;
- int m_cb1_toggle;
-
- /* information for the single 32x32 sprite displayed */
- int m_sprite_x;
- int m_sprite_y;
- int m_sprite_code;
- int m_sprite_color;
- int m_sprite_enable;
-
- /* sound-related */
- int m_csound1;
- int m_ksound1;
- int m_ksound2;
- int m_ksound3;
- int m_degr;
- int m_filt;
- int m_a;
- int m_us;
- int m_bit14;
-
- /* device */
- pia6821_device *m_pia;
- tms3615_device *m_tms1;
- tms3615_device *m_tms2;
-
- // memory
- UINT8 m_videoram[0x400];
- UINT8 m_colorram[0x400];
- DECLARE_WRITE8_MEMBER(laserbat_videoram_w);
- DECLARE_WRITE8_MEMBER(video_extra_w);
- DECLARE_WRITE8_MEMBER(sprite_x_y_w);
- DECLARE_WRITE8_MEMBER(laserbat_input_mux_w);
- DECLARE_READ8_MEMBER(laserbat_input_r);
- DECLARE_WRITE8_MEMBER(laserbat_cnteff_w);
- DECLARE_WRITE8_MEMBER(laserbat_cntmov_w);
- DECLARE_WRITE8_MEMBER(laserbat_csound1_w);
- DECLARE_WRITE8_MEMBER(laserbat_csound2_w);
- DECLARE_WRITE_LINE_MEMBER(zaccaria_irq0a);
- DECLARE_WRITE_LINE_MEMBER(zaccaria_irq0b);
- DECLARE_READ8_MEMBER(zaccaria_port0a_r);
- DECLARE_WRITE8_MEMBER(zaccaria_port0a_w);
- DECLARE_WRITE8_MEMBER(zaccaria_port0b_w);
- TILE_GET_INFO_MEMBER(get_tile_info);
- virtual void machine_start() override;
- virtual void machine_reset() override;
+ // control ports
+ DECLARE_WRITE8_MEMBER(ct_io_w);
+ DECLARE_READ8_MEMBER(rrowx_r);
+
+ DECLARE_DRIVER_INIT(laserbat);
+ INTERRUPT_GEN_MEMBER(laserbat_interrupt);
+
+ // video initialisation
+ DECLARE_PALETTE_INIT(laserbat);
+
+ // video memory and control ports
+ DECLARE_WRITE8_MEMBER(videoram_w);
+ DECLARE_WRITE8_MEMBER(wcoh_w);
+ DECLARE_WRITE8_MEMBER(wcov_w);
+ DECLARE_WRITE8_MEMBER(cnt_eff_w);
+ DECLARE_WRITE8_MEMBER(cnt_nav_w);
+
+ // sound control ports
+ virtual DECLARE_READ8_MEMBER(rhsc_r);
+ virtual DECLARE_WRITE8_MEMBER(whsc_w);
+ virtual DECLARE_WRITE8_MEMBER(csound1_w);
+ virtual DECLARE_WRITE8_MEMBER(csound2_w);
+
+ // running the video
virtual void video_start() override;
UINT32 screen_update_laserbat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(laserbat_interrupt);
- INTERRUPT_GEN_MEMBER(zaccaria_cb1_toggle);
+
+protected:
+ enum { TIMER_SCANLINE };
+
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
+ // video functions
+ TIMER_CALLBACK_MEMBER(video_line);
+
+ // input lines
+ required_ioport m_row0;
+ required_ioport m_row1;
+ required_ioport m_row2;
+ required_ioport m_sw1;
+ required_ioport m_sw2;
+
+ // main CPU device
+ required_device<cpu_device> m_maincpu;
+
+ // video devices
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ required_device<pla_device> m_gfxmix;
+ required_device<s2636_device> m_pvi1;
+ required_device<s2636_device> m_pvi2;
+ required_device<s2636_device> m_pvi3;
+ required_device<gfxdecode_device> m_gfxdecode;
+
+ // stuff for rendering video
+ emu_timer *m_scanline_timer;
+ bitmap_ind16 m_bitmap;
+ UINT8 const *m_gfx1;
+ UINT8 const *m_gfx2;
+
+ // control lines
+ unsigned m_input_mux;
+ bool m_mpx_p_1_2;
+
+ // RAM used by TTL video hardware, writable by CPU
+ UINT8 m_bg_ram[0x400]; // background tilemap
+ UINT8 m_eff_ram[0x400]; // per-scanline effects (A8 not wired meaning only half is usable)
+ bool m_mpx_bkeff; // select between writing background and effects memory
+
+ // signals affecting the TTL-generated 32x32 sprite
+ bool m_nave; // 1-bit enable
+ unsigned m_clr_lum; // 3-bit colour/luminance
+ unsigned m_shp; // 3-bit shape
+ unsigned m_wcoh; // 8-bit offset horizontal
+ unsigned m_wcov; // 8-bit offset vertical
+
+ // video effects signals
+ bool m_abeff1; // 1-bit effect enable
+ bool m_abeff2; // 1-bit effect enable
+ bool m_mpx_eff2_sh; // 1-bit effect selection
+ unsigned m_coleff; // 2-bit colour effect
+ bool m_neg1; // 1-bit area selection
+ bool m_neg2; // 1-bit area selection
+
+ // sound board I/O signals
+ unsigned m_rhsc; // 8-bit input from J7
+ unsigned m_whsc; // 8-bit output to J7
+ unsigned m_csound1; // bits 1-8 on J3
+ unsigned m_csound2; // bits 9-16 on J3
+};
+
+
+class laserbat_state : public laserbat_state_base
+{
+public:
+ laserbat_state(const machine_config &mconfig, device_type type, const char *tag)
+ : laserbat_state_base(mconfig, type, tag)
+ , m_csg(*this, "csg")
+ , m_synth_low(*this, "synth_low")
+ , m_synth_high(*this, "synth_high")
+ , m_keys(0)
+ {
+ }
+
+ // sound control ports
+ virtual DECLARE_WRITE8_MEMBER(csound2_w) override;
+
+protected:
+
+ // initialisation/startup
+ virtual void machine_start() override;
+
+ // sound board devices
+ required_device<sn76477_device> m_csg;
+ required_device<tms3615_device> m_synth_low;
+ required_device<tms3615_device> m_synth_high;
+
+ // register state
+ unsigned m_keys; // low octave keys 1-13 and high octave keys 2-12 (24 bits)
+};
+
+
+class catnmous_state : public laserbat_state_base
+{
+public:
+ catnmous_state(const machine_config &mconfig, device_type type, const char *tag)
+ : laserbat_state_base(mconfig, type, tag)
+ , m_audiocpu(*this, "audiocpu")
+ , m_pia(*this, "pia")
+ , m_psg1(*this, "psg1")
+ , m_psg2(*this, "psg2")
+ , m_cb1(false)
+ {
+ }
+
+ // sound control ports
+ virtual DECLARE_WRITE8_MEMBER(csound1_w) override;
+ virtual DECLARE_WRITE8_MEMBER(csound2_w) override;
+
+ // PIA handlers
+ DECLARE_READ8_MEMBER(pia_porta_r);
+ DECLARE_WRITE8_MEMBER(pia_porta_w);
+ DECLARE_WRITE8_MEMBER(pia_portb_w);
+ DECLARE_WRITE_LINE_MEMBER(pia_irqa);
+ DECLARE_WRITE_LINE_MEMBER(pia_irqb);
+
+ // PSG handlers
+ DECLARE_WRITE8_MEMBER(psg1_porta_w);
+ DECLARE_READ8_MEMBER(psg1_portb_r);
+
+ // periodic signal generators
+ INTERRUPT_GEN_MEMBER(cb1_toggle);
+
+protected:
+
+ // initialisation/startup
+ virtual void machine_start() override;
+
+ // sound board devices
+ required_device<cpu_device> m_audiocpu;
+ required_device<pia6821_device> m_pia;
+ required_device<ay8910_device> m_psg1;
+ required_device<ay8910_device> m_psg2;
+
+ // control line states
+ bool m_cb1;
};
diff --git a/src/mame/includes/legionna.h b/src/mame/includes/legionna.h
index ed64c30b16c..456c28508e1 100644
--- a/src/mame/includes/legionna.h
+++ b/src/mame/includes/legionna.h
@@ -28,11 +28,11 @@ public:
}
required_shared_ptr<UINT16> m_spriteram;
- UINT16* m_back_data;
- UINT16* m_fore_data;
- UINT16* m_mid_data;
- UINT16* m_textram;
- UINT16 *m_scrollram16;
+ std::unique_ptr<UINT16[]> m_back_data;
+ std::unique_ptr<UINT16[]> m_fore_data;
+ std::unique_ptr<UINT16[]> m_mid_data;
+ std::unique_ptr<UINT16[]> m_textram;
+ std::unique_ptr<UINT16[]> m_scrollram16;
UINT16 m_layer_disable;
int m_sprite_xoffs;
int m_sprite_yoffs;
@@ -48,6 +48,8 @@ public:
UINT16 scrollvals[6];
DECLARE_WRITE16_MEMBER(tilemap_enable_w);
DECLARE_WRITE16_MEMBER(tile_scroll_w);
+ DECLARE_WRITE16_MEMBER(tile_scroll_base_w);
+ DECLARE_WRITE16_MEMBER(tile_vreg_1a_w);
DECLARE_WRITE16_MEMBER(videowrite_cb_w);
DECLARE_WRITE16_MEMBER(wordswapram_w);
DECLARE_WRITE16_MEMBER(legionna_background_w);
diff --git a/src/mame/includes/leland.h b/src/mame/includes/leland.h
index cd0a8684463..ab2133cef3b 100644
--- a/src/mame/includes/leland.h
+++ b/src/mame/includes/leland.h
@@ -49,7 +49,7 @@ public:
UINT8 m_dac_control;
UINT8 *m_alleymas_kludge_mem;
- UINT8 *m_ataxx_qram;
+ std::unique_ptr<UINT8[]> m_ataxx_qram;
UINT8 m_gfx_control;
UINT8 m_wcol_enable;
emu_timer *m_master_int_timer;
@@ -78,8 +78,8 @@ public:
UINT32 m_xrom2_addr;
UINT8 m_battery_ram_enable;
UINT8 *m_battery_ram;
- UINT8 *m_extra_tram;
- UINT8 *m_video_ram;
+ std::unique_ptr<UINT8[]> m_extra_tram;
+ std::unique_ptr<UINT8[]> m_video_ram;
struct vram_state_data m_vram_state[2];
UINT16 m_xscroll;
UINT16 m_yscroll;
diff --git a/src/mame/includes/lethalj.h b/src/mame/includes/lethalj.h
index e9e519d8d56..eb501e82122 100644
--- a/src/mame/includes/lethalj.h
+++ b/src/mame/includes/lethalj.h
@@ -39,7 +39,7 @@ public:
optional_ioport m_light1_y;
UINT16 m_blitter_data[8];
- UINT16 *m_screenram;
+ std::unique_ptr<UINT16[]> m_screenram;
UINT8 m_vispage;
UINT16 *m_blitter_base;
int m_blitter_rows;
diff --git a/src/mame/includes/liberate.h b/src/mame/includes/liberate.h
index c86a926b090..c57acc02391 100644
--- a/src/mame/includes/liberate.h
+++ b/src/mame/includes/liberate.h
@@ -23,7 +23,7 @@ public:
optional_shared_ptr<UINT8> m_scratchram;
UINT8 *m_fg_gfx; /* prosoccr */
- UINT8 *m_charram; /* prosoccr */
+ std::unique_ptr<UINT8[]> m_charram; /* prosoccr */
UINT8 m_io_ram[16];
int m_bank;
@@ -77,8 +77,6 @@ public:
UINT32 screen_update_boomrang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_prosoccr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(deco16_interrupt);
- INTERRUPT_GEN_MEMBER(prosport_interrupt);
- void debug_print(bitmap_ind16 &bitmap);
void liberate_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void prosport_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void boomrang_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
diff --git a/src/mame/includes/liberatr.h b/src/mame/includes/liberatr.h
index edaf2add687..2f71c14af23 100644
--- a/src/mame/includes/liberatr.h
+++ b/src/mame/includes/liberatr.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/*************************************************************************
@@ -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/lisa.h b/src/mame/includes/lisa.h
index 7a54062802c..f359191d605 100644
--- a/src/mame/includes/lisa.h
+++ b/src/mame/includes/lisa.h
@@ -161,7 +161,7 @@ public:
UINT16 m_mem_err_addr_latch;
int m_parity_error_pending;
int m_bad_parity_count;
- UINT8 *m_bad_parity_table;
+ std::unique_ptr<UINT8[]> m_bad_parity_table;
int m_VTMSK;
int m_VTIR;
UINT16 m_video_address_latch;
@@ -231,7 +231,6 @@ public:
void scan_keyboard();
void unplug_keyboard();
void plug_keyboard();
- void init_lisa1(void);
};
#endif /* LISA_H_ */
diff --git a/src/mame/includes/lockon.h b/src/mame/includes/lockon.h
index 89fd0d1258e..86407bd3671 100644
--- a/src/mame/includes/lockon.h
+++ b/src/mame/includes/lockon.h
@@ -55,8 +55,8 @@ public:
UINT8 m_ground_ctrl;
UINT16 m_scroll_h;
UINT16 m_scroll_v;
- bitmap_ind16 *m_front_buffer;
- bitmap_ind16 *m_back_buffer;
+ std::unique_ptr<bitmap_ind16> m_front_buffer;
+ std::unique_ptr<bitmap_ind16> m_back_buffer;
emu_timer *m_bufend_timer;
emu_timer *m_cursor_timer;
@@ -72,7 +72,7 @@ public:
/* Object palette RAM control */
UINT32 m_iden;
- UINT8 *m_obj_pal_ram;
+ std::unique_ptr<UINT8[]> m_obj_pal_ram;
UINT32 m_obj_pal_latch;
UINT32 m_obj_pal_addr;
diff --git a/src/mame/includes/lordgun.h b/src/mame/includes/lordgun.h
index c381e474a8e..fbc1b57227e 100644
--- a/src/mame/includes/lordgun.h
+++ b/src/mame/includes/lordgun.h
@@ -56,7 +56,7 @@ public:
int m_whitescreen;
lordgun_gun_data m_gun[2];
tilemap_t *m_tilemap[4];
- bitmap_ind16 *m_bitmaps[5];
+ std::unique_ptr<bitmap_ind16> m_bitmaps[5];
UINT16 m_protection_data;
DECLARE_WRITE16_MEMBER(lordgun_protection_w);
diff --git a/src/mame/includes/lwings.h b/src/mame/includes/lwings.h
index facb2ade608..6a7dedb889c 100644
--- a/src/mame/includes/lwings.h
+++ b/src/mame/includes/lwings.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
#include "video/bufsprite.h"
#include "sound/msm5205.h"
diff --git a/src/mame/includes/m10.h b/src/mame/includes/m10.h
index 1a419d241ec..7f9ff1a4557 100644
--- a/src/mame/includes/m10.h
+++ b/src/mame/includes/m10.h
@@ -107,8 +107,6 @@ public:
DECLARE_VIDEO_START(m15);
UINT32 screen_update_m10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_m15(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(m11_interrupt);
- INTERRUPT_GEN_MEMBER(m10_interrupt);
INTERRUPT_GEN_MEMBER(m15_interrupt);
TIMER_CALLBACK_MEMBER(interrupt_callback);
DECLARE_WRITE8_MEMBER(ic8j1_output_changed);
diff --git a/src/mame/includes/m107.h b/src/mame/includes/m107.h
index 0cb4724f10a..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;
@@ -47,7 +50,7 @@ public:
UINT16 m_raster_irq_position;
pf_layer_info m_pf_layer[4];
UINT16 m_control[0x10];
- UINT16 *m_buffered_spriteram;
+ std::unique_ptr<UINT16[]> m_buffered_spriteram;
DECLARE_WRITE16_MEMBER(coincounter_w);
DECLARE_WRITE16_MEMBER(bankswitch_w);
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/m72.h b/src/mame/includes/m72.h
index 4c74265c2a7..29afaea26c7 100644
--- a/src/mame/includes/m72.h
+++ b/src/mame/includes/m72.h
@@ -69,12 +69,12 @@ public:
required_shared_ptr<UINT16> m_generic_paletteram2_16;
optional_device<pic8259_device> m_upd71059c;
- UINT16 *m_protection_ram;
+ std::unique_ptr<UINT16[]> m_protection_ram;
emu_timer *m_scanline_timer;
const UINT8 *m_protection_code;
const UINT8 *m_protection_crc;
UINT32 m_raster_irq_position;
- UINT16 *m_buffered_spriteram;
+ std::unique_ptr<UINT16[]> m_buffered_spriteram;
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
tilemap_t *m_bg_tilemap_large;
@@ -194,7 +194,6 @@ public:
inline void changecolor(int color,int r,int g,int b);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
void majtitle_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
- int find_sample(int num);
void copy_le(UINT16 *dest, const UINT8 *src, UINT8 bytes);
void install_protection_handler(const UINT8 *code,const UINT8 *crc);
};
diff --git a/src/mame/includes/m90.h b/src/mame/includes/m90.h
index 1f68a161004..20412db5fe2 100644
--- a/src/mame/includes/m90.h
+++ b/src/mame/includes/m90.h
@@ -34,7 +34,6 @@ public:
DECLARE_WRITE16_MEMBER(m90_coincounter_w);
DECLARE_WRITE16_MEMBER(quizf1_bankswitch_w);
DECLARE_WRITE16_MEMBER(dynablsb_sound_command_w);
- DECLARE_WRITE16_MEMBER(unknown_w);
DECLARE_WRITE16_MEMBER(m90_video_control_w);
DECLARE_WRITE16_MEMBER(m90_video_w);
DECLARE_DRIVER_INIT(bomblord);
diff --git a/src/mame/includes/m92.h b/src/mame/includes/m92.h
index 4f9baea9e74..ceff8595f12 100644
--- a/src/mame/includes/m92.h
+++ b/src/mame/includes/m92.h
@@ -51,8 +51,6 @@ public:
required_device<palette_device> m_palette;
required_device<pic8259_device> m_upd71059c;
- IRQ_CALLBACK_MEMBER(m92_irq_callback);
-
UINT16 m_sound_status;
UINT32 m_raster_irq_position;
UINT16 m_videocontrol;
diff --git a/src/mame/includes/mac.h b/src/mame/includes/mac.h
index 9817b2cea0c..8b093993abc 100644
--- a/src/mame/includes/mac.h
+++ b/src/mame/includes/mac.h
@@ -175,7 +175,7 @@ private:
sound_stream *m_mac_stream;
int m_sample_enable;
UINT16 *m_mac_snd_buf_ptr;
- UINT8 *m_snd_cache;
+ std::unique_ptr<UINT8[]> m_snd_cache;
int m_snd_cache_len;
int m_snd_cache_head;
int m_snd_cache_tail;
@@ -337,10 +337,7 @@ public:
void set_via_interrupt(int value);
void set_via2_interrupt(int value);
void field_interrupts();
- void rtc_write_rTCEnb(int data);
- void rtc_shift_data(int data);
void vblank_irq();
- void rtc_incticks();
void adb_talk();
void mouse_callback();
void rbv_recalc_irqs();
@@ -546,7 +543,6 @@ public:
DECLARE_READ8_MEMBER(mac_via2_in_b_pmu);
DECLARE_WRITE8_MEMBER(mac_via2_out_a_pmu);
DECLARE_WRITE8_MEMBER(mac_via2_out_b_pmu);
- DECLARE_WRITE_LINE_MEMBER(mac_kbd_clk_in);
void mac_state_load();
DECLARE_WRITE_LINE_MEMBER(mac_via_irq);
DECLARE_WRITE_LINE_MEMBER(mac_via2_irq);
@@ -557,7 +553,6 @@ public:
void kbd_shift_out(int data);
void keyboard_receive(int val);
void mac_driver_init(model_t model);
- void mac_tracetrap(const char *cpu_name_local, int addr, int trap);
void mac_install_memory(offs_t memory_begin, offs_t memory_end,
offs_t memory_size, void *memory_data, int is_rom, const char *bank);
};
diff --git a/src/mame/includes/macpci.h b/src/mame/includes/macpci.h
index 22c218205b4..5494942a6d2 100644
--- a/src/mame/includes/macpci.h
+++ b/src/mame/includes/macpci.h
@@ -118,11 +118,6 @@ public:
// this is shared among all video setups with vram
UINT32 *m_vram;
- // defined in machine/mac.c
- void set_via_interrupt(int value);
- void vblank_irq();
- void mac_adb_newaction(int state);
-
DECLARE_READ16_MEMBER ( mac_via_r );
DECLARE_WRITE16_MEMBER ( mac_via_w );
DECLARE_READ16_MEMBER ( mac_scc_r );
diff --git a/src/mame/includes/macrossp.h b/src/mame/includes/macrossp.h
index 36aad0fde03..ffcbb5e89f5 100644
--- a/src/mame/includes/macrossp.h
+++ b/src/mame/includes/macrossp.h
@@ -52,8 +52,8 @@ public:
required_shared_ptr<UINT32> m_text_linezoom;
required_shared_ptr<UINT32> m_text_videoregs;
required_shared_ptr<UINT32> m_mainram;
- UINT32 * m_spriteram_old;
- UINT32 * m_spriteram_old2;
+ std::unique_ptr<UINT32[]> m_spriteram_old;
+ std::unique_ptr<UINT32[]> m_spriteram_old2;
/* video-related */
tilemap_t *m_scra_tilemap;
@@ -77,7 +77,6 @@ public:
DECLARE_READ16_MEMBER(macrossp_soundcmd_r);
DECLARE_WRITE16_MEMBER(palette_fade_w);
DECLARE_WRITE32_MEMBER(macrossp_speedup_w);
- DECLARE_WRITE32_MEMBER(quizmoon_speedup_w);
DECLARE_WRITE32_MEMBER(macrossp_scra_videoram_w);
DECLARE_WRITE32_MEMBER(macrossp_scrb_videoram_w);
DECLARE_WRITE32_MEMBER(macrossp_scrc_videoram_w);
diff --git a/src/mame/includes/madalien.h b/src/mame/includes/madalien.h
index b0fbb2a6a15..475823d53a9 100644
--- a/src/mame/includes/madalien.h
+++ b/src/mame/includes/madalien.h
@@ -49,7 +49,7 @@ public:
tilemap_t *m_tilemap_fg;
tilemap_t *m_tilemap_edge1[4];
tilemap_t *m_tilemap_edge2[4];
- bitmap_ind16 *m_headlight_bitmap;
+ std::unique_ptr<bitmap_ind16> m_headlight_bitmap;
DECLARE_READ8_MEMBER(shift_r);
DECLARE_READ8_MEMBER(shift_rev_r);
DECLARE_WRITE8_MEMBER(madalien_output_w);
diff --git a/src/mame/includes/magmax.h b/src/mame/includes/magmax.h
index a74305b1483..36199b3c49c 100644
--- a/src/mame/includes/magmax.h
+++ b/src/mame/includes/magmax.h
@@ -28,7 +28,7 @@ public:
UINT8 m_gain_control;
emu_timer *m_interrupt_timer;
int m_flipscreen;
- UINT32 *m_prom_tab;
+ std::unique_ptr<UINT32[]> m_prom_tab;
bitmap_ind16 m_bitmap;
DECLARE_WRITE16_MEMBER(magmax_sound_w);
DECLARE_READ8_MEMBER(magmax_sound_irq_ack);
diff --git a/src/mame/includes/mappy.h b/src/mame/includes/mappy.h
index 2c8ab47ebe1..8bbfcf8ff25 100644
--- a/src/mame/includes/mappy.h
+++ b/src/mame/includes/mappy.h
@@ -114,7 +114,6 @@ public:
INTERRUPT_GEN_MEMBER(phozon_main_vblank_irq);
INTERRUPT_GEN_MEMBER(mappy_main_vblank_irq);
INTERRUPT_GEN_MEMBER(digdug2_main_vblank_irq);
- INTERRUPT_GEN_MEMBER(todruaga_main_vblank_irq);
INTERRUPT_GEN_MEMBER(motos_main_vblank_irq);
INTERRUPT_GEN_MEMBER(sub_vblank_irq);
INTERRUPT_GEN_MEMBER(sub2_vblank_irq);
@@ -124,7 +123,6 @@ public:
TIMER_CALLBACK_MEMBER(phozon_io_run);
TIMER_CALLBACK_MEMBER(mappy_io_run);
TIMER_CALLBACK_MEMBER(digdug2_io_run);
- TIMER_CALLBACK_MEMBER(todruaga_io_run);
TIMER_CALLBACK_MEMBER(motos_io_run);
DECLARE_DRIVER_INIT(superpac);
DECLARE_DRIVER_INIT(pacnpal);
diff --git a/src/mame/includes/matmania.h b/src/mame/includes/matmania.h
index 405210b1c55..af41168bed5 100644
--- a/src/mame/includes/matmania.h
+++ b/src/mame/includes/matmania.h
@@ -45,8 +45,8 @@ public:
required_device<palette_device> m_palette;
/* video-related */
- bitmap_ind16 *m_tmpbitmap;
- bitmap_ind16 *m_tmpbitmap2;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap2;
/* maniach 68705 protection */
UINT8 m_port_a_in;
diff --git a/src/mame/includes/maygay1b.h b/src/mame/includes/maygay1b.h
index 53762b6e5de..b76f3192a33 100644
--- a/src/mame/includes/maygay1b.h
+++ b/src/mame/includes/maygay1b.h
@@ -52,7 +52,8 @@ public:
m_reel2(*this, "reel2"),
m_reel3(*this, "reel3"),
m_reel4(*this, "reel4"),
- m_reel5(*this, "reel5")
+ m_reel5(*this, "reel5"),
+ m_meters(*this, "meters")
{}
required_device<cpu_device> m_maincpu;
@@ -77,6 +78,7 @@ public:
required_device<stepper_device> m_reel3;
required_device<stepper_device> m_reel4;
required_device<stepper_device> m_reel5;
+ required_device<meters_device> m_meters;
UINT8 m_lamppos;
int m_lamp_strobe;
diff --git a/src/mame/includes/mbc55x.h b/src/mame/includes/mbc55x.h
index 31936d14d17..7069084d83e 100644
--- a/src/mame/includes/mbc55x.h
+++ b/src/mame/includes/mbc55x.h
@@ -138,8 +138,6 @@ public:
DECLARE_WRITE8_MEMBER(ppi8255_w);
//DECLARE_READ8_MEMBER(pit8253_r);
//DECLARE_WRITE8_MEMBER(pit8253_w);
- DECLARE_READ16_MEMBER(mbc55x_io_r);
- DECLARE_WRITE16_MEMBER(mbc55x_io_w);
DECLARE_READ8_MEMBER(mbc55x_ppi_porta_r);
DECLARE_READ8_MEMBER(mbc55x_ppi_portb_r);
DECLARE_READ8_MEMBER(mbc55x_ppi_portc_r);
diff --git a/src/mame/includes/mc1000.h b/src/mame/includes/mc1000.h
index 38e37de522a..32ba93e2fe0 100644
--- a/src/mame/includes/mc1000.h
+++ b/src/mame/includes/mc1000.h
@@ -79,8 +79,6 @@ public:
virtual void machine_start() override;
virtual void machine_reset() override;
- UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
DECLARE_READ8_MEMBER( printer_r );
DECLARE_WRITE8_MEMBER( printer_w );
DECLARE_WRITE8_MEMBER( mc6845_ctrl_w );
diff --git a/src/mame/includes/mcatadv.h b/src/mame/includes/mcatadv.h
index 77f9b7a74e4..9e382505896 100644
--- a/src/mame/includes/mcatadv.h
+++ b/src/mame/includes/mcatadv.h
@@ -23,9 +23,9 @@ public:
required_shared_ptr<UINT16> m_scroll1;
required_shared_ptr<UINT16> m_scroll2;
required_shared_ptr<UINT16> m_spriteram;
- UINT16 * m_spriteram_old;
+ std::unique_ptr<UINT16[]> m_spriteram_old;
required_shared_ptr<UINT16> m_vidregs;
- UINT16 * m_vidregs_old;
+ std::unique_ptr<UINT16[]> m_vidregs_old;
/* video-related */
tilemap_t *m_tilemap1;
@@ -40,7 +40,6 @@ public:
required_device<palette_device> m_palette;
DECLARE_WRITE16_MEMBER(mcat_soundlatch_w);
- DECLARE_WRITE16_MEMBER(mcat_coin_w);
DECLARE_READ16_MEMBER(mcat_wd_r);
DECLARE_WRITE8_MEMBER(mcatadv_sound_bw_w);
DECLARE_WRITE16_MEMBER(mcatadv_videoram1_w);
diff --git a/src/mame/includes/mcr3.h b/src/mame/includes/mcr3.h
index 9c0de2a329c..8f4bf006bc7 100644
--- a/src/mame/includes/mcr3.h
+++ b/src/mame/includes/mcr3.h
@@ -59,7 +59,6 @@ public:
DECLARE_DRIVER_INIT(spyhunt);
DECLARE_DRIVER_INIT(spyhuntpr);
DECLARE_DRIVER_INIT(sarge);
- TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(mcrmono_get_bg_tile_info);
TILEMAP_MAPPER_MEMBER(spyhunt_bg_scan);
TILE_GET_INFO_MEMBER(spyhunt_get_bg_tile_info);
diff --git a/src/mame/includes/mcr68.h b/src/mame/includes/mcr68.h
index 86485c7ed81..56f4f10a94e 100644
--- a/src/mame/includes/mcr68.h
+++ b/src/mame/includes/mcr68.h
@@ -126,4 +126,6 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
+ std::unique_ptr<UINT8[]> m_srcdata0;
+ std::unique_ptr<UINT8[]> m_srcdata2;
};
diff --git a/src/mame/includes/md_cons.h b/src/mame/includes/md_cons.h
index b2904a4134a..f7fc4e5054c 100644
--- a/src/mame/includes/md_cons.h
+++ b/src/mame/includes/md_cons.h
@@ -15,7 +15,8 @@ public:
: md_base_state(mconfig, type, tag),
m_32x(*this,"sega32x"),
m_segacd(*this,"segacd"),
- m_cart(*this, "mdslot")
+ m_cart(*this, "mdslot"),
+ m_tmss(*this, "tmss")
{ }
ioport_port *m_io_ctrlr;
@@ -25,6 +26,7 @@ public:
optional_device<sega_32x_device> m_32x;
optional_device<sega_segacd_device> m_segacd;
optional_device<md_cart_slot_device> m_cart;
+ optional_region_ptr<UINT16> m_tmss;
DECLARE_DRIVER_INIT(mess_md_common);
DECLARE_DRIVER_INIT(genesis);
@@ -46,4 +48,9 @@ public:
void _32x_scanline_callback(int x, UINT32 priority, UINT16 &lineptr);
void _32x_interrupt_callback(int scanline, int irq6);
void _32x_scanline_helper_callback(int scanline);
+
+ void install_cartslot();
+ void install_tmss();
+ DECLARE_READ16_MEMBER(tmss_r);
+ DECLARE_WRITE16_MEMBER(tmss_swap_w);
};
diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h
index b30205cb890..b2461c802c5 100644
--- a/src/mame/includes/megadriv.h
+++ b/src/mame/includes/megadriv.h
@@ -33,7 +33,7 @@ struct genesis_z80_vars
int z80_is_reset;
int z80_has_bus;
UINT32 z80_bank_addr;
- UINT8* z80_prgram;
+ std::unique_ptr<UINT8[]> z80_prgram;
};
@@ -56,6 +56,7 @@ public:
required_device<sn76496_base_device> m_snsnd;
optional_shared_ptr<UINT16> m_megadrive_ram;
+
ioport_port *m_io_reset;
ioport_port *m_io_pad_3b[4];
ioport_port *m_io_pad_6b[4];
diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h
index 150f473d1a5..414b670cc36 100644
--- a/src/mame/includes/megasys1.h
+++ b/src/mame/includes/megasys1.h
@@ -39,7 +39,9 @@ public:
m_io_dsw1(*this, "DSW1"),
m_io_dsw2(*this, "DSW2"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_screen(*this, "screen")
+ { }
required_shared_ptr<UINT16> m_vregs;
required_shared_ptr<UINT16> m_objectram;
@@ -58,6 +60,9 @@ public:
optional_ioport m_io_dsw2;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ required_device<screen_device> m_screen;
+
+ bitmap_ind16 m_sprite_buffer_bitmap;
UINT16 *m_spriteram;
UINT16 m_ip_select;
@@ -77,10 +82,10 @@ public:
tilemap_t *m_tmap[3];
tilemap_t *m_tilemap[3][2][4];
int m_hardware_type_z;
- UINT16 *m_buffer_objectram;
- UINT16 *m_buffer2_objectram;
- UINT16 *m_buffer_spriteram16;
- UINT16 *m_buffer2_spriteram16;
+ std::unique_ptr<UINT16[]> m_buffer_objectram;
+ std::unique_ptr<UINT16[]> m_buffer2_objectram;
+ std::unique_ptr<UINT16[]> m_buffer_spriteram16;
+ std::unique_ptr<UINT16[]> m_buffer2_spriteram16;
int m_layers_order[16];
int m_mcu_hs;
@@ -148,12 +153,15 @@ public:
void screen_eof_megasys1(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(megasys1D_irq);
TIMER_DEVICE_CALLBACK_MEMBER(megasys1A_scanline);
+ TIMER_DEVICE_CALLBACK_MEMBER(megasys1A_iganinju_scanline);
TIMER_DEVICE_CALLBACK_MEMBER(megasys1B_scanline);
DECLARE_WRITE16_MEMBER(ms1_ram_w);
inline void scrollram_w(offs_t offset, UINT16 data, UINT16 mem_mask, int which);
void create_tilemaps();
void megasys1_priority_create();
+ void mix_sprite_bitmap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void partial_clear_sprite_bitmap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 param);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
inline void draw_16x16_priority_sprite(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect, INT32 code, INT32 color, INT32 sx, INT32 sy, INT32 flipx, INT32 flipy, UINT8 mosaic, UINT8 mosaicsol, INT32 priority);
void rodland_gfx_unmangle(const char *region);
diff --git a/src/mame/includes/megazone.h b/src/mame/includes/megazone.h
index e133c62cf58..8621b5c90af 100644
--- a/src/mame/includes/megazone.h
+++ b/src/mame/includes/megazone.h
@@ -34,7 +34,7 @@ public:
required_shared_ptr<UINT8> m_spriteram;
/* video-related */
- bitmap_ind16 *m_tmpbitmap;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap;
int m_flipscreen;
/* misc */
diff --git a/src/mame/includes/metlclsh.h b/src/mame/includes/metlclsh.h
index 15e331d3b33..b8783156faa 100644
--- a/src/mame/includes/metlclsh.h
+++ b/src/mame/includes/metlclsh.h
@@ -25,7 +25,7 @@ public:
required_shared_ptr<UINT8> m_spriteram;
required_shared_ptr<UINT8> m_bgram;
required_shared_ptr<UINT8> m_scrollx;
- UINT8 * m_otherram;
+ std::unique_ptr<UINT8[]> m_otherram;
/* video-related */
tilemap_t *m_bg_tilemap;
diff --git a/src/mame/includes/metro.h b/src/mame/includes/metro.h
index 06301500280..e47da64dfaa 100644
--- a/src/mame/includes/metro.h
+++ b/src/mame/includes/metro.h
@@ -95,7 +95,7 @@ public:
int m_sprite_yoffs;
int m_sprite_xoffs_dx;
- UINT8 *m_expanded_gfx1;
+ std::unique_ptr<UINT8[]> m_expanded_gfx1;
/* irq_related */
int m_vblank_bit;
@@ -192,8 +192,6 @@ public:
INTERRUPT_GEN_MEMBER(metro_periodic_interrupt);
INTERRUPT_GEN_MEMBER(karatour_interrupt);
INTERRUPT_GEN_MEMBER(puzzlet_interrupt);
- TIMER_CALLBACK_MEMBER(karatour_irq_callback);
- TIMER_CALLBACK_MEMBER(mouja_irq_callback);
TIMER_CALLBACK_MEMBER(metro_blit_done);
void update_irq_state();
IRQ_CALLBACK_MEMBER(metro_irq_callback);
diff --git a/src/mame/includes/mexico86.h b/src/mame/includes/mexico86.h
index dd8d24cc33d..7083c202795 100644
--- a/src/mame/includes/mexico86.h
+++ b/src/mame/includes/mexico86.h
@@ -73,5 +73,4 @@ public:
INTERRUPT_GEN_MEMBER(kikikai_interrupt);
INTERRUPT_GEN_MEMBER(mexico86_m68705_interrupt);
void mcu_simulate( );
- void kiki_clogic(int address, int latch);
};
diff --git a/src/mame/includes/micro3d.h b/src/mame/includes/micro3d.h
index 369e4020771..e6295b78ae0 100644
--- a/src/mame/includes/micro3d.h
+++ b/src/mame/includes/micro3d.h
@@ -137,8 +137,8 @@ public:
INT32 m_y_mid;
int m_dpram_bank;
UINT32 m_draw_dpram[1024];
- UINT16 *m_frame_buffers[2];
- UINT16 *m_tmp_buffer;
+ std::unique_ptr<UINT16[]> m_frame_buffers[2];
+ std::unique_ptr<UINT16[]> m_tmp_buffer;
int m_drawing_buffer;
int m_display_buffer;
@@ -213,8 +213,8 @@ struct biquad
struct lp_filter
{
- float *history;
- float *coef;
+ std::unique_ptr<float[]> history;
+ std::unique_ptr<float[]> coef;
double fs;
biquad ProtoCoef[2];
};
diff --git a/src/mame/includes/microtan.h b/src/mame/includes/microtan.h
index 0f3f63090f2..c9e990ea472 100644
--- a/src/mame/includes/microtan.h
+++ b/src/mame/includes/microtan.h
@@ -42,7 +42,7 @@ public:
required_shared_ptr<UINT8> m_videoram;
UINT8 m_chunky_graphics;
- UINT8 *m_chunky_buffer;
+ std::unique_ptr<UINT8[]> m_chunky_buffer;
UINT8 m_keypad_column;
UINT8 m_keyboard_ascii;
emu_timer *m_timer;
diff --git a/src/mame/includes/midtunit.h b/src/mame/includes/midtunit.h
index 22669ff5bce..e64a7992611 100644
--- a/src/mame/includes/midtunit.h
+++ b/src/mame/includes/midtunit.h
@@ -41,7 +41,6 @@ public:
DECLARE_WRITE16_MEMBER(midtunit_cmos_enable_w);
DECLARE_WRITE16_MEMBER(midtunit_cmos_w);
DECLARE_READ16_MEMBER(midtunit_cmos_r);
- DECLARE_READ16_MEMBER(midtunit_input_r);
DECLARE_READ16_MEMBER(midtunit_sound_state_r);
DECLARE_READ16_MEMBER(midtunit_sound_r);
DECLARE_WRITE16_MEMBER(midtunit_sound_w);
@@ -56,7 +55,6 @@ public:
DECLARE_WRITE16_MEMBER(nbajam_prot_w);
DECLARE_WRITE16_MEMBER(jdredd_prot_w);
DECLARE_READ16_MEMBER(jdredd_prot_r);
- DECLARE_READ16_MEMBER(jdredd_hack_r);
DECLARE_READ16_MEMBER(midtunit_gfxrom_r);
DECLARE_READ16_MEMBER(midwunit_gfxrom_r);
DECLARE_WRITE16_MEMBER(midtunit_vram_w);
diff --git a/src/mame/includes/midvunit.h b/src/mame/includes/midvunit.h
index e0e6dad9073..196f4e64bb4 100644
--- a/src/mame/includes/midvunit.h
+++ b/src/mame/includes/midvunit.h
@@ -90,7 +90,7 @@ public:
UINT16 m_page_control;
UINT8 m_video_changed;
emu_timer *m_scanline_timer;
- midvunit_renderer *m_poly;
+ std::unique_ptr<midvunit_renderer> m_poly;
DECLARE_WRITE32_MEMBER(midvunit_dma_queue_w);
DECLARE_READ32_MEMBER(midvunit_dma_queue_entries_r);
DECLARE_READ32_MEMBER(midvunit_dma_trigger_r);
diff --git a/src/mame/includes/midyunit.h b/src/mame/includes/midyunit.h
index ea17134496b..b6b03c975bf 100644
--- a/src/mame/includes/midyunit.h
+++ b/src/mame/includes/midyunit.h
@@ -69,7 +69,7 @@ public:
DECLARE_IOPORT_ARRAY(ports);
- UINT16 *m_cmos_ram;
+ std::unique_ptr<UINT16[]> m_cmos_ram;
UINT32 m_cmos_page;
UINT16 m_prot_result;
UINT16 m_prot_sequence[3];
@@ -82,8 +82,8 @@ public:
UINT8 *m_cvsd_protection_base;
UINT8 m_autoerase_enable;
UINT32 m_palette_mask;
- pen_t * m_pen_map;
- UINT16 * m_local_videoram;
+ std::unique_ptr<pen_t[]> m_pen_map;
+ std::unique_ptr<UINT16[]> m_local_videoram;
UINT8 m_videobank_select;
UINT8 m_yawdim_dma;
UINT16 m_dma_register[16];
diff --git a/src/mame/includes/mikromik.h b/src/mame/includes/mikromik.h
index 27b9289b561..fd87077d48c 100644
--- a/src/mame/includes/mikromik.h
+++ b/src/mame/includes/mikromik.h
@@ -104,8 +104,6 @@ public:
DECLARE_READ_LINE_MEMBER( dsra_r );
void update_tc();
- void fdc_intrq_w(bool state);
- void fdc_drq_w(bool state);
int m_a8;
diff --git a/src/mame/includes/mitchell.h b/src/mame/includes/mitchell.h
index 9f27109fc78..b94aad312e0 100644
--- a/src/mame/includes/mitchell.h
+++ b/src/mame/includes/mitchell.h
@@ -76,7 +76,6 @@ public:
DECLARE_WRITE8_MEMBER(mahjong_input_select_w);
DECLARE_READ8_MEMBER(input_r);
DECLARE_WRITE8_MEMBER(input_w);
- DECLARE_WRITE8_MEMBER(spangbl_msm5205_data_w);
DECLARE_WRITE8_MEMBER(mstworld_sound_w);
DECLARE_WRITE8_MEMBER(pang_video_bank_w);
DECLARE_WRITE8_MEMBER(mstworld_video_bank_w);
diff --git a/src/mame/includes/model1.h b/src/mame/includes/model1.h
index dce16b83fe1..824766648e5 100644
--- a/src/mame/includes/model1.h
+++ b/src/mame/includes/model1.h
@@ -92,7 +92,7 @@ public:
UINT16 m_ram_adr;
UINT16 m_ram_latch[2];
UINT16 m_ram_scanadr;
- UINT32 *m_ram_data;
+ std::unique_ptr<UINT32[]> m_ram_data;
float m_tgp_vr_base[4];
int m_puuu;
int m_ccount;
@@ -111,11 +111,11 @@ public:
UINT16 m_listctl[2];
UINT16 *m_glist;
int m_render_done;
- UINT16 *m_tgp_ram;
+ std::unique_ptr<UINT16[]> m_tgp_ram;
optional_shared_ptr<UINT16> m_paletteram16;
required_device<palette_device> m_palette;
UINT32 *m_poly_rom;
- UINT32 *m_poly_ram;
+ std::unique_ptr<UINT32[]> m_poly_ram;
UINT16 m_lamp_state;
DECLARE_READ16_MEMBER(io_r);
DECLARE_WRITE16_MEMBER(io_w);
@@ -130,10 +130,6 @@ public:
DECLARE_WRITE16_MEMBER(mr2_w);
DECLARE_READ16_MEMBER(snd_68k_ready_r);
DECLARE_WRITE16_MEMBER(snd_latch_to_68k_w);
- DECLARE_READ16_MEMBER(m1_snd_68k_latch_r);
- DECLARE_READ16_MEMBER(m1_snd_v60_ready_r);
- DECLARE_WRITE16_MEMBER(m1_snd_68k_latch1_w);
- DECLARE_WRITE16_MEMBER(m1_snd_68k_latch2_w);
DECLARE_READ16_MEMBER(model1_tgp_copro_r);
DECLARE_WRITE16_MEMBER(model1_tgp_copro_w);
DECLARE_READ16_MEMBER(model1_tgp_copro_adr_r);
@@ -150,13 +146,10 @@ public:
DECLARE_WRITE32_MEMBER(copro_ram_w);
DECLARE_READ16_MEMBER(model1_listctl_r);
DECLARE_WRITE16_MEMBER(model1_listctl_w);
- DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk1_w);
- DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk2_w);
DECLARE_MACHINE_START(model1);
DECLARE_MACHINE_RESET(model1);
DECLARE_VIDEO_START(model1);
DECLARE_MACHINE_RESET(model1_vr);
- DECLARE_WRITE_LINE_MEMBER(m1_to_main_irq);
UINT32 screen_update_model1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void screen_eof_model1(screen_device &screen, bool state);
TIMER_DEVICE_CALLBACK_MEMBER(model1_interrupt);
diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h
index e71cf24f55f..1f4bbcaa6d5 100644
--- a/src/mame/includes/model2.h
+++ b/src/mame/includes/model2.h
@@ -46,7 +46,7 @@ public:
required_shared_ptr<UINT32> m_workram;
required_shared_ptr<UINT32> m_bufferram;
- UINT16 *m_palram;
+ std::unique_ptr<UINT16[]> m_palram;
required_shared_ptr<UINT32> m_colorxlat;
required_shared_ptr<UINT32> m_textureram0;
required_shared_ptr<UINT32> m_textureram1;
@@ -85,11 +85,11 @@ public:
int m_dsp_type;
int m_copro_fifoin_rpos;
int m_copro_fifoin_wpos;
- UINT32 *m_copro_fifoin_data;
+ std::unique_ptr<UINT32[]> m_copro_fifoin_data;
int m_copro_fifoin_num;
int m_copro_fifoout_rpos;
int m_copro_fifoout_wpos;
- UINT32 *m_copro_fifoout_data;
+ std::unique_ptr<UINT32[]> m_copro_fifoout_data;
int m_copro_fifoout_num;
UINT16 m_cmd_data;
UINT8 m_driveio_comm_data;
@@ -143,19 +143,13 @@ public:
DECLARE_WRITE32_MEMBER(copro_fifo_w);
DECLARE_WRITE32_MEMBER(copro_sharc_iop_w);
DECLARE_WRITE32_MEMBER(geo_ctl1_w);
- DECLARE_WRITE32_MEMBER(geo_sharc_ctl1_w);
- DECLARE_READ32_MEMBER(geo_sharc_fifo_r);
- DECLARE_WRITE32_MEMBER(geo_sharc_fifo_w);
- DECLARE_WRITE32_MEMBER(geo_sharc_iop_w);
DECLARE_READ32_MEMBER(geo_prg_r);
DECLARE_WRITE32_MEMBER(geo_prg_w);
DECLARE_READ32_MEMBER(geo_r);
DECLARE_WRITE32_MEMBER(geo_w);
DECLARE_READ32_MEMBER(hotd_lightgun_r);
DECLARE_WRITE32_MEMBER(hotd_lightgun_w);
- DECLARE_READ32_MEMBER(sonic_unk_r);
DECLARE_READ32_MEMBER(daytona_unk_r);
- DECLARE_READ32_MEMBER(desert_unk_r);
DECLARE_READ32_MEMBER(model2_irq_r);
DECLARE_WRITE32_MEMBER(model2_irq_w);
DECLARE_READ32_MEMBER(model2_serial_r);
@@ -168,16 +162,11 @@ public:
DECLARE_READ32_MEMBER(maxx_r);
DECLARE_READ32_MEMBER(network_r);
DECLARE_WRITE32_MEMBER(network_w);
- DECLARE_WRITE32_MEMBER(copro_w);
DECLARE_WRITE32_MEMBER(mode_w);
DECLARE_WRITE32_MEMBER(model2o_tex_w0);
DECLARE_WRITE32_MEMBER(model2o_tex_w1);
DECLARE_WRITE32_MEMBER(model2o_luma_w);
DECLARE_WRITE32_MEMBER(model2_3d_zclip_w);
- DECLARE_READ16_MEMBER(m1_snd_68k_latch_r);
- DECLARE_READ16_MEMBER(m1_snd_v60_ready_r);
- DECLARE_WRITE16_MEMBER(m1_snd_68k_latch1_w);
- DECLARE_WRITE16_MEMBER(m1_snd_68k_latch2_w);
DECLARE_WRITE16_MEMBER(model2snd_ctrl);
DECLARE_READ32_MEMBER(copro_sharc_input_fifo_r);
DECLARE_WRITE32_MEMBER(copro_sharc_output_fifo_w);
@@ -195,8 +184,6 @@ public:
DECLARE_READ32_MEMBER(jaleco_network_r);
DECLARE_WRITE32_MEMBER(jaleco_network_w);
void push_geo_data(UINT32 data);
- DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk1_w);
- DECLARE_WRITE16_MEMBER(m1_snd_mpcm_bnk2_w);
DECLARE_DRIVER_INIT(overrev);
DECLARE_DRIVER_INIT(pltkids);
DECLARE_DRIVER_INIT(rchase2);
diff --git a/src/mame/includes/model3.h b/src/mame/includes/model3.h
index 2ec1966e650..1c66bf531c9 100644
--- a/src/mame/includes/model3.h
+++ b/src/mame/includes/model3.h
@@ -123,9 +123,9 @@ public:
int m_lightgun_reg_sel;
int m_adc_channel;
UINT64 m_real3d_status;
- UINT64 *m_network_ram;
+ std::unique_ptr<UINT64[]> m_network_ram;
int m_prot_data_ptr;
- UINT32 *m_vrom;
+ std::unique_ptr<UINT32[]> m_vrom;
int m_step;
int m_m3_step;
INT32 m_tap_state;
@@ -140,14 +140,14 @@ public:
UINT32 m_layer_modulate1;
UINT32 m_layer_modulate2;
UINT64 m_layer_scroll[2];
- UINT64 *m_m3_char_ram;
- UINT64 *m_m3_tile_ram;
- UINT32 *m_texture_fifo;
+ std::unique_ptr<UINT64[]> m_m3_char_ram;
+ std::unique_ptr<UINT64[]> m_m3_tile_ram;
+ std::unique_ptr<UINT32[]> m_texture_fifo;
int m_texture_fifo_pos;
- UINT16 *m_texture_ram[2];
- UINT32 *m_display_list_ram;
- UINT32 *m_culling_ram;
- UINT32 *m_polygon_ram;
+ std::unique_ptr<UINT16[]> m_texture_ram[2];
+ std::unique_ptr<UINT32[]> m_display_list_ram;
+ std::unique_ptr<UINT32[]> m_culling_ram;
+ std::unique_ptr<UINT32[]> m_polygon_ram;
int m_real3d_display_list;
rectangle m_clip3d;
rectangle *m_screen_clip;
@@ -287,9 +287,7 @@ public:
TILE_GET_INFO_MEMBER(tile_info_layer3_8bit);
void reset_triangle_buffers();
m3_triangle* push_triangle(bool alpha);
- void draw_layers(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void draw_layer(bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int sx, int sy, int prio);
- void draw_3d_layer(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void invalidate_texture(int page, int texx, int texy, int texwidth, int texheight);
cached_texture *get_texture(int page, int texx, int texy, int texwidth, int texheight, int format);
inline void write_texture16(int xpos, int ypos, int width, int height, int page, UINT16 *data);
diff --git a/src/mame/includes/moo.h b/src/mame/includes/moo.h
index 4ffd6548528..28cb1e9ffef 100644
--- a/src/mame/includes/moo.h
+++ b/src/mame/includes/moo.h
@@ -70,8 +70,6 @@ public:
DECLARE_WRITE16_MEMBER(sound_irq_w);
DECLARE_READ16_MEMBER(sound_status_r);
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
- DECLARE_READ16_MEMBER(K053247_scattered_word_r);
- DECLARE_WRITE16_MEMBER(K053247_scattered_word_w);
DECLARE_WRITE16_MEMBER(moo_prot_w);
DECLARE_WRITE16_MEMBER(moobl_oki_bank_w);
DECLARE_MACHINE_START(moo);
diff --git a/src/mame/includes/mpu4.h b/src/mame/includes/mpu4.h
index 18609f898df..3a79b1c0ce0 100644
--- a/src/mame/includes/mpu4.h
+++ b/src/mame/includes/mpu4.h
@@ -123,7 +123,8 @@ public:
m_reel5(*this, "reel5"),
m_reel6(*this, "reel6"),
m_reel7(*this, "reel7"),
- m_palette(*this, "palette")
+ m_palette(*this, "palette"),
+ m_meters(*this, "meters")
{}
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -237,7 +238,6 @@ protected:
void mpu4_install_mod4oki_space(address_space &space);
void mpu4_install_mod4bwb_space(address_space &space);
void mpu4_config_common();
- void mpu4_config_common_reels(int reels);
required_device<cpu_device> m_maincpu;
optional_device<roc10937_t> m_vfd;
@@ -266,6 +266,8 @@ protected:
optional_device<stepper_device> m_reel5;
optional_device<stepper_device> m_reel6;
optional_device<stepper_device> m_reel7;
+ optional_device<palette_device> m_palette;
+ required_device<meters_device> m_meters;
enum
{
@@ -330,7 +332,6 @@ protected:
UINT8 m_numbanks;
mpu4_chr_table* m_current_chr_table;
const bwb_chr_table* m_bwb_chr_table1;
- optional_device<palette_device> m_palette;
};
MACHINE_CONFIG_EXTERN( mpu4_common );
diff --git a/src/mame/includes/mpz80.h b/src/mame/includes/mpz80.h
index 372d6c293f9..5477c9c156c 100644
--- a/src/mame/includes/mpz80.h
+++ b/src/mame/includes/mpz80.h
@@ -65,7 +65,6 @@ public:
DECLARE_WRITE8_MEMBER( disp_col_w );
DECLARE_WRITE8_MEMBER( task_w );
DECLARE_WRITE8_MEMBER( mask_w );
- DECLARE_WRITE8_MEMBER( terminal_w );
DECLARE_WRITE_LINE_MEMBER( s100_pint_w );
DECLARE_WRITE_LINE_MEMBER( s100_nmi_w );
DECLARE_DIRECT_UPDATE_MEMBER(mpz80_direct_update_handler);
diff --git a/src/mame/includes/ms32.h b/src/mame/includes/ms32.h
index c5d4c9b991a..87fe602a7de 100644
--- a/src/mame/includes/ms32.h
+++ b/src/mame/includes/ms32.h
@@ -37,7 +37,7 @@ public:
optional_shared_ptr<UINT16> m_txram;
optional_shared_ptr<UINT16> m_bgram;
optional_shared_ptr<UINT16> m_f1superb_extraram;
- UINT8 *m_nvram_8;
+ std::unique_ptr<UINT8[]> m_nvram_8;
UINT32 m_to_main;
UINT16 m_irqreq;
tilemap_t *m_tx_tilemap;
diff --git a/src/mame/includes/msisaac.h b/src/mame/includes/msisaac.h
index 1af07c26c03..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"
@@ -62,8 +62,6 @@ public:
DECLARE_WRITE8_MEMBER(sound_command_w);
DECLARE_WRITE8_MEMBER(nmi_disable_w);
DECLARE_WRITE8_MEMBER(nmi_enable_w);
- DECLARE_WRITE8_MEMBER(flip_screen_w);
- DECLARE_WRITE8_MEMBER(msisaac_coin_counter_w);
DECLARE_WRITE8_MEMBER(ms_unknown_w);
DECLARE_READ8_MEMBER(msisaac_mcu_r);
DECLARE_READ8_MEMBER(msisaac_mcu_status_r);
@@ -75,7 +73,6 @@ public:
DECLARE_WRITE8_MEMBER(msisaac_bg2_scrollx_w);
DECLARE_WRITE8_MEMBER(msisaac_bg_scrolly_w);
DECLARE_WRITE8_MEMBER(msisaac_bg_scrollx_w);
- DECLARE_WRITE8_MEMBER(msisaac_textbank1_w);
DECLARE_WRITE8_MEMBER(msisaac_bg2_textbank_w);
DECLARE_WRITE8_MEMBER(msisaac_bg_videoram_w);
DECLARE_WRITE8_MEMBER(msisaac_bg2_videoram_w);
diff --git a/src/mame/includes/mugsmash.h b/src/mame/includes/mugsmash.h
index 20961c2ba2d..e670686d9c4 100644
--- a/src/mame/includes/mugsmash.h
+++ b/src/mame/includes/mugsmash.h
@@ -31,7 +31,6 @@ public:
required_device<palette_device> m_palette;
DECLARE_WRITE16_MEMBER(mugsmash_reg2_w);
- DECLARE_READ16_MEMBER(mugsmash_input_ports_r);
DECLARE_WRITE16_MEMBER(mugsmash_videoram1_w);
DECLARE_WRITE16_MEMBER(mugsmash_videoram2_w);
DECLARE_WRITE16_MEMBER(mugsmash_reg_w);
diff --git a/src/mame/includes/munchmo.h b/src/mame/includes/munchmo.h
index c3681a03e8b..6606f5591ab 100644
--- a/src/mame/includes/munchmo.h
+++ b/src/mame/includes/munchmo.h
@@ -31,7 +31,7 @@ public:
required_shared_ptr<UINT8> m_vreg;
/* video-related */
- bitmap_ind16 *m_tmpbitmap;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap;
int m_palette_bank;
int m_flipscreen;
diff --git a/src/mame/includes/mw8080bw.h b/src/mame/includes/mw8080bw.h
index a91a8cbe685..1641d3a1086 100644
--- a/src/mame/includes/mw8080bw.h
+++ b/src/mame/includes/mw8080bw.h
@@ -196,11 +196,7 @@ public:
void mw8080bw_create_interrupt_timer( );
void mw8080bw_start_interrupt_timer( );
UINT8 tornbase_get_cabinet_type();
- UINT8 spcenctr_get_trench_width();
- UINT8 spcenctr_get_trench_center();
- UINT8 spcenctr_get_trench_slope(UINT8 addr );
int invaders_is_cabinet_cocktail();
- UINT32 invad2ct_coin_input_r(void *param);
};
diff --git a/src/mame/includes/mystwarr.h b/src/mame/includes/mystwarr.h
index 21f3f846c66..0ea09731627 100644
--- a/src/mame/includes/mystwarr.h
+++ b/src/mame/includes/mystwarr.h
@@ -25,6 +25,7 @@ public:
required_device<k055673_device> m_k055673;
required_shared_ptr<UINT16> m_gx_workram;
optional_shared_ptr<UINT16> m_spriteram;
+ std::unique_ptr<UINT8[]> m_decoded;
UINT8 m_mw_irq_control;
int m_cur_sound_region;
diff --git a/src/mame/includes/mz700.h b/src/mame/includes/mz700.h
index a2644f1c0a9..552dd9a20c0 100644
--- a/src/mame/includes/mz700.h
+++ b/src/mame/includes/mz700.h
@@ -91,7 +91,7 @@ private:
int m_mz700_ram_vram; /* 1 if vram is banked in */
/* mz800 specific */
- UINT8 *m_cgram;
+ std::unique_ptr<UINT8[]> m_cgram;
UINT8 *m_p_chargen;
int m_mz700_mode; /* 1 if in mz700 mode */
@@ -105,7 +105,7 @@ private:
int m_centronics_perror;
UINT8 *m_colorram;
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
UINT8 m_speaker_level;
UINT8 m_prev_state;
UINT16 m_mz800_ramaddr;
diff --git a/src/mame/includes/n64.h b/src/mame/includes/n64.h
index 88347b7fd73..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);
@@ -228,7 +255,6 @@ private:
UINT32 dd_track_offset;
// Peripheral Interface (PI) registers and functions
- void pi_dma();
emu_timer *pi_dma_timer;
UINT32 pi_dram_addr;
UINT32 pi_cart_addr;
@@ -371,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/namcofl.h b/src/mame/includes/namcofl.h
index 212fe4169c5..eeb702ae58e 100644
--- a/src/mame/includes/namcofl.h
+++ b/src/mame/includes/namcofl.h
@@ -32,7 +32,7 @@ public:
required_device<cpu_device> m_mcu;
required_device<namco_c116_device> m_c116;
emu_timer *m_raster_interrupt_timer;
- UINT32 *m_workram;
+ std::unique_ptr<UINT32[]> m_workram;
required_shared_ptr<UINT16> m_shareram;
UINT8 m_mcu_port6;
UINT32 m_sprbank;
diff --git a/src/mame/includes/namcos2.h b/src/mame/includes/namcos2.h
index d19968a225c..b26aff34a91 100644
--- a/src/mame/includes/namcos2.h
+++ b/src/mame/includes/namcos2.h
@@ -129,7 +129,7 @@ public:
int m_mcu_analog_ctrl;
int m_mcu_analog_data;
int m_mcu_analog_complete;
- UINT8 *m_eeprom;
+ std::unique_ptr<UINT8[]> m_eeprom;
UINT16 m_68k_master_C148[0x20];
UINT16 m_68k_slave_C148[0x20];
UINT16 m_68k_gpu_C148[0x20];
@@ -363,6 +363,11 @@ public:
DECLARE_READ16_MEMBER( namcos2_68k_key_r );
DECLARE_WRITE16_MEMBER( namcos2_68k_key_w );
DECLARE_READ16_MEMBER( namcos2_finallap_prot_r );
+ void GollyGhostUpdateLED_c4( int data );
+ void GollyGhostUpdateLED_c6( int data );
+ void GollyGhostUpdateLED_c8( int data );
+ void GollyGhostUpdateLED_ca( int data );
+ void GollyGhostUpdateDiorama_c0( int data );
};
diff --git a/src/mame/includes/namcos21.h b/src/mame/includes/namcos21.h
index f34916def5b..e35265aa830 100644
--- a/src/mame/includes/namcos21.h
+++ b/src/mame/includes/namcos21.h
@@ -67,28 +67,28 @@ public:
optional_device<cpu_device> m_dsp;
- UINT8 *m_videoram;
- UINT16 *m_winrun_dspcomram;
+ std::unique_ptr<UINT8[]> m_videoram;
+ std::unique_ptr<UINT16[]> m_winrun_dspcomram;
UINT16 m_winrun_poly_buf[WINRUN_MAX_POLY_PARAM];
int m_winrun_poly_index;
UINT32 m_winrun_pointrom_addr;
int m_winrun_dsp_alive;
UINT16 m_winrun_dspcomram_control[8];
UINT16 m_video_enable;
- UINT8 *m_pointram;
+ std::unique_ptr<UINT8[]> m_pointram;
int m_pointram_idx;
UINT16 m_pointram_control;
- dsp_state *m_mpDspState;
+ std::unique_ptr<dsp_state> m_mpDspState;
int m_mbNeedsKickstart;
UINT32 m_pointrom_idx;
UINT8 m_mPointRomMSB;
int m_mbPointRomDataAvailable;
int m_irq_enable;
UINT8 m_depthcue[2][0x400];
- UINT16 *m_mpPolyFrameBufferPens;
- UINT16 *m_mpPolyFrameBufferZ;
- UINT16 *m_mpPolyFrameBufferPens2;
- UINT16 *m_mpPolyFrameBufferZ2;
+ std::unique_ptr<UINT16[]> m_mpPolyFrameBufferPens;
+ std::unique_ptr<UINT16[]> m_mpPolyFrameBufferZ;
+ std::unique_ptr<UINT16[]> m_mpPolyFrameBufferPens2;
+ std::unique_ptr<UINT16[]> m_mpPolyFrameBufferZ2;
UINT16 m_winrun_color;
UINT16 m_winrun_gpu_register[0x10/2];
DECLARE_READ16_MEMBER(namcos21_video_enable_r);
diff --git a/src/mame/includes/namcos22.h b/src/mame/includes/namcos22.h
index 9d1ea7b7f7b..28a01852fbf 100644
--- a/src/mame/includes/namcos22.h
+++ b/src/mame/includes/namcos22.h
@@ -127,9 +127,6 @@ class namcos22_renderer : public poly_manager<float, namcos22_object_data, 4, 80
public:
namcos22_renderer(namcos22_state &state);
- // static configuration
- static void static_set_gfxdecode_tag(device_t &device, const char *tag);
-
void render_scene(screen_device &screen, bitmap_rgb32 &bitmap);
struct namcos22_scenenode *new_scenenode(running_machine &machine, UINT32 zsort, namcos22_scenenode_type type);
@@ -238,7 +235,7 @@ public:
bool m_dsp_irq_enabled;
emu_timer *m_ar_tb_interrupt[2];
UINT16 m_dsp_master_bioz;
- UINT32 *m_pointram;
+ std::unique_ptr<UINT32[]> m_pointram;
UINT32 m_old_coin_state;
UINT32 m_credits1;
UINT32 m_credits2;
@@ -264,16 +261,16 @@ public:
int m_spot_enable;
int m_spot_read_address;
int m_spot_write_address;
- UINT16 *m_spotram;
- UINT16 *m_banked_czram[4];
- UINT8 *m_recalc_czram[4];
+ std::unique_ptr<UINT16[]> m_spotram;
+ std::unique_ptr<UINT16[]> m_banked_czram[4];
+ std::unique_ptr<UINT8[]> m_recalc_czram[4];
UINT32 m_cz_was_written[4];
int m_cz_adjust;
namcos22_renderer *m_poly;
UINT16 *m_texture_tilemap;
- UINT8 *m_texture_tileattr;
+ std::unique_ptr<UINT8[]> m_texture_tileattr;
UINT8 *m_texture_tiledata;
- UINT8 *m_texture_ayx_to_pixel;
+ std::unique_ptr<UINT8[]> m_texture_ayx_to_pixel;
UINT16 m_dspram_bank;
UINT16 m_dspram16_latch;
bool m_slave_simulation_active;
@@ -287,8 +284,8 @@ public:
unsigned m_LitSurfaceIndex;
int m_pointrom_size;
INT32 *m_pointrom;
- UINT8 *m_dirtypal;
- bitmap_ind16 *m_mix_bitmap;
+ std::unique_ptr<UINT8[]> m_dirtypal;
+ std::unique_ptr<bitmap_ind16> m_mix_bitmap;
tilemap_t *m_bgtilemap;
int m_mixer_flags;
@@ -375,7 +372,6 @@ public:
DECLARE_READ16_MEMBER(dsp_slave_portb_r);
DECLARE_WRITE16_MEMBER(dsp_slave_portb_w);
DECLARE_READ32_MEMBER(namcos22_sci_r);
- DECLARE_WRITE32_MEMBER(namcos22_sci_w);
DECLARE_READ8_MEMBER(namcos22_system_controller_r);
DECLARE_WRITE8_MEMBER(namcos22s_system_controller_w);
DECLARE_WRITE8_MEMBER(namcos22_system_controller_w);
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/nbmj8688.h b/src/mame/includes/nbmj8688.h
index 911d6c7e86f..c08991c7f7c 100644
--- a/src/mame/includes/nbmj8688.h
+++ b/src/mame/includes/nbmj8688.h
@@ -41,9 +41,9 @@ public:
int m_gfxflag3;
int m_flipscreen;
int m_screen_refresh;
- bitmap_ind16 *m_tmpbitmap;
- UINT16 *m_videoram;
- UINT8 *m_clut;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap;
+ std::unique_ptr<UINT16[]> m_videoram;
+ std::unique_ptr<UINT8[]> m_clut;
int m_flipscreen_old;
emu_timer *m_blitter_timer;
diff --git a/src/mame/includes/nbmj8891.h b/src/mame/includes/nbmj8891.h
index cbcbafd3364..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;
@@ -39,10 +43,10 @@ public:
int m_gfxdraw_mode;
bitmap_ind16 m_tmpbitmap0;
bitmap_ind16 m_tmpbitmap1;
- UINT8 *m_videoram0;
- UINT8 *m_videoram1;
- UINT8 *m_palette_ptr;
- UINT8 *m_clut;
+ std::unique_ptr<UINT8[]> m_videoram0;
+ std::unique_ptr<UINT8[]> m_videoram1;
+ std::unique_ptr<UINT8[]> m_palette_ptr;
+ std::unique_ptr<UINT8[]> m_clut;
int m_param_old[0x10];
int m_param_cnt;
int m_flipscreen_old;
diff --git a/src/mame/includes/nbmj8900.h b/src/mame/includes/nbmj8900.h
index 6cf9e74a530..2a51f2ae112 100644
--- a/src/mame/includes/nbmj8900.h
+++ b/src/mame/includes/nbmj8900.h
@@ -41,19 +41,15 @@ public:
int m_screen_width;
bitmap_ind16 m_tmpbitmap0;
bitmap_ind16 m_tmpbitmap1;
- UINT8 *m_videoram0;
- UINT8 *m_videoram1;
- UINT8 *m_palette_ptr;
- UINT8 *m_clut;
+ std::unique_ptr<UINT8[]> m_videoram0;
+ std::unique_ptr<UINT8[]> m_videoram1;
+ std::unique_ptr<UINT8[]> m_palette_ptr;
+ std::unique_ptr<UINT8[]> m_clut;
int m_flipscreen_old;
emu_timer *m_blitter_timer;
DECLARE_READ8_MEMBER(palette_type1_r);
DECLARE_WRITE8_MEMBER(palette_type1_w);
- DECLARE_READ8_MEMBER(palette_type2_r);
- DECLARE_WRITE8_MEMBER(palette_type2_w);
- DECLARE_READ8_MEMBER(palette_type3_r);
- DECLARE_WRITE8_MEMBER(palette_type3_w);
DECLARE_WRITE8_MEMBER(clutsel_w);
DECLARE_READ8_MEMBER(clut_r);
DECLARE_WRITE8_MEMBER(clut_w);
diff --git a/src/mame/includes/nbmj8991.h b/src/mame/includes/nbmj8991.h
index 0581dedc41f..74920f3555f 100644
--- a/src/mame/includes/nbmj8991.h
+++ b/src/mame/includes/nbmj8991.h
@@ -42,8 +42,8 @@ public:
int m_clutsel;
int m_screen_refresh;
bitmap_ind16 m_tmpbitmap;
- UINT8 *m_videoram;
- UINT8 *m_clut;
+ std::unique_ptr<UINT8[]> m_videoram;
+ std::unique_ptr<UINT8[]> m_clut;
int m_flipscreen_old;
emu_timer *m_blitter_timer;
diff --git a/src/mame/includes/nbmj9195.h b/src/mame/includes/nbmj9195.h
index 6566790f353..ec36eb8f168 100644
--- a/src/mame/includes/nbmj9195.h
+++ b/src/mame/includes/nbmj9195.h
@@ -67,9 +67,9 @@ public:
int m_nb19010_busyctr;
int m_nb19010_busyflag;
bitmap_ind16 m_tmpbitmap[VRAM_MAX];
- UINT16 *m_videoram[VRAM_MAX];
- UINT16 *m_videoworkram[VRAM_MAX];
- UINT8 *m_clut[VRAM_MAX];
+ std::unique_ptr<UINT16[]> m_videoram[VRAM_MAX];
+ std::unique_ptr<UINT16[]> m_videoworkram[VRAM_MAX];
+ std::unique_ptr<UINT8[]> m_clut[VRAM_MAX];
int m_flipscreen_old[VRAM_MAX];
emu_timer *m_blitter_timer;
diff --git a/src/mame/includes/nc.h b/src/mame/includes/nc.h
index d507191a022..76652a70c61 100644
--- a/src/mame/includes/nc.h
+++ b/src/mame/includes/nc.h
@@ -66,7 +66,6 @@ public:
DECLARE_WRITE8_MEMBER(nc100_poweroff_control_w);
DECLARE_READ8_MEMBER(nc100_card_battery_status_r);
DECLARE_WRITE8_MEMBER(nc100_memory_card_wait_state_w);
- DECLARE_WRITE8_MEMBER(nc200_display_memory_start_w);
DECLARE_READ8_MEMBER(nc200_card_battery_status_r);
DECLARE_READ8_MEMBER(nc200_printer_status_r);
DECLARE_WRITE8_MEMBER(nc200_uart_control_w);
@@ -78,7 +77,6 @@ public:
DECLARE_MACHINE_RESET(nc200);
UINT32 screen_update_nc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(nc_keyboard_timer_callback);
- TIMER_CALLBACK_MEMBER(nc_serial_timer_callback);
TIMER_DEVICE_CALLBACK_MEMBER(dummy_timer_callback);
DECLARE_WRITE_LINE_MEMBER(nc100_tc8521_alarm_callback);
DECLARE_WRITE_LINE_MEMBER(nc100_txrdy_callback);
@@ -109,9 +107,7 @@ private:
void nc_refresh_memory_config();
void nc_common_init_machine();
void nc_sound_update(int channel);
- void nc150_init_machine();
void nc200_refresh_uart_interrupt();
- void nc200_floppy_drive_index_callback(int drive_id);
public: // HACK FOR MC6845
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h
index ccbd9354d15..da50cb62765 100644
--- a/src/mame/includes/neogeo.h
+++ b/src/mame/includes/neogeo.h
@@ -64,7 +64,6 @@ public:
DECLARE_WRITE16_MEMBER(memcard_w);
DECLARE_WRITE8_MEMBER(audio_command_w);
DECLARE_READ8_MEMBER(audio_command_r);
- DECLARE_WRITE16_MEMBER(main_cpu_bank_select_w);
DECLARE_READ8_MEMBER(audio_cpu_bank_select_r);
DECLARE_WRITE8_MEMBER(audio_cpu_enable_nmi_w);
DECLARE_WRITE8_MEMBER(system_control_w);
diff --git a/src/mame/includes/nes.h b/src/mame/includes/nes.h
index 90c3db04aba..b3ba8450829 100644
--- a/src/mame/includes/nes.h
+++ b/src/mame/includes/nes.h
@@ -70,7 +70,7 @@ public:
ioport_port *m_io_disksel;
UINT8 *m_vram;
- UINT8 *m_ciram; //PPU nametable RAM - external to PPU!
+ std::unique_ptr<UINT8[]> m_ciram; //PPU nametable RAM - external to PPU!
required_device<cpu_device> m_maincpu;
required_device<ppu2c0x_device> m_ppu;
diff --git a/src/mame/includes/next.h b/src/mame/includes/next.h
index 6537c830000..09e221be65f 100644
--- a/src/mame/includes/next.h
+++ b/src/mame/includes/next.h
@@ -58,15 +58,12 @@ public:
DECLARE_READ32_MEMBER( irq_status_r );
DECLARE_READ32_MEMBER( irq_mask_r );
DECLARE_WRITE32_MEMBER( irq_mask_w );
- DECLARE_READ32_MEMBER( modisk_r );
- DECLARE_READ32_MEMBER( network_r );
DECLARE_READ32_MEMBER( event_counter_r );
DECLARE_READ32_MEMBER( dsp_r );
DECLARE_READ32_MEMBER( fdc_control_r );
DECLARE_WRITE32_MEMBER( fdc_control_w );
DECLARE_READ32_MEMBER( dma_ctrl_r );
DECLARE_WRITE32_MEMBER( dma_ctrl_w );
- DECLARE_WRITE32_MEMBER( dma_040_ctrl_w );
DECLARE_READ32_MEMBER( dma_regs_r );
DECLARE_WRITE32_MEMBER( dma_regs_w );
DECLARE_READ32_MEMBER( scsictrl_r );
@@ -172,7 +169,6 @@ protected:
void dma_write(int slot, UINT8 val, bool eof, bool &err);
void dma_check_update(int slot);
void dma_check_end(int slot, bool eof);
- void dma_done(int slot);
void dma_end(int slot);
public:
diff --git a/src/mame/includes/ninjakd2.h b/src/mame/includes/ninjakd2.h
index 2ef48488ab5..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;
@@ -54,9 +56,9 @@ public:
UINT8 m_robokid_bg0_bank;
UINT8 m_robokid_bg1_bank;
UINT8 m_robokid_bg2_bank;
- UINT8* m_robokid_bg0_videoram;
- UINT8* m_robokid_bg1_videoram;
- UINT8* m_robokid_bg2_videoram;
+ std::unique_ptr<UINT8[]> m_robokid_bg0_videoram;
+ std::unique_ptr<UINT8[]> m_robokid_bg1_videoram;
+ std::unique_ptr<UINT8[]> m_robokid_bg2_videoram;
UINT8 m_rom_bank_mask;
void omegaf_io_protection_start();
diff --git a/src/mame/includes/niyanpai.h b/src/mame/includes/niyanpai.h
index 6a3dce28bd3..2115240a0da 100644
--- a/src/mame/includes/niyanpai.h
+++ b/src/mame/includes/niyanpai.h
@@ -47,10 +47,10 @@ public:
int m_nb19010_busyctr;
int m_nb19010_busyflag;
bitmap_ind16 m_tmpbitmap[VRAM_MAX];
- UINT16 *m_videoram[VRAM_MAX];
- UINT16 *m_videoworkram[VRAM_MAX];
- UINT16 *m_palette_ptr;
- UINT8 *m_clut[VRAM_MAX];
+ std::unique_ptr<UINT16[]> m_videoram[VRAM_MAX];
+ std::unique_ptr<UINT16[]> m_videoworkram[VRAM_MAX];
+ std::unique_ptr<UINT16[]> m_palette_ptr;
+ std::unique_ptr<UINT8[]> m_clut[VRAM_MAX];
int m_flipscreen_old[VRAM_MAX];
emu_timer *m_blitter_timer;
diff --git a/src/mame/includes/nmk16.h b/src/mame/includes/nmk16.h
index ab9671f6265..269db67fc82 100644
--- a/src/mame/includes/nmk16.h
+++ b/src/mame/includes/nmk16.h
@@ -55,8 +55,8 @@ public:
int mask[4*2];
int m_simple_scroll;
int m_redraw_bitmap;
- UINT16 *m_spriteram_old;
- UINT16 *m_spriteram_old2;
+ std::unique_ptr<UINT16[]> m_spriteram_old;
+ std::unique_ptr<UINT16[]> m_spriteram_old2;
int m_bgbank;
int m_videoshift;
int m_bioship_background_bank;
@@ -67,7 +67,7 @@ public:
tilemap_t *m_bg_tilemap3;
tilemap_t *m_tx_tilemap;
tilemap_t *m_fg_tilemap;
- bitmap_ind16 *m_background_bitmap;
+ std::unique_ptr<bitmap_ind16> m_background_bitmap;
int m_mustang_bg_xscroll;
UINT8 m_scroll[4];
UINT8 m_scroll_2[4];
@@ -88,19 +88,14 @@ public:
DECLARE_WRITE8_MEMBER(tharrier_oki6295_bankswitch_0_w);
DECLARE_WRITE8_MEMBER(tharrier_oki6295_bankswitch_1_w);
DECLARE_WRITE16_MEMBER(afega_soundlatch_w);
- DECLARE_READ16_MEMBER(mcu_shared_r);
DECLARE_WRITE16_MEMBER(hachamf_mainram_w);
DECLARE_WRITE16_MEMBER(tdragon_mainram_w);
- DECLARE_WRITE8_MEMBER(okibank_w);
DECLARE_WRITE8_MEMBER(raphero_sound_rombank_w);
DECLARE_READ16_MEMBER(vandykeb_r);
DECLARE_READ16_MEMBER(tdragonb_prot_r);
DECLARE_READ16_MEMBER(afega_unknown_r);
DECLARE_WRITE16_MEMBER(afega_scroll0_w);
DECLARE_WRITE16_MEMBER(afega_scroll1_w);
- DECLARE_WRITE16_MEMBER(twinactn_scroll0_w);
- DECLARE_WRITE16_MEMBER(twinactn_scroll1_w);
- DECLARE_WRITE16_MEMBER(twinactn_flipscreen_w);
DECLARE_WRITE16_MEMBER(nmk_bgvideoram0_w);
DECLARE_WRITE16_MEMBER(nmk_bgvideoram1_w);
DECLARE_WRITE16_MEMBER(nmk_bgvideoram2_w);
diff --git a/src/mame/includes/norautp.h b/src/mame/includes/norautp.h
index 94e8db65215..0053087ec91 100644
--- a/src/mame/includes/norautp.h
+++ b/src/mame/includes/norautp.h
@@ -18,7 +18,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
- UINT16 *m_np_vram;
+ std::unique_ptr<UINT16[]> m_np_vram;
UINT16 m_np_addr;
DECLARE_READ8_MEMBER(test_r);
DECLARE_READ8_MEMBER(vram_data_r);
diff --git a/src/mame/includes/nycaptor.h b/src/mame/includes/nycaptor.h
index 50604ba6d4d..893014050cd 100644
--- a/src/mame/includes/nycaptor.h
+++ b/src/mame/includes/nycaptor.h
@@ -117,5 +117,4 @@ public:
TIMER_CALLBACK_MEMBER(nmi_callback);
int nycaptor_spot( );
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
- void nycaptor_setmask( );
};
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/orbit.h b/src/mame/includes/orbit.h
index 5db20316519..1095f531f04 100644
--- a/src/mame/includes/orbit.h
+++ b/src/mame/includes/orbit.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/*************************************************************************
diff --git a/src/mame/includes/othunder.h b/src/mame/includes/othunder.h
index df223465f00..d730f4fbc7b 100644
--- a/src/mame/includes/othunder.h
+++ b/src/mame/includes/othunder.h
@@ -56,7 +56,7 @@ public:
required_shared_ptr<UINT16> m_spriteram;
/* video-related */
- struct othunder_tempsprite *m_spritelist;
+ std::unique_ptr<othunder_tempsprite[]> m_spritelist;
/* misc */
int m_vblank_irq;
diff --git a/src/mame/includes/overdriv.h b/src/mame/includes/overdriv.h
index 63241f78b49..ad0cceba7a7 100644
--- a/src/mame/includes/overdriv.h
+++ b/src/mame/includes/overdriv.h
@@ -54,8 +54,6 @@ public:
DECLARE_WRITE16_MEMBER(overdriv_soundirq_w);
DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_x_w);
DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_y_w);
- DECLARE_READ8_MEMBER(overdriv_1_sound_r);
- DECLARE_READ8_MEMBER(overdriv_2_sound_r);
virtual void machine_start() override;
virtual void machine_reset() override;
UINT32 screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
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/pacland.h b/src/mame/includes/pacland.h
index 308c26c6b34..9c4eee41deb 100644
--- a/src/mame/includes/pacland.h
+++ b/src/mame/includes/pacland.h
@@ -33,7 +33,7 @@ public:
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
bitmap_ind16 m_fg_bitmap;
- UINT32 *m_transmask[3];
+ std::unique_ptr<UINT32[]> m_transmask[3];
UINT16 m_scroll0;
UINT16 m_scroll1;
UINT8 m_main_irq_mask;
diff --git a/src/mame/includes/pastelg.h b/src/mame/includes/pastelg.h
index 7875112bbb7..af0d87dc1f6 100644
--- a/src/mame/includes/pastelg.h
+++ b/src/mame/includes/pastelg.h
@@ -34,7 +34,7 @@ public:
int m_blitter_direction_x;
int m_blitter_direction_y;
int m_palbank;
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
int m_flipscreen_old;
DECLARE_READ8_MEMBER(pastelg_sndrom_r);
diff --git a/src/mame/includes/pc1512.h b/src/mame/includes/pc1512.h
index 4086235c6fd..2334e8c92d5 100644
--- a/src/mame/includes/pc1512.h
+++ b/src/mame/includes/pc1512.h
@@ -117,7 +117,6 @@ public:
void update_fdc_drq();
void update_fdc_tc();
void update_ack();
- void set_fdc_dsr(UINT8 data);
int get_display_mode(UINT8 mode);
offs_t get_char_rom_offset();
int get_color(UINT8 data);
@@ -135,15 +134,12 @@ public:
DECLARE_WRITE8_MEMBER( nmi_mask_w );
DECLARE_READ8_MEMBER( printer_r );
DECLARE_WRITE8_MEMBER( printer_w );
- DECLARE_READ8_MEMBER( fdc_r );
- DECLARE_WRITE8_MEMBER( fdc_w );
DECLARE_READ8_MEMBER( vdu_r );
DECLARE_WRITE8_MEMBER( vdu_w );
DECLARE_WRITE_LINE_MEMBER( kbdata_w );
DECLARE_WRITE_LINE_MEMBER( kbclk_w );
DECLARE_WRITE_LINE_MEMBER( pit1_w );
DECLARE_WRITE_LINE_MEMBER( pit2_w );
- DECLARE_WRITE_LINE_MEMBER( ack_w );
DECLARE_WRITE_LINE_MEMBER( hrq_w );
DECLARE_WRITE_LINE_MEMBER( eop_w );
DECLARE_READ8_MEMBER( memr_r );
diff --git a/src/mame/includes/pc8001.h b/src/mame/includes/pc8001.h
index 55c6eeb35f6..76d3bafb529 100644
--- a/src/mame/includes/pc8001.h
+++ b/src/mame/includes/pc8001.h
@@ -64,7 +64,6 @@ public:
DECLARE_WRITE8_MEMBER( port30_w );
DECLARE_READ8_MEMBER( port40_r );
DECLARE_WRITE8_MEMBER( port40_w );
- DECLARE_WRITE_LINE_MEMBER( crtc_drq_w );
DECLARE_WRITE_LINE_MEMBER( hrq_w );
DECLARE_READ8_MEMBER( dma_mem_r );
diff --git a/src/mame/includes/pcw.h b/src/mame/includes/pcw.h
index b36b4e1d39e..fb9b35b96e9 100644
--- a/src/mame/includes/pcw.h
+++ b/src/mame/includes/pcw.h
@@ -68,7 +68,7 @@ public:
UINT16 m_printer_pins;
UINT8 m_printer_p2; // MCU port P2 state
UINT32 m_paper_feed; // amount of paper fed through printer, by n/360 inches. One line feed is 61/360in (from the linefeed command in CP/M;s ptr menu)
- bitmap_ind16* m_prn_output;
+ std::unique_ptr<bitmap_ind16> m_prn_output;
UINT8 m_printer_p2_prev;
emu_timer* m_prn_stepper;
emu_timer* m_prn_pins;
diff --git a/src/mame/includes/pcw16.h b/src/mame/includes/pcw16.h
index 4c4bc1b7861..3f611f878d5 100644
--- a/src/mame/includes/pcw16.h
+++ b/src/mame/includes/pcw16.h
@@ -108,12 +108,6 @@ public:
DECLARE_READ8_MEMBER(pcw16_system_status_r);
DECLARE_READ8_MEMBER(pcw16_timer_interrupt_counter_r);
DECLARE_WRITE8_MEMBER(pcw16_system_control_w);
- DECLARE_WRITE8_MEMBER(pcw16_superio_fdc_datarate_w);
- DECLARE_WRITE8_MEMBER(pcw16_superio_fdc_digital_output_register_w);
- DECLARE_WRITE8_MEMBER(pcw16_superio_fdc_data_w);
- DECLARE_READ8_MEMBER(pcw16_superio_fdc_data_r);
- DECLARE_READ8_MEMBER(pcw16_superio_fdc_main_status_register_r);
- DECLARE_READ8_MEMBER(pcw16_superio_fdc_digital_input_register_r);
DECLARE_READ8_MEMBER(pcw16_mem_r);
DECLARE_WRITE8_MEMBER(pcw16_mem_w);
void pcw16_keyboard_init();
@@ -138,14 +132,7 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(rtc_timer_callback);
DECLARE_WRITE_LINE_MEMBER(pcw16_com_interrupt_1);
DECLARE_WRITE_LINE_MEMBER(pcw16_com_interrupt_2);
- DECLARE_WRITE_LINE_MEMBER(pcw16_com_tx_0);
- DECLARE_WRITE_LINE_MEMBER(pcw16_com_dtr_0);
- DECLARE_WRITE_LINE_MEMBER(pcw16_com_rts_0);
- DECLARE_WRITE_LINE_MEMBER(pcw16_com_tx_1);
- DECLARE_WRITE_LINE_MEMBER(pcw16_com_dtr_1);
- DECLARE_WRITE_LINE_MEMBER(pcw16_com_rts_1);
DECLARE_WRITE_LINE_MEMBER(pcw16_keyboard_callback);
- INPUT_CHANGED_MEMBER(power);
void trigger_fdc_int();
DECLARE_WRITE_LINE_MEMBER( fdc_interrupt );
@@ -154,7 +141,6 @@ public:
void pcw16_vh_decode_mode0(bitmap_ind16 &bitmap, int x, int y, unsigned char byte);
void pcw16_vh_decode_mode1(bitmap_ind16 &bitmap, int x, int y, unsigned char byte);
void pcw16_vh_decode_mode2(bitmap_ind16 &bitmap, int x, int y, unsigned char byte);
- void pcw16_begin_byte_transfer();
};
#endif /* PCW16_H_ */
diff --git a/src/mame/includes/pdp1.h b/src/mame/includes/pdp1.h
index 8b8fbecc0b0..c1745369736 100644
--- a/src/mame/includes/pdp1.h
+++ b/src/mame/includes/pdp1.h
@@ -274,7 +274,6 @@ public:
TIMER_CALLBACK_MEMBER(puncher_callback);
TIMER_CALLBACK_MEMBER(tyo_callback);
TIMER_CALLBACK_MEMBER(dpy_callback);
- TIMER_CALLBACK_MEMBER(il_timer_callback);
void pdp1_machine_stop();
inline void pdp1_plot_pixel(bitmap_ind16 &bitmap, int x, int y, UINT32 color);
void pdp1_plot(int x, int y);
@@ -297,7 +296,6 @@ public:
void tape_write(UINT8 data);
void typewriter_out(UINT8 data);
void parallel_drum_set_il(int il);
- void parallel_drum_init();
UINT32 drum_read(int field, int position);
void drum_write(int field, int position, UINT32 data);
void pdp1_keyboard();
diff --git a/src/mame/includes/pecom.h b/src/mame/includes/pecom.h
index d3725031985..c8b9768bb31 100644
--- a/src/mame/includes/pecom.h
+++ b/src/mame/includes/pecom.h
@@ -31,7 +31,7 @@ public:
required_device<cosmac_device> m_cdp1802;
required_device<cdp1869_device> m_cdp1869;
- UINT8 *m_charram; /* character generator ROM */
+ std::unique_ptr<UINT8[]> m_charram; /* character generator ROM */
int m_reset; /* CPU mode */
int m_dma; /* memory refresh DMA */
diff --git a/src/mame/includes/pgm.h b/src/mame/includes/pgm.h
index f858005b86c..23f43937ff3 100644
--- a/src/mame/includes/pgm.h
+++ b/src/mame/includes/pgm.h
@@ -41,9 +41,9 @@ public:
UINT16 * m_bg_videoram;
UINT16 * m_tx_videoram;
UINT16 * m_rowscrollram;
- UINT8 * m_sprite_a_region;
+ std::unique_ptr<UINT8[]> m_sprite_a_region;
size_t m_sprite_a_region_size;
- UINT16 * m_spritebufferram; // buffered spriteram
+ std::unique_ptr<UINT16[]> m_spritebufferram; // buffered spriteram
/* video-related */
tilemap_t *m_bg_tilemap;
@@ -130,7 +130,6 @@ public:
void asic3_compute_hold(int,int);
DECLARE_READ16_MEMBER( pgm_asic3_r );
DECLARE_WRITE16_MEMBER( pgm_asic3_w );
- DECLARE_WRITE16_MEMBER( pgm_asic3_reg_w );
};
@@ -316,7 +315,7 @@ public:
}
// svg
int m_svg_ram_sel;
- UINT32 * m_svg_shareram[2]; //for 5585G MACHINE
+ std::unique_ptr<UINT32[]> m_svg_shareram[2]; //for 5585G MACHINE
UINT32 m_svg_latchdata_68k_w;
UINT32 m_svg_latchdata_arm_w;
diff --git a/src/mame/includes/phoenix.h b/src/mame/includes/phoenix.h
index 5acabc38fbb..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"
@@ -16,7 +16,7 @@ public:
required_device<cpu_device> m_maincpu;
optional_device<pleiads_sound_device> m_pleiads_custom;
required_device<gfxdecode_device> m_gfxdecode;
- UINT8 *m_videoram_pg[2];
+ std::unique_ptr<UINT8[]> m_videoram_pg[2];
UINT8 m_videoram_pg_index;
UINT8 m_palette_bank;
UINT8 m_cocktail_mode;
@@ -103,7 +103,7 @@ private:
struct n_state m_noise_state;
UINT8 m_sound_latch_a;
sound_stream * m_channel;
- UINT32 * m_poly18;
+ std::unique_ptr<UINT32[]> m_poly18;
discrete_device *m_discrete;
tms36xx_device *m_tms;
diff --git a/src/mame/includes/pitnrun.h b/src/mame/includes/pitnrun.h
index 33c9b68288f..91dadd7172e 100644
--- a/src/mame/includes/pitnrun.h
+++ b/src/mame/includes/pitnrun.h
@@ -36,7 +36,7 @@ public:
int m_scroll;
int m_char_bank;
int m_color_select;
- bitmap_ind16 *m_tmp_bitmap[4];
+ std::unique_ptr<bitmap_ind16> m_tmp_bitmap[4];
tilemap_t *m_bg;
tilemap_t *m_fg;
diff --git a/src/mame/includes/pk8020.h b/src/mame/includes/pk8020.h
index fc18feb923c..d8de9284db6 100644
--- a/src/mame/includes/pk8020.h
+++ b/src/mame/includes/pk8020.h
@@ -79,8 +79,6 @@ public:
DECLARE_WRITE8_MEMBER(pk8020_2_portc_w);
DECLARE_WRITE_LINE_MEMBER(pk8020_pit_out0);
DECLARE_WRITE_LINE_MEMBER(pk8020_pit_out1);
- DECLARE_WRITE_LINE_MEMBER(pk8020_pic_set_int_line);
- IRQ_CALLBACK_MEMBER(pk8020_irq_callback);
protected:
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/playch10.h b/src/mame/includes/playch10.h
index c098dd197d1..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;
@@ -50,9 +54,9 @@ public:
int m_MMC2_bank[4];
int m_MMC2_bank_latch[2];
UINT8* m_vrom;
- UINT8* m_vram;
+ std::unique_ptr<UINT8[]> m_vram;
UINT8* m_nametable[4];
- UINT8* m_nt_ram;
+ std::unique_ptr<UINT8[]> m_nt_ram;
chr_bank m_chr_page[8];
int m_mmc1_shiftreg;
int m_mmc1_shiftcount;
diff --git a/src/mame/includes/plus4.h b/src/mame/includes/plus4.h
index e139cb03271..fbd590c9601 100644
--- a/src/mame/includes/plus4.h
+++ b/src/mame/includes/plus4.h
@@ -103,7 +103,6 @@ public:
void check_interrupts();
void bankswitch(offs_t offset, int phi0, int mux, int ras, int *scs, int *phi2, int *user, int *_6551, int *addr_clk, int *keyport, int *kernal);
UINT8 read_memory(address_space &space, offs_t offset, int ba, int scs, int phi2, int user, int _6551, int addr_clk, int keyport, int kernal);
- UINT8 read_keyboard(UINT8 databus);
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -113,8 +112,6 @@ public:
DECLARE_WRITE8_MEMBER( cpu_w );
DECLARE_WRITE_LINE_MEMBER( ted_irq_w );
- DECLARE_READ8_MEMBER( ted_ram_r );
- DECLARE_READ8_MEMBER( ted_rom_r );
DECLARE_READ8_MEMBER( ted_k_r );
DECLARE_WRITE_LINE_MEMBER( write_kb0 ) { if (state) m_kb |= 1; else m_kb &= ~1; }
diff --git a/src/mame/includes/poisk1.h b/src/mame/includes/poisk1.h
index 3a4a87ced44..57a24f0c052 100644
--- a/src/mame/includes/poisk1.h
+++ b/src/mame/includes/poisk1.h
@@ -69,7 +69,7 @@ public:
struct
{
UINT8 trap[4];
- UINT8 *videoram_base;
+ std::unique_ptr<UINT8[]> videoram_base;
UINT8 *videoram;
UINT8 mode_control_6a;
UINT8 color_select_68;
diff --git a/src/mame/includes/policetr.h b/src/mame/includes/policetr.h
index ab1086c0a4f..9525c9a21a7 100644
--- a/src/mame/includes/policetr.h
+++ b/src/mame/includes/policetr.h
@@ -35,7 +35,7 @@ public:
UINT8 m_palette_data[3];
rectangle m_render_clip;
UINT8 *m_srcbitmap;
- UINT8 *m_dstbitmap;
+ std::unique_ptr<UINT8[]> m_dstbitmap;
UINT16 m_src_xoffs;
UINT16 m_src_yoffs;
UINT16 m_dst_xoffs;
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/poolshrk.h b/src/mame/includes/poolshrk.h
index d774d7ef1b9..c6196e08d55 100644
--- a/src/mame/includes/poolshrk.h
+++ b/src/mame/includes/poolshrk.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/*************************************************************************
diff --git a/src/mame/includes/popeye.h b/src/mame/includes/popeye.h
index db1bc86809b..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:
@@ -23,8 +24,8 @@ public:
required_shared_ptr<UINT8> m_spriteram;
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_colorram;
- UINT8 *m_bitmapram;
- bitmap_ind16 *m_tmpbitmap2;
+ std::unique_ptr<UINT8[]> m_bitmapram;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap2;
UINT8 m_invertmask;
UINT8 m_bitmap_type;
tilemap_t *m_fg_tilemap;
diff --git a/src/mame/includes/psikyo.h b/src/mame/includes/psikyo.h
index 566195eaa09..9d0f2f6b69e 100644
--- a/src/mame/includes/psikyo.h
+++ b/src/mame/includes/psikyo.h
@@ -30,8 +30,8 @@ public:
required_shared_ptr<UINT32> m_vram_1;
required_shared_ptr<UINT32> m_vregs;
optional_shared_ptr<UINT32> m_bootleg_spritebuffer;
- UINT32 * m_spritebuf1;
- UINT32 * m_spritebuf2;
+ std::unique_ptr<UINT32[]> m_spritebuf1;
+ std::unique_ptr<UINT32[]> m_spritebuf2;
/* video-related */
tilemap_t *m_tilemap_0_size0;
diff --git a/src/mame/includes/psikyosh.h b/src/mame/includes/psikyosh.h
index a21f4edda1c..4332eb98ab6 100644
--- a/src/mame/includes/psikyosh.h
+++ b/src/mame/includes/psikyosh.h
@@ -49,7 +49,7 @@ public:
bitmap_ind8 m_zoom_bitmap;
bitmap_ind16 m_z_bitmap;
bitmap_rgb32 m_bg_bitmap;
- UINT16 *m_bg_zoom;
+ std::unique_ptr<UINT16[]> m_bg_zoom;
UINT8 m_alphatable[256];
/* devices */
@@ -69,8 +69,6 @@ public:
DECLARE_DRIVER_INIT(mjgtaste);
virtual void machine_start() override;
virtual void video_start() override;
- void ps3_init();
- void ps5_init();
UINT32 screen_update_psikyosh(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(psikyosh_interrupt);
void draw_scanline32_alpha(bitmap_rgb32 &bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, int alpha);
diff --git a/src/mame/includes/psion.h b/src/mame/includes/psion.h
index da355b0b386..bf09325add0 100644
--- a/src/mame/includes/psion.h
+++ b/src/mame/includes/psion.h
@@ -60,7 +60,7 @@ public:
// RAM/ROM banks
required_shared_ptr<UINT8> m_ram;
- UINT8 *m_paged_ram;
+ std::unique_ptr<UINT8[]> m_paged_ram;
UINT8 m_rom_bank;
UINT8 m_ram_bank;
UINT8 m_ram_bank_count;
diff --git a/src/mame/includes/px8.h b/src/mame/includes/px8.h
index df0ac9bac33..8ce81932b28 100644
--- a/src/mame/includes/px8.h
+++ b/src/mame/includes/px8.h
@@ -81,7 +81,6 @@ public:
/* keyboard state */
int m_ksc; /* keyboard scan column */
DECLARE_PALETTE_INIT(px8);
- UINT32 screen_update_px8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
#endif
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/ql.h b/src/mame/includes/ql.h
index 9d436b7318d..3e0d2d082ee 100644
--- a/src/mame/includes/ql.h
+++ b/src/mame/includes/ql.h
@@ -111,8 +111,6 @@ public:
DECLARE_READ8_MEMBER( ipc_port2_r );
DECLARE_READ8_MEMBER( ipc_t1_r );
DECLARE_READ8_MEMBER( ipc_bus_r );
- DECLARE_READ8_MEMBER( ql_ram_r );
- DECLARE_WRITE8_MEMBER( ql_ram_w );
DECLARE_WRITE_LINE_MEMBER( ql_baudx4_w );
DECLARE_WRITE_LINE_MEMBER( ql_comdata_w );
DECLARE_WRITE_LINE_MEMBER( zx8302_mdselck_w );
diff --git a/src/mame/includes/quasar.h b/src/mame/includes/quasar.h
index 424312da082..3c8569c4626 100644
--- a/src/mame/includes/quasar.h
+++ b/src/mame/includes/quasar.h
@@ -14,7 +14,7 @@ public:
quasar_state(const machine_config &mconfig, device_type type, const char *tag)
: cvs_state(mconfig, type, tag) { }
- UINT8 * m_effectram;
+ std::unique_ptr<UINT8[]> m_effectram;
UINT8 m_effectcontrol;
UINT8 m_page;
UINT8 m_io_page;
diff --git a/src/mame/includes/quizdna.h b/src/mame/includes/quizdna.h
index e5dbcb74bc3..7d4bf69ac9c 100644
--- a/src/mame/includes/quizdna.h
+++ b/src/mame/includes/quizdna.h
@@ -18,8 +18,8 @@ public:
required_shared_ptr<UINT8> m_spriteram;
required_shared_ptr<UINT8> m_generic_paletteram_8;
- UINT8 *m_bg_ram;
- UINT8 *m_fg_ram;
+ std::unique_ptr<UINT8[]> m_bg_ram;
+ std::unique_ptr<UINT8[]> m_fg_ram;
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
UINT8 m_bg_xscroll[2];
diff --git a/src/mame/includes/radio86.h b/src/mame/includes/radio86.h
index aa39cb1fb07..8985e1692f6 100644
--- a/src/mame/includes/radio86.h
+++ b/src/mame/includes/radio86.h
@@ -59,7 +59,7 @@ public:
UINT8 m_tape_value;
UINT8 m_mikrosha_font_page;
int m_keyboard_mask;
- UINT8* m_radio_ram_disk;
+ std::unique_ptr<UINT8[]> m_radio_ram_disk;
UINT8 m_romdisk_lsb;
UINT8 m_romdisk_msb;
UINT8 m_disk_sel;
diff --git a/src/mame/includes/raiden.h b/src/mame/includes/raiden.h
index 810aad20482..ab809bc8552 100644
--- a/src/mame/includes/raiden.h
+++ b/src/mame/includes/raiden.h
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Oliver Bergmann, Bryan McPhail, Randy Mongenel
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail
/*******************************************************************************
Seibu Raiden hardware
diff --git a/src/mame/includes/raiden2.h b/src/mame/includes/raiden2.h
index 251eea2048e..0cedfb94a78 100644
--- a/src/mame/includes/raiden2.h
+++ b/src/mame/includes/raiden2.h
@@ -44,7 +44,10 @@ public:
}
- UINT16 *back_data, *fore_data, *mid_data, *text_data; // private buffers, allocated in init
+ std::unique_ptr<UINT16[]> back_data;
+ std::unique_ptr<UINT16[]> fore_data;
+ std::unique_ptr<UINT16[]> mid_data;
+ std::unique_ptr<UINT16[]> text_data; // private buffers, allocated in init
required_shared_ptr<UINT16> sprites;
required_device<cpu_device> m_maincpu;
optional_device<seibu_sound_device> m_seibu_sound;
@@ -139,8 +142,6 @@ public:
DECLARE_MACHINE_RESET(raidendx);
UINT32 screen_update_raiden2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(raiden2_interrupt);
- UINT16 rps();
- UINT16 rpc();
void combine32(UINT32 *val, int offset, UINT16 data, UINT16 mem_mask);
void sprcpt_init(void);
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/rbisland.h b/src/mame/includes/rbisland.h
index 02e936f592f..0fa8a251740 100644
--- a/src/mame/includes/rbisland.h
+++ b/src/mame/includes/rbisland.h
@@ -33,7 +33,7 @@ public:
UINT8 m_jumping_latch;
/* c-chip */
- UINT8 *m_CRAM[8];
+ std::unique_ptr<UINT8[]> m_CRAM[8];
int m_extra_version;
UINT8 m_current_bank;
diff --git a/src/mame/includes/realbrk.h b/src/mame/includes/realbrk.h
index 4ed74c5bdd8..4b3c3d9689a 100644
--- a/src/mame/includes/realbrk.h
+++ b/src/mame/includes/realbrk.h
@@ -38,8 +38,8 @@ public:
optional_shared_ptr<UINT16> m_vram_0ras;
optional_shared_ptr<UINT16> m_vram_1ras;
- bitmap_ind16 *m_tmpbitmap0;
- bitmap_ind16 *m_tmpbitmap1;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap0;
+ std::unique_ptr<bitmap_ind16> m_tmpbitmap1;
int m_disable_video;
tilemap_t *m_tilemap_0;
tilemap_t *m_tilemap_1;
diff --git a/src/mame/includes/redalert.h b/src/mame/includes/redalert.h
index 97e6e12d324..c3aeb7be441 100644
--- a/src/mame/includes/redalert.h
+++ b/src/mame/includes/redalert.h
@@ -38,7 +38,7 @@ public:
optional_device<hc55516_device> m_cvsd;
required_device<screen_device> m_screen;
- UINT8 *m_bitmap_colorram;
+ std::unique_ptr<UINT8[]> m_bitmap_colorram;
UINT8 m_control_xor;
DECLARE_READ8_MEMBER(redalert_interrupt_clear_r);
DECLARE_WRITE8_MEMBER(redalert_interrupt_clear_w);
diff --git a/src/mame/includes/rltennis.h b/src/mame/includes/rltennis.h
index b41ad49152b..321a778d689 100644
--- a/src/mame/includes/rltennis.h
+++ b/src/mame/includes/rltennis.h
@@ -29,7 +29,7 @@ public:
INT32 m_sample_rom_offset_2;
INT32 m_offset_shift;
INT32 m_unk_counter;
- bitmap_ind16 *m_tmp_bitmap[RLT_NUM_BITMAPS];
+ std::unique_ptr<bitmap_ind16> m_tmp_bitmap[RLT_NUM_BITMAPS];
UINT8 *m_samples_1;
UINT8 *m_samples_2;
UINT8 *m_gfx;
diff --git a/src/mame/includes/rm380z.h b/src/mame/includes/rm380z.h
index b173c5b7c16..616dbb06da9 100644
--- a/src/mame/includes/rm380z.h
+++ b/src/mame/includes/rm380z.h
@@ -108,9 +108,6 @@ public:
DECLARE_WRITE8_MEMBER( port_write_1b00 );
DECLARE_READ8_MEMBER( port_read_1b00 );
- DECLARE_READ8_MEMBER( main_read );
- DECLARE_WRITE8_MEMBER( main_write );
-
DECLARE_READ8_MEMBER( videoram_read );
DECLARE_WRITE8_MEMBER( videoram_write );
@@ -128,7 +125,6 @@ public:
DECLARE_WRITE8_MEMBER( keyboard_put );
void config_memory_map();
- int keyboard_decode();
void update_screen(bitmap_ind16 &bitmap);
UINT32 screen_update_rm380z(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(static_vblank_timer);
diff --git a/src/mame/includes/rmnimbus.h b/src/mame/includes/rmnimbus.h
index 6ceaa3fd105..692d6eb338a 100644
--- a/src/mame/includes/rmnimbus.h
+++ b/src/mame/includes/rmnimbus.h
@@ -161,7 +161,6 @@ public:
void fdc_reset();
UINT8 fdc_driveno(UINT8 drivesel);
void hdc_reset();
- void hdc_ctrl_write(UINT8 data);
void hdc_post_rw();
void hdc_drq(bool state);
void pc8031_reset();
diff --git a/src/mame/includes/rungun.h b/src/mame/includes/rungun.h
index bc6e45babfd..2819bbde4a9 100644
--- a/src/mame/includes/rungun.h
+++ b/src/mame/includes/rungun.h
@@ -50,26 +50,26 @@ public:
/* video-related */
tilemap_t *m_ttl_tilemap[2];
tilemap_t *m_936_tilemap[2];
- UINT16 *m_psac2_vram;
- UINT16 *m_ttl_vram;
- UINT16 *m_pal_ram;
- UINT8 m_current_display_bank;
+ std::unique_ptr<UINT16[]> m_psac2_vram;
+ std::unique_ptr<UINT16[]> m_ttl_vram;
+ std::unique_ptr<UINT16[]> m_pal_ram;
+ UINT8 m_current_display_bank;
int m_ttl_gfx_index;
int m_sprite_colorbase;
- UINT8 *m_roz_rom;
- UINT8 m_roz_rombase;
-
+ UINT8 *m_roz_rom;
+ UINT8 m_roz_rombase;
+
/* sound */
UINT8 m_sound_ctrl;
UINT8 m_sound_status;
UINT8 m_sound_nmi_clk;
-
- bool m_video_priority_mode;
- UINT16 *m_banked_ram;
- bool m_single_screen_mode;
- UINT8 m_video_mux_bank;
-
+
+ bool m_video_priority_mode;
+ std::unique_ptr<UINT16[]> m_banked_ram;
+ bool m_single_screen_mode;
+ UINT8 m_video_mux_bank;
+
DECLARE_READ16_MEMBER(rng_sysregs_r);
DECLARE_WRITE16_MEMBER(rng_sysregs_w);
DECLARE_WRITE16_MEMBER(sound_cmd1_w);
@@ -89,7 +89,7 @@ public:
DECLARE_READ16_MEMBER(palette_read);
DECLARE_WRITE16_MEMBER(palette_write);
-
+
K055673_CB_MEMBER(sprite_callback);
virtual void machine_start() override;
@@ -102,7 +102,6 @@ public:
bitmap_ind16 m_rng_dual_demultiplex_left_temp;
bitmap_ind16 m_rng_dual_demultiplex_right_temp;
void sprite_dma_trigger(void);
-
+
INTERRUPT_GEN_MEMBER(rng_interrupt);
- INTERRUPT_GEN_MEMBER(audio_interrupt);
};
diff --git a/src/mame/includes/s11.h b/src/mame/includes/s11.h
index 0fee48a237f..1d8f355ec0a 100644
--- a/src/mame/includes/s11.h
+++ b/src/mame/includes/s11.h
@@ -60,10 +60,8 @@ public:
DECLARE_WRITE8_MEMBER(pia40_pa_w);
DECLARE_WRITE8_MEMBER(pia40_pb_w);
DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w);
- DECLARE_READ8_MEMBER(dips_r);
DECLARE_READ8_MEMBER(switch_r);
DECLARE_WRITE8_MEMBER(switch_w);
- DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
DECLARE_READ8_MEMBER(pia28_w7_r);
DECLARE_WRITE_LINE_MEMBER(pias_ca2_w);
DECLARE_WRITE_LINE_MEMBER(pias_cb2_w);
@@ -180,8 +178,6 @@ public:
: s11b_state(mconfig, type, tag)
{ }
- DECLARE_WRITE8_MEMBER(bgbank_w);
-
DECLARE_MACHINE_RESET(s11c);
DECLARE_DRIVER_INIT(s11c);
diff --git a/src/mame/includes/sage2.h b/src/mame/includes/sage2.h
index bf270a8c702..2a80606aa20 100644
--- a/src/mame/includes/sage2.h
+++ b/src/mame/includes/sage2.h
@@ -72,8 +72,6 @@ public:
DECLARE_READ8_MEMBER( ppi1_pb_r );
DECLARE_WRITE8_MEMBER( ppi1_pc_w );
- DECLARE_WRITE8_MEMBER(kbd_put);
-
DECLARE_DIRECT_UPDATE_MEMBER(sage2_direct_update_handler);
DECLARE_WRITE_LINE_MEMBER( fdc_irq );
diff --git a/src/mame/includes/scramble.h b/src/mame/includes/scramble.h
index b5d65e4b258..2648ce25237 100644
--- a/src/mame/includes/scramble.h
+++ b/src/mame/includes/scramble.h
@@ -33,8 +33,8 @@ public:
UINT8 m_harem_decrypt_bit;
UINT8 m_harem_decrypt_clk;
UINT8 m_harem_decrypt_count;
- UINT8 *m_harem_decrypted_data;
- UINT8 *m_harem_decrypted_opcodes;
+ std::unique_ptr<UINT8[]> m_harem_decrypted_data;
+ std::unique_ptr<UINT8[]> m_harem_decrypted_opcodes;
DECLARE_CUSTOM_INPUT_MEMBER(darkplnt_custom_r);
DECLARE_CUSTOM_INPUT_MEMBER(ckongs_coinage_r);
diff --git a/src/mame/includes/segahang.h b/src/mame/includes/segahang.h
index b2b14db12fe..6de20b3b774 100644
--- a/src/mame/includes/segahang.h
+++ b/src/mame/includes/segahang.h
@@ -109,5 +109,4 @@ protected:
UINT8 m_adc_select;
bool m_shadow;
optional_shared_ptr<UINT16> m_decrypted_opcodes;
- TIMER_DEVICE_CALLBACK_MEMBER(hangon_irq);
};
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/segas32.h b/src/mame/includes/segas32.h
index ab580bde8d3..32392914aad 100644
--- a/src/mame/includes/segas32.h
+++ b/src/mame/includes/segas32.h
@@ -42,7 +42,7 @@ public:
struct layer_info
{
bitmap_ind16 *bitmap;
- UINT8 *transparent;
+ UINT8* transparent;
};
struct extents_list
@@ -75,7 +75,7 @@ public:
sys32_output_callback m_sw1_output;
sys32_output_callback m_sw2_output;
sys32_output_callback m_sw3_output;
- UINT16 *m_system32_protram;
+ std::unique_ptr<UINT16[]> m_system32_protram;
UINT16 m_system32_displayenable[2];
UINT16 m_system32_tilebank_external;
UINT16 m_arescue_dsp_io[6];
@@ -83,19 +83,17 @@ public:
struct cache_entry *m_cache_head;
struct layer_info m_layer_data[11];
UINT16 m_mixer_control[2][0x40];
- UINT16 *m_solid_0000;
- UINT16 *m_solid_ffff;
+ std::unique_ptr<UINT16[]> m_solid_0000;
+ std::unique_ptr<UINT16[]> m_solid_ffff;
UINT8 m_sprite_render_count;
UINT8 m_sprite_control_latched[8];
UINT8 m_sprite_control[8];
- UINT32 *m_spriteram_32bit;
+ std::unique_ptr<UINT32[]> m_spriteram_32bit;
typedef void (segas32_state::*prot_vblank_func)();
prot_vblank_func m_system32_prot_vblank;
int m_print_count;
DECLARE_WRITE16_MEMBER(ga2_dpram_w);
DECLARE_READ16_MEMBER(ga2_dpram_r);
- DECLARE_READ16_MEMBER(ga2_sprite_protection_r);
- DECLARE_READ16_MEMBER(ga2_wakeup_protection_r);
DECLARE_WRITE16_MEMBER(sonic_level_load_protection);
DECLARE_READ16_MEMBER(brival_protection_r);
DECLARE_WRITE16_MEMBER(brival_protection_w);
diff --git a/src/mame/includes/segaxbd.h b/src/mame/includes/segaxbd.h
index e1c4c8181d6..0625ceb619b 100644
--- a/src/mame/includes/segaxbd.h
+++ b/src/mame/includes/segaxbd.h
@@ -28,9 +28,6 @@ public:
void timer_ack_callback();
void sound_data_w(UINT8 data);
- // YM2151 chip callbacks
- DECLARE_WRITE_LINE_MEMBER( sound_cpu_irq );
-
// main CPU read/write handlers
DECLARE_READ16_MEMBER( adc_r );
DECLARE_WRITE16_MEMBER( adc_w );
diff --git a/src/mame/includes/segaybd.h b/src/mame/includes/segaybd.h
index 250648936bc..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),
@@ -42,9 +42,6 @@ public:
memset(m_misc_io_data, 0, sizeof(m_misc_io_data));
}
- // YM2151 chip callbacks
- DECLARE_WRITE_LINE_MEMBER( sound_cpu_irq );
-
// main CPU read/write handlers
DECLARE_READ16_MEMBER( analog_r );
DECLARE_WRITE16_MEMBER( analog_w );
diff --git a/src/mame/includes/seibuspi.h b/src/mame/includes/seibuspi.h
index ded8ff27ed9..e3cd7d82f67 100644
--- a/src/mame/includes/seibuspi.h
+++ b/src/mame/includes/seibuspi.h
@@ -68,9 +68,9 @@ public:
int m_back_layer_d14;
int m_midl_layer_d14;
int m_fore_layer_d14;
- UINT32 *m_tilemap_ram;
- UINT32 *m_palette_ram;
- UINT32 *m_sprite_ram;
+ std::unique_ptr<UINT32[]> m_tilemap_ram;
+ std::unique_ptr<UINT32[]> m_palette_ram;
+ std::unique_ptr<UINT32[]> m_sprite_ram;
UINT32 m_tilemap_ram_size;
UINT32 m_palette_ram_size;
UINT32 m_sprite_ram_size;
@@ -80,7 +80,6 @@ public:
DECLARE_READ32_MEMBER(spi_layer_bank_r);
DECLARE_WRITE32_MEMBER(spi_layer_bank_w);
- DECLARE_READ32_MEMBER(spi_layer_enable_r);
DECLARE_WRITE32_MEMBER(spi_layer_enable_w);
DECLARE_WRITE8_MEMBER(rf2_layer_bank_w);
DECLARE_WRITE32_MEMBER(tilemap_dma_start_w);
@@ -105,7 +104,6 @@ public:
DECLARE_READ8_MEMBER(flashrom_read);
DECLARE_WRITE8_MEMBER(flashrom_write);
- DECLARE_READ32_MEMBER(ejanhs_speedup_r);
DECLARE_READ32_MEMBER(senkyu_speedup_r);
DECLARE_READ32_MEMBER(senkyua_speedup_r);
DECLARE_READ32_MEMBER(batlball_speedup_r);
@@ -124,8 +122,6 @@ public:
void set_layer_offsets();
void drawgfx_blend(bitmap_rgb32 &bitmap, const rectangle &cliprect, gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy, bitmap_ind8 &primap, int primask);
void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &primap, int priority);
- void set_rowscroll(tilemap_t *layer, int scroll, INT16* rows);
- void set_scroll(tilemap_t *layer, int scroll);
void combine_tilemap(bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tile, int sx, int sy, int opaque, INT16 *rowscroll);
virtual void machine_start() override;
diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h
index 00a33d0c505..1c48610d9e9 100644
--- a/src/mame/includes/seta2.h
+++ b/src/mame/includes/seta2.h
@@ -40,7 +40,7 @@ public:
int m_xoffset;
int m_yoffset;
int m_keyboard_row;
- UINT16 *m_buffered_spriteram;
+ std::unique_ptr<UINT16[]> m_buffered_spriteram;
UINT64 m_funcube_coin_start_cycles;
UINT8 m_funcube_hopper_motor;
diff --git a/src/mame/includes/shadfrce.h b/src/mame/includes/shadfrce.h
index 10f2b6120bc..82ce0cba31b 100644
--- a/src/mame/includes/shadfrce.h
+++ b/src/mame/includes/shadfrce.h
@@ -47,7 +47,7 @@ public:
required_shared_ptr<UINT16> m_bg1videoram;
required_shared_ptr<UINT16> m_spvideoram;
- UINT16 *m_spvideoram_old;
+ std::unique_ptr<UINT16[]> m_spvideoram_old;
tilemap_t *m_fgtilemap;
tilemap_t *m_bg0tilemap;
tilemap_t *m_bg1tilemap;
diff --git a/src/mame/includes/sidearms.h b/src/mame/includes/sidearms.h
index d967bf701e0..bd82050f486 100644
--- a/src/mame/includes/sidearms.h
+++ b/src/mame/includes/sidearms.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Curt Coder
#include "video/bufsprite.h"
diff --git a/src/mame/includes/simpl156.h b/src/mame/includes/simpl156.h
index 3da2f9e58e3..7fc91654160 100644
--- a/src/mame/includes/simpl156.h
+++ b/src/mame/includes/simpl156.h
@@ -31,13 +31,13 @@ public:
required_device<eeprom_serial_93cxx_device> m_eeprom;
required_device<okim6295_device> m_okimusic;
/* memory pointers */
- UINT16 * m_pf1_rowscroll;
- UINT16 * m_pf2_rowscroll;
+ std::unique_ptr<UINT16[]> m_pf1_rowscroll;
+ std::unique_ptr<UINT16[]> m_pf2_rowscroll;
required_shared_ptr<UINT32> m_mainram;
required_shared_ptr<UINT32> m_systemram;
optional_device<decospr_device> m_sprgen;
required_device<palette_device> m_palette;
- UINT16 *m_spriteram;
+ std::unique_ptr<UINT16[]> m_spriteram;
size_t m_spriteram_size;
DECO16IC_BANK_CB_MEMBER(bank_callback);
DECOSPR_PRIORITY_CB_MEMBER(pri_callback);
diff --git a/src/mame/includes/simple_st0016.h b/src/mame/includes/simple_st0016.h
index 639bc522bc5..21c30ac560d 100644
--- a/src/mame/includes/simple_st0016.h
+++ b/src/mame/includes/simple_st0016.h
@@ -31,7 +31,6 @@ public:
DECLARE_DRIVER_INIT(renju);
virtual void machine_start() override;
DECLARE_VIDEO_START(st0016);
- void st0016_draw_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_st0016(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(st0016_int);
optional_device<cpu_device> m_subcpu;
diff --git a/src/mame/includes/simpsons.h b/src/mame/includes/simpsons.h
index fe70166dd3a..2762f4da138 100644
--- a/src/mame/includes/simpsons.h
+++ b/src/mame/includes/simpsons.h
@@ -26,7 +26,7 @@ public:
m_k053251(*this, "k053251") { }
/* memory pointers */
- UINT16 * m_spriteram;
+ std::unique_ptr<UINT16[]> m_spriteram;
/* video-related */
int m_sprite_colorbase;
@@ -58,10 +58,7 @@ public:
virtual void machine_reset() override;
UINT32 screen_update_simpsons(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(simpsons_irq);
- TIMER_CALLBACK_MEMBER(nmi_callback);
- TIMER_CALLBACK_MEMBER(dmaend_callback);
void simpsons_video_banking(int bank);
- void sound_nmi_callback(int param);
void simpsons_objdma();
K052109_CB_MEMBER(tile_callback);
DECLARE_WRITE8_MEMBER(banking_callback);
diff --git a/src/mame/includes/skyraid.h b/src/mame/includes/skyraid.h
index 289fa56913f..b4258ad37ef 100644
--- a/src/mame/includes/skyraid.h
+++ b/src/mame/includes/skyraid.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
#include "sound/discrete.h"
diff --git a/src/mame/includes/slapshot.h b/src/mame/includes/slapshot.h
index 35eff83f330..6a200b524ab 100644
--- a/src/mame/includes/slapshot.h
+++ b/src/mame/includes/slapshot.h
@@ -53,8 +53,8 @@ public:
/* memory pointers */
required_shared_ptr<UINT16> m_spriteram;
required_shared_ptr<UINT16> m_spriteext;
- UINT16 * m_spriteram_buffered;
- UINT16 * m_spriteram_delayed;
+ std::unique_ptr<UINT16[]> m_spriteram_buffered;
+ std::unique_ptr<UINT16[]> m_spriteram_delayed;
/* video-related */
struct slapshot_tempsprite *m_spritelist;
diff --git a/src/mame/includes/sms.h b/src/mame/includes/sms.h
index 541e298b4d0..ec9ae688698 100644
--- a/src/mame/includes/sms.h
+++ b/src/mame/includes/sms.h
@@ -83,7 +83,7 @@ public:
required_memory_region m_region_maincpu;
address_space *m_space;
- UINT8 *m_mainram;
+ std::unique_ptr<UINT8[]> m_mainram;
UINT8 *m_BIOS;
// for 3D glass binocular hack
@@ -100,7 +100,7 @@ public:
bitmap_rgb32 m_gg_sms_mode_bitmap;
// line_buffer will be used to hold 4 lines of line data as a kind of cache for
// vertical scaling in the gamegear sms compatibility mode.
- int *m_line_buffer;
+ std::unique_ptr<int[]> m_line_buffer;
// model identifiers
UINT8 m_is_gamegear;
diff --git a/src/mame/includes/snes.h b/src/mame/includes/snes.h
index 423b2b16fc2..238ad7efcc9 100644
--- a/src/mame/includes/snes.h
+++ b/src/mame/includes/snes.h
@@ -286,7 +286,7 @@ struct snes_cart_info
{
UINT8 *m_rom;
UINT32 m_rom_size;
- UINT8 *m_nvram;
+ std::unique_ptr<UINT8[]> m_nvram;
UINT32 m_nvram_size;
UINT8 mode; /* ROM memory mode */
UINT32 sram_max; /* Maximum amount sram in cart (based on ROM mode) */
@@ -381,8 +381,6 @@ public:
required_device<screen_device> m_screen;
- DECLARE_DIRECT_UPDATE_MEMBER(snes_spc_direct);
- DECLARE_DIRECT_UPDATE_MEMBER(snes_direct);
DECLARE_DRIVER_INIT(snes);
DECLARE_DRIVER_INIT(snes_hirom);
DECLARE_DRIVER_INIT(snes_mess);
diff --git a/src/mame/includes/sorcerer.h b/src/mame/includes/sorcerer.h
index a92adbf4164..9e49370b514 100644
--- a/src/mame/includes/sorcerer.h
+++ b/src/mame/includes/sorcerer.h
@@ -76,7 +76,6 @@ public:
DECLARE_WRITE8_MEMBER(sorcerer_ff_w);
DECLARE_MACHINE_START(sorcererd);
DECLARE_DRIVER_INIT(sorcerer);
- TIMER_CALLBACK_MEMBER(sorcerer_serial_tc);
TIMER_CALLBACK_MEMBER(sorcerer_cassette_tc);
TIMER_CALLBACK_MEMBER(sorcerer_reset);
DECLARE_SNAPSHOT_LOAD_MEMBER( sorcerer );
diff --git a/src/mame/includes/spacefb.h b/src/mame/includes/spacefb.h
index f78e84dfa32..4bd39f33338 100644
--- a/src/mame/includes/spacefb.h
+++ b/src/mame/includes/spacefb.h
@@ -46,7 +46,7 @@ public:
UINT8 m_sound_latch;
emu_timer *m_interrupt_timer;
- UINT8 *m_object_present_map;
+ std::unique_ptr<UINT8[]> m_object_present_map;
UINT8 m_port_0;
UINT8 m_port_2;
UINT32 m_star_shift_reg;
diff --git a/src/mame/includes/special.h b/src/mame/includes/special.h
index bd0ec55385a..6c9a369b922 100644
--- a/src/mame/includes/special.h
+++ b/src/mame/includes/special.h
@@ -86,7 +86,7 @@ public:
DECLARE_WRITE8_MEMBER(specialist_8255_portc_w);
void specimx_set_bank(offs_t i, UINT8 data);
void erik_set_bank();
- UINT8 *m_specimx_colorram;
+ std::unique_ptr<UINT8[]> m_specimx_colorram;
UINT8 m_erik_color_1;
UINT8 m_erik_color_2;
UINT8 m_erik_background;
diff --git a/src/mame/includes/speedatk.h b/src/mame/includes/speedatk.h
index aa77a6e5717..d0ed37db6da 100644
--- a/src/mame/includes/speedatk.h
+++ b/src/mame/includes/speedatk.h
@@ -34,8 +34,6 @@ public:
DECLARE_WRITE8_MEMBER(key_matrix_w);
DECLARE_READ8_MEMBER(key_matrix_status_r);
DECLARE_WRITE8_MEMBER(key_matrix_status_w);
- DECLARE_WRITE8_MEMBER(videoram_w);
- DECLARE_WRITE8_MEMBER(colorram_w);
DECLARE_WRITE8_MEMBER(m6845_w);
DECLARE_WRITE8_MEMBER(output_w);
diff --git a/src/mame/includes/sprint4.h b/src/mame/includes/sprint4.h
index 208ddbb1aca..79def94ada0 100644
--- a/src/mame/includes/sprint4.h
+++ b/src/mame/includes/sprint4.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
class sprint4_state : public driver_device
{
@@ -35,7 +35,6 @@ public:
DECLARE_WRITE8_MEMBER(sprint4_collision_reset_w);
DECLARE_WRITE8_MEMBER(sprint4_da_latch_w);
DECLARE_WRITE8_MEMBER(sprint4_lamp_w);
- DECLARE_WRITE8_MEMBER(sprint4_lockout_w);
DECLARE_WRITE8_MEMBER(sprint4_video_ram_w);
DECLARE_CUSTOM_INPUT_MEMBER(get_lever);
DECLARE_CUSTOM_INPUT_MEMBER(get_wheel);
diff --git a/src/mame/includes/sprint8.h b/src/mame/includes/sprint8.h
index 81f2d827a5a..4db1fca0fa2 100644
--- a/src/mame/includes/sprint8.h
+++ b/src/mame/includes/sprint8.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
#include "sound/discrete.h"
diff --git a/src/mame/includes/srumbler.h b/src/mame/includes/srumbler.h
index 961dc6f5dba..0e6b320fcfc 100644
--- a/src/mame/includes/srumbler.h
+++ b/src/mame/includes/srumbler.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
#include "video/bufsprite.h"
diff --git a/src/mame/includes/sspeedr.h b/src/mame/includes/sspeedr.h
index 2ce7c39c3da..54978416da1 100644
--- a/src/mame/includes/sspeedr.h
+++ b/src/mame/includes/sspeedr.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
class sspeedr_state : public driver_device
{
diff --git a/src/mame/includes/ssrj.h b/src/mame/includes/ssrj.h
index 7f126a606a7..f17223aca95 100644
--- a/src/mame/includes/ssrj.h
+++ b/src/mame/includes/ssrj.h
@@ -28,7 +28,7 @@ public:
tilemap_t *m_tilemap1;
tilemap_t *m_tilemap2;
tilemap_t *m_tilemap4;
- UINT8 *m_buffer_spriteram;
+ std::unique_ptr<UINT8[]> m_buffer_spriteram;
DECLARE_READ8_MEMBER(wheel_r);
DECLARE_WRITE8_MEMBER(vram1_w);
diff --git a/src/mame/includes/ssv.h b/src/mame/includes/ssv.h
index 21393b2ee70..611ff3b66ee 100644
--- a/src/mame/includes/ssv.h
+++ b/src/mame/includes/ssv.h
@@ -59,7 +59,7 @@ public:
int m_shadow_pen_shift;
UINT8 m_requested_int;
UINT16 m_irq_enable;
- UINT16 *m_eaglshot_gfxram;
+ std::unique_ptr<UINT16[]> m_eaglshot_gfxram;
tilemap_t *m_gdfs_tmap;
int m_interrupt_ultrax;
int m_gdfs_lightgun_select;
@@ -77,12 +77,7 @@ public:
DECLARE_WRITE16_MEMBER(dsp_dr_w);
DECLARE_READ16_MEMBER(dsp_r);
DECLARE_WRITE16_MEMBER(dsp_w);
- DECLARE_READ16_MEMBER(fake_r);
DECLARE_READ16_MEMBER(drifto94_unknown_r);
- DECLARE_READ16_MEMBER(gdfs_gfxram_r);
- DECLARE_WRITE16_MEMBER(gdfs_gfxram_w);
- DECLARE_READ16_MEMBER(gdfs_blitram_r);
- DECLARE_WRITE16_MEMBER(gdfs_blitram_w);
DECLARE_READ16_MEMBER(hypreact_input_r);
DECLARE_READ16_MEMBER(mainram_r);
DECLARE_WRITE16_MEMBER(mainram_w);
diff --git a/src/mame/includes/ssystem3.h b/src/mame/includes/ssystem3.h
index 4a98f1175cc..79a5e7d4591 100644
--- a/src/mame/includes/ssystem3.h
+++ b/src/mame/includes/ssystem3.h
@@ -69,7 +69,7 @@ public:
private:
UINT8 m_porta;
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
playfield_t m_playfield;
lcd_t m_lcd;
diff --git a/src/mame/includes/starcrus.h b/src/mame/includes/starcrus.h
index 73665c6da10..3de1b75301f 100644
--- a/src/mame/includes/starcrus.h
+++ b/src/mame/includes/starcrus.h
@@ -16,10 +16,10 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- bitmap_ind16 *m_ship1_vid;
- bitmap_ind16 *m_ship2_vid;
- bitmap_ind16 *m_proj1_vid;
- bitmap_ind16 *m_proj2_vid;
+ std::unique_ptr<bitmap_ind16> m_ship1_vid;
+ std::unique_ptr<bitmap_ind16> m_ship2_vid;
+ std::unique_ptr<bitmap_ind16> m_proj1_vid;
+ std::unique_ptr<bitmap_ind16> m_proj2_vid;
int m_s1_x;
int m_s1_y;
diff --git a/src/mame/includes/starshp1.h b/src/mame/includes/starshp1.h
index 3de371cebd3..b4fa955bc80 100644
--- a/src/mame/includes/starshp1.h
+++ b/src/mame/includes/starshp1.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Frank Palazzolo, Stefan Jokisch
/*
* The schematics don't seem to make a lot of sense when it
@@ -68,7 +68,7 @@ public:
int m_starfield_kill;
int m_mux;
int m_inverse;
- UINT16 *m_LSFR;
+ std::unique_ptr<UINT16[]> m_LSFR;
bitmap_ind16 m_helper;
tilemap_t *m_bg_tilemap;
DECLARE_WRITE8_MEMBER(starshp1_collision_reset_w);
diff --git a/src/mame/includes/starwars.h b/src/mame/includes/starwars.h
index 24a295da6de..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
/***************************************************************************
@@ -39,9 +39,9 @@ public:
UINT16 m_quotient_shift;
UINT16 m_divisor;
UINT16 m_dividend;
- UINT8 *m_PROM_STR;
- UINT8 *m_PROM_MAS;
- UINT8 *m_PROM_AM;
+ std::unique_ptr<UINT8[]> m_PROM_STR;
+ std::unique_ptr<UINT8[]> m_PROM_MAS;
+ std::unique_ptr<UINT8[]> m_PROM_AM;
int m_math_run;
emu_timer *m_math_timer;
INT16 m_A;
diff --git a/src/mame/includes/stv.h b/src/mame/includes/stv.h
index 4655c3648b0..db8329f9ecc 100644
--- a/src/mame/includes/stv.h
+++ b/src/mame/includes/stv.h
@@ -49,14 +49,14 @@ public:
optional_ioport m_fake_comms;
memory_region *m_cart_reg[4];
- UINT8 *m_backupram;
- UINT32 *m_scu_regs;
- UINT16 *m_scsp_regs;
- UINT16 *m_vdp2_regs;
- UINT32 *m_vdp2_vram;
- UINT32 *m_vdp2_cram;
- UINT32 *m_vdp1_vram;
- UINT16 *m_vdp1_regs;
+ std::unique_ptr<UINT8[]> m_backupram;
+ std::unique_ptr<UINT32[]> m_scu_regs;
+ std::unique_ptr<UINT16[]> m_scsp_regs;
+ std::unique_ptr<UINT16[]> m_vdp2_regs;
+ std::unique_ptr<UINT32[]> m_vdp2_vram;
+ std::unique_ptr<UINT32[]> m_vdp2_cram;
+ std::unique_ptr<UINT32[]> m_vdp1_vram;
+ std::unique_ptr<UINT16[]> m_vdp1_regs;
UINT8 m_NMI_reset;
UINT8 m_en_68k;
@@ -96,9 +96,9 @@ public:
int framebuffer_clear_on_next_frame;
rectangle system_cliprect;
rectangle user_cliprect;
- UINT16 *framebuffer[2];
+ std::unique_ptr<UINT16[]> framebuffer[2];
UINT16 **framebuffer_draw_lines;
- UINT8 *gfx_decode;
+ std::unique_ptr<UINT8[]> gfx_decode;
UINT16 lopr;
UINT16 copr;
UINT16 ewdr;
@@ -108,7 +108,7 @@ public:
}m_vdp1;
struct {
- UINT8 *gfx_decode;
+ std::unique_ptr<UINT8[]> gfx_decode;
bitmap_rgb32 roz_bitmap[2];
UINT8 dotsel;
UINT8 pal;
@@ -178,7 +178,6 @@ public:
bitmap_rgb32 m_tmpbitmap;
DECLARE_VIDEO_START(stv_vdp2);
- UINT32 screen_update_saturn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
UINT32 screen_update_stv_vdp2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(saturn_scanline);
TIMER_DEVICE_CALLBACK_MEMBER(saturn_slave_scanline);
@@ -293,7 +292,7 @@ public:
struct stv_vdp1_poly_scanline scanline[512];
};
- struct stv_vdp1_poly_scanline_data* stv_vdp1_shading_data;
+ std::unique_ptr<struct stv_vdp1_poly_scanline_data> stv_vdp1_shading_data;
struct stv_vdp2_sprite_list
{
diff --git a/src/mame/includes/suna16.h b/src/mame/includes/suna16.h
index 76d88acbc83..d7f7ed7d029 100644
--- a/src/mame/includes/suna16.h
+++ b/src/mame/includes/suna16.h
@@ -39,7 +39,7 @@ public:
optional_memory_bank m_bank2;
- UINT16 *m_paletteram;
+ std::unique_ptr<UINT16[]> m_paletteram;
int m_color_bank;
UINT8 m_prot;
diff --git a/src/mame/includes/suna8.h b/src/mame/includes/suna8.h
index 97067103bc3..1ee773edb15 100644
--- a/src/mame/includes/suna8.h
+++ b/src/mame/includes/suna8.h
@@ -67,7 +67,7 @@ public:
bool m_has_text; // has text sprites (older games)
// samples
- INT16 *m_samplebuf;
+ std::unique_ptr<INT16[]> m_samplebuf;
int m_sample, m_play;
int m_numsamples;
@@ -141,6 +141,7 @@ public:
DECLARE_DRIVER_INIT(brickznv4);
DECLARE_DRIVER_INIT(starfigh);
DECLARE_DRIVER_INIT(hardhea2);
+ DECLARE_DRIVER_INIT(hardhea2b);
DECLARE_DRIVER_INIT(hardhedb);
DECLARE_DRIVER_INIT(sparkman);
DECLARE_DRIVER_INIT(brickzn);
@@ -157,7 +158,6 @@ public:
DECLARE_MACHINE_RESET(brickzn);
DECLARE_MACHINE_RESET(hardhea2);
UINT32 screen_update_suna8(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(brickzn_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(hardhea2_interrupt);
// samples
diff --git a/src/mame/includes/super6.h b/src/mame/includes/super6.h
index bb59f9d7b4c..6edce116cb4 100644
--- a/src/mame/includes/super6.h
+++ b/src/mame/includes/super6.h
@@ -79,7 +79,6 @@ public:
UINT8 m_bank0;
UINT8 m_bank1;
TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick);
- DECLARE_WRITE8_MEMBER(dummy_w);
DECLARE_READ8_MEMBER(memory_read_byte);
DECLARE_WRITE8_MEMBER(memory_write_byte);
DECLARE_READ8_MEMBER(io_read_byte);
diff --git a/src/mame/includes/super80.h b/src/mame/includes/super80.h
index 2f5ac0b290f..34b6a2c94eb 100644
--- a/src/mame/includes/super80.h
+++ b/src/mame/includes/super80.h
@@ -53,7 +53,6 @@ public:
DECLARE_READ8_MEMBER(port3e_r);
DECLARE_WRITE8_MEMBER(port3f_w);
DECLARE_WRITE8_MEMBER(super80_f1_w);
- DECLARE_READ8_MEMBER(super80_dc_r);
DECLARE_READ8_MEMBER(super80_f2_r);
DECLARE_WRITE8_MEMBER(super80_dc_w);
DECLARE_WRITE8_MEMBER(super80_f0_w);
diff --git a/src/mame/includes/superchs.h b/src/mame/includes/superchs.h
index 6eae7418493..a3d45791548 100644
--- a/src/mame/includes/superchs.h
+++ b/src/mame/includes/superchs.h
@@ -34,7 +34,7 @@ public:
required_shared_ptr<UINT32> m_spriteram;
required_shared_ptr<UINT32> m_shared_ram;
- struct schs_tempsprite *m_spritelist;
+ std::unique_ptr<schs_tempsprite[]> m_spritelist;
UINT32 m_mem[2];
DECLARE_READ16_MEMBER(shared_ram_r);
diff --git a/src/mame/includes/superqix.h b/src/mame/includes/superqix.h
index ede28fa498e..82729e52e86 100644
--- a/src/mame/includes/superqix.h
+++ b/src/mame/includes/superqix.h
@@ -27,7 +27,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- INT16 *m_samplebuf;
+ std::unique_ptr<INT16[]> m_samplebuf;
UINT8 m_port1;
UINT8 m_port2;
UINT8 m_port3;
@@ -45,7 +45,7 @@ public:
UINT8 m_portC;
int m_curr_player;
int m_gfxbank;
- bitmap_ind16 *m_fg_bitmap[2];
+ std::unique_ptr<bitmap_ind16> m_fg_bitmap[2];
int m_show_bitmap;
tilemap_t *m_bg_tilemap;
UINT8 m_nmi_mask;
diff --git a/src/mame/includes/suprslam.h b/src/mame/includes/suprslam.h
index 273a6664820..ffe87dd36bf 100644
--- a/src/mame/includes/suprslam.h
+++ b/src/mame/includes/suprslam.h
@@ -49,7 +49,6 @@ public:
required_device<cpu_device> m_audiocpu;
required_device<k053936_device> m_k053936;
DECLARE_WRITE16_MEMBER(sound_command_w);
- DECLARE_READ16_MEMBER(pending_command_r);
DECLARE_WRITE8_MEMBER(pending_command_clear_w);
DECLARE_WRITE8_MEMBER(suprslam_sh_bankswitch_w);
DECLARE_WRITE16_MEMBER(suprslam_screen_videoram_w);
diff --git a/src/mame/includes/svi318.h b/src/mame/includes/svi318.h
index ce486816850..1e0fc0d0d30 100644
--- a/src/mame/includes/svi318.h
+++ b/src/mame/includes/svi318.h
@@ -131,7 +131,7 @@ private:
UINT8 m_bank_high1_read_only;
UINT8 m_bank_high2_read_only;
- UINT8 *m_empty_bank;
+ std::unique_ptr<UINT8[]> m_empty_bank;
UINT8 *m_bank_low_ptr;
UINT8 *m_bank_high1_ptr;
UINT8 *m_bank_high2_ptr;
diff --git a/src/mame/includes/swtpc09.h b/src/mame/includes/swtpc09.h
index 222ffe5c11a..10667f44a34 100644
--- a/src/mame/includes/swtpc09.h
+++ b/src/mame/includes/swtpc09.h
@@ -79,7 +79,6 @@ public:
DECLARE_READ8_MEMBER( dmf3_via_read_porta );
DECLARE_READ8_MEMBER( dmf3_via_read_portb );
DECLARE_WRITE8_MEMBER( dmf3_via_write_porta );
- DECLARE_WRITE_LINE_MEMBER( dmf3_via_write_ca1 );
DECLARE_WRITE_LINE_MEMBER( dmf3_via_irq );
DECLARE_READ8_MEMBER(piaide_a_r);
@@ -87,8 +86,6 @@ public:
DECLARE_WRITE8_MEMBER(piaide_a_w);
DECLARE_WRITE8_MEMBER(piaide_b_w);
- DECLARE_WRITE8_MEMBER(swtpc09_kbd_put);
-
DECLARE_READ8_MEMBER ( dmf2_dma_address_reg_r );
DECLARE_WRITE8_MEMBER ( dmf2_dma_address_reg_w );
DECLARE_READ8_MEMBER ( dmf2_control_reg_r );
diff --git a/src/mame/includes/system1.h b/src/mame/includes/system1.h
index d62450c965e..8f3cf559276 100644
--- a/src/mame/includes/system1.h
+++ b/src/mame/includes/system1.h
@@ -34,7 +34,7 @@ public:
optional_shared_ptr<UINT8> m_nob_mcu_status;
required_shared_ptr<UINT8> m_paletteram;
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
void (system1_state::*m_videomode_custom)(UINT8 data, UINT8 prevdata);
UINT8 m_mute_xor;
UINT8 m_dakkochn_mux_data;
@@ -42,9 +42,9 @@ public:
UINT8 m_mcu_control;
UINT8 m_nob_maincpu_latch;
int m_nobb_inport23_step;
- UINT8 *m_mix_collide;
+ std::unique_ptr<UINT8[]> m_mix_collide;
UINT8 m_mix_collide_summary;
- UINT8 *m_sprite_collide;
+ std::unique_ptr<UINT8[]> m_sprite_collide;
UINT8 m_sprite_collide_summary;
bitmap_ind16 m_sprite_bitmap;
UINT8 m_video_mode;
@@ -151,5 +151,5 @@ public:
optional_memory_bank m_bank0d;
optional_memory_bank m_bank1d;
- UINT8 *m_banked_decrypted_opcodes;
+ std::unique_ptr<UINT8[]> m_banked_decrypted_opcodes;
};
diff --git a/src/mame/includes/system16.h b/src/mame/includes/system16.h
index 087258bcc84..5173524b89e 100644
--- a/src/mame/includes/system16.h
+++ b/src/mame/includes/system16.h
@@ -162,7 +162,6 @@ public:
DECLARE_WRITE8_MEMBER(shdancbl_msm5205_data_w);
DECLARE_READ8_MEMBER(shdancbl_soundbank_r);
DECLARE_WRITE8_MEMBER(shdancbl_bankctrl_w);
- DECLARE_WRITE16_MEMBER(sys16_paletteram_w);
DECLARE_WRITE16_MEMBER(sys16_tileram_w);
DECLARE_WRITE16_MEMBER(sys16_textram_w);
DECLARE_WRITE16_MEMBER(s16a_bootleg_bgscrolly_w);
diff --git a/src/mame/includes/taito_b.h b/src/mame/includes/taito_b.h
index 5f38bce46ae..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"
@@ -45,9 +45,9 @@ public:
/* video-related */
/* framebuffer is a raw bitmap, remapped as a last step */
- bitmap_ind16 *m_framebuffer[2];
- bitmap_ind16 *m_pixel_bitmap;
- bitmap_ind16 *m_realpunc_bitmap;
+ std::unique_ptr<bitmap_ind16> m_framebuffer[2];
+ std::unique_ptr<bitmap_ind16> m_pixel_bitmap;
+ std::unique_ptr<bitmap_ind16> m_realpunc_bitmap;
UINT16 m_pixel_scroll[2];
@@ -125,8 +125,6 @@ public:
void hitice_clear_pixel_bitmap( );
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void draw_framebuffer( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority );
- void ryujin_patch(void);
- void sbm_patch(void);
DECLARE_WRITE_LINE_MEMBER(irqhandler);
protected:
diff --git a/src/mame/includes/taito_f2.h b/src/mame/includes/taito_f2.h
index f97fd3cfed4..1d75ce57e28 100644
--- a/src/mame/includes/taito_f2.h
+++ b/src/mame/includes/taito_f2.h
@@ -50,12 +50,12 @@ public:
/* memory pointers */
optional_shared_ptr<UINT16> m_sprite_extension;
required_shared_ptr<UINT16> m_spriteram;
- UINT16 * m_spriteram_buffered;
- UINT16 * m_spriteram_delayed;
+ std::unique_ptr<UINT16[]> m_spriteram_buffered;
+ std::unique_ptr<UINT16[]> m_spriteram_delayed;
optional_shared_ptr<UINT16> m_cchip2_ram; // for megablst only
/* video-related */
- struct f2_tempsprite *m_spritelist;
+ std::unique_ptr<struct f2_tempsprite[]> m_spritelist;
int m_sprite_type;
UINT16 m_spritebank[8];
diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h
index e33c1dce538..5b31c9db98c 100644
--- a/src/mame/includes/taito_f3.h
+++ b/src/mame/includes/taito_f3.h
@@ -82,12 +82,12 @@ public:
optional_ioport m_eepromin;
- UINT16 *m_videoram;
- UINT16 *m_spriteram;
- UINT16 *m_f3_vram;
- UINT16 *m_f3_line_ram;
- UINT16 *m_f3_pf_data;
- UINT16 *m_f3_pivot_ram;
+ std::unique_ptr<UINT16[]> m_videoram;
+ std::unique_ptr<UINT16[]> m_spriteram;
+ std::unique_ptr<UINT16[]> m_f3_vram;
+ std::unique_ptr<UINT16[]> m_f3_line_ram;
+ std::unique_ptr<UINT16[]> m_f3_pf_data;
+ std::unique_ptr<UINT16[]> m_f3_pivot_ram;
UINT32 m_coin_word[2];
int m_f3_game;
@@ -101,7 +101,7 @@ public:
tilemap_t *m_pf8_tilemap;
tilemap_t *m_pixel_layer;
tilemap_t *m_vram_layer;
- UINT16 *m_spriteram16_buffered;
+ std::unique_ptr<UINT16[]> m_spriteram16_buffered;
UINT16 m_f3_control_0[8];
UINT16 m_f3_control_1[8];
int m_flipscreen;
@@ -131,8 +131,8 @@ public:
int m_width_mask;
int m_twidth_mask;
int m_twidth_mask_bit;
- UINT8 *m_tile_opaque_sp;
- UINT8 *m_tile_opaque_pf[8];
+ std::unique_ptr<UINT8[]> m_tile_opaque_sp;
+ std::unique_ptr<UINT8[]> m_tile_opaque_pf[8];
UINT8 m_add_sat[256][256];
int m_alpha_s_1_1;
int m_alpha_s_1_2;
diff --git a/src/mame/includes/taito_l.h b/src/mame/includes/taito_l.h
index bd3730a3fd6..9ddecdb0c03 100644
--- a/src/mame/includes/taito_l.h
+++ b/src/mame/includes/taito_l.h
@@ -92,7 +92,6 @@ public:
DECLARE_WRITE8_MEMBER(mcu_control_w);
DECLARE_READ8_MEMBER(mcu_data_r);
DECLARE_READ8_MEMBER(mcu_control_r);
- DECLARE_WRITE8_MEMBER(sound_w);
DECLARE_READ8_MEMBER(mux_r);
DECLARE_WRITE8_MEMBER(mux_w);
DECLARE_WRITE8_MEMBER(mux_ctrl_w);
diff --git a/src/mame/includes/taito_z.h b/src/mame/includes/taito_z.h
index f865f418be3..f14335f4b7b 100644
--- a/src/mame/includes/taito_z.h
+++ b/src/mame/includes/taito_z.h
@@ -73,7 +73,6 @@ public:
DECLARE_WRITE16_MEMBER(cpua_ctrl_w);
DECLARE_WRITE16_MEMBER(chasehq_cpua_ctrl_w);
DECLARE_WRITE16_MEMBER(dblaxle_cpua_ctrl_w);
- DECLARE_READ16_MEMBER(eep_latch_r);
DECLARE_WRITE16_MEMBER(spacegun_output_bypass_w);
DECLARE_READ8_MEMBER(contcirc_input_bypass_r);
DECLARE_READ8_MEMBER(chasehq_input_bypass_r);
@@ -93,8 +92,6 @@ public:
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
DECLARE_WRITE16_MEMBER(taitoz_sound_w);
DECLARE_READ16_MEMBER(taitoz_sound_r);
- DECLARE_WRITE16_MEMBER(taitoz_msb_sound_w);
- DECLARE_READ16_MEMBER(taitoz_msb_sound_r);
DECLARE_WRITE8_MEMBER(taitoz_pancontrol);
DECLARE_READ16_MEMBER(sci_spriteframe_r);
DECLARE_WRITE16_MEMBER(sci_spriteframe_w);
diff --git a/src/mame/includes/taitoair.h b/src/mame/includes/taitoair.h
index 17400d7fa3c..2a0bc94cd12 100644
--- a/src/mame/includes/taitoair.h
+++ b/src/mame/includes/taitoair.h
@@ -67,7 +67,7 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
- bitmap_ind16 *m_framebuffer[2];
+ std::unique_ptr<bitmap_ind16> m_framebuffer[2];
/* 3d info */
INT16 m_frustumLeft;
@@ -76,9 +76,6 @@ public:
bool m_gradbank;
- DECLARE_READ16_MEMBER(dsp_m_r);
- DECLARE_WRITE16_MEMBER(dsp_m_w);
-
UINT16 m_dsp_test_object_type;
INT16 m_dsp_test_or_clip, m_dsp_test_and_clip;
INT16 m_dsp_test_x, m_dsp_test_y, m_dsp_test_z;
@@ -133,6 +130,5 @@ public:
void fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 header, INT32 x1, INT32 x2, INT32 sl1, INT32 sl2, INT32 y1, INT32 y2, INT32 *nx1, INT32 *nx2 );
void fill_poly( bitmap_ind16 &bitmap, const rectangle &cliprect, const struct taitoair_poly *q );
- int projectEyeCoordToScreen(float* projectionMatrix,const int Res,INT16* eyePoint3d,int type);
DECLARE_WRITE_LINE_MEMBER(irqhandler);
};
diff --git a/src/mame/includes/taitojc.h b/src/mame/includes/taitojc.h
index e4ee95a64d6..f334077dddb 100644
--- a/src/mame/includes/taitojc.h
+++ b/src/mame/includes/taitojc.h
@@ -6,42 +6,9 @@
*************************************************************************/
-#include "video/poly.h"
+#include "video/tc0780fpa.h"
#include "machine/taitoio.h"
-#define TAITOJC_POLYGON_FIFO_SIZE 0x20000
-
-struct taitojc_polydata
-{
- int tex_base_x;
- int tex_base_y;
- int tex_wrap_x;
- int tex_wrap_y;
-};
-
-class taitojc_renderer : public poly_manager<float, taitojc_polydata, 6, 10000>
-{
-public:
- taitojc_renderer(running_machine &machine, bitmap_ind16 *fb, bitmap_ind16 *zb, const UINT8 *texture_ram)
- : poly_manager<float, taitojc_polydata, 6, 10000>(machine)
- {
- m_framebuffer = fb;
- m_zbuffer = zb;
- m_texture = texture_ram;
- }
-
- void render_solid_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid);
- void render_shade_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid);
- void render_texture_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid);
-
- void render_polygons(UINT16 *polygon_fifo, int length);
-
-private:
- bitmap_ind16 *m_framebuffer;
- bitmap_ind16 *m_zbuffer;
- const UINT8 *m_texture;
-};
-
class taitojc_state : public driver_device
{
public:
@@ -60,7 +27,8 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
- m_analog_ports(*this, "AN")
+ m_analog_ports(*this, "AN"),
+ m_tc0780fpa(*this, "tc0780fpa")
{
m_mcu_output = 0;
m_speed_meter = 0;
@@ -85,33 +53,21 @@ public:
required_device<palette_device> m_palette;
optional_ioport_array<8> m_analog_ports;
- taitojc_renderer *m_renderer;
-
- int m_texture_x;
- int m_texture_y;
+ required_device<tc0780fpa_device> m_tc0780fpa;
UINT32 m_dsp_rom_pos;
- UINT16 m_dsp_tex_address;
- UINT16 m_dsp_tex_offset;
int m_first_dsp_reset;
INT16 m_viewport_data[3];
INT16 m_projection_data[3];
INT16 m_intersection_data[3];
- UINT8 *m_texture;
- bitmap_ind16 m_framebuffer;
- bitmap_ind16 m_zbuffer;
-
int m_gfx_index;
- UINT32 *m_char_ram;
- UINT32 *m_tile_ram;
+ std::unique_ptr<UINT32[]> m_char_ram;
+ std::unique_ptr<UINT32[]> m_tile_ram;
tilemap_t *m_tilemap;
- UINT16 *m_polygon_fifo;
- int m_polygon_fifo_ptr;
-
UINT8 m_mcu_comm_main;
UINT8 m_mcu_comm_hc11;
UINT8 m_mcu_data_main;
@@ -150,11 +106,6 @@ public:
DECLARE_READ16_MEMBER(dsp_rom_r);
DECLARE_WRITE16_MEMBER(dsp_rom_w);
- DECLARE_WRITE16_MEMBER(dsp_texture_w);
- DECLARE_READ16_MEMBER(dsp_texaddr_r);
- DECLARE_WRITE16_MEMBER(dsp_texaddr_w);
- DECLARE_WRITE16_MEMBER(dsp_polygon_fifo_w);
- DECLARE_WRITE16_MEMBER(dsp_unk2_w);
DECLARE_WRITE16_MEMBER(dsp_math_viewport_w);
DECLARE_WRITE16_MEMBER(dsp_math_projection_w);
@@ -185,5 +136,4 @@ public:
INTERRUPT_GEN_MEMBER(taitojc_vblank);
void draw_object(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 w1, UINT32 w2, UINT8 bank_type);
void draw_object_bank(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 bank_type, UINT8 pri);
- void taitojc_clear_frame();
};
diff --git a/src/mame/includes/tank8.h b/src/mame/includes/tank8.h
index 807e9c15209..2f9eac715c4 100644
--- a/src/mame/includes/tank8.h
+++ b/src/mame/includes/tank8.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/*************************************************************************
diff --git a/src/mame/includes/tankbust.h b/src/mame/includes/tankbust.h
index ccc3c344f71..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
{
@@ -37,7 +37,6 @@ public:
DECLARE_WRITE8_MEMBER(soundlatch_w);
DECLARE_WRITE8_MEMBER(e0xx_w);
DECLARE_READ8_MEMBER(debug_output_area_r);
- DECLARE_READ8_MEMBER(read_from_unmapped_memory);
DECLARE_READ8_MEMBER(some_changing_input);
DECLARE_WRITE8_MEMBER(background_videoram_w);
DECLARE_WRITE8_MEMBER(background_colorram_w);
diff --git a/src/mame/includes/taotaido.h b/src/mame/includes/taotaido.h
index 3db0c50bac7..3c7e566469c 100644
--- a/src/mame/includes/taotaido.h
+++ b/src/mame/includes/taotaido.h
@@ -28,10 +28,10 @@ public:
UINT16 m_sprite_character_bank_select[8];
UINT16 m_video_bank_select[8];
tilemap_t *m_bg_tilemap;
- UINT16 *m_spriteram_old;
- UINT16 *m_spriteram_older;
- UINT16 *m_spriteram2_old;
- UINT16 *m_spriteram2_older;
+ std::unique_ptr<UINT16[]> m_spriteram_old;
+ std::unique_ptr<UINT16[]> m_spriteram_older;
+ std::unique_ptr<UINT16[]> m_spriteram2_old;
+ std::unique_ptr<UINT16[]> m_spriteram2_older;
DECLARE_READ16_MEMBER(pending_command_r);
DECLARE_WRITE16_MEMBER(sound_command_w);
diff --git a/src/mame/includes/tatsumi.h b/src/mame/includes/tatsumi.h
index a8eb74d90fd..0b1aac7f23f 100644
--- a/src/mame/includes/tatsumi.h
+++ b/src/mame/includes/tatsumi.h
@@ -79,14 +79,14 @@ public:
tilemap_t *m_layer2;
tilemap_t *m_layer3;
bitmap_rgb32 m_temp_bitmap;
- UINT8 *m_apache3_road_x_ram;
+ std::unique_ptr<UINT8[]> m_apache3_road_x_ram;
UINT8 m_apache3_road_z;
- UINT16* m_roundup5_vram;
+ std::unique_ptr<UINT16[]> m_roundup5_vram;
UINT16 m_bigfight_bank;
UINT16 m_bigfight_last_bank;
UINT8 m_roundupt_crt_selected_reg;
UINT8 m_roundupt_crt_reg[64];
- UINT8* m_shadow_pen_array;
+ std::unique_ptr<UINT8[]> m_shadow_pen_array;
DECLARE_READ16_MEMBER(cyclwarr_sprite_r);
DECLARE_WRITE16_MEMBER(cyclwarr_sprite_w);
DECLARE_WRITE16_MEMBER(bigfight_a20000_w);
diff --git a/src/mame/includes/tceptor.h b/src/mame/includes/tceptor.h
index 1454d8c3d5d..5ec6d58a36d 100644
--- a/src/mame/includes/tceptor.h
+++ b/src/mame/includes/tceptor.h
@@ -44,7 +44,9 @@ public:
INT32 m_bg2_scroll_x;
INT32 m_bg2_scroll_y;
bitmap_ind16 m_temp_bitmap;
- UINT16 *m_sprite_ram_buffered;
+ std::unique_ptr<UINT16[]> m_sprite_ram_buffered;
+ std::unique_ptr<UINT8[]> m_decoded_16;
+ std::unique_ptr<UINT8[]> m_decoded_32;
int m_is_mask_spr[1024/16];
DECLARE_READ8_MEMBER(m68k_shared_r);
DECLARE_WRITE8_MEMBER(m68k_shared_w);
diff --git a/src/mame/includes/tecmo.h b/src/mame/includes/tecmo.h
index 51073c645dc..aed50ccd174 100644
--- a/src/mame/includes/tecmo.h
+++ b/src/mame/includes/tecmo.h
@@ -75,5 +75,4 @@ public:
virtual void video_start() override;
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
};
diff --git a/src/mame/includes/tetrisp2.h b/src/mame/includes/tetrisp2.h
index ee2aaeff6bc..9f65ee2fa19 100644
--- a/src/mame/includes/tetrisp2.h
+++ b/src/mame/includes/tetrisp2.h
@@ -45,7 +45,7 @@ public:
required_shared_ptr<UINT16> m_scroll_fg;
required_shared_ptr<UINT16> m_scroll_bg;
required_shared_ptr<UINT16> m_rotregs;
- UINT8 *m_priority;
+ std::unique_ptr<UINT8[]> m_priority;
optional_shared_ptr<UINT16> m_rocknms_sub_priority;
optional_shared_ptr<UINT16> m_rocknms_sub_vram_rot;
optional_shared_ptr<UINT16> m_rocknms_sub_vram_fg;
diff --git a/src/mame/includes/thepit.h b/src/mame/includes/thepit.h
index 121c50ad766..11852faab9e 100644
--- a/src/mame/includes/thepit.h
+++ b/src/mame/includes/thepit.h
@@ -27,7 +27,7 @@ public:
UINT8 m_flip_y;
tilemap_t *m_solid_tilemap;
tilemap_t *m_tilemap;
- UINT8 *m_dummy_tile;
+ std::unique_ptr<UINT8[]> m_dummy_tile;
UINT8 m_nmi_mask;
int m_question_address;
diff --git a/src/mame/includes/thief.h b/src/mame/includes/thief.h
index 96fa495667c..bc1d57ae8a8 100644
--- a/src/mame/includes/thief.h
+++ b/src/mame/includes/thief.h
@@ -4,9 +4,9 @@
#include "video/tms9927.h"
struct coprocessor_t {
- UINT8 *context_ram;
+ std::unique_ptr<UINT8[]> context_ram;
UINT8 bank;
- UINT8 *image_ram;
+ std::unique_ptr<UINT8[]> image_ram;
UINT8 param[0x9];
};
@@ -20,7 +20,7 @@ public:
m_tms(*this, "tms"),
m_palette(*this, "palette") { }
- UINT8 *m_videoram;
+ std::unique_ptr<UINT8[]> m_videoram;
UINT8 m_input_select;
UINT8 m_read_mask;
UINT8 m_write_mask;
diff --git a/src/mame/includes/thomson.h b/src/mame/includes/thomson.h
index 11e9adccec2..f8047501e7c 100644
--- a/src/mame/includes/thomson.h
+++ b/src/mame/includes/thomson.h
@@ -348,7 +348,6 @@ public:
optional_device<mc6854_device> m_mc6854;
- DECLARE_WRITE_LINE_MEMBER(write_centronics_perror);
DECLARE_WRITE_LINE_MEMBER(write_centronics_busy);
int m_centronics_busy;
@@ -621,8 +620,6 @@ protected:
void to7_floppy_reset();
void to9_floppy_init(void* int_base, void* ext_base);
void to9_floppy_reset();
- void to7_midi_update_irq ( );
- void to7_midi_ready_to_send_cb( );
};
/*----------- defined in video/thomson.c -----------*/
diff --git a/src/mame/includes/thoop2.h b/src/mame/includes/thoop2.h
index 643b8fef85a..066f4ffbde2 100644
--- a/src/mame/includes/thoop2.h
+++ b/src/mame/includes/thoop2.h
@@ -16,7 +16,7 @@ public:
required_shared_ptr<UINT16> m_vregs;
required_shared_ptr<UINT16> m_spriteram;
int m_sprite_count[5];
- int *m_sprite_table[5];
+ std::unique_ptr<int[]> m_sprite_table[5];
tilemap_t *m_pant[2];
DECLARE_WRITE16_MEMBER(OKIM6295_bankswitch_w);
DECLARE_WRITE16_MEMBER(thoop2_coin_w);
diff --git a/src/mame/includes/ti85.h b/src/mame/includes/ti85.h
index 00a7e1145c8..4eff29fff9b 100644
--- a/src/mame/includes/ti85.h
+++ b/src/mame/includes/ti85.h
@@ -100,7 +100,7 @@ public:
UINT8 m_interrupt_speed;
UINT8 m_port4_bit0;
UINT8 m_ti81_port_7_data;
- UINT8 *m_ti8x_ram;
+ std::unique_ptr<UINT8[]> m_ti8x_ram;
UINT8 m_PCR;
UINT8 m_red_out;
UINT8 m_white_out;
@@ -111,7 +111,7 @@ public:
int m_ti_screen_x_size;
int m_ti_screen_y_size;
int m_ti_number_of_frames;
- UINT8 * m_frames;
+ std::unique_ptr<UINT8[]> m_frames;
UINT8 * m_bios;
DECLARE_READ8_MEMBER(ti85_port_0000_r);
DECLARE_READ8_MEMBER(ti8x_keypad_r);
diff --git a/src/mame/includes/tiamc1.h b/src/mame/includes/tiamc1.h
index 0bbe03fe83a..a6a7096efb7 100644
--- a/src/mame/includes/tiamc1.h
+++ b/src/mame/includes/tiamc1.h
@@ -10,6 +10,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
+ std::unique_ptr<UINT8[]> m_videoram;
UINT8 *m_tileram;
UINT8 *m_charram;
UINT8 *m_spriteram_x;
@@ -21,7 +22,7 @@ public:
UINT8 m_bg_hshift;
tilemap_t *m_bg_tilemap1;
tilemap_t *m_bg_tilemap2;
- rgb_t *m_palette_ptr;
+ std::unique_ptr<rgb_t[]> m_palette_ptr;
DECLARE_WRITE8_MEMBER(tiamc1_control_w);
DECLARE_WRITE8_MEMBER(tiamc1_videoram_w);
DECLARE_WRITE8_MEMBER(tiamc1_bankswitch_w);
diff --git a/src/mame/includes/tmnt.h b/src/mame/includes/tmnt.h
index 1c68a9e3640..8b6d18a7c78 100644
--- a/src/mame/includes/tmnt.h
+++ b/src/mame/includes/tmnt.h
@@ -166,7 +166,6 @@ public:
INTERRUPT_GEN_MEMBER(tmnt_interrupt);
INTERRUPT_GEN_MEMBER(punkshot_interrupt);
INTERRUPT_GEN_MEMBER(lgtnfght_interrupt);
- void sound_nmi_callback( int param );
inline UINT32 tmnt2_get_word( UINT32 addr );
void tmnt2_put_word( address_space &space, UINT32 addr, UINT16 data );
DECLARE_WRITE8_MEMBER(volume_callback);
diff --git a/src/mame/includes/tnzs.h b/src/mame/includes/tnzs.h
index 8cfde271a57..9ac5c6688da 100644
--- a/src/mame/includes/tnzs.h
+++ b/src/mame/includes/tnzs.h
@@ -72,7 +72,7 @@ public:
optional_ioport m_an2;
/* sound-related */
- INT16 *m_sampledata[MAX_SAMPLES];
+ std::unique_ptr<INT16[]> m_sampledata[MAX_SAMPLES];
int m_samplesize[MAX_SAMPLES];
/* misc / mcu */
@@ -107,7 +107,6 @@ public:
DECLARE_WRITE8_MEMBER(mcu_arknoid2_w);
DECLARE_READ8_MEMBER(mcu_extrmatn_r);
DECLARE_WRITE8_MEMBER(mcu_extrmatn_w);
- DECLARE_WRITE8_MEMBER(tnzs_sync_kludge_w);
DECLARE_READ8_MEMBER(kageki_csport_r);
DECLARE_WRITE8_MEMBER(kageki_csport_w);
DECLARE_WRITE8_MEMBER(kabukiz_sound_bank_w);
@@ -136,9 +135,7 @@ public:
void screen_eof_tnzs(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(arknoid2_interrupt);
- TIMER_CALLBACK_MEMBER(kludge_callback);
- void tnzs_postload();
void mcu_reset();
void mcu_handle_coins(int coin);
};
diff --git a/src/mame/includes/toaplan1.h b/src/mame/includes/toaplan1.h
index 6d1f773dc65..7c67523b40a 100644
--- a/src/mame/includes/toaplan1.h
+++ b/src/mame/includes/toaplan1.h
@@ -43,15 +43,15 @@ public:
UINT8 m_vimana_credits;
UINT8 m_vimana_latch;
- UINT16 *m_pf4_tilevram16; /* || Drawn in this order */
- UINT16 *m_pf3_tilevram16; /* || */
- UINT16 *m_pf2_tilevram16; /* \||/ */
- UINT16 *m_pf1_tilevram16; /* \/ */
+ std::unique_ptr<UINT16[]> m_pf4_tilevram16; /* || Drawn in this order */
+ std::unique_ptr<UINT16[]> m_pf3_tilevram16; /* || */
+ std::unique_ptr<UINT16[]> m_pf2_tilevram16; /* \||/ */
+ std::unique_ptr<UINT16[]> m_pf1_tilevram16; /* \/ */
optional_shared_ptr<UINT16> m_spriteram;
- UINT16 *m_buffered_spriteram;
- UINT16 *m_spritesizeram16;
- UINT16 *m_buffered_spritesizeram16;
+ std::unique_ptr<UINT16[]> m_buffered_spriteram;
+ std::unique_ptr<UINT16[]> m_spritesizeram16;
+ std::unique_ptr<UINT16[]> m_buffered_spritesizeram16;
INT32 m_bcu_flipscreen; /* Tile controller flip flag */
INT32 m_fcu_flipscreen; /* Sprite controller flip flag */
diff --git a/src/mame/includes/toaplan2.h b/src/mame/includes/toaplan2.h
index 2bfc60e6026..198cd1ce6ec 100644
--- a/src/mame/includes/toaplan2.h
+++ b/src/mame/includes/toaplan2.h
@@ -151,7 +151,6 @@ public:
INTERRUPT_GEN_MEMBER(toaplan2_vblank_irq2);
INTERRUPT_GEN_MEMBER(toaplan2_vblank_irq4);
INTERRUPT_GEN_MEMBER(bbakraid_snd_interrupt);
- TIMER_CALLBACK_MEMBER(toaplan2_raise_irq);
void truxton2_postload();
void create_tx_tilemap(int dx = 0, int dx_flipped = 0);
void toaplan2_vblank_irq(int irq_line);
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/triplhnt.h b/src/mame/includes/triplhnt.h
index 2dea02c7de1..9d145c591a9 100644
--- a/src/mame/includes/triplhnt.h
+++ b/src/mame/includes/triplhnt.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/*************************************************************************
diff --git a/src/mame/includes/trs80m2.h b/src/mame/includes/trs80m2.h
index 89e170a5f71..305fd2bab49 100644
--- a/src/mame/includes/trs80m2.h
+++ b/src/mame/includes/trs80m2.h
@@ -94,10 +94,6 @@ public:
DECLARE_READ8_MEMBER( rtc_r );
DECLARE_READ8_MEMBER( nmi_r );
DECLARE_WRITE8_MEMBER( nmi_w );
- DECLARE_READ8_MEMBER( keyboard_busy_r );
- DECLARE_READ8_MEMBER( keyboard_data_r );
- DECLARE_WRITE8_MEMBER( keyboard_ctrl_w );
- DECLARE_WRITE8_MEMBER( keyboard_latch_w );
DECLARE_READ8_MEMBER( fdc_r );
DECLARE_WRITE8_MEMBER( fdc_w );
DECLARE_WRITE_LINE_MEMBER( de_w );
diff --git a/src/mame/includes/tryout.h b/src/mame/includes/tryout.h
index 90731fa74b6..e2ef35ded3e 100644
--- a/src/mame/includes/tryout.h
+++ b/src/mame/includes/tryout.h
@@ -27,8 +27,8 @@ public:
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
UINT8 m_vram_bank;
- UINT8 *m_vram;
- UINT8 *m_vram_gfx;
+ std::unique_ptr<UINT8[]> m_vram;
+ std::unique_ptr<UINT8[]> m_vram_gfx;
DECLARE_WRITE8_MEMBER(nmi_ack_w);
DECLARE_WRITE8_MEMBER(sound_w);
diff --git a/src/mame/includes/tubep.h b/src/mame/includes/tubep.h
index e94873e988b..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"
@@ -34,7 +34,7 @@ public:
optional_shared_ptr<UINT8> m_backgroundram;
required_shared_ptr<UINT8> m_sprite_colorsharedram;
optional_shared_ptr<UINT8> m_rjammer_backgroundram;
- UINT8 *m_spritemap;
+ std::unique_ptr<UINT8[]> m_spritemap;
UINT8 m_prom2[32];
UINT32 m_romD_addr;
UINT32 m_romEF_addr;
@@ -97,7 +97,6 @@ public:
UINT32 screen_update_rjammer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(tubep_scanline_callback);
TIMER_CALLBACK_MEMBER(rjammer_scanline_callback);
- TIMER_CALLBACK_MEMBER(sprite_timer_callback);
void draw_sprite();
void tubep_vblank_end();
void tubep_setup_save_state();
diff --git a/src/mame/includes/tumbleb.h b/src/mame/includes/tumbleb.h
index 3abcc4ed79a..a3b528310d6 100644
--- a/src/mame/includes/tumbleb.h
+++ b/src/mame/includes/tumbleb.h
@@ -126,7 +126,6 @@ public:
void tumbleb2_set_music_bank( int bank );
void tumbleb2_play_sound( okim6295_device *oki, int data );
void process_tumbleb2_music_command( okim6295_device *oki, int data );
- void tumblepb_patch_code(UINT16 offset);
void tumblepb_gfx_rearrange(int rgn);
void suprtrio_decrypt_code();
void suprtrio_decrypt_gfx();
diff --git a/src/mame/includes/tumblep.h b/src/mame/includes/tumblep.h
index 7cf651a4822..291fdffcbe2 100644
--- a/src/mame/includes/tumblep.h
+++ b/src/mame/includes/tumblep.h
@@ -33,13 +33,9 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<deco16ic_device> m_deco_tilegen1;
- DECLARE_READ16_MEMBER(tumblep_prot_r);
DECLARE_WRITE16_MEMBER(tumblep_sound_w);
- DECLARE_WRITE16_MEMBER(jumppop_sound_w);
DECLARE_READ16_MEMBER(tumblepop_controls_r);
- DECLARE_WRITE16_MEMBER(tumblep_oki_w);
DECLARE_DRIVER_INIT(tumblep);
virtual void machine_start() override;
UINT32 screen_update_tumblep(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void tumblep_patch_code(UINT16 offset);
};
diff --git a/src/mame/includes/turbo.h b/src/mame/includes/turbo.h
index c982ca3b7e4..e2d0ea2ab2d 100644
--- a/src/mame/includes/turbo.h
+++ b/src/mame/includes/turbo.h
@@ -63,7 +63,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
- UINT8 * m_buckrog_bitmap_ram;
+ std::unique_ptr<UINT8[]> m_buckrog_bitmap_ram;
/* machine states */
UINT8 m_i8279_scanlines;
@@ -162,7 +162,6 @@ public:
UINT32 screen_update_subroc3d(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_buckrog(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(delayed_i8255_w);
- TIMER_CALLBACK_MEMBER(update_sound_a);
DECLARE_WRITE8_MEMBER(turbo_sound_a_w);
DECLARE_WRITE8_MEMBER(turbo_sound_b_w);
DECLARE_WRITE8_MEMBER(turbo_sound_c_w);
diff --git a/src/mame/includes/turrett.h b/src/mame/includes/turrett.h
index bfa376f7d91..f883913f695 100644
--- a/src/mame/includes/turrett.h
+++ b/src/mame/includes/turrett.h
@@ -40,8 +40,6 @@ public:
DECLARE_WRITE32_MEMBER(video_w);
DECLARE_READ32_MEMBER(int_r);
DECLARE_WRITE32_MEMBER(int_w);
- DECLARE_READ32_MEMBER(sound_r);
- DECLARE_WRITE32_MEMBER(sound_w);
INPUT_CHANGED_MEMBER(ipt_change);
DECLARE_READ_LINE_MEMBER(sbrc2_r);
DECLARE_READ_LINE_MEMBER(sbrc3_r);
@@ -59,7 +57,7 @@ public:
// members
emu_timer *m_dma_timer;
UINT32 m_inputs_active;
- UINT16 *m_video_ram[2];
+ std::unique_ptr<UINT16[]> m_video_ram[2];
UINT16 m_last_pixel;
INT32 m_video_ctrl;
UINT16 m_video_fade;
diff --git a/src/mame/includes/twincobr.h b/src/mame/includes/twincobr.h
index bd9ae4478d6..6f6c603af24 100644
--- a/src/mame/includes/twincobr.h
+++ b/src/mame/includes/twincobr.h
@@ -39,9 +39,9 @@ public:
int m_dsp_execute;
UINT32 m_dsp_addr_w;
UINT32 m_main_ram_seg;
- UINT16 *m_bgvideoram16;
- UINT16 *m_fgvideoram16;
- UINT16 *m_txvideoram16;
+ std::unique_ptr<UINT16[]> m_bgvideoram16;
+ std::unique_ptr<UINT16[]> m_fgvideoram16;
+ std::unique_ptr<UINT16[]> m_txvideoram16;
size_t m_bgvideoram_size;
size_t m_fgvideoram_size;
size_t m_txvideoram_size;
@@ -106,7 +106,6 @@ public:
TILE_GET_INFO_MEMBER(get_tx_tile_info);
DECLARE_MACHINE_RESET(twincobr);
DECLARE_VIDEO_START(toaplan0);
- void copy_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority);
UINT32 screen_update_toaplan0(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(twincobr_interrupt);
INTERRUPT_GEN_MEMBER(wardner_interrupt);
@@ -115,7 +114,6 @@ public:
void twincobr_display(int enable);
void twincobr_flipscreen(int flip);
void twincobr_log_vram();
- void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void twincobr_dsp(int enable);
void toaplan0_control_w(int offset, int data);
void toaplan0_coin_dsp_w(address_space &space, int offset, int data);
diff --git a/src/mame/includes/tx0.h b/src/mame/includes/tx0.h
index dfcac3c46c8..8b96e52ff65 100644
--- a/src/mame/includes/tx0.h
+++ b/src/mame/includes/tx0.h
@@ -179,7 +179,6 @@ public:
void tx0_draw_char(bitmap_ind16 &bitmap, char character, int x, int y, int color);
void tx0_draw_string(bitmap_ind16 &bitmap, const char *buf, int x, int y, int color);
void tx0_draw_vline(bitmap_ind16 &bitmap, int x, int y, int height, int color);
- void tx0_draw_hline(bitmap_ind16 &bitmap, int x, int y, int width, int color);
void tx0_draw_panel_backdrop(bitmap_ind16 &bitmap);
void tx0_draw_panel(bitmap_ind16 &bitmap);
void tx0_typewriter_linefeed();
diff --git a/src/mame/includes/tx1.h b/src/mame/includes/tx1.h
index d15f49b807a..68f9a37739d 100644
--- a/src/mame/includes/tx1.h
+++ b/src/mame/includes/tx1.h
@@ -146,10 +146,10 @@ public:
sn74s516_t m_sn74s516;
vregs_t m_vregs;
- UINT8 *m_chr_bmp;
- UINT8 *m_obj_bmp;
- UINT8 *m_rod_bmp;
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<UINT8[]> m_chr_bmp;
+ std::unique_ptr<UINT8[]> m_obj_bmp;
+ std::unique_ptr<UINT8[]> m_rod_bmp;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
bool m_needs_update;
diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h
index a5f74aaefaf..09bc0408fdd 100644
--- a/src/mame/includes/ultratnk.h
+++ b/src/mame/includes/ultratnk.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Phil Stroffolino, Stefan Jokisch
/*************************************************************************
diff --git a/src/mame/includes/undrfire.h b/src/mame/includes/undrfire.h
index 073240d0359..b2cf973f6b2 100644
--- a/src/mame/includes/undrfire.h
+++ b/src/mame/includes/undrfire.h
@@ -45,7 +45,7 @@ public:
UINT16 m_coin_word;
UINT16 m_port_sel;
int m_frame_counter;
- struct uf_tempsprite *m_spritelist;
+ std::unique_ptr<uf_tempsprite[]> m_spritelist;
UINT16 m_rotate_ctrl[8];
UINT8 m_dislayer[6];
required_shared_ptr<UINT32> m_spriteram;
diff --git a/src/mame/includes/unico.h b/src/mame/includes/unico.h
index bf97ff20ef4..26ac4e35f26 100644
--- a/src/mame/includes/unico.h
+++ b/src/mame/includes/unico.h
@@ -17,12 +17,12 @@ public:
m_generic_paletteram_16(*this, "paletteram"),
m_generic_paletteram_32(*this, "paletteram") { }
- UINT16* m_vram;
- UINT16* m_scroll;
+ std::unique_ptr<UINT16[]> m_vram;
+ std::unique_ptr<UINT16[]> m_scroll;
tilemap_t *m_tilemap[3];
int m_sprites_scrolldx;
int m_sprites_scrolldy;
- UINT16* m_spriteram;
+ std::unique_ptr<UINT16[]> m_spriteram;
DECLARE_WRITE16_MEMBER(zeropnt_sound_bank_w);
DECLARE_READ16_MEMBER(unico_gunx_0_msb_r);
DECLARE_READ16_MEMBER(unico_guny_0_msb_r);
diff --git a/src/mame/includes/ut88.h b/src/mame/includes/ut88.h
index 46cbeed2680..a394965f096 100644
--- a/src/mame/includes/ut88.h
+++ b/src/mame/includes/ut88.h
@@ -70,8 +70,6 @@ public:
DECLARE_MACHINE_START(ut88mini);
DECLARE_MACHINE_RESET(ut88mini);
UINT32 screen_update_ut88(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_CALLBACK_MEMBER(ut88_reset);
- TIMER_CALLBACK_MEMBER(update_display);
protected:
required_memory_region m_region_maincpu;
diff --git a/src/mame/includes/v1050.h b/src/mame/includes/v1050.h
index 8f9fba0dee2..deecd9cf61b 100644
--- a/src/mame/includes/v1050.h
+++ b/src/mame/includes/v1050.h
@@ -105,9 +105,6 @@ public:
DECLARE_WRITE8_MEMBER( bank_w );
DECLARE_WRITE8_MEMBER( dint_w );
DECLARE_WRITE8_MEMBER( dvint_clr_w );
- DECLARE_READ8_MEMBER( keyboard_r );
- DECLARE_WRITE8_MEMBER( keyboard_w );
- DECLARE_WRITE8_MEMBER( p2_w );
DECLARE_WRITE8_MEMBER( misc_ppi_pa_w );
DECLARE_WRITE8_MEMBER( misc_ppi_pc_w );
DECLARE_READ8_MEMBER( rtc_ppi_pa_r );
@@ -127,7 +124,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( crtc_vs_w );
DECLARE_WRITE8_MEMBER(sasi_data_w);
DECLARE_WRITE_LINE_MEMBER(write_sasi_io);
- DECLARE_READ8_MEMBER( sasi_status_r );
DECLARE_WRITE8_MEMBER( sasi_ctrl_w );
WRITE_LINE_MEMBER( rtc_ppi_pa_0_w ){ m_rtc_ppi_pa = (m_rtc_ppi_pa & ~(1 << 0)) | ((state & 1) << 0); }
diff --git a/src/mame/includes/vc4000.h b/src/mame/includes/vc4000.h
index f9f6720aecf..ca19737872f 100644
--- a/src/mame/includes/vc4000.h
+++ b/src/mame/includes/vc4000.h
@@ -118,7 +118,7 @@ public:
UINT8 m_joy2_y;
UINT8 m_objects[512];
UINT8 m_irq_pause;
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
virtual void machine_start() override;
virtual void video_start() override;
DECLARE_PALETTE_INIT(vc4000);
diff --git a/src/mame/includes/vertigo.h b/src/mame/includes/vertigo.h
index ce7044c80a0..25d88a6ce72 100644
--- a/src/mame/includes/vertigo.h
+++ b/src/mame/includes/vertigo.h
@@ -49,8 +49,6 @@ public:
UINT32 vud2; /* v-counter up or down (stored in L2) */
UINT32 hc1; /* use h- or v-counter in L1 mode */
UINT32 ven; /* vector intensity enable */
-
-private:
};
struct microcode
diff --git a/src/mame/includes/vic10.h b/src/mame/includes/vic10.h
index e6292da901e..efcaeeaded0 100644
--- a/src/mame/includes/vic10.h
+++ b/src/mame/includes/vic10.h
@@ -80,7 +80,6 @@ public:
virtual void machine_reset() override;
void check_interrupts();
- UINT8 paddle_read(address_space &space, int which);
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -88,10 +87,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( vic_irq_w );
DECLARE_READ8_MEMBER( vic_videoram_r );
DECLARE_READ8_MEMBER( vic_colorram_r );
- DECLARE_READ8_MEMBER( vic_lightpen_x_cb );
- DECLARE_READ8_MEMBER( vic_lightpen_y_cb );
- DECLARE_READ8_MEMBER( vic_lightpen_button_cb );
- DECLARE_READ8_MEMBER( vic_rdy_cb );
DECLARE_READ8_MEMBER( sid_potx_r );
DECLARE_READ8_MEMBER( sid_poty_r );
diff --git a/src/mame/includes/vic20.h b/src/mame/includes/vic20.h
index 4586858e272..f90108165aa 100644
--- a/src/mame/includes/vic20.h
+++ b/src/mame/includes/vic20.h
@@ -91,9 +91,6 @@ public:
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ8_MEMBER( vic_videoram_r );
- DECLARE_READ8_MEMBER( vic_lightx_cb );
- DECLARE_READ8_MEMBER( vic_lighty_cb );
- DECLARE_READ8_MEMBER( vic_lightbut_cb );
DECLARE_WRITE_LINE_MEMBER( write_light_pen );
DECLARE_WRITE_LINE_MEMBER( write_user_joy0 );
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/victory.h b/src/mame/includes/victory.h
index 5df68773e47..499432ec87f 100644
--- a/src/mame/includes/victory.h
+++ b/src/mame/includes/victory.h
@@ -50,11 +50,11 @@ public:
required_shared_ptr<UINT8> m_charram;
UINT16 m_paletteram[0x40];
- UINT8 *m_bgbitmap;
- UINT8 *m_fgbitmap;
- UINT8 *m_rram;
- UINT8 *m_gram;
- UINT8 *m_bram;
+ std::unique_ptr<UINT8[]> m_bgbitmap;
+ std::unique_ptr<UINT8[]> m_fgbitmap;
+ std::unique_ptr<UINT8[]> m_rram;
+ std::unique_ptr<UINT8[]> m_gram;
+ std::unique_ptr<UINT8[]> m_bram;
UINT8 m_vblank_irq;
UINT8 m_fgcoll;
UINT8 m_fgcollx;
diff --git a/src/mame/includes/vigilant.h b/src/mame/includes/vigilant.h
index 6bc33c9149d..a83bea427eb 100644
--- a/src/mame/includes/vigilant.h
+++ b/src/mame/includes/vigilant.h
@@ -31,7 +31,7 @@ public:
int m_rear_color;
int m_rear_disable;
int m_rear_refresh;
- bitmap_ind16 *m_bg_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bg_bitmap;
// common
DECLARE_WRITE8_MEMBER(bank_select_w);
diff --git a/src/mame/includes/volfied.h b/src/mame/includes/volfied.h
index 17e58b8f90b..b809e001d8c 100644
--- a/src/mame/includes/volfied.h
+++ b/src/mame/includes/volfied.h
@@ -24,8 +24,8 @@ public:
m_screen(*this, "screen") { }
/* memory pointers */
- UINT16 * m_video_ram;
- UINT8 * m_cchip_ram;
+ std::unique_ptr<UINT16[]> m_video_ram;
+ std::unique_ptr<UINT8[]> m_cchip_ram;
/* video-related */
UINT16 m_video_ctrl;
diff --git a/src/mame/includes/vsnes.h b/src/mame/includes/vsnes.h
index ef280e2ec2d..08ecb2927aa 100644
--- a/src/mame/includes/vsnes.h
+++ b/src/mame/includes/vsnes.h
@@ -6,14 +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")
- { }
+ : 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;
@@ -22,14 +25,18 @@ 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];
int m_sound_fix;
UINT8 m_last_bank;
- UINT8* m_vram;
+ std::unique_ptr<UINT8[]> m_vram;
UINT8* m_vrom[2];
- UINT8* m_nt_ram[2];
+ std::unique_ptr<UINT8[]> m_nt_ram[2];
UINT8* m_nt_page[2][4];
UINT32 m_vrom_size[2];
int m_vrom_banks;
diff --git a/src/mame/includes/wangpc.h b/src/mame/includes/wangpc.h
index 0bfb9b6e838..05278e32671 100644
--- a/src/mame/includes/wangpc.h
+++ b/src/mame/includes/wangpc.h
@@ -153,7 +153,6 @@ public:
DECLARE_READ8_MEMBER( ppi_pb_r );
DECLARE_READ8_MEMBER( ppi_pc_r );
DECLARE_WRITE8_MEMBER( ppi_pc_w );
- DECLARE_WRITE_LINE_MEMBER( pit0_w );
DECLARE_WRITE_LINE_MEMBER( pit2_w );
DECLARE_WRITE_LINE_MEMBER( uart_dr_w );
DECLARE_WRITE_LINE_MEMBER( uart_tbre_w );
diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h
index adcca117690..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
@@ -46,12 +46,12 @@ public:
UINT8 m_blitter_window_enable;
UINT8 m_cocktail;
UINT8 m_port_select;
- rgb_t *m_palette_lookup;
+ std::unique_ptr<rgb_t[]> m_palette_lookup;
UINT8 m_blitterram[8];
UINT8 m_blitter_xor;
UINT8 m_blitter_remap_index;
const UINT8 *m_blitter_remap;
- UINT8 *m_blitter_remap_lookup;
+ std::unique_ptr<UINT8[]> m_blitter_remap_lookup;
DECLARE_WRITE8_MEMBER(williams_vram_select_w);
DECLARE_WRITE8_MEMBER(williams_cmos_w);
DECLARE_WRITE8_MEMBER(bubbles_cmos_w);
diff --git a/src/mame/includes/wiz.h b/src/mame/includes/wiz.h
index dceb6214a92..d4cb1f39f36 100644
--- a/src/mame/includes/wiz.h
+++ b/src/mame/includes/wiz.h
@@ -57,7 +57,6 @@ public:
int m_dsc0;
int m_dsc1;
- DECLARE_WRITE8_MEMBER(wiz_soundlatch_w);
DECLARE_READ8_MEMBER(wiz_protection_r);
DECLARE_WRITE8_MEMBER(wiz_coin_counter_w);
DECLARE_WRITE8_MEMBER(wiz_main_nmi_mask_w);
@@ -68,7 +67,6 @@ public:
DECLARE_WRITE8_MEMBER(wiz_char_bank_w);
DECLARE_WRITE8_MEMBER(wiz_flipx_w);
DECLARE_WRITE8_MEMBER(wiz_flipy_w);
- DECLARE_READ8_MEMBER(wiz_soundlatch_r);
DECLARE_WRITE8_MEMBER(stinger_explosion_w);
DECLARE_WRITE8_MEMBER(stinger_shot_w);
diff --git a/src/mame/includes/wolfpack.h b/src/mame/includes/wolfpack.h
index f4abe029c9b..e1d4628eb86 100644
--- a/src/mame/includes/wolfpack.h
+++ b/src/mame/includes/wolfpack.h
@@ -1,5 +1,11 @@
-// license:???
+// 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;
@@ -41,7 +48,7 @@ public:
UINT8 m_ship_pic;
UINT8 m_torpedo_h;
UINT8 m_torpedo_v;
- UINT8* m_LFSR;
+ std::unique_ptr<UINT8[]> m_LFSR;
bitmap_ind16 m_helper;
DECLARE_READ8_MEMBER(wolfpack_misc_r);
DECLARE_WRITE8_MEMBER(wolfpack_high_explo_w);
diff --git a/src/mame/includes/wpc_pin.h b/src/mame/includes/wpc_pin.h
index 7bebd6c78a5..27cf5cfc588 100644
--- a/src/mame/includes/wpc_pin.h
+++ b/src/mame/includes/wpc_pin.h
@@ -66,7 +66,6 @@ public:
DECLARE_WRITE8_MEMBER(wpc_sound_ctrl_w);
DECLARE_READ8_MEMBER(wpc_sound_data_r);
DECLARE_WRITE8_MEMBER(wpc_sound_data_w);
- DECLARE_WRITE8_MEMBER(wpc_sound_s11_w);
DECLARE_WRITE8_MEMBER(wpc_rombank_w);
DECLARE_WRITE8_MEMBER(wpc_dmdbank_w);
diff --git a/src/mame/includes/wswan.h b/src/mame/includes/wswan.h
index db0c4f0973b..5cdc8336f04 100644
--- a/src/mame/includes/wswan.h
+++ b/src/mame/includes/wswan.h
@@ -57,7 +57,7 @@ public:
UINT8 m_internal_eeprom[INTERNAL_EEPROM_SIZE];
UINT8 m_system_type;
SoundDMA m_sound_dma;
- UINT8 *m_ws_bios_bank;
+ std::unique_ptr<UINT8[]> m_ws_bios_bank;
UINT8 m_bios_disabled;
UINT8 m_rotate;
diff --git a/src/mame/includes/x1.h b/src/mame/includes/x1.h
index 216cbffa025..c20e9bf0375 100644
--- a/src/mame/includes/x1.h
+++ b/src/mame/includes/x1.h
@@ -104,13 +104,13 @@ public:
required_device<mc6845_device> m_crtc;
required_device<z80ctc_device> m_ctc;
- UINT8 *m_tvram; /**< Pointer for Text Video RAM */
- UINT8 *m_avram; /**< Pointer for Attribute Video RAM */
- UINT8 *m_kvram; /**< Pointer for Extended Kanji Video RAM (X1 Turbo) */
+ std::unique_ptr<UINT8[]> m_tvram; /**< Pointer for Text Video RAM */
+ std::unique_ptr<UINT8[]> m_avram; /**< Pointer for Attribute Video RAM */
+ std::unique_ptr<UINT8[]> m_kvram; /**< Pointer for Extended Kanji Video RAM (X1 Turbo) */
UINT8 *m_ipl_rom; /**< Pointer for IPL ROM */
- UINT8 *m_work_ram; /**< Pointer for base work RAM */
- UINT8 *m_emm_ram; /**< Pointer for EMM RAM */
- UINT8 *m_pcg_ram; /**< Pointer for PCG GFX RAM */
+ std::unique_ptr<UINT8[]> m_work_ram; /**< Pointer for base work RAM */
+ std::unique_ptr<UINT8[]> m_emm_ram; /**< Pointer for EMM RAM */
+ std::unique_ptr<UINT8[]> m_pcg_ram; /**< Pointer for PCG GFX RAM */
UINT8 *m_cg_rom; /**< Pointer for GFX ROM */
UINT8 *m_kanji_rom; /**< Pointer for Kanji ROMs */
int m_xstart, /**< Start X offset for screen drawing. */
@@ -121,7 +121,7 @@ public:
UINT8 m_vsync; /**< Screen V-Sync bit, active low */
UINT8 m_vdisp; /**< Screen V-Disp bit, active high */
UINT8 m_io_bank_mode; /**< Helper for special bitmap RMW phase. */
- UINT8 *m_gfx_bitmap_ram; /**< Pointer for bitmap layer RAM. */
+ std::unique_ptr<UINT8[]> m_gfx_bitmap_ram; /**< Pointer for bitmap layer RAM. */
UINT8 m_pcg_reset; /**< @todo Unused variable. */
UINT8 m_sub_obf; /**< MCU side: OBF flag active low, indicates that there are parameters in comm buffer. */
UINT8 m_ctc_irq_flag; /**< @todo Unused variable. */
@@ -156,7 +156,7 @@ public:
UINT8 m_key_irq_flag; /**< Keyboard IRQ pending. */
UINT8 m_key_irq_vector; /**< Keyboard IRQ vector. */
UINT32 m_emm_addr; /**< EMM RAM current address */
- UINT8 *m_pal_4096; /**< X1 Turbo Z: pointer for 4096 palette entries */
+ std::unique_ptr<UINT8[]> m_pal_4096; /**< X1 Turbo Z: pointer for 4096 palette entries */
UINT8 m_crtc_vreg[0x100], /**< CRTC register buffer. */
m_crtc_index; /**< CRTC register index. */
UINT8 m_is_turbo; /**< Machine type: (0) X1 Vanilla, (1) X1 Turbo */
@@ -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/includes/x68k.h b/src/mame/includes/x68k.h
index ea3fca06d38..f1aee48d2f0 100644
--- a/src/mame/includes/x68k.h
+++ b/src/mame/includes/x68k.h
@@ -113,8 +113,9 @@ public:
std::vector<UINT16> m_gvram;
std::vector<UINT16> m_spritereg;
- bitmap_ind16 *m_pcgbitmap;
- bitmap_ind16 *m_gfxbitmap;
+ bitmap_ind16 m_pcgbitmap;
+ bitmap_ind16 m_gfxbitmap;
+ bitmap_ind16 m_special;
void floppy_load_unload(bool load, floppy_image_device *dev);
int floppy_load(floppy_image_device *dev);
@@ -277,7 +278,6 @@ public:
DECLARE_WRITE8_MEMBER(ppi_port_c_w);
DECLARE_WRITE_LINE_MEMBER(fdc_irq);
DECLARE_WRITE8_MEMBER(x68k_ct_w);
- DECLARE_WRITE_LINE_MEMBER(x68k_rtc_alarm_irq);
DECLARE_WRITE8_MEMBER(x68030_adpcm_w);
DECLARE_WRITE_LINE_MEMBER(mfp_irq_callback);
DECLARE_WRITE_LINE_MEMBER(x68k_scsi_irq);
@@ -344,11 +344,6 @@ private:
void x68k_draw_sprites(bitmap_ind16 &bitmap, int priority, rectangle cliprect);
public:
- bitmap_rgb32* x68k_get_gfx_page(int pri,int type);
- attotime prescale(int val);
- void mfp_trigger_irq(int irq);
- void mfp_set_timer(int timer, unsigned char data);
- void mfp_recv_data(int data);
DECLARE_PALETTE_DECODER(GGGGGRRRRRBBBBBI);
protected:
diff --git a/src/mame/includes/xbox.h b/src/mame/includes/xbox.h
index 8dd923394f0..ea4db5c7db4 100644
--- a/src/mame/includes/xbox.h
+++ b/src/mame/includes/xbox.h
@@ -39,6 +39,8 @@ struct OHCIIsochronousTransferDescriptor {
UINT32 nexttd; // NextTD
UINT32 be; // BufferEnd
UINT32 offset[8]; // Offset/PacketStatusWord
+ UINT32 word0;
+ UINT32 word1;
};
enum OHCIRegisters {
@@ -193,7 +195,11 @@ public:
int execute_transfer(int address, int endpoint, int pid, UINT8 *buffer, int size);
private:
int address;
- int controldir;
+ int newaddress;
+ int controldirection;
+ int controltype;
+ int controlrecipient;
+ bool settingaddress;
int remain;
UINT8 *position;
};
@@ -214,6 +220,10 @@ public:
DECLARE_WRITE32_MEMBER(usbctrl_w);
DECLARE_READ32_MEMBER(smbus_r);
DECLARE_WRITE32_MEMBER(smbus_w);
+ DECLARE_READ8_MEMBER(superio_read);
+ DECLARE_WRITE8_MEMBER(superio_write);
+ DECLARE_READ8_MEMBER(superiors232_read);
+ DECLARE_WRITE8_MEMBER(superiors232_write);
DECLARE_READ32_MEMBER(audio_apu_r);
DECLARE_WRITE32_MEMBER(audio_apu_w);
DECLARE_READ32_MEMBER(audio_ac93_r);
@@ -232,6 +242,7 @@ public:
void usb_ohci_read_transfer_descriptor(UINT32 address);
void usb_ohci_writeback_transfer_descriptor(UINT32 address);
void usb_ohci_read_isochronous_transfer_descriptor(UINT32 address);
+ void usb_ohci_writeback_isochronous_transfer_descriptor(UINT32 address);
void dword_write_le(UINT8 *addr, UINT32 d);
void word_write_le(UINT8 *addr, UINT16 d);
void debug_generate_irq(int irq, bool active);
@@ -309,8 +320,15 @@ public:
OHCITransferDescriptor transfer_descriptor;
OHCIIsochronousTransferDescriptor isochronous_transfer_descriptor;
} ohcist;
+ struct superio_state
+ {
+ bool configuration_mode;
+ int index;
+ int selected;
+ UINT8 registers[16][256]; // 256 registers for up to 16 devices, registers 0-0x2f common to all
+ } superiost;
UINT8 pic16lc_buffer[0xff];
- nv2a_renderer *nvidia_nv2a;
+ std::unique_ptr<nv2a_renderer> nvidia_nv2a;
bool debug_irq_active;
int debug_irq_number;
required_device<cpu_device> m_maincpu;
diff --git a/src/mame/includes/xerox820.h b/src/mame/includes/xerox820.h
index 7dea6019200..cbac30d79da 100644
--- a/src/mame/includes/xerox820.h
+++ b/src/mame/includes/xerox820.h
@@ -91,8 +91,6 @@ public:
DECLARE_READ8_MEMBER( kbpio_pa_r );
DECLARE_WRITE8_MEMBER( kbpio_pa_w );
DECLARE_READ8_MEMBER( kbpio_pb_r );
- DECLARE_WRITE_LINE_MEMBER( intrq_w );
- DECLARE_WRITE_LINE_MEMBER( drq_w );
DECLARE_WRITE_LINE_MEMBER( fr_w );
DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w );
DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
diff --git a/src/mame/includes/xexex.h b/src/mame/includes/xexex.h
index 9b4da57ba5a..9cf2b53ae37 100644
--- a/src/mame/includes/xexex.h
+++ b/src/mame/includes/xexex.h
@@ -73,8 +73,6 @@ public:
required_device<k054338_device> m_k054338;
required_device<palette_device> m_palette;
required_device<screen_device> m_screen;
- DECLARE_READ16_MEMBER(K053247_scattered_word_r);
- DECLARE_WRITE16_MEMBER(K053247_scattered_word_w);
DECLARE_READ16_MEMBER(spriteram_mirror_r);
DECLARE_WRITE16_MEMBER(spriteram_mirror_w);
DECLARE_READ16_MEMBER(xexex_waitskip_r);
diff --git a/src/mame/includes/xmen.h b/src/mame/includes/xmen.h
index 9cf61b78295..d7bdceb6a65 100644
--- a/src/mame/includes/xmen.h
+++ b/src/mame/includes/xmen.h
@@ -30,8 +30,8 @@ public:
int m_layerpri[3];
/* for xmen6p */
- bitmap_ind16 *m_screen_right;
- bitmap_ind16 *m_screen_left;
+ std::unique_ptr<bitmap_ind16> m_screen_right;
+ std::unique_ptr<bitmap_ind16> m_screen_left;
optional_shared_ptr<UINT16> m_xmen6p_spriteramleft;
optional_shared_ptr<UINT16> m_xmen6p_spriteramright;
optional_shared_ptr<UINT16> m_xmen6p_tilemapleft;
diff --git a/src/mame/includes/xor100.h b/src/mame/includes/xor100.h
index d96e2bd9faf..8229a479044 100644
--- a/src/mame/includes/xor100.h
+++ b/src/mame/includes/xor100.h
@@ -96,7 +96,6 @@ public:
DECLARE_WRITE_LINE_MEMBER(ctc_z0_w);
DECLARE_WRITE_LINE_MEMBER(ctc_z1_w);
DECLARE_WRITE_LINE_MEMBER(ctc_z2_w);
- DECLARE_WRITE8_MEMBER(xor100_kbd_put);
int m_centronics_busy;
int m_centronics_select;
diff --git a/src/mame/includes/zaxxon.h b/src/mame/includes/zaxxon.h
index 93e8e4aff8e..e5942968e44 100644
--- a/src/mame/includes/zaxxon.h
+++ b/src/mame/includes/zaxxon.h
@@ -100,7 +100,6 @@ public:
inline int find_minimum_y(UINT8 value, int flip);
inline int find_minimum_x(UINT8 value, int flip);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 flipxmask, UINT16 flipymask);
- void zaxxonj_decode(const char *cputag);
};
diff --git a/src/mame/includes/zx.h b/src/mame/includes/zx.h
index a8ebbf17e51..20ccaa5d1c6 100644
--- a/src/mame/includes/zx.h
+++ b/src/mame/includes/zx.h
@@ -59,8 +59,6 @@ public:
void zx_tape_input();
void zx_ula_hsync();
- UINT32 get_ram_size();
-
protected:
enum
{
@@ -95,7 +93,8 @@ protected:
UINT8 m_prev_refresh;
UINT8 m_speaker_state;
- bitmap_ind16 *m_bitmap_render, *m_bitmap_buffer;
+ std::unique_ptr<bitmap_ind16> m_bitmap_render;
+ std::unique_ptr<bitmap_ind16> m_bitmap_buffer;
UINT16 m_ula_char_buffer;
double m_cassette_cur_level;
diff --git a/src/mame/layout/captflag.lay b/src/mame/layout/captflag.lay
new file mode 100644
index 00000000000..ed1770f57f8
--- /dev/null
+++ b/src/mame/layout/captflag.lay
@@ -0,0 +1,107 @@
+<?xml version="1.0" ?>
+<mamelayout version="2">
+
+ <!-- Left Flag (Red) -->
+ <element name="left_flag" defstate="0">
+ <!-- Top position -->
+ <!-- Falgpole -->
+ <rect state="0">
+ <bounds x="0.95" y="0.6" width="0.05" height="0.4"/>
+ <color red="0.8" green="0.8" blue="0.8"/>
+ </rect>
+ <!-- Flag -->
+ <rect state="0">
+ <bounds x="0" y="0" width="1" height="0.6"/>
+ <color red="1.0" green="0.0" blue="0.0"/>
+ </rect>
+
+ <rect state="1">
+ <bounds x="0.95" y="1.6" width="0.05" height="0.4"/>
+ <color red="0.8" green="0.8" blue="0.8"/>
+ </rect>
+ <rect state="1">
+ <bounds x="0" y="1" width="1" height="0.6"/>
+ <color red="1.0" green="0.0" blue="0.0"/>
+ </rect>
+
+ <rect state="2">
+ <bounds x="0.95" y="2.6" width="0.05" height="0.4"/>
+ <color red="0.8" green="0.8" blue="0.8"/>
+ </rect>
+ <rect state="2">
+ <bounds x="0" y="2" width="1" height="0.6"/>
+ <color red="1.0" green="0.0" blue="0.0"/>
+ </rect>
+
+ <rect state="3">
+ <bounds x="0.95" y="3.6" width="0.05" height="0.4"/>
+ <color red="0.8" green="0.8" blue="0.8"/>
+ </rect>
+ <rect state="3">
+ <bounds x="0" y="3" width="1" height="0.6"/>
+ <color red="1.0" green="0.0" blue="0.0"/>
+ </rect>
+ </element>
+
+ <!-- Right Flag (White) -->
+ <element name="right_flag" defstate="0">
+ <!-- Top position -->
+ <!-- Falgpole -->
+ <rect state="3">
+ <bounds x="0" y="0.6" width="0.05" height="0.4"/>
+ <color red="0.8" green="0.8" blue="0.8"/>
+ </rect>
+ <!-- Flag -->
+ <rect state="3">
+ <bounds x="0" y="0" width="1" height="0.6"/>
+ <color red="1.0" green="1.0" blue="1.0"/>
+ </rect>
+
+ <rect state="2">
+ <bounds x="0" y="1.6" width="0.05" height="0.4"/>
+ <color red="0.8" green="0.8" blue="0.8"/>
+ </rect>
+ <rect state="2">
+ <bounds x="0" y="1" width="1" height="0.6"/>
+ <color red="1.0" green="1.0" blue="1.0"/>
+ </rect>
+
+ <rect state="1">
+ <bounds x="0" y="2.6" width="0.05" height="0.4"/>
+ <color red="0.8" green="0.8" blue="0.8"/>
+ </rect>
+ <rect state="1">
+ <bounds x="0" y="2" width="1" height="0.6"/>
+ <color red="1.0" green="1.0" blue="1.0"/>
+ </rect>
+
+ <rect state="0">
+ <bounds x="0" y="3.6" width="0.05" height="0.4"/>
+ <color red="0.8" green="0.8" blue="0.8"/>
+ </rect>
+ <rect state="0">
+ <bounds x="0" y="3" width="1" height="0.6"/>
+ <color red="1.0" green="1.0" blue="1.0"/>
+ </rect>
+ </element>
+
+ <view name="Mechanical Torso (No Artwork)">
+
+ <!-- Screen (Face) -->
+ <screen index="0">
+ <bounds left="0" top="0" right="3" bottom="4" />
+ </screen>
+
+ <!-- Left Arm -->
+ <bezel name="left" element="left_flag">
+ <bounds x="-1.1" y="0" width="1" height="4"/>
+ </bezel>
+
+ <!-- Right Arm -->
+ <bezel name="right" element="right_flag">
+ <bounds x="3.1" y="0" width="1" height="4"/>
+ </bezel>
+
+ </view>
+
+</mamelayout>
diff --git a/src/mame/layout/fidel_cc.lay b/src/mame/layout/fidel_cc.lay
new file mode 100644
index 00000000000..6c10abb5180
--- /dev/null
+++ b/src/mame/layout/fidel_cc.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="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="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_fev.lay b/src/mame/layout/fidel_fev.lay
new file mode 100644
index 00000000000..8c4637ab6ce
--- /dev/null
+++ b/src/mame/layout/fidel_fev.lay
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="ledr" 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>
+ <element name="ledg" defstate="0">
+ <disk state="0"><color red="0.04" green="0.2" blue="0.046" /></disk>
+ <disk state="1"><color red="0.2" green="1.0" blue="0.23" /></disk>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="0" right="20" top="0" bottom="20" />
+
+ <bezel name="0.0" element="ledr"><bounds x="1" y="1" width="1" height="1" /></bezel>
+ <bezel name="0.1" element="ledr"><bounds x="1" y="2" width="1" height="1" /></bezel>
+ <bezel name="0.2" element="ledr"><bounds x="1" y="3" width="1" height="1" /></bezel>
+ <bezel name="0.3" element="ledr"><bounds x="1" y="4" width="1" height="1" /></bezel>
+ <bezel name="0.4" element="ledr"><bounds x="1" y="5" width="1" height="1" /></bezel>
+ <bezel name="0.5" element="ledr"><bounds x="1" y="6" width="1" height="1" /></bezel>
+ <bezel name="0.6" element="ledr"><bounds x="1" y="7" width="1" height="1" /></bezel>
+ <bezel name="0.7" element="ledr"><bounds x="1" y="8" width="1" height="1" /></bezel>
+
+ <bezel name="1.0" element="ledg"><bounds x="2" y="9" width="1" height="1" /></bezel>
+ <bezel name="1.1" element="ledg"><bounds x="3" y="9" width="1" height="1" /></bezel>
+ <bezel name="1.2" element="ledg"><bounds x="4" y="9" width="1" height="1" /></bezel>
+ <bezel name="1.3" element="ledg"><bounds x="5" y="9" width="1" height="1" /></bezel>
+ <bezel name="1.4" element="ledg"><bounds x="6" y="9" width="1" height="1" /></bezel>
+ <bezel name="1.5" element="ledg"><bounds x="7" y="9" width="1" height="1" /></bezel>
+ <bezel name="1.6" element="ledg"><bounds x="8" y="9" width="1" height="1" /></bezel>
+ <bezel name="1.7" element="ledg"><bounds x="9" y="9" width="1" height="1" /></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..b765ef5ddd1
--- /dev/null
+++ b/src/mame/layout/fidel_sc12.lay
@@ -0,0 +1,39 @@
+<?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="20" top="0" bottom="20" />
+
+ <bezel name="1.0" element="led"><bounds x="1" y="1" width="1" height="1" /></bezel>
+ <bezel name="1.1" element="led"><bounds x="1" y="2" width="1" height="1" /></bezel>
+ <bezel name="1.2" element="led"><bounds x="1" y="3" width="1" height="1" /></bezel>
+ <bezel name="1.3" element="led"><bounds x="1" y="4" width="1" height="1" /></bezel>
+ <bezel name="1.4" element="led"><bounds x="1" y="5" width="1" height="1" /></bezel>
+ <bezel name="1.5" element="led"><bounds x="1" y="6" width="1" height="1" /></bezel>
+ <bezel name="1.6" element="led"><bounds x="1" y="7" width="1" height="1" /></bezel>
+ <bezel name="1.7" element="led"><bounds x="1" y="8" width="1" height="1" /></bezel>
+
+ <bezel name="0.0" element="led"><bounds x="2" y="9" width="1" height="1" /></bezel>
+ <bezel name="0.1" element="led"><bounds x="3" y="9" width="1" height="1" /></bezel>
+ <bezel name="0.2" element="led"><bounds x="4" y="9" width="1" height="1" /></bezel>
+ <bezel name="0.3" element="led"><bounds x="5" y="9" width="1" height="1" /></bezel>
+ <bezel name="0.4" element="led"><bounds x="6" y="9" width="1" height="1" /></bezel>
+ <bezel name="0.5" element="led"><bounds x="7" y="9" width="1" height="1" /></bezel>
+ <bezel name="0.6" element="led"><bounds x="8" y="9" width="1" height="1" /></bezel>
+ <bezel name="0.7" element="led"><bounds x="9" y="9" width="1" height="1" /></bezel>
+
+ <bezel name="1.8" element="led"><bounds x="11" y="7" width="1" height="1" /></bezel>
+ <bezel name="0.8" element="led"><bounds x="11" y="8" width="1" height="1" /></bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/bridgec3.lay b/src/mame/layout/fidel_vbrc.lay
index 3fbbe99deb3..d28248fb36b 100644
--- a/src/mame/layout/bridgec3.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
new file mode 100644
index 00000000000..bb58b17b2ae
--- /dev/null
+++ b/src/mame/layout/fidel_vcc.lay
@@ -0,0 +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="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_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>
+
+
+<!-- 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="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>
+
+ <bezel name="1.7" element="led">
+ <bounds x="23.25" y="6.5" width="1.5" height="1.5" />
+ </bezel>
+ <bezel name="0.7" element="led">
+ <bounds x="22.25" y="17" width="1.5" height="1.5" />
+ </bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/vsc.lay b/src/mame/layout/fidel_vsc.lay
index fdd03423e5b..c56ae1b11db 100644
--- a/src/mame/layout/vsc.lay
+++ b/src/mame/layout/fidel_vsc.lay
@@ -20,222 +20,222 @@
</rect>
</element>
- <view name="Default Layout">
+ <view name="Internal Layout">
<!-- background -->
<bezel element="background">
<bounds left="00" top="00" right="82" bottom="90" />
</bezel>
<!-- Column A -->
- <bezel name="led_a1" element="led" inputtag="COL_A" inputmask="0x80">
+ <bezel name="4.7" element="led" inputtag="IN.0" inputmask="0x80">
<bounds x="5" y="15" width="2" height="2" />
</bezel>
- <bezel name="led_a2" element="led" inputtag="COL_A" inputmask="0x40">
+ <bezel name="4.6" element="led" inputtag="IN.0" inputmask="0x40">
<bounds x="5" y="25" width="2" height="2" />
</bezel>
- <bezel name="led_a3" element="led" inputtag="COL_A" inputmask="0x20">
+ <bezel name="4.5" element="led" inputtag="IN.0" inputmask="0x20">
<bounds x="5" y="35" width="2" height="2" />
</bezel>
- <bezel name="led_a4" element="led" inputtag="COL_A" inputmask="0x10">
+ <bezel name="4.4" element="led" inputtag="IN.0" inputmask="0x10">
<bounds x="5" y="45" width="2" height="2" />
</bezel>
- <bezel name="led_a5" element="led" inputtag="COL_A" inputmask="0x08">
+ <bezel name="4.3" element="led" inputtag="IN.0" inputmask="0x08">
<bounds x="5" y="55" width="2" height="2" />
</bezel>
- <bezel name="led_a6" element="led" inputtag="COL_A" inputmask="0x04">
+ <bezel name="4.2" element="led" inputtag="IN.0" inputmask="0x04">
<bounds x="5" y="65" width="2" height="2" />
</bezel>
- <bezel name="led_a7" element="led" inputtag="COL_A" inputmask="0x02">
+ <bezel name="4.1" element="led" inputtag="IN.0" inputmask="0x02">
<bounds x="5" y="75" width="2" height="2" />
</bezel>
- <bezel name="led_a8" element="led" inputtag="COL_A" inputmask="0x01">
+ <bezel name="4.0" element="led" inputtag="IN.0" inputmask="0x01">
<bounds x="5" y="85" width="2" height="2" />
</bezel>
<!-- Column B -->
- <bezel name="led_b1" element="led" inputtag="COL_B" inputmask="0x80">
+ <bezel name="5.7" element="led" inputtag="IN.1" inputmask="0x80">
<bounds x="15" y="15" width="2" height="2" />
</bezel>
- <bezel name="led_b2" element="led" inputtag="COL_B" inputmask="0x40">
+ <bezel name="5.6" element="led" inputtag="IN.1" inputmask="0x40">
<bounds x="15" y="25" width="2" height="2" />
</bezel>
- <bezel name="led_b3" element="led" inputtag="COL_B" inputmask="0x20">
+ <bezel name="5.5" element="led" inputtag="IN.1" inputmask="0x20">
<bounds x="15" y="35" width="2" height="2" />
</bezel>
- <bezel name="led_b4" element="led" inputtag="COL_B" inputmask="0x10">
+ <bezel name="5.4" element="led" inputtag="IN.1" inputmask="0x10">
<bounds x="15" y="45" width="2" height="2" />
</bezel>
- <bezel name="led_b5" element="led" inputtag="COL_B" inputmask="0x08">
+ <bezel name="5.3" element="led" inputtag="IN.1" inputmask="0x08">
<bounds x="15" y="55" width="2" height="2" />
</bezel>
- <bezel name="led_b6" element="led" inputtag="COL_B" inputmask="0x04">
+ <bezel name="5.2" element="led" inputtag="IN.1" inputmask="0x04">
<bounds x="15" y="65" width="2" height="2" />
</bezel>
- <bezel name="led_b7" element="led" inputtag="COL_B" inputmask="0x02">
+ <bezel name="5.1" element="led" inputtag="IN.1" inputmask="0x02">
<bounds x="15" y="75" width="2" height="2" />
</bezel>
- <bezel name="led_b8" element="led" inputtag="COL_B" inputmask="0x01">
+ <bezel name="5.0" element="led" inputtag="IN.1" inputmask="0x01">
<bounds x="15" y="85" width="2" height="2" />
</bezel>
<!-- Column C -->
- <bezel name="led_c1" element="led" inputtag="COL_C" inputmask="0x80">
+ <bezel name="6.7" element="led" inputtag="IN.2" inputmask="0x80">
<bounds x="25" y="15" width="2" height="2" />
</bezel>
- <bezel name="led_c2" element="led" inputtag="COL_C" inputmask="0x40">
+ <bezel name="6.6" element="led" inputtag="IN.2" inputmask="0x40">
<bounds x="25" y="25" width="2" height="2" />
</bezel>
- <bezel name="led_c3" element="led" inputtag="COL_C" inputmask="0x20">
+ <bezel name="6.5" element="led" inputtag="IN.2" inputmask="0x20">
<bounds x="25" y="35" width="2" height="2" />
</bezel>
- <bezel name="led_c4" element="led" inputtag="COL_C" inputmask="0x10">
+ <bezel name="6.4" element="led" inputtag="IN.2" inputmask="0x10">
<bounds x="25" y="45" width="2" height="2" />
</bezel>
- <bezel name="led_c5" element="led" inputtag="COL_C" inputmask="0x08">
+ <bezel name="6.3" element="led" inputtag="IN.2" inputmask="0x08">
<bounds x="25" y="55" width="2" height="2" />
</bezel>
- <bezel name="led_c6" element="led" inputtag="COL_C" inputmask="0x04">
+ <bezel name="6.2" element="led" inputtag="IN.2" inputmask="0x04">
<bounds x="25" y="65" width="2" height="2" />
</bezel>
- <bezel name="led_c7" element="led" inputtag="COL_C" inputmask="0x02">
+ <bezel name="6.1" element="led" inputtag="IN.2" inputmask="0x02">
<bounds x="25" y="75" width="2" height="2" />
</bezel>
- <bezel name="led_c8" element="led" inputtag="COL_C" inputmask="0x01">
+ <bezel name="6.0" element="led" inputtag="IN.2" inputmask="0x01">
<bounds x="25" y="85" width="2" height="2" />
</bezel>
<!-- Column D -->
- <bezel name="led_d1" element="led" inputtag="COL_D" inputmask="0x80">
+ <bezel name="7.7" element="led" inputtag="IN.3" inputmask="0x80">
<bounds x="35" y="15" width="2" height="2" />
</bezel>
- <bezel name="led_d2" element="led" inputtag="COL_D" inputmask="0x40">
+ <bezel name="7.6" element="led" inputtag="IN.3" inputmask="0x40">
<bounds x="35" y="25" width="2" height="2" />
</bezel>
- <bezel name="led_d3" element="led" inputtag="COL_D" inputmask="0x20">
+ <bezel name="7.5" element="led" inputtag="IN.3" inputmask="0x20">
<bounds x="35" y="35" width="2" height="2" />
</bezel>
- <bezel name="led_d4" element="led" inputtag="COL_D" inputmask="0x10">
+ <bezel name="7.4" element="led" inputtag="IN.3" inputmask="0x10">
<bounds x="35" y="45" width="2" height="2" />
</bezel>
- <bezel name="led_d5" element="led" inputtag="COL_D" inputmask="0x08">
+ <bezel name="7.3" element="led" inputtag="IN.3" inputmask="0x08">
<bounds x="35" y="55" width="2" height="2" />
</bezel>
- <bezel name="led_d6" element="led" inputtag="COL_D" inputmask="0x04">
+ <bezel name="7.2" element="led" inputtag="IN.3" inputmask="0x04">
<bounds x="35" y="65" width="2" height="2" />
</bezel>
- <bezel name="led_d7" element="led" inputtag="COL_D" inputmask="0x02">
+ <bezel name="7.1" element="led" inputtag="IN.3" inputmask="0x02">
<bounds x="35" y="75" width="2" height="2" />
</bezel>
- <bezel name="led_d8" element="led" inputtag="COL_D" inputmask="0x01">
+ <bezel name="7.0" element="led" inputtag="IN.3" inputmask="0x01">
<bounds x="35" y="85" width="2" height="2" />
</bezel>
<!-- Column E -->
- <bezel name="led_e1" element="led" inputtag="COL_E" inputmask="0x80">
+ <bezel name="8.7" element="led" inputtag="IN.4" inputmask="0x80">
<bounds x="45" y="15" width="2" height="2" />
</bezel>
- <bezel name="led_e2" element="led" inputtag="COL_E" inputmask="0x40">
+ <bezel name="8.6" element="led" inputtag="IN.4" inputmask="0x40">
<bounds x="45" y="25" width="2" height="2" />
</bezel>
- <bezel name="led_e3" element="led" inputtag="COL_E" inputmask="0x20">
+ <bezel name="8.5" element="led" inputtag="IN.4" inputmask="0x20">
<bounds x="45" y="35" width="2" height="2" />
</bezel>
- <bezel name="led_e4" element="led" inputtag="COL_E" inputmask="0x10">
+ <bezel name="8.4" element="led" inputtag="IN.4" inputmask="0x10">
<bounds x="45" y="45" width="2" height="2" />
</bezel>
- <bezel name="led_e5" element="led" inputtag="COL_E" inputmask="0x08">
+ <bezel name="8.3" element="led" inputtag="IN.4" inputmask="0x08">
<bounds x="45" y="55" width="2" height="2" />
</bezel>
- <bezel name="led_e6" element="led" inputtag="COL_E" inputmask="0x04">
+ <bezel name="8.2" element="led" inputtag="IN.4" inputmask="0x04">
<bounds x="45" y="65" width="2" height="2" />
</bezel>
- <bezel name="led_e7" element="led" inputtag="COL_E" inputmask="0x02">
+ <bezel name="8.1" element="led" inputtag="IN.4" inputmask="0x02">
<bounds x="45" y="75" width="2" height="2" />
</bezel>
- <bezel name="led_e8" element="led" inputtag="COL_E" inputmask="0x01">
+ <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="led_f1" element="led" inputtag="COL_F" inputmask="0x80">
+ <bezel name="9.7" element="led" inputtag="IN.5" inputmask="0x80">
<bounds x="55" y="15" width="2" height="2" />
</bezel>
- <bezel name="led_f2" element="led" inputtag="COL_F" inputmask="0x40">
+ <bezel name="9.6" element="led" inputtag="IN.5" inputmask="0x40">
<bounds x="55" y="25" width="2" height="2" />
</bezel>
- <bezel name="led_f3" element="led" inputtag="COL_F" inputmask="0x20">
+ <bezel name="9.5" element="led" inputtag="IN.5" inputmask="0x20">
<bounds x="55" y="35" width="2" height="2" />
</bezel>
- <bezel name="led_f4" element="led" inputtag="COL_F" inputmask="0x10">
+ <bezel name="9.4" element="led" inputtag="IN.5" inputmask="0x10">
<bounds x="55" y="45" width="2" height="2" />
</bezel>
- <bezel name="led_f5" element="led" inputtag="COL_F" inputmask="0x08">
+ <bezel name="9.3" element="led" inputtag="IN.5" inputmask="0x08">
<bounds x="55" y="55" width="2" height="2" />
</bezel>
- <bezel name="led_f6" element="led" inputtag="COL_F" inputmask="0x04">
+ <bezel name="9.2" element="led" inputtag="IN.5" inputmask="0x04">
<bounds x="55" y="65" width="2" height="2" />
</bezel>
- <bezel name="led_f7" element="led" inputtag="COL_F" inputmask="0x02">
+ <bezel name="9.1" element="led" inputtag="IN.5" inputmask="0x02">
<bounds x="55" y="75" width="2" height="2" />
</bezel>
- <bezel name="led_f8" element="led" inputtag="COL_F" inputmask="0x01">
+ <bezel name="9.0" element="led" inputtag="IN.5" inputmask="0x01">
<bounds x="55" y="85" width="2" height="2" />
</bezel>
<!-- Column G -->
- <bezel name="led_g1" element="led" inputtag="COL_G" inputmask="0x80">
+ <bezel name="10.7" element="led" inputtag="IN.6" inputmask="0x80">
<bounds x="65" y="15" width="2" height="2" />
</bezel>
- <bezel name="led_g2" element="led" inputtag="COL_G" inputmask="0x40">
+ <bezel name="10.6" element="led" inputtag="IN.6" inputmask="0x40">
<bounds x="65" y="25" width="2" height="2" />
</bezel>
- <bezel name="led_g3" element="led" inputtag="COL_G" inputmask="0x20">
+ <bezel name="10.5" element="led" inputtag="IN.6" inputmask="0x20">
<bounds x="65" y="35" width="2" height="2" />
</bezel>
- <bezel name="led_g4" element="led" inputtag="COL_G" inputmask="0x10">
+ <bezel name="10.4" element="led" inputtag="IN.6" inputmask="0x10">
<bounds x="65" y="45" width="2" height="2" />
</bezel>
- <bezel name="led_g5" element="led" inputtag="COL_G" inputmask="0x08">
+ <bezel name="10.3" element="led" inputtag="IN.6" inputmask="0x08">
<bounds x="65" y="55" width="2" height="2" />
</bezel>
- <bezel name="led_g6" element="led" inputtag="COL_G" inputmask="0x04">
+ <bezel name="10.2" element="led" inputtag="IN.6" inputmask="0x04">
<bounds x="65" y="65" width="2" height="2" />
</bezel>
- <bezel name="led_g7" element="led" inputtag="COL_G" inputmask="0x02">
+ <bezel name="10.1" element="led" inputtag="IN.6" inputmask="0x02">
<bounds x="65" y="75" width="2" height="2" />
</bezel>
- <bezel name="led_g8" element="led" inputtag="COL_G" inputmask="0x01">
+ <bezel name="10.0" element="led" inputtag="IN.6" inputmask="0x01">
<bounds x="65" y="85" width="2" height="2" />
</bezel>
<!-- Column H -->
- <bezel name="led_h1" element="led" inputtag="COL_H" inputmask="0x80">
+ <bezel name="11.7" element="led" inputtag="IN.7" inputmask="0x80">
<bounds x="75" y="15" width="2" height="2" />
</bezel>
- <bezel name="led_h2" element="led" inputtag="COL_H" inputmask="0x40">
+ <bezel name="11.6" element="led" inputtag="IN.7" inputmask="0x40">
<bounds x="75" y="25" width="2" height="2" />
</bezel>
- <bezel name="led_h3" element="led" inputtag="COL_H" inputmask="0x20">
+ <bezel name="11.5" element="led" inputtag="IN.7" inputmask="0x20">
<bounds x="75" y="35" width="2" height="2" />
</bezel>
- <bezel name="led_h4" element="led" inputtag="COL_H" inputmask="0x10">
+ <bezel name="11.4" element="led" inputtag="IN.7" inputmask="0x10">
<bounds x="75" y="45" width="2" height="2" />
</bezel>
- <bezel name="led_h5" element="led" inputtag="COL_H" inputmask="0x08">
+ <bezel name="11.3" element="led" inputtag="IN.7" inputmask="0x08">
<bounds x="75" y="55" width="2" height="2" />
</bezel>
- <bezel name="led_h6" element="led" inputtag="COL_H" inputmask="0x04">
+ <bezel name="11.2" element="led" inputtag="IN.7" inputmask="0x04">
<bounds x="75" y="65" width="2" height="2" />
</bezel>
- <bezel name="led_h7" element="led" inputtag="COL_H" inputmask="0x02">
+ <bezel name="11.1" element="led" inputtag="IN.7" inputmask="0x02">
<bounds x="75" y="75" width="2" height="2" />
</bezel>
- <bezel name="led_h8" element="led" inputtag="COL_H" inputmask="0x01">
+ <bezel name="11.0" element="led" inputtag="IN.7" inputmask="0x01">
<bounds x="75" y="85" width="2" height="2" />
</bezel>
<!-- Problem mode LED -->
- <bezel name="pm_led" element="led">
+ <bezel name="0.7" element="led">
<bounds x="69" y="5" width="2" height="2" />
</bezel>
@@ -246,10 +246,10 @@
<bezel name="digit2" element="digit">
<bounds x="36" y="2" width="4" height="8" />
</bezel>
- <bezel name="up_dot" element="led">
+ <bezel name="2.7" element="led">
<bounds x="42" y="3" width="1" height="1" />
</bezel>
- <bezel name="low_dot" element="led">
+ <bezel name="3.7" element="led">
<bounds x="42" y="8" width="1" height="1" />
</bezel>
<bezel name="digit1" element="digit">
diff --git a/src/mame/layout/fidelz80.lay b/src/mame/layout/fidelz80.lay
deleted file mode 100644
index c9e2907e5bc..00000000000
--- a/src/mame/layout/fidelz80.lay
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0"?>
-<mamelayout version="2">
- <element name="digit" defstate="0">
- <led7seg>
- <color red="0.75" green="0.0" blue="0.0" />
- </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>
- </element>
- <element name="check">
- <text string="CHECK">
- <color red="1.0" green="1.0" blue="1.0" /></text>
- </element>
- <element name="lose">
- <text string="I LOSE">
- <color red="1.0" green="1.0" blue="1.0" /></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>
-
- <view name="Default Layout">
- <!-- Black background -->
- <bezel element="background">
- <bounds left="00" top="00" right="240" bottom="95" />
- </bezel>
-
- <bezel name="digit0" element="digit">
- <bounds x="10" y="15" width="50" height="80" />
- </bezel>
- <bezel name="digit1" element="digit">
- <bounds x="70" y="15" width="50" height="80" />
- </bezel>
- <bezel name="digit2" element="digit">
- <bounds x="130" y="15" width="50" height="80" />
- </bezel>
- <bezel name="digit3" element="digit">
- <bounds x="190" y="15" width="50" height="80" />
- </bezel>
- <bezel name="led0" element="led">
- <bounds x="10" y="00" width="10" height="10" />
- </bezel>
- <bezel name="led1" 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" />
- </bezel>
- </view>
-</mamelayout>
diff --git a/src/mame/layout/lantutor.lay b/src/mame/layout/lantutor.lay
index bfdf2189350..be16b9a8015 100644
--- a/src/mame/layout/lantutor.lay
+++ b/src/mame/layout/lantutor.lay
@@ -3,7 +3,7 @@
<!-- define elements -->
-<!-- note: the TI Language Tutor 14seg digits look different from MAME's default, most notably the right half is wider -->
+<!-- note: TI's alphanumeric 14seg digits look different from MAME's default, most notably the right half is wider -->
<element name="digit" defstate="0">
<led14seg><color red="0.2" green="1.0" blue="0.85" /></led14seg>
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/prophet600.lay b/src/mame/layout/prophet600.lay
new file mode 100644
index 00000000000..e89e62e86fc
--- /dev/null
+++ b/src/mame/layout/prophet600.lay
@@ -0,0 +1,35 @@
+<!-- mirage.lay -->
+<!-- 2016-01-09: Initial version. [R. Belmont] -->
+
+<mamelayout version="2">
+
+ <element name="digit" defstate="0">
+ <led7seg>
+ <color red="0.85" green="0.10" blue="0.10" />
+ </led7seg>
+ </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="0" right="42" bottom="28" />
+ </backdrop>
+
+ <!-- LEDs -->
+ <bezel name="digit0" element="digit">
+ <bounds left="2" top="0" right="20" bottom="23" />
+ </bezel>
+ <bezel name="digit1" element="digit">
+ <bounds left="22" top="0" right="40" bottom="23" />
+ </bezel>
+ </view>
+
+</mamelayout>
diff --git a/src/mame/layout/rungun_dual.lay b/src/mame/layout/rungun_dual.lay
index da540d918ce..c2840a9db5a 100644
--- a/src/mame/layout/rungun_dual.lay
+++ b/src/mame/layout/rungun_dual.lay
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<mamelayout version="2">
- <!-- the MAME core has no real concept of demuxing a 60hz output across 2 screens, so this is a little ugly -->
-
+ <!-- the MAME core has no real concept of demuxing a 60hz output across 2 screens, so this is a little ugly -->
+
<view name="Demultiplexed Output">
<screen index="0">
<bounds x="0" y="0" width="4" height="3" />
@@ -11,23 +11,23 @@
</screen>
</view>
-
- <view name="First Screen">
- <screen index="0">
- <bounds x="4.03" y="0" width="4" height="3" />
- </screen>
- </view>
- <view name="Second Screen">
- <!-- if we don't render the first screen then MAME never calls the update function so the data for the 2nd never gets rendered :/ -->
- <screen index="0">
- <bounds x="0" y="0" width="1" height="1" />
- </screen>
+ <view name="First Screen">
+ <screen index="0">
+ <bounds x="4.03" y="0" width="4" height="3" />
+ </screen>
+ </view>
+
+ <view name="Second Screen">
+ <!-- if we don't render the first screen then MAME never calls the update function so the data for the 2nd never gets rendered :/ -->
+ <screen index="0">
+ <bounds x="0" y="0" width="1" height="1" />
+ </screen>
- <screen index="1">
- <bounds x="0" y="0" width="4" height="3" />
- </screen>
- </view>
+ <screen index="1">
+ <bounds x="0" y="0" width="4" height="3" />
+ </screen>
+ </view>
</mamelayout>
diff --git a/src/mame/layout/snspell.lay b/src/mame/layout/snspell.lay
index e84c2e9fdfb..185868cce5a 100644
--- a/src/mame/layout/snspell.lay
+++ b/src/mame/layout/snspell.lay
@@ -3,7 +3,7 @@
<!-- define elements -->
-<!-- note: the TI Speak & Spell 14seg digits look different from MAME's default, most notably the right half is wider -->
+<!-- note: TI's alphanumeric 14seg digits look different from MAME's default, most notably the right half is wider -->
<element name="digit" defstate="0">
<led14seg><color red="0.2" green="1.0" blue="0.85" /></led14seg>
diff --git a/src/mame/layout/spellb.lay b/src/mame/layout/spellb.lay
new file mode 100644
index 00000000000..f5de9d31681
--- /dev/null
+++ b/src/mame/layout/spellb.lay
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- define elements -->
+
+<!-- file is copied from, and identical to snspell.lay -->
+
+<!-- note: TI's alphanumeric 14seg digits look different from MAME's default, most notably the right half is wider -->
+
+ <element name="digit" defstate="0">
+ <led14seg><color red="0.2" green="1.0" blue="0.85" /></led14seg>
+ </element>
+
+<!-- add our own for DP(display point) and the custom AP(apostrophe) segments -->
+
+ <element name="lamp_dp" defstate="0">
+ <disk state="0"><color red="0.0235" green="0.1255" blue="0.1059" /></disk>
+ <disk state="1"><color red="0.2" green="1.0" blue="0.85" /></disk>
+ </element>
+ <element name="lamp_ap" defstate="0">
+ <rect state="0"><color red="0.0235" green="0.1255" blue="0.1059" /></rect>
+ <rect state="1"><color red="0.2" green="1.0" blue="0.85" /></rect>
+ </element>
+
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="0" right="89" top="0" bottom="15" />
+
+ <!-- 8 digits -->
+
+ <bezel name="digit0" element="digit"><bounds x="0" y="0" width="10" height="15" /></bezel>
+ <bezel name="lamp14" element="lamp_dp"><bounds x="9" y="13.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="lamp15" element="lamp_ap"><bounds x="10.5" y="0" width="0.5" height="3.5" /></bezel>
+
+ <bezel name="digit1" element="digit"><bounds x="11" y="0" width="10" height="15" /></bezel>
+ <bezel name="lamp114" element="lamp_dp"><bounds x="20" y="13.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="lamp115" element="lamp_ap"><bounds x="21.5" y="0" width="0.5" height="3.5" /></bezel>
+
+ <bezel name="digit2" element="digit"><bounds x="22" y="0" width="10" height="15" /></bezel>
+ <bezel name="lamp214" element="lamp_dp"><bounds x="31" y="13.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="lamp215" element="lamp_ap"><bounds x="32.5" y="0" width="0.5" height="3.5" /></bezel>
+
+ <bezel name="digit3" element="digit"><bounds x="33" y="0" width="10" height="15" /></bezel>
+ <bezel name="lamp314" element="lamp_dp"><bounds x="42" y="13.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="lamp315" element="lamp_ap"><bounds x="43.5" y="0" width="0.5" height="3.5" /></bezel>
+
+ <bezel name="digit4" element="digit"><bounds x="44" y="0" width="10" height="15" /></bezel>
+ <bezel name="lamp414" element="lamp_dp"><bounds x="53" y="13.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="lamp415" element="lamp_ap"><bounds x="54.5" y="0" width="0.5" height="3.5" /></bezel>
+
+ <bezel name="digit5" element="digit"><bounds x="55" y="0" width="10" height="15" /></bezel>
+ <bezel name="lamp514" element="lamp_dp"><bounds x="64" y="13.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="lamp515" element="lamp_ap"><bounds x="65.5" y="0" width="0.5" height="3.5" /></bezel>
+
+ <bezel name="digit6" element="digit"><bounds x="66" y="0" width="10" height="15" /></bezel>
+ <bezel name="lamp614" element="lamp_dp"><bounds x="75" y="13.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="lamp615" element="lamp_ap"><bounds x="76.5" y="0" width="0.5" height="3.5" /></bezel>
+
+ <bezel name="digit7" element="digit"><bounds x="77" y="0" width="10" height="15" /></bezel>
+ <bezel name="lamp714" element="lamp_dp"><bounds x="86" y="13.5" width="1.5" height="1.5" /></bezel>
+ <bezel name="lamp715" element="lamp_ap"><bounds x="87.5" y="0" width="0.5" height="3.5" /></bezel>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/layout/ti1250.lay b/src/mame/layout/ti1250.lay
new file mode 100644
index 00000000000..71f202b940f
--- /dev/null
+++ b/src/mame/layout/ti1250.lay
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<mamelayout version="2">
+
+<!-- note: the digits were very small, wide space between them, and not the same style as (MAME's-)default -->
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.15" blue="0.08" /></led7seg>
+ </element>
+
+ <view name="Internal Layout">
+ <bounds left="0" right="90" top="0" bottom="15" />
+
+ <bezel name="digit8" element="digit">
+ <bounds x="0" y="0" width="10" height="15" />
+ </bezel>
+ <bezel name="digit7" element="digit">
+ <bounds x="10" y="0" width="10" height="15" />
+ </bezel>
+ <bezel name="digit6" element="digit">
+ <bounds x="20" y="0" width="10" height="15" />
+ </bezel>
+ <bezel name="digit5" 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="digit3" element="digit">
+ <bounds x="50" y="0" width="10" height="15" />
+ </bezel>
+ <bezel name="digit2" element="digit">
+ <bounds x="60" y="0" width="10" height="15" />
+ </bezel>
+ <bezel name="digit1" element="digit">
+ <bounds x="70" y="0" width="10" height="15" />
+ </bezel>
+ <bezel name="digit0" element="digit">
+ <bounds x="80" y="0" width="10" height="15" />
+ </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-5881_crypt.cpp b/src/mame/machine/315-5881_crypt.cpp
index 96f654a44e1..60d5311c7d3 100644
--- a/src/mame/machine/315-5881_crypt.cpp
+++ b/src/mame/machine/315-5881_crypt.cpp
@@ -29,15 +29,15 @@ sega_315_5881_crypt_device::sega_315_5881_crypt_device(const machine_config &mco
void sega_315_5881_crypt_device::device_start()
{
- buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
- line_buffer = auto_alloc_array(machine(), UINT8, LINE_SIZE);
- line_buffer_prev = auto_alloc_array(machine(), UINT8, LINE_SIZE);
+ buffer = std::make_unique<UINT8[]>(BUFFER_SIZE);
+ line_buffer = std::make_unique<UINT8[]>(LINE_SIZE);
+ line_buffer_prev = std::make_unique<UINT8[]>(LINE_SIZE);
m_read.bind_relative_to(*owner());
- save_pointer(NAME(buffer), BUFFER_SIZE);
- save_pointer(NAME(line_buffer), LINE_SIZE);
- save_pointer(NAME(line_buffer_prev), LINE_SIZE);
+ save_pointer(NAME(buffer.get()), BUFFER_SIZE);
+ save_pointer(NAME(line_buffer.get()), LINE_SIZE);
+ save_pointer(NAME(line_buffer_prev.get()), LINE_SIZE);
save_item(NAME(prot_cur_address));
save_item(NAME(subkey));
save_item(NAME(enc_ready));
@@ -59,9 +59,9 @@ void sega_315_5881_crypt_device::device_start()
void sega_315_5881_crypt_device::device_reset()
{
- memset(buffer, 0, BUFFER_SIZE);
- memset(line_buffer, 0, LINE_SIZE);
- memset(line_buffer_prev, 0, LINE_SIZE);
+ memset(buffer.get(), 0, BUFFER_SIZE);
+ memset(line_buffer.get(), 0, LINE_SIZE);
+ memset(line_buffer_prev.get(), 0, LINE_SIZE);
prot_cur_address = 0;
subkey = 0;
@@ -89,12 +89,12 @@ UINT16 sega_315_5881_crypt_device::do_decrypt(UINT8 *&base)
line_fill();
}
- base = line_buffer + line_buffer_pos;
+ base = line_buffer.get() + line_buffer_pos;
line_buffer_pos += 2;
} else {
if(buffer_pos == BUFFER_SIZE)
enc_fill();
- base = buffer + buffer_pos;
+ base = buffer.get() + buffer_pos;
buffer_pos += 2;
}
@@ -857,10 +857,11 @@ int sega_315_5881_crypt_device::get_compressed_bit()
void sega_315_5881_crypt_device::line_fill()
{
assert(line_buffer_pos == line_buffer_size);
- UINT8 *lp = line_buffer;
- UINT8 *lc = line_buffer_prev;
- line_buffer = lc;
- line_buffer_prev = lp;
+ UINT8 *lp = line_buffer.get();
+ UINT8 *lc = line_buffer_prev.get();
+
+ line_buffer.swap(line_buffer_prev);
+
line_buffer_pos = 0;
for(int i=0; i != line_buffer_size;) {
diff --git a/src/mame/machine/315-5881_crypt.h b/src/mame/machine/315-5881_crypt.h
index 257d42ff9bb..8c8c4739af1 100644
--- a/src/mame/machine/315-5881_crypt.h
+++ b/src/mame/machine/315-5881_crypt.h
@@ -48,7 +48,9 @@ private:
UINT32 key;
- UINT8 *buffer, *line_buffer, *line_buffer_prev;
+ std::unique_ptr<UINT8[]> buffer;
+ std::unique_ptr<UINT8[]> line_buffer;
+ std::unique_ptr<UINT8[]> line_buffer_prev;
UINT32 prot_cur_address;
UINT16 subkey, dec_hist;
UINT32 dec_header;
diff --git a/src/mame/machine/3do.cpp b/src/mame/machine/3do.cpp
index 9bab395964f..347ca3822b4 100644
--- a/src/mame/machine/3do.cpp
+++ b/src/mame/machine/3do.cpp
@@ -1112,15 +1112,15 @@ void _3do_state::m_3do_clio_init( screen_device *screen )
m_clio.revision = 0x02022000 /* 0x04000000 */;
m_clio.unclerev = 0x03800000;
m_clio.expctl = 0x80; /* ARM has the expansion bus */
- m_dspp.N = auto_alloc_array(machine(), UINT16, 0x800 );
- m_dspp.EI = auto_alloc_array(machine(), UINT16, 0x400 );
- m_dspp.EO = auto_alloc_array(machine(), UINT16, 0x400 );
+ m_dspp.N = std::make_unique<UINT16[]>(0x800 );
+ m_dspp.EI = std::make_unique<UINT16[]>(0x400 );
+ m_dspp.EO = std::make_unique<UINT16[]>(0x400 );
- memset(m_dspp.N, 0, sizeof(UINT16) * 0x400);
- memset(m_dspp.EI, 0, sizeof(UINT16) * 0x400);
- memset(m_dspp.EO, 0, sizeof(UINT16) * 0x400);
+ memset(m_dspp.N.get(), 0, sizeof(UINT16) * 0x400);
+ memset(m_dspp.EI.get(), 0, sizeof(UINT16) * 0x400);
+ memset(m_dspp.EO.get(), 0, sizeof(UINT16) * 0x400);
- save_pointer(NAME(m_dspp.N), 0x800);
- save_pointer(NAME(m_dspp.EI), 0x400);
- save_pointer(NAME(m_dspp.EO), 0x400);
+ save_pointer(NAME(m_dspp.N.get()), 0x800);
+ save_pointer(NAME(m_dspp.EI.get()), 0x400);
+ save_pointer(NAME(m_dspp.EO.get()), 0x400);
}
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/aim65.cpp b/src/mame/machine/aim65.cpp
index 3e7d4f2a309..98ca49c57e9 100644
--- a/src/mame/machine/aim65.cpp
+++ b/src/mame/machine/aim65.cpp
@@ -77,27 +77,27 @@ WRITE8_MEMBER( aim65_state::aim65_pia_b_w )
WRITE16_MEMBER( aim65_state::aim65_update_ds1)
{
- output_set_digit_value(0 + (offset ^ 3), data);
+ output().set_digit_value(0 + (offset ^ 3), data);
}
WRITE16_MEMBER( aim65_state::aim65_update_ds2)
{
- output_set_digit_value(4 + (offset ^ 3), data);
+ output().set_digit_value(4 + (offset ^ 3), data);
}
WRITE16_MEMBER( aim65_state::aim65_update_ds3)
{
- output_set_digit_value(8 + (offset ^ 3), data);
+ output().set_digit_value(8 + (offset ^ 3), data);
}
WRITE16_MEMBER( aim65_state::aim65_update_ds4)
{
- output_set_digit_value(12 + (offset ^ 3), data);
+ output().set_digit_value(12 + (offset ^ 3), data);
}
WRITE16_MEMBER( aim65_state::aim65_update_ds5)
{
- output_set_digit_value(16 + (offset ^ 3), data);
+ output().set_digit_value(16 + (offset ^ 3), data);
}
@@ -378,7 +378,7 @@ WRITE8_MEMBER( aim65_state::aim65_pa_w )
VIDEO_START_MEMBER(aim65_state,aim65)
{
m_print_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(aim65_state::aim65_printer_timer),this));
- m_printerRAM = auto_alloc_array(machine(), UINT16, (600 * 10 * 2) / 2);
+ m_printerRAM = std::make_unique<UINT16[]>((600 * 10 * 2) / 2);
memset(m_printerRAM, 0, videoram_size);
VIDEO_START_CALL_MEMBER(generic);
m_printer_x = 0;
diff --git a/src/mame/machine/ajax.cpp b/src/mame/machine/ajax.cpp
index 15d4ca3415b..7c2180ca7c5 100644
--- a/src/mame/machine/ajax.cpp
+++ b/src/mame/machine/ajax.cpp
@@ -42,8 +42,8 @@ WRITE8_MEMBER(ajax_state::ajax_bankswitch_w)
bank += 4;
/* coin counters */
- coin_counter_w(machine(), 0, data & 0x20);
- coin_counter_w(machine(), 1, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
/* priority */
m_priority = data & 0x08;
@@ -79,14 +79,14 @@ WRITE8_MEMBER(ajax_state::ajax_bankswitch_w)
WRITE8_MEMBER(ajax_state::ajax_lamps_w)
{
- set_led_status(machine(), 1, data & 0x02); /* super weapon lamp */
- set_led_status(machine(), 2, data & 0x04); /* power up lamps */
- set_led_status(machine(), 5, data & 0x04); /* power up lamps */
- set_led_status(machine(), 0, data & 0x20); /* start lamp */
- set_led_status(machine(), 3, data & 0x40); /* game over lamps */
- set_led_status(machine(), 6, data & 0x40); /* game over lamps */
- set_led_status(machine(), 4, data & 0x80); /* game over lamps */
- set_led_status(machine(), 7, data & 0x80); /* game over lamps */
+ output().set_led_value(1, data & 0x02); /* super weapon lamp */
+ output().set_led_value(2, data & 0x04); /* power up lamps */
+ output().set_led_value(5, data & 0x04); /* power up lamps */
+ output().set_led_value(0, data & 0x20); /* start lamp */
+ output().set_led_value(3, data & 0x40); /* game over lamps */
+ output().set_led_value(6, data & 0x40); /* game over lamps */
+ output().set_led_value(4, data & 0x80); /* game over lamps */
+ output().set_led_value(7, data & 0x80); /* game over lamps */
}
/* ajax_ls138_f10:
diff --git a/src/mame/machine/alpha8201.cpp b/src/mame/machine/alpha8201.cpp
index 5636a56ede1..88813b1be9f 100644
--- a/src/mame/machine/alpha8201.cpp
+++ b/src/mame/machine/alpha8201.cpp
@@ -295,7 +295,7 @@ alpha_8201_device::alpha_8201_device(const machine_config &mconfig, const char *
void alpha_8201_device::device_start()
{
- m_shared_ram = auto_alloc_array_clear(machine(), UINT8, 0x400);
+ m_shared_ram = make_unique_clear<UINT8[]>(0x400);
// zerofill
m_bus = 0;
@@ -304,7 +304,7 @@ void alpha_8201_device::device_start()
memset(m_mcu_r, 0, sizeof(m_mcu_r));
// register for savestates
- save_pointer(NAME(m_shared_ram), 0x400);
+ save_pointer(NAME(m_shared_ram.get()), 0x400);
save_item(NAME(m_bus));
save_item(NAME(m_mcu_address));
save_item(NAME(m_mcu_d));
diff --git a/src/mame/machine/alpha8201.h b/src/mame/machine/alpha8201.h
index 3e99a7a4e24..1db8eb64a3a 100644
--- a/src/mame/machine/alpha8201.h
+++ b/src/mame/machine/alpha8201.h
@@ -42,7 +42,7 @@ private:
UINT16 m_mcu_address; // MCU side RAM address
UINT16 m_mcu_d; // MCU D output data
UINT8 m_mcu_r[4]; // MCU R0-R3 output data
- UINT8* m_shared_ram; // 1KB RAM
+ std::unique_ptr<UINT8[]> m_shared_ram; // 1KB RAM
void mcu_update_address();
void mcu_writeram();
diff --git a/src/mame/machine/amiga.cpp b/src/mame/machine/amiga.cpp
index 47b1d49c33f..f92dcd3fb39 100644
--- a/src/mame/machine/amiga.cpp
+++ b/src/mame/machine/amiga.cpp
@@ -1087,8 +1087,8 @@ WRITE8_MEMBER( amiga_state::cia_0_port_a_write )
m_overlay->set_bank(BIT(data, 0));
// bit 1, power led
- set_led_status(space.machine(), 0, !BIT(data, 1));
- output_set_value("power_led", !BIT(data, 1));
+ output().set_led_value(0, !BIT(data, 1));
+ output().set_value("power_led", !BIT(data, 1));
}
WRITE_LINE_MEMBER( amiga_state::cia_0_irq )
diff --git a/src/mame/machine/amigakbd.cpp b/src/mame/machine/amigakbd.cpp
index 1120c522e6c..e760cb7de47 100644
--- a/src/mame/machine/amigakbd.cpp
+++ b/src/mame/machine/amigakbd.cpp
@@ -482,7 +482,7 @@ WRITE8_MEMBER( amigakbd_device::port_a_w )
WRITE8_MEMBER( amigakbd_device::port_b_w )
{
// caps lock led
- output_set_value("led0", BIT(data, 7));
+ machine().output().set_value("led0", BIT(data, 7));
}
WRITE8_MEMBER( amigakbd_device::port_c_w )
diff --git a/src/mame/machine/amigakbd.h b/src/mame/machine/amigakbd.h
index 9c974238e3a..ae7f7f633cb 100644
--- a/src/mame/machine/amigakbd.h
+++ b/src/mame/machine/amigakbd.h
@@ -56,7 +56,6 @@ public:
// 6500/1 internal
DECLARE_READ8_MEMBER( port_a_r );
DECLARE_WRITE8_MEMBER( port_a_w );
- DECLARE_READ8_MEMBER( port_b_r );
DECLARE_WRITE8_MEMBER( port_b_w );
DECLARE_WRITE8_MEMBER( port_c_w );
DECLARE_WRITE8_MEMBER( port_d_w );
diff --git a/src/mame/machine/amstrad.cpp b/src/mame/machine/amstrad.cpp
index eed5c0f291e..e8ed9a6e266 100644
--- a/src/mame/machine/amstrad.cpp
+++ b/src/mame/machine/amstrad.cpp
@@ -1088,7 +1088,7 @@ VIDEO_START_MEMBER(amstrad_state,amstrad)
{
amstrad_init_lookups();
- m_gate_array.bitmap = auto_bitmap_ind16_alloc( machine(), m_screen->width(), m_screen->height() );
+ m_gate_array.bitmap = std::make_unique<bitmap_ind16>(m_screen->width(), m_screen->height() );
m_gate_array.hsync_after_vsync_counter = 3;
}
@@ -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();
@@ -2346,7 +2355,7 @@ control is passed to the default entry in rom 0*/
void amstrad_state::amstrad_reset_machine()
{
m_last_write = 0xff;
-
+
/* enable lower rom (OS rom) */
amstrad_GateArray_write(0x089);
@@ -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.cpp b/src/mame/machine/apollo.cpp
index 2970327cf4d..68e6e53b75c 100644
--- a/src/mame/machine/apollo.cpp
+++ b/src/mame/machine/apollo.cpp
@@ -97,11 +97,11 @@ INPUT_PORTS_START( apollo_config )
PORT_CONFNAME(APOLLO_CONF_25_YEARS_AGO, APOLLO_CONF_25_YEARS_AGO, "25 Years Ago ...")
PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
PORT_CONFSETTING(APOLLO_CONF_25_YEARS_AGO, DEF_STR ( On ) )
-#ifdef APOLLO_XXL
+
PORT_CONFNAME(APOLLO_CONF_NODE_ID, APOLLO_CONF_NODE_ID, "Node ID from Disk")
PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
PORT_CONFSETTING(APOLLO_CONF_NODE_ID, DEF_STR ( On ) )
-#endif
+
// PORT_CONFNAME(APOLLO_CONF_IDLE_SLEEP, 0x00, "Idle Sleep")
// PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
// PORT_CONFSETTING(APOLLO_CONF_IDLE_SLEEP, DEF_STR ( On ) )
@@ -278,14 +278,14 @@ WRITE16_MEMBER(apollo_state::apollo_csr_control_register_w)
cpu_control_register = (cpu_control_register & ~mem_mask) | (data & mem_mask);
- output_set_value("internal_led_1", (cpu_control_register >> 15) & 1);
- output_set_value("internal_led_2", (cpu_control_register >> 14) & 1);
- output_set_value("internal_led_3", (cpu_control_register >> 13) & 1);
- output_set_value("internal_led_4", (cpu_control_register >> 12) & 1);
- output_set_value("external_led_a", (cpu_control_register >> 11) & 1);
- output_set_value("external_led_b", (cpu_control_register >> 10) & 1);
- output_set_value("external_led_c", (cpu_control_register >> 9) & 1);
- output_set_value("external_led_d", (cpu_control_register >> 8) & 1);
+ output().set_value("internal_led_1", (cpu_control_register >> 15) & 1);
+ output().set_value("internal_led_2", (cpu_control_register >> 14) & 1);
+ output().set_value("internal_led_3", (cpu_control_register >> 13) & 1);
+ output().set_value("internal_led_4", (cpu_control_register >> 12) & 1);
+ output().set_value("external_led_a", (cpu_control_register >> 11) & 1);
+ output().set_value("external_led_b", (cpu_control_register >> 10) & 1);
+ output().set_value("external_led_c", (cpu_control_register >> 9) & 1);
+ output().set_value("external_led_d", (cpu_control_register >> 8) & 1);
leds = ((cpu_control_register >> 8) & 0xff) ^ 0xff;
@@ -1047,25 +1047,25 @@ void apollo_ni::call_unload()
void apollo_ni::set_node_id_from_disk()
{
-#ifdef APOLLO_XXL
- // set node ID from UID of logical volume 1 of logical unit 0
+ omti8621_apollo_device *omti8621 = machine().device<omti8621_apollo_device>("isa1:wdc");
UINT8 db[0x50];
// check label of physical volume and get sector data of logical volume 1
// Note: sector data starts with 32 byte block header
- if (omti8621_device::get_sector(0, db, sizeof(db), 0) == sizeof(db)
+ // set node ID from UID of logical volume 1 of logical unit 0
+ if (omti8621
+ && omti8621->get_sector(0, db, sizeof(db), 0) == sizeof(db)
&& memcmp(db + 0x22, "APOLLO", 6) == 0)
{
UINT16 sector1 = apollo_is_dn5500() ? 4 : 1;
- if (omti8621_device::get_sector(sector1, db, sizeof(db), 0) == sizeof(db))
+ if (omti8621->get_sector(sector1, db, sizeof(db), 0) == sizeof(db))
{
// set node_id from UID of logical volume 1 of logical unit 0
m_node_id = (((db[0x49] << 8) | db[0x4a]) << 8) | db[0x4b];
CLOG1(("apollo_ni::set_node_id_from_disk: node ID is %x", m_node_id));
}
}
-#endif
}
//##########################################################################
@@ -1076,7 +1076,7 @@ void apollo_ni::set_node_id_from_disk()
#define VERBOSE 0
static SLOT_INTERFACE_START(apollo_isa_cards)
- SLOT_INTERFACE("wdc", ISA16_OMTI8621) // Combo ESDI/AT floppy controller
+ SLOT_INTERFACE("wdc", ISA16_OMTI8621_APOLLO) // Combo ESDI/AT floppy controller
SLOT_INTERFACE("ctape", ISA8_SC499) // Archive SC499 cartridge tape
SLOT_INTERFACE("3c505", ISA16_3C505) // 3Com 3C505 Ethernet card
SLOT_INTERFACE_END
diff --git a/src/mame/machine/apollo_dbg.h b/src/mame/machine/apollo_dbg.h
new file mode 100644
index 00000000000..12227102e4e
--- /dev/null
+++ b/src/mame/machine/apollo_dbg.h
@@ -0,0 +1,20 @@
+// license:BSD-3-Clause
+// copyright-holders:Hans Ostermeyer
+/*
+ * apollo_dbg.h
+ *
+ * Created on: Nov 22, 2015
+ * Author: Hans Ostermeyer
+ *
+ */
+
+#pragma once
+
+#ifndef __APOLLO_DBG_H__
+#define __APOLLO_DBG_H__
+
+#include "emu.h"
+
+int apollo_debug_instruction_hook(m68000_base_device *device, offs_t curpc);
+
+#endif
diff --git a/src/mame/machine/apollo_kbd.cpp b/src/mame/machine/apollo_kbd.cpp
index d646b9d70c9..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);
}
@@ -977,10 +976,14 @@ INPUT_PORTS_START( apollo_kbd )
PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Right mouse button") PORT_CODE(MOUSECODE_BUTTON3)
PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Center mouse button") PORT_CODE(MOUSECODE_BUTTON2)
+// FIXME:
+// PORT_SENSITIVITY(50) would be perfect for SDL2
+// PORT_SENSITIVITY(200) would be perfect for SDL1.2
+
PORT_START("mouse2") // X-axis
- PORT_BIT( 0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(200) PORT_KEYDELTA(0) PORT_PLAYER(1)
+ PORT_BIT( 0xff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1)
PORT_START("mouse3") // Y-axis
- PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(200) PORT_KEYDELTA(0) PORT_PLAYER(1)
+ PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1)
INPUT_PORTS_END
diff --git a/src/mame/machine/apollo_kbd.h b/src/mame/machine/apollo_kbd.h
index 968c6c08333..4b5cc91a9af 100644
--- a/src/mame/machine/apollo_kbd.h
+++ b/src/mame/machine/apollo_kbd.h
@@ -76,14 +76,11 @@ private:
int keyboard_is_german();
void set_mode(UINT16 mode);
- void putchar(const UINT8 data);
void putdata(const UINT8 *data, int data_length);
void putstring(const char *data);
int push_scancode( UINT8 code, UINT8 repeat);
void scan_keyboard();
- void poll_callback();
- static TIMER_CALLBACK( static_poll_callback );
// the keyboard beeper
class beeper
diff --git a/src/mame/machine/apple2.cpp b/src/mame/machine/apple2.cpp
index 88a2158ab8b..dd227dc5f93 100644
--- a/src/mame/machine/apple2.cpp
+++ b/src/mame/machine/apple2.cpp
@@ -72,7 +72,7 @@ void apple2_state::apple2_update_memory()
{
for (i = 0; m_mem_config.memmap[i].end; i++)
;
- m_current_meminfo = auto_alloc_array(machine(), apple2_meminfo, i);
+ m_current_meminfo = std::make_unique<apple2_meminfo[]>(i);
full_update = 1;
}
@@ -2336,8 +2336,8 @@ MACHINE_START_MEMBER(apple2_state,laser128)
apple2_init_common();
// 1 MB of expansion RAM in slot 5
- m_exp_ram = auto_alloc_array(machine(), UINT8, 1024*1024);
- memset(m_exp_ram, 0xff, 1024*1024);
+ m_exp_ram = std::make_unique<UINT8[]>(1024*1024);
+ memset(m_exp_ram.get(), 0xff, 1024*1024);
m_exp_bankhior = 0xf0;
m_exp_addrmask = 0xfffff;
diff --git a/src/mame/machine/apple2gs.cpp b/src/mame/machine/apple2gs.cpp
index 132ed6e8dca..91430cdce15 100644
--- a/src/mame/machine/apple2gs.cpp
+++ b/src/mame/machine/apple2gs.cpp
@@ -1821,8 +1821,8 @@ void apple2gs_state::apple2gs_setup_memory()
apple2_memmap_config cfg;
/* allocate memory for E00000-E1FFFF */
- m_slowmem = auto_alloc_array_clear(machine(), UINT8, 128*1024);
- save_pointer(m_slowmem, "APPLE2GS_SLOWMEM", 128*1024);
+ m_slowmem = make_unique_clear<UINT8[]>(128*1024);
+ save_pointer(m_slowmem.get(), "APPLE2GS_SLOWMEM", 128*1024);
// install expanded memory
// fair warning: other code assumes banks 0 and 1 are the first 128k of the RAM device, so you must install bank 1 at 0x10000
@@ -1857,7 +1857,7 @@ void apple2gs_state::apple2gs_setup_memory()
space.install_write_handler(0xe02000, 0xe03fff, write8_delegate(FUNC(apple2gs_state::apple2gs_E02xxx_w),this));
space.install_write_handler(0xe10400, 0xe107ff, write8_delegate(FUNC(apple2gs_state::apple2gs_E104xx_w),this));
space.install_write_handler(0xe12000, 0xe13fff, write8_delegate(FUNC(apple2gs_state::apple2gs_E12xxx_w),this));
- membank("bank2")->set_base(m_slowmem);
+ membank("bank2")->set_base(m_slowmem.get());
/* install alternate ROM bank */
begin = 0x1000000 - memregion("maincpu")->bytes();
@@ -1885,7 +1885,7 @@ void apple2gs_state::apple2gs_setup_memory()
memset(&cfg, 0, sizeof(cfg));
cfg.first_bank = 4;
cfg.memmap = apple2gs_memmap_entries;
- cfg.auxmem = m_slowmem;
+ cfg.auxmem = m_slowmem.get();
cfg.auxmem_length = 0x20000;
apple2_setup_memory(&cfg);
}
diff --git a/src/mame/machine/arkanoid.cpp b/src/mame/machine/arkanoid.cpp
index 4153fcbc27e..11b352e63df 100644
--- a/src/mame/machine/arkanoid.cpp
+++ b/src/mame/machine/arkanoid.cpp
@@ -11,6 +11,7 @@
#include "emu.h"
#include "includes/arkanoid.h"
+#include "cpu/m6805/m6805.h"
/* To log specific reads and writes of the bootlegs */
@@ -20,21 +21,15 @@
READ8_MEMBER(arkanoid_state::arkanoid_Z80_mcu_r)
{
/* return the last value the 68705 wrote, and mark that we've read it */
- m_m68705write = 0;
+ m_68705HasWritten = 0;
return m_toz80;
}
-TIMER_CALLBACK_MEMBER(arkanoid_state::test)
-{
- m_z80write = 1;
- m_fromz80 = param;
-}
-
WRITE8_MEMBER(arkanoid_state::arkanoid_Z80_mcu_w)
{
- machine().scheduler().synchronize(timer_expired_delegate(FUNC(arkanoid_state::test),this), data);
- /* boost the interleave for a few usecs to make sure it is read successfully */
- machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(10));
+ m_z80HasWritten = 1;
+ m_fromz80 = data;
+ m_mcu->set_input_line(M68705_IRQ_LINE, ASSERT_LINE);
}
READ8_MEMBER(arkanoid_state::arkanoid_68705_port_a_r)
@@ -52,55 +47,175 @@ WRITE8_MEMBER(arkanoid_state::arkanoid_68705_ddr_a_w)
m_ddr_a = data;
}
+READ8_MEMBER(arkanoid_state::arkanoid_68705_tdr_r)
+{
+ //logerror("arkanoid_68705 TDR read, returning %02X\n", m_tdr);
+ return m_tdr;
+}
+
+WRITE8_MEMBER(arkanoid_state::arkanoid_68705_tdr_w)
+{
+ //logerror("arkanoid_68705 TDR written with %02X, was %02X\n", data, m_tdr);
+ m_tdr = data;
+}
+
+READ8_MEMBER(arkanoid_state::arkanoid_68705_tcr_r)
+{
+ //logerror("arkanoid_68705 TCR read, returning %02X\n", (m_tcr&0xF7));
+ return (m_tcr & 0xF7);
+}
+
+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)));
+*/
+ // 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.
+ // Note this hack is incorrect; the timer pin actually does connect somewhere (vblank or maybe one of the V counter bits?), but the game never actually uses the timer pin in external clock mode, so the TIMER connection must be left over from development. We can apparently safely ignore it.
+ 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);
+ }
+ // 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_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
+ m_mcu->set_input_line(M68705_INT_TIMER, CLEAR_LINE);
+
+}
+
+void arkanoid_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+ case TIMER_68705_PRESCALER_EXPIRED:
+ timer_68705_increment(ptr, param);
+ break;
+ default:
+ assert_always(FALSE, "Unknown id in arkanoid_state::device_timer");
+ }
+}
+
+TIMER_CALLBACK_MEMBER(arkanoid_state::timer_68705_increment)
+{
+ m_tdr++;
+ 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
+ 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);
+}
READ8_MEMBER(arkanoid_state::arkanoid_68705_port_c_r)
{
int res = 0;
- /* bit 0 is high on a write strobe; clear it once we've detected it */
- if (m_z80write)
+ /* bit 0 is latch 1 on ic26, is high if m_z80HasWritten(latch 1) is set */
+ if (m_z80HasWritten)
res |= 0x01;
- /* bit 1 is high if the previous write has been read */
- if (!m_m68705write)
+ /* bit 1 is the negative output of latch 2 on ic26, is high if m_68705write is clear */
+ if (!m_68705HasWritten)
res |= 0x02;
- return (m_port_c_out & m_ddr_c) | (res & ~m_ddr_c);
+ /* bit 2 is an output, to clear latch 1, return whatever state it was set to in m_port_c_out */
+ /* bit 3 is an output, to set latch 2, return whatever state it was set to in m_port_c_out */
+
+ return (m_port_c_internal & m_ddr_c) | (res & ~m_ddr_c);
}
WRITE8_MEMBER(arkanoid_state::arkanoid_68705_port_c_w)
{
- if ((m_ddr_c & 0x04) && (~data & 0x04) && (m_port_c_out & 0x04))
+ m_port_c_internal = data|0xF0;
+ UINT8 changed_m_port_c_out = (m_port_c_out^(m_port_c_internal|(~m_ddr_c)));
+ m_port_c_out = (m_port_c_internal|(~m_ddr_c));
+
+ /* 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)
+ if ((changed_m_port_c_out&0x04) && (m_port_c_out&0x04))
{
- /* return the last value the Z80 wrote */
- m_z80write = 0;
- m_port_a_in = m_fromz80;
+ m_z80HasWritten = 0;
+ m_mcu->set_input_line(M68705_IRQ_LINE, CLEAR_LINE);
}
- if ((m_ddr_c & 0x08) && (~data & 0x08) && (m_port_c_out & 0x08))
+
+ // 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)
{
/* a write from the 68705 to the Z80; remember its value */
- m_m68705write = 1;
+ m_68705HasWritten = 1;
m_toz80 = m_port_a_out;
}
-
- m_port_c_out = data;
}
WRITE8_MEMBER(arkanoid_state::arkanoid_68705_ddr_c_w)
{
- m_ddr_c = data;
+ if ((data|0xF0)^m_ddr_c) // if ddr changed, recalculate the port c output
+ {
+ 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)
+ if ((changed_m_port_c_out&0x04) && (m_port_c_out&0x04))
+ {
+ 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)
+ {
+ /* a write from the 68705 to the Z80; remember its value */
+ m_68705HasWritten = 1;
+ m_toz80 = m_port_a_out;
+ }
+ }
+ m_ddr_c = data|0xF0;
}
CUSTOM_INPUT_MEMBER(arkanoid_state::arkanoid_68705_input_r)
{
int res = 0;
- /* bit 0x40 of comes from the sticky bit */
- if (!m_z80write)
+ /* bit 0x40 is latch 1 on ic26, is high if m_z80HasWritten(latch 1) is clear */
+ if (!m_z80HasWritten)
res |= 0x01;
- /* bit 0x80 comes from a write latch */
- if (!m_m68705write)
+ /* bit 0x80 is the negative output of latch 2 on ic26, is high if m_68705write is clear */
+ if (!m_68705HasWritten)
res |= 0x02;
return res;
diff --git a/src/mame/machine/asic65.h b/src/mame/machine/asic65.h
index 8d0956ecc46..c5f094461a2 100644
--- a/src/mame/machine/asic65.h
+++ b/src/mame/machine/asic65.h
@@ -28,7 +28,6 @@ public:
DECLARE_READ16_MEMBER( read );
DECLARE_READ16_MEMBER( io_r );
- TIMER_CALLBACK_MEMBER( m68k_asic65_deferred_w );
WRITE16_MEMBER( m68k_w );
READ16_MEMBER( m68k_r );
WRITE16_MEMBER( stat_w );
diff --git a/src/mame/machine/asteroid.cpp b/src/mame/machine/asteroid.cpp
index e8e01c5f065..de7eb074d29 100644
--- a/src/mame/machine/asteroid.cpp
+++ b/src/mame/machine/asteroid.cpp
@@ -100,8 +100,8 @@ WRITE8_MEMBER(asteroid_state::asteroid_bank_switch_w)
m_ram1->set_entry(bank);
m_ram2->set_entry(bank);
- set_led_status (machine(), 0, ~data & 0x02);
- set_led_status (machine(), 1, ~data & 0x01);
+ output().set_led_value(0, ~data & 0x02);
+ output().set_led_value(1, ~data & 0x01);
}
@@ -114,7 +114,7 @@ WRITE8_MEMBER(asteroid_state::astdelux_bank_switch_w)
WRITE8_MEMBER(asteroid_state::astdelux_led_w)
{
- set_led_status(machine(), offset, (data & 0x80) ? 0 : 1);
+ output().set_led_value(offset, (data & 0x80) ? 0 : 1);
}
void asteroid_state::machine_start()
diff --git a/src/mame/machine/atarifb.cpp b/src/mame/machine/atarifb.cpp
index 02cf56c65ba..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
/*************************************************************************
@@ -31,7 +31,7 @@ WRITE8_MEMBER(atarifb_state::atarifb4_out1_w)
m_discrete->write(space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract
m_discrete->write(space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker
- coin_counter_w(machine(), 1, data & 0x80);
+ machine().bookkeeping().coin_counter_w(1, data & 0x80);
}
@@ -76,8 +76,8 @@ WRITE8_MEMBER(atarifb_state::soccer_out1_w)
m_discrete->write(space, ATARIFB_ATTRACT_EN, data & 0x10); // Attract
m_discrete->write(space, ATARIFB_NOISE_EN, data & 0x04); // Noise Enable / Kicker
-// set_led_status(machine(), 0, data & 0x10); // !!!!!!!!!! Is this correct????
- set_led_status(machine(), 1, data & 0x80);
+// output().set_led_value(0, data & 0x10); // !!!!!!!!!! Is this correct????
+ output().set_led_value(1, data & 0x80);
}
@@ -85,7 +85,7 @@ WRITE8_MEMBER(atarifb_state::atarifb_out2_w)
{
m_discrete->write(space, ATARIFB_CROWD_DATA, data & 0x0f); // Crowd
- coin_counter_w (machine(), 0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
}
@@ -93,9 +93,9 @@ WRITE8_MEMBER(atarifb_state::soccer_out2_w)
{
m_discrete->write(space, ATARIFB_CROWD_DATA, data & 0x0f); // Crowd
- coin_counter_w (machine(), 0, data & 0x10);
- coin_counter_w (machine(), 1, data & 0x20);
- coin_counter_w (machine(), 2, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(2, data & 0x40);
}
@@ -115,19 +115,19 @@ WRITE8_MEMBER(atarifb_state::atarifb_out3_w)
{
case 0x00:
/* Player 1 play select lamp */
- output_set_value("ledleft0", (data >> 0) & 1);
- output_set_value("ledleft1", (data >> 1) & 1);
- output_set_value("ledleft2", (data >> 2) & 1);
- output_set_value("ledleft3", (data >> 3) & 1);
- output_set_value("ledleft4", (data >> 4) & 1);
+ output().set_value("ledleft0", (data >> 0) & 1);
+ output().set_value("ledleft1", (data >> 1) & 1);
+ output().set_value("ledleft2", (data >> 2) & 1);
+ output().set_value("ledleft3", (data >> 3) & 1);
+ output().set_value("ledleft4", (data >> 4) & 1);
break;
case 0x01:
/* Player 2 play select lamp */
- output_set_value("ledright0", (data >> 0) & 1);
- output_set_value("ledright1", (data >> 1) & 1);
- output_set_value("ledright2", (data >> 2) & 1);
- output_set_value("ledright3", (data >> 3) & 1);
- output_set_value("ledright4", (data >> 4) & 1);
+ output().set_value("ledright0", (data >> 0) & 1);
+ output().set_value("ledright1", (data >> 1) & 1);
+ output().set_value("ledright2", (data >> 2) & 1);
+ output().set_value("ledright3", (data >> 3) & 1);
+ output().set_value("ledright4", (data >> 4) & 1);
break;
}
// logerror("out3_w, %02x:%02x\n", loop, data);
diff --git a/src/mame/machine/atarifdc.cpp b/src/mame/machine/atarifdc.cpp
index 0249ba31e7e..13505910f30 100644
--- a/src/mame/machine/atarifdc.cpp
+++ b/src/mame/machine/atarifdc.cpp
@@ -114,7 +114,7 @@ void atari_fdc_device::atari_load_proc(device_image_interface &image)
int size, i;
const char *ext;
- m_drv[id].image = auto_alloc_array(image.device().machine(),UINT8,MAXSIZE);
+ m_drv[id].image = std::make_unique<UINT8[]>(MAXSIZE);
if (!m_drv[id].image)
return;
@@ -132,7 +132,7 @@ void atari_fdc_device::atari_load_proc(device_image_interface &image)
image.fseek(0, SEEK_SET);
}
- size = image.fread(m_drv[id].image, MAXSIZE);
+ size = image.fread(m_drv[id].image.get(), MAXSIZE);
if( size <= 0 )
{
@@ -276,7 +276,7 @@ void atari_fdc_device::atari_load_proc(device_image_interface &image)
/* DSK format: it's all in the header */
case FORMAT_DSK:
{
- atari_dsk_format *dsk = (atari_dsk_format *) m_drv[id].image;
+ atari_dsk_format *dsk = (atari_dsk_format *) m_drv[id].image.get();
m_drv[id].tracks = dsk->tracks;
m_drv[id].spt = dsk->spt;
diff --git a/src/mame/machine/atarifdc.h b/src/mame/machine/atarifdc.h
index f7f02d10b10..4c41c7b745a 100644
--- a/src/mame/machine/atarifdc.h
+++ b/src/mame/machine/atarifdc.h
@@ -36,7 +36,7 @@ private:
struct atari_drive
{
- UINT8 *image; /* alloc'd image */
+ std::unique_ptr<UINT8[]> image; /* alloc'd image */
int type; /* type of image (XFD, ATR, DSK) */
int mode; /* 0 read only, != 0 read/write */
int density; /* 0 SD, 1 MD, 2 DD */
diff --git a/src/mame/machine/atarigen.cpp b/src/mame/machine/atarigen.cpp
index 05127cb1edd..287342585f6 100644
--- a/src/mame/machine/atarigen.cpp
+++ b/src/mame/machine/atarigen.cpp
@@ -951,9 +951,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),
@@ -1004,9 +1001,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,10 +1009,6 @@ 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)
{
@@ -1465,43 +1455,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..0adeb414a0b 100644
--- a/src/mame/machine/atarigen.h
+++ b/src/mame/machine/atarigen.h
@@ -11,8 +11,6 @@
#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"
@@ -190,10 +188,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);
@@ -383,11 +381,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 +390,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;
diff --git a/src/mame/machine/awboard.cpp b/src/mame/machine/awboard.cpp
index 342ff0b18e9..e931fa221eb 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 /
@@ -307,7 +307,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 +315,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/balsente.cpp b/src/mame/machine/balsente.cpp
index 8eceeffa417..29574c6f7e0 100644
--- a/src/mame/machine/balsente.cpp
+++ b/src/mame/machine/balsente.cpp
@@ -314,7 +314,7 @@ WRITE8_MEMBER(balsente_state::balsente_misc_output_w)
}
else
{
-// set_led_status(machine(), offset, data);
+// output().set_led_value(offset, data);
}
}
diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp
index f30c170848b..d82f4fdd827 100644
--- a/src/mame/machine/bbc.cpp
+++ b/src/mame/machine/bbc.cpp
@@ -951,7 +951,7 @@ WRITE8_MEMBER(bbc_state::bbcb_via_system_write_portb)
{
m_b6_caps_lock_led = 1;
/* call caps lock led update */
- output_set_value("capslock_led", m_b6_caps_lock_led);
+ output().set_value("capslock_led", m_b6_caps_lock_led);
}
break;
case 7:
@@ -959,7 +959,7 @@ WRITE8_MEMBER(bbc_state::bbcb_via_system_write_portb)
{
m_b7_shift_lock_led = 1;
/* call shift lock led update */
- output_set_value("shiftlock_led", m_b7_shift_lock_led);
+ output().set_value("shiftlock_led", m_b7_shift_lock_led);
}
break;
}
@@ -1036,7 +1036,7 @@ WRITE8_MEMBER(bbc_state::bbcb_via_system_write_portb)
{
m_b6_caps_lock_led = 0;
/* call caps lock led update */
- output_set_value("capslock_led", m_b6_caps_lock_led);
+ output().set_value("capslock_led", m_b6_caps_lock_led);
}
break;
case 7:
@@ -1044,7 +1044,7 @@ WRITE8_MEMBER(bbc_state::bbcb_via_system_write_portb)
{
m_b7_shift_lock_led = 0;
/* call shift lock led update */
- output_set_value("shiftlock_led", m_b7_shift_lock_led);
+ output().set_value("shiftlock_led", m_b7_shift_lock_led);
}
break;
}
@@ -1366,7 +1366,7 @@ void bbc_state::BBC_Cassette_motor(unsigned char status)
m_cass_out_phase = 0;
m_cass_out_samples_to_go = 4;
}
- output_set_value("motor_led", !status);
+ output().set_value("motor_led", !status);
}
@@ -1771,6 +1771,29 @@ MACHINE_RESET_MEMBER(bbc_state, bbcb)
}
+MACHINE_START_MEMBER(bbc_state, torch)
+{
+ m_machinetype = MODELB;
+ m_mc6850_clock = 0;
+ bbc_setup_banks(m_bank4, 16, 0, 0x4000);
+}
+
+MACHINE_RESET_MEMBER(bbc_state, torch)
+{
+ UINT8 *RAM = m_region_maincpu->base();
+ m_Speech = 1;
+ m_SWRAMtype = 0;
+ m_bank1->set_base(RAM);
+ m_bank3->set_base(RAM + 0x4000);
+ m_memorySize=32;
+
+ m_bank4->set_entry(0);
+ m_bank7->set_base(m_region_os->base()); /* bank 7 points at the OS rom from c000 to ffff */
+
+ bbcb_IC32_initialise(this);
+}
+
+
MACHINE_START_MEMBER(bbc_state, bbcbp)
{
m_machinetype = BPLUS;
diff --git a/src/mame/machine/bfm_bd1.cpp b/src/mame/machine/bfm_bd1.cpp
index a748f466ec6..78132ae5acf 100644
--- a/src/mame/machine/bfm_bd1.cpp
+++ b/src/mame/machine/bfm_bd1.cpp
@@ -184,7 +184,7 @@ void bfm_bd1_t::update_display()
{
m_outputs[i] = 0;
}
- output_set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
+ machine().output().set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
}
}
///////////////////////////////////////////////////////////////////////////
diff --git a/src/mame/machine/bfm_bda.cpp b/src/mame/machine/bfm_bda.cpp
index ad9cbe13134..0984bf7ecab 100644
--- a/src/mame/machine/bfm_bda.cpp
+++ b/src/mame/machine/bfm_bda.cpp
@@ -153,7 +153,7 @@ void bfm_bda_t::device_post_load()
{
for (int i =0; i<16; i++)
{
- output_set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
+ machine().output().set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
}
}
@@ -169,7 +169,7 @@ void bfm_bda_t::update_display()
{
m_outputs[i] = 0;
}
- output_set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
+ machine().output().set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
}
}
///////////////////////////////////////////////////////////////////////////
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/bonzeadv.cpp b/src/mame/machine/bonzeadv.cpp
index 0cd31e4ea01..b2bec33c7e1 100644
--- a/src/mame/machine/bonzeadv.cpp
+++ b/src/mame/machine/bonzeadv.cpp
@@ -390,10 +390,10 @@ WRITE16_MEMBER(asuka_state::bonzeadv_cchip_ram_w)
{
m_cc_port = data;
- coin_lockout_w(machine(), 1, data & 0x80);
- coin_lockout_w(machine(), 0, data & 0x40);
- coin_counter_w(machine(), 1, data & 0x20);
- coin_counter_w(machine(), 0, data & 0x10);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x80);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
}
if (offset == 0x0e && data != 0x00)
diff --git a/src/mame/machine/bsktball.cpp b/src/mame/machine/bsktball.cpp
index c290c9755ff..8621570341a 100644
--- a/src/mame/machine/bsktball.cpp
+++ b/src/mame/machine/bsktball.cpp
@@ -158,10 +158,10 @@ READ8_MEMBER(bsktball_state::bsktball_in0_r)
***************************************************************************/
WRITE8_MEMBER(bsktball_state::bsktball_led1_w)
{
- set_led_status(machine(), 0, offset & 0x01);
+ output().set_led_value(0, offset & 0x01);
}
WRITE8_MEMBER(bsktball_state::bsktball_led2_w)
{
- set_led_status(machine(), 1, offset & 0x01);
+ output().set_led_value(1, offset & 0x01);
}
diff --git a/src/mame/machine/bublbobl.cpp b/src/mame/machine/bublbobl.cpp
index 3998d02f2d6..df5cf37dbac 100644
--- a/src/mame/machine/bublbobl.cpp
+++ b/src/mame/machine/bublbobl.cpp
@@ -201,7 +201,7 @@ WRITE8_MEMBER(bublbobl_state::bublbobl_mcu_port1_w)
//logerror("%04x: 6801U4 port 1 write %02x\n", space.device().safe_pc(), data);
// bit 4: coin lockout
- coin_lockout_global_w(machine(), ~data & 0x10);
+ machine().bookkeeping().coin_lockout_global_w(~data & 0x10);
// bit 5: select 1-way or 2-way coin counter
diff --git a/src/mame/machine/carpolo.cpp b/src/mame/machine/carpolo.cpp
index a1ae3466f6e..a252fe6ac42 100644
--- a/src/mame/machine/carpolo.cpp
+++ b/src/mame/machine/carpolo.cpp
@@ -355,7 +355,7 @@ WRITE8_MEMBER(carpolo_state::pia_0_port_a_w)
bit 6 - Player 1 crash sound
bit 7 - Ball hit pulse sound */
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
m_ttl7474_1f_1->clear_w((data & 0x08) >> 3);
diff --git a/src/mame/machine/cchip.cpp b/src/mame/machine/cchip.cpp
index 60a35b56ddf..2149d4c0c08 100644
--- a/src/mame/machine/cchip.cpp
+++ b/src/mame/machine/cchip.cpp
@@ -76,10 +76,10 @@ WRITE16_MEMBER( taitox_state::cchip1_ram_w )
{
m_cc_port = data;
- coin_lockout_w(space.machine(), 1, data & 0x08);
- coin_lockout_w(space.machine(), 0, data & 0x04);
- coin_counter_w(space.machine(), 1, data & 0x02);
- coin_counter_w(space.machine(), 0, data & 0x01);
+ space.machine().bookkeeping().coin_lockout_w(1, data & 0x08);
+ space.machine().bookkeeping().coin_lockout_w(0, data & 0x04);
+ space.machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ space.machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
else
{
diff --git a/src/mame/machine/cdi070.cpp b/src/mame/machine/cdi070.cpp
index 892b625f2db..4bbb0e26aa5 100644
--- a/src/mame/machine/cdi070.cpp
+++ b/src/mame/machine/cdi070.cpp
@@ -30,7 +30,7 @@ TODO:
const device_type MACHINE_CDI68070 = &device_creator<cdi68070_device>;
#if ENABLE_VERBOSE_LOG
-static inline void ATTR_PRINTF(1,2) verboselog(running_machine &machine, int n_level, const char *s_fmt, ...)
+static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...)
{
if( VERBOSE_LEVEL >= n_level )
{
@@ -39,7 +39,7 @@ static inline void ATTR_PRINTF(1,2) verboselog(running_machine &machine, int n_l
va_start( v, s_fmt );
vsprintf( buf, s_fmt, v );
va_end( v );
- logerror( "%08x: %s", machine.device("maincpu")->safe_pc(), buf );
+ device.logerror("%s: %s", device.machine().describe_context(), buf );
}
}
#else
@@ -336,7 +336,7 @@ TIMER_CALLBACK_MEMBER( cdi68070_device::rx_callback )
if(m_uart.receive_pointer > -1)
{
- verboselog(machine(), 2, "scc68070_rx_callback: Receiving %02x\n", m_uart.receive_holding_register);
+ verboselog(*this, 2, "scc68070_rx_callback: Receiving %02x\n", m_uart.receive_holding_register);
UINT8 interrupt = (m_picr2 >> 4) & 7;
if(interrupt)
@@ -547,7 +547,7 @@ TIMER_CALLBACK_MEMBER( cdi68070_device::tx_callback )
m_uart.transmit_holding_register = m_uart.transmit_buffer[0];
quizard_handle_byte_tx();
- verboselog(machine(), 2, "cdi68070_tx_callback: Transmitting %02x\n", m_uart.transmit_holding_register);
+ verboselog(*this, 2, "cdi68070_tx_callback: Transmitting %02x\n", m_uart.transmit_holding_register);
for(int index = 0; index < m_uart.transmit_pointer; index++)
{
m_uart.transmit_buffer[index] = m_uart.transmit_buffer[index+1];
@@ -584,31 +584,31 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x2000/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Data Register: %04x & %04x\n", m_i2c.data_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Data Register: %04x & %04x\n", m_i2c.data_register, mem_mask);
}
return m_i2c.data_register;
case 0x2002/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Address Register: %04x & %04x\n", m_i2c.address_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Address Register: %04x & %04x\n", m_i2c.address_register, mem_mask);
}
return m_i2c.address_register;
case 0x2004/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Status Register: %04x & %04x\n", m_i2c.status_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Status Register: %04x & %04x\n", m_i2c.status_register, mem_mask);
}
return m_i2c.status_register;
case 0x2006/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Control Register: %04x & %04x\n", m_i2c.control_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Control Register: %04x & %04x\n", m_i2c.control_register, mem_mask);
}
return m_i2c.control_register;
case 0x2008/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Clock Control Register: %04x & %04x\n", m_i2c.clock_control_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Clock Control Register: %04x & %04x\n", m_i2c.clock_control_register, mem_mask);
}
return m_i2c.clock_control_register;
@@ -616,22 +616,22 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x2010/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: UART Mode Register: %04x & %04x\n", m_uart.mode_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: UART Mode Register: %04x & %04x\n", m_uart.mode_register, mem_mask);
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
}
return m_uart.mode_register | 0x20;
case 0x2012/2:
m_uart.status_register |= (1 << 1);
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: UART Status Register: %04x & %04x\n", m_uart.status_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: UART Status Register: %04x & %04x\n", m_uart.status_register, mem_mask);
}
else
{
- verboselog(space.machine(), 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
}
if((m_picr2 >> 4) & 7)
@@ -649,41 +649,41 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x2014/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: UART Clock Select: %04x & %04x\n", m_uart.clock_select, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: UART Clock Select: %04x & %04x\n", m_uart.clock_select, mem_mask);
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
}
return m_uart.clock_select | 0x08;
case 0x2016/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: UART Command Register: %02x & %04x\n", m_uart.command_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: UART Command Register: %02x & %04x\n", m_uart.command_register, mem_mask);
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
}
return m_uart.command_register | 0x80;
case 0x2018/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: UART Transmit Holding Register: %02x & %04x\n", m_uart.transmit_holding_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: UART Transmit Holding Register: %02x & %04x\n", m_uart.transmit_holding_register, mem_mask);
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
}
return m_uart.transmit_holding_register;
case 0x201a/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: UART Receive Holding Register: %02x & %04x\n", m_uart.receive_holding_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: UART Receive Holding Register: %02x & %04x\n", m_uart.receive_holding_register, mem_mask);
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
}
if((m_picr2 >> 4) & 7)
{
@@ -706,31 +706,31 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x2020/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: Timer Control Register: %02x & %04x\n", m_timers.timer_control_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: Timer Control Register: %02x & %04x\n", m_timers.timer_control_register, mem_mask);
}
if(ACCESSING_BITS_8_15)
{
- verboselog(machine(), 12, "cdi68070_periphs_r: Timer Status Register: %02x & %04x\n", m_timers.timer_status_register, mem_mask);
+ verboselog(*this, 12, "cdi68070_periphs_r: Timer Status Register: %02x & %04x\n", m_timers.timer_status_register, mem_mask);
}
return (m_timers.timer_status_register << 8) | m_timers.timer_control_register;
case 0x2022/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: Timer Reload Register: %04x & %04x\n", m_timers.reload_register, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: Timer Reload Register: %04x & %04x\n", m_timers.reload_register, mem_mask);
return m_timers.reload_register;
case 0x2024/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: Timer 0: %04x & %04x\n", m_timers.timer0, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: Timer 0: %04x & %04x\n", m_timers.timer0, mem_mask);
return m_timers.timer0;
case 0x2026/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: Timer 1: %04x & %04x\n", m_timers.timer1, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: Timer 1: %04x & %04x\n", m_timers.timer1, mem_mask);
return m_timers.timer1;
case 0x2028/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: Timer 2: %04x & %04x\n", m_timers.timer2, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: Timer 2: %04x & %04x\n", m_timers.timer2, mem_mask);
return m_timers.timer2;
// PICR1: 80002045
case 0x2044/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: Peripheral Interrupt Control Register 1: %02x & %04x\n", m_picr1, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: Peripheral Interrupt Control Register 1: %02x & %04x\n", m_picr1, mem_mask);
}
return m_picr1;
@@ -738,7 +738,7 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x2046/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: Peripheral Interrupt Control Register 2: %02x & %04x\n", m_picr2, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: Peripheral Interrupt Control Register 2: %02x & %04x\n", m_picr2, mem_mask);
}
return m_picr2 & 0x77;
@@ -747,65 +747,65 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x4040/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Error Register: %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].channel_error, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Error Register: %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].channel_error, mem_mask);
}
if(ACCESSING_BITS_8_15)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Status Register: %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].channel_status, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Status Register: %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].channel_status, mem_mask);
}
return (m_dma.channel[(offset - 0x2000) / 32].channel_status << 8) | m_dma.channel[(offset - 0x2000) / 32].channel_error;
case 0x4004/2:
case 0x4044/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Operation Control Register: %02x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].operation_control, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Operation Control Register: %02x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].operation_control, mem_mask);
}
if(ACCESSING_BITS_8_15)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Device Control Register: %02x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].device_control, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Device Control Register: %02x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].device_control, mem_mask);
}
return (m_dma.channel[(offset - 0x2000) / 32].device_control << 8) | m_dma.channel[(offset - 0x2000) / 32].operation_control;
case 0x4006/2:
case 0x4046/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Channel Control Register: %02x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].channel_control, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Channel Control Register: %02x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].channel_control, mem_mask);
}
if(ACCESSING_BITS_8_15)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Sequence Control Register: %02x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].sequence_control, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Sequence Control Register: %02x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].sequence_control, mem_mask);
}
return (m_dma.channel[(offset - 0x2000) / 32].sequence_control << 8) | m_dma.channel[(offset - 0x2000) / 32].channel_control;
case 0x400a/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Memory Transfer Counter: %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].transfer_counter, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Memory Transfer Counter: %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].transfer_counter, mem_mask);
return m_dma.channel[(offset - 0x2000) / 32].transfer_counter;
case 0x400c/2:
case 0x404c/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Memory Address Counter (High Word): %04x & %04x\n", (offset - 0x2000) / 32, (m_dma.channel[(offset - 0x2000) / 32].memory_address_counter >> 16), mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Memory Address Counter (High Word): %04x & %04x\n", (offset - 0x2000) / 32, (m_dma.channel[(offset - 0x2000) / 32].memory_address_counter >> 16), mem_mask);
return (m_dma.channel[(offset - 0x2000) / 32].memory_address_counter >> 16);
case 0x400e/2:
case 0x404e/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Memory Address Counter (Low Word): %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].memory_address_counter, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Memory Address Counter (Low Word): %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].memory_address_counter, mem_mask);
return m_dma.channel[(offset - 0x2000) / 32].memory_address_counter;
case 0x4014/2:
case 0x4054/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Device Address Counter (High Word): %04x & %04x\n", (offset - 0x2000) / 32, (m_dma.channel[(offset - 0x2000) / 32].device_address_counter >> 16), mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Device Address Counter (High Word): %04x & %04x\n", (offset - 0x2000) / 32, (m_dma.channel[(offset - 0x2000) / 32].device_address_counter >> 16), mem_mask);
return (m_dma.channel[(offset - 0x2000) / 32].device_address_counter >> 16);
case 0x4016/2:
case 0x4056/2:
- verboselog(machine(), 2, "cdi68070_periphs_r: DMA(%d) Device Address Counter (Low Word): %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].device_address_counter, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: DMA(%d) Device Address Counter (Low Word): %04x & %04x\n", (offset - 0x2000) / 32, m_dma.channel[(offset - 0x2000) / 32].device_address_counter, mem_mask);
return m_dma.channel[(offset - 0x2000) / 32].device_address_counter;
// MMU: 80008000 to 8000807f
case 0x8000/2: // Status / Control register
if(ACCESSING_BITS_0_7)
{ // Control
- verboselog(machine(), 2, "cdi68070_periphs_r: MMU Control: %02x & %04x\n", m_mmu.control, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: MMU Control: %02x & %04x\n", m_mmu.control, mem_mask);
return m_mmu.control;
} // Status
else
{
- verboselog(machine(), 2, "cdi68070_periphs_r: MMU Status: %02x & %04x\n", m_mmu.status, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: MMU Status: %02x & %04x\n", m_mmu.status, mem_mask);
return m_mmu.status;
}
case 0x8040/2:
@@ -816,7 +816,7 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x8068/2:
case 0x8070/2:
case 0x8078/2: // Attributes (SD0-7)
- verboselog(machine(), 2, "cdi68070_periphs_r: MMU descriptor %d attributes: %04x & %04x\n", (offset - 0x4020) / 4, m_mmu.desc[(offset - 0x4020) / 4].attr, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: MMU descriptor %d attributes: %04x & %04x\n", (offset - 0x4020) / 4, m_mmu.desc[(offset - 0x4020) / 4].attr, mem_mask);
return m_mmu.desc[(offset - 0x4020) / 4].attr;
case 0x8042/2:
case 0x804a/2:
@@ -826,7 +826,7 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x806a/2:
case 0x8072/2:
case 0x807a/2: // Segment Length (SD0-7)
- verboselog(machine(), 2, "cdi68070_periphs_r: MMU descriptor %d length: %04x & %04x\n", (offset - 0x4020) / 4, m_mmu.desc[(offset - 0x4020) / 4].length, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: MMU descriptor %d length: %04x & %04x\n", (offset - 0x4020) / 4, m_mmu.desc[(offset - 0x4020) / 4].length, mem_mask);
return m_mmu.desc[(offset - 0x4020) / 4].length;
case 0x8044/2:
case 0x804c/2:
@@ -838,7 +838,7 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x807c/2: // Segment Number (SD0-7, A0=1 only)
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_r: MMU descriptor %d segment: %02x & %04x\n", (offset - 0x4020) / 4, m_mmu.desc[(offset - 0x4020) / 4].segment, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: MMU descriptor %d segment: %02x & %04x\n", (offset - 0x4020) / 4, m_mmu.desc[(offset - 0x4020) / 4].segment, mem_mask);
return m_mmu.desc[(offset - 0x4020) / 4].segment;
}
break;
@@ -850,10 +850,10 @@ READ16_MEMBER( cdi68070_device::periphs_r )
case 0x806e/2:
case 0x8076/2:
case 0x807e/2: // Base Address (SD0-7)
- verboselog(machine(), 2, "cdi68070_periphs_r: MMU descriptor %d base: %04x & %04x\n", (offset - 0x4020) / 4, m_mmu.desc[(offset - 0x4020) / 4].base, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_r: MMU descriptor %d base: %04x & %04x\n", (offset - 0x4020) / 4, m_mmu.desc[(offset - 0x4020) / 4].base, mem_mask);
return m_mmu.desc[(offset - 0x4020) / 4].base;
default:
- verboselog(space.machine(), 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_r: Unknown address: %04x & %04x\n", offset * 2, mem_mask);
break;
}
@@ -868,7 +868,7 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
{
// Interrupts: 80001001
case 0x1000/2: // LIR priority level
- verboselog(machine(), 2, "cdi68070_periphs_w: LIR: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: LIR: %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_lir);
break;
@@ -876,35 +876,35 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x2000/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Data Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Data Register: %04x & %04x\n", data, mem_mask);
m_i2c.data_register = data & 0x00ff;
}
break;
case 0x2002/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Address Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Address Register: %04x & %04x\n", data, mem_mask);
m_i2c.address_register = data & 0x00ff;
}
break;
case 0x2004/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Status Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Status Register: %04x & %04x\n", data, mem_mask);
m_i2c.status_register = data & 0x00ff;
}
break;
case 0x2006/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Control Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Control Register: %04x & %04x\n", data, mem_mask);
m_i2c.control_register = data & 0x00ff;
}
break;
case 0x2008/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: I2C Clock Control Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: I2C Clock Control Register: %04x & %04x\n", data, mem_mask);
m_i2c.clock_control_register = data & 0x00ff;
}
break;
@@ -913,70 +913,70 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x2010/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: UART Mode Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: UART Mode Register: %04x & %04x\n", data, mem_mask);
m_uart.mode_register = data & 0x00ff;
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
}
break;
case 0x2012/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: UART Status Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: UART Status Register: %04x & %04x\n", data, mem_mask);
m_uart.status_register = data & 0x00ff;
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
}
break;
case 0x2014/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: UART Clock Select: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: UART Clock Select: %04x & %04x\n", data, mem_mask);
m_uart.clock_select = data & 0x00ff;
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
}
break;
case 0x2016/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: UART Command Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: UART Command Register: %04x & %04x\n", data, mem_mask);
m_uart.command_register = data & 0x00ff;
uart_rx_check();
uart_tx_check();
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
}
break;
case 0x2018/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: UART Transmit Holding Register: %04x & %04x: %c\n", data, mem_mask, (data >= 0x20 && data < 0x7f) ? (data & 0x00ff) : ' ');
+ verboselog(*this, 2, "cdi68070_periphs_w: UART Transmit Holding Register: %04x & %04x: %c\n", data, mem_mask, (data >= 0x20 && data < 0x7f) ? (data & 0x00ff) : ' ');
uart_tx(data & 0x00ff);
m_uart.transmit_holding_register = data & 0x00ff;
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
}
break;
case 0x201a/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: UART Receive Holding Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: UART Receive Holding Register: %04x & %04x\n", data, mem_mask);
m_uart.receive_holding_register = data & 0x00ff;
}
else
{
- verboselog(machine(), 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
}
break;
@@ -984,12 +984,12 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x2020/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: Timer Control Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: Timer Control Register: %04x & %04x\n", data, mem_mask);
m_timers.timer_control_register = data & 0x00ff;
}
if(ACCESSING_BITS_8_15)
{
- verboselog(machine(), 12, "cdi68070_periphs_w: Timer Status Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 12, "cdi68070_periphs_w: Timer Status Register: %04x & %04x\n", data, mem_mask);
m_timers.timer_status_register &= ~(data >> 8);
if(!m_timers.timer_status_register)
{
@@ -999,20 +999,20 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
}
break;
case 0x2022/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: Timer Reload Register: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: Timer Reload Register: %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_timers.reload_register);
break;
case 0x2024/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: Timer 0: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: Timer 0: %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_timers.timer0);
set_timer_callback(0);
break;
case 0x2026/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: Timer 1: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: Timer 1: %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_timers.timer1);
break;
case 0x2028/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: Timer 2: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: Timer 2: %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_timers.timer2);
break;
@@ -1020,7 +1020,7 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x2044/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: Peripheral Interrupt Control Register 1: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: Peripheral Interrupt Control Register 1: %04x & %04x\n", data, mem_mask);
m_picr1 = data & 0x00ff;
}
break;
@@ -1029,7 +1029,7 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x2046/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: Peripheral Interrupt Control Register 2: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: Peripheral Interrupt Control Register 2: %04x & %04x\n", data, mem_mask);
m_picr2 = data & 0x00ff;
}
break;
@@ -1039,11 +1039,11 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x4040/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Error (invalid): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Error (invalid): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
}
if(ACCESSING_BITS_8_15)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Status: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Status: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].channel_status &= ~(data & 0xb0);
}
break;
@@ -1051,12 +1051,12 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x4044/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Operation Control Register: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Operation Control Register: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].operation_control = data & 0x00ff;
}
if(ACCESSING_BITS_8_15)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Device Control Register: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Device Control Register: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].device_control = data >> 8;
}
break;
@@ -1064,7 +1064,7 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x4046/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Channel Control Register: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Channel Control Register: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].channel_control = data & 0x007f;
if(data & CCR_SO)
{
@@ -1073,35 +1073,35 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
}
if(ACCESSING_BITS_8_15)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Sequence Control Register: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Sequence Control Register: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].sequence_control = data >> 8;
}
break;
case 0x400a/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Memory Transfer Counter: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Memory Transfer Counter: %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
COMBINE_DATA(&m_dma.channel[(offset - 0x2000) / 32].transfer_counter);
break;
case 0x400c/2:
case 0x404c/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Memory Address Counter (High Word): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Memory Address Counter (High Word): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].memory_address_counter &= ~(mem_mask << 16);
m_dma.channel[(offset - 0x2000) / 32].memory_address_counter |= data << 16;
break;
case 0x400e/2:
case 0x404e/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Memory Address Counter (Low Word): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Memory Address Counter (Low Word): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].memory_address_counter &= ~mem_mask;
m_dma.channel[(offset - 0x2000) / 32].memory_address_counter |= data;
break;
case 0x4014/2:
case 0x4054/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Device Address Counter (High Word): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Device Address Counter (High Word): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].device_address_counter &= ~(mem_mask << 16);
m_dma.channel[(offset - 0x2000) / 32].device_address_counter |= data << 16;
break;
case 0x4016/2:
case 0x4056/2:
- verboselog(machine(), 2, "cdi68070_periphs_w: DMA(%d) Device Address Counter (Low Word): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: DMA(%d) Device Address Counter (Low Word): %04x & %04x\n", (offset - 0x2000) / 32, data, mem_mask);
m_dma.channel[(offset - 0x2000) / 32].device_address_counter &= ~mem_mask;
m_dma.channel[(offset - 0x2000) / 32].device_address_counter |= data;
break;
@@ -1110,12 +1110,12 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x8000/2: // Status / Control register
if(ACCESSING_BITS_0_7)
{ // Control
- verboselog(machine(), 2, "cdi68070_periphs_w: MMU Control: %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: MMU Control: %04x & %04x\n", data, mem_mask);
m_mmu.control = data & 0x00ff;
} // Status
else
{
- verboselog(machine(), 0, "cdi68070_periphs_w: MMU Status (invalid): %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_w: MMU Status (invalid): %04x & %04x\n", data, mem_mask);
}
break;
case 0x8040/2:
@@ -1126,7 +1126,7 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x8068/2:
case 0x8070/2:
case 0x8078/2: // Attributes (SD0-7)
- verboselog(machine(), 2, "cdi68070_periphs_w: MMU descriptor %d attributes: %04x & %04x\n", (offset - 0x4020) / 4, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: MMU descriptor %d attributes: %04x & %04x\n", (offset - 0x4020) / 4, data, mem_mask);
COMBINE_DATA(&m_mmu.desc[(offset - 0x4020) / 4].attr);
break;
case 0x8042/2:
@@ -1137,7 +1137,7 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x806a/2:
case 0x8072/2:
case 0x807a/2: // Segment Length (SD0-7)
- verboselog(machine(), 2, "cdi68070_periphs_w: MMU descriptor %d length: %04x & %04x\n", (offset - 0x4020) / 4, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: MMU descriptor %d length: %04x & %04x\n", (offset - 0x4020) / 4, data, mem_mask);
COMBINE_DATA(&m_mmu.desc[(offset - 0x4020) / 4].length);
break;
case 0x8044/2:
@@ -1150,7 +1150,7 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x807c/2: // Segment Number (SD0-7, A0=1 only)
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 2, "cdi68070_periphs_w: MMU descriptor %d segment: %04x & %04x\n", (offset - 0x4020) / 4, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: MMU descriptor %d segment: %04x & %04x\n", (offset - 0x4020) / 4, data, mem_mask);
m_mmu.desc[(offset - 0x4020) / 4].segment = data & 0x00ff;
}
break;
@@ -1162,11 +1162,11 @@ WRITE16_MEMBER( cdi68070_device::periphs_w )
case 0x806e/2:
case 0x8076/2:
case 0x807e/2: // Base Address (SD0-7)
- verboselog(machine(), 2, "cdi68070_periphs_w: MMU descriptor %d base: %04x & %04x\n", (offset - 0x4020) / 4, data, mem_mask);
+ verboselog(*this, 2, "cdi68070_periphs_w: MMU descriptor %d base: %04x & %04x\n", (offset - 0x4020) / 4, data, mem_mask);
COMBINE_DATA(&m_mmu.desc[(offset - 0x4020) / 4].base);
break;
default:
- verboselog(machine(), 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
+ verboselog(*this, 0, "cdi68070_periphs_w: Unknown address: %04x = %04x & %04x\n", offset * 2, data, mem_mask);
break;
}
}
diff --git a/src/mame/machine/cdi070.h b/src/mame/machine/cdi070.h
index b2536f98b76..7f3cff2d905 100644
--- a/src/mame/machine/cdi070.h
+++ b/src/mame/machine/cdi070.h
@@ -143,7 +143,6 @@ public:
cdi68070_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// external callbacks
- void init();
void uart_rx(UINT8 data);
void uart_tx(UINT8 data);
@@ -157,8 +156,6 @@ public:
DECLARE_READ16_MEMBER(periphs_r);
DECLARE_WRITE16_MEMBER(periphs_w);
- DECLARE_READ16_MEMBER(uart_loopback_enable);
-
TIMER_CALLBACK_MEMBER( timer0_callback );
TIMER_CALLBACK_MEMBER( rx_callback );
TIMER_CALLBACK_MEMBER( tx_callback );
@@ -278,8 +275,6 @@ private:
void set_timer_callback(int channel);
// internal state
- emu_timer *m_interrupt_timer;
-
UINT16 m_seeds[10];
UINT8 m_state[8];
diff --git a/src/mame/machine/cdicdic.cpp b/src/mame/machine/cdicdic.cpp
index a6fbd02da27..bc01d5a6164 100644
--- a/src/mame/machine/cdicdic.cpp
+++ b/src/mame/machine/cdicdic.cpp
@@ -33,7 +33,7 @@ TODO:
const device_type MACHINE_CDICDIC = &device_creator<cdicdic_device>;
#if ENABLE_VERBOSE_LOG
-static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_level, const char *s_fmt, ...)
+static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...)
{
if( VERBOSE_LEVEL >= n_level )
{
@@ -42,7 +42,7 @@ static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_l
va_start( v, s_fmt );
vsprintf( buf, s_fmt, v );
va_end( v );
- logerror( "%08x: %s", machine.device("maincpu")->safe_pc(), buf );
+ device.logerror("%s: %s", device.machine().describe_context(), buf );
}
}
#else
@@ -429,7 +429,7 @@ void cdicdic_device::decode_audio_sector(const UINT8 *xa, INT32 triggered)
return;
}
- verboselog(machine(), 0, "decode_audio_sector, got header type %02x\n", hdr[2] );
+ verboselog(*this, 0, "decode_audio_sector, got header type %02x\n", hdr[2] );
switch(hdr[2] & 0x3f) // ignore emphasis and reserved bits
{
@@ -542,7 +542,7 @@ void cdicdic_device::sample_trigger()
if(m_decode_addr == 0xffff)
{
- verboselog(machine(), 0, "%s", "Decode stop requested, stopping playback\n" );
+ verboselog(*this, 0, "%s", "Decode stop requested, stopping playback\n" );
m_audio_sample_timer->adjust(attotime::never);
return;
}
@@ -550,11 +550,11 @@ void cdicdic_device::sample_trigger()
if(!m_decode_delay)
{
// Indicate that data has been decoded
- verboselog(machine(), 0, "%s", "Flagging that audio data has been decoded\n" );
+ verboselog(*this, 0, "%s", "Flagging that audio data has been decoded\n" );
m_audio_buffer |= 0x8000;
// Set the CDIC interrupt line
- verboselog(machine(), 0, "%s", "Setting CDIC interrupt line for soundmap decode\n" );
+ verboselog(*this, 0, "%s", "Setting CDIC interrupt line for soundmap decode\n" );
state->m_maincpu->set_input_line_vector(M68K_IRQ_4, 128);
state->m_maincpu->set_input_line(M68K_IRQ_4, ASSERT_LINE);
}
@@ -563,21 +563,21 @@ void cdicdic_device::sample_trigger()
m_decode_delay = 0;
}
- if(CDIC_IS_VALID_SAMPLE_BUF(m_ram, m_decode_addr & 0x3ffe))
+ if(CDIC_IS_VALID_SAMPLE_BUF(m_ram.get(), m_decode_addr & 0x3ffe))
{
- verboselog(machine(), 0, "Hit audio_sample_trigger, with m_decode_addr == %04x, calling decode_audio_sector\n", m_decode_addr );
+ verboselog(*this, 0, "Hit audio_sample_trigger, with m_decode_addr == %04x, calling decode_audio_sector\n", m_decode_addr );
// Decode the data at Z+4, the same offset as a normal CD sector.
- decode_audio_sector(((UINT8*)m_ram) + (m_decode_addr & 0x3ffe) + 4, 1);
+ decode_audio_sector(((UINT8*)m_ram.get()) + (m_decode_addr & 0x3ffe) + 4, 1);
// Swap buffer positions to indicate our new buffer position at the next read
m_decode_addr ^= 0x1a00;
- verboselog(machine(), 0, "Updated m_decode_addr, new value is %04x\n", m_decode_addr );
+ verboselog(*this, 0, "Updated m_decode_addr, new value is %04x\n", m_decode_addr );
//// Delay for Frequency * (18*28*2*size in bytes) before requesting more data
- verboselog(machine(), 0, "%s", "Data is valid, setting up a new callback\n" );
- m_decode_period = attotime::from_hz(CDIC_SAMPLE_BUF_FREQ(m_ram, m_decode_addr & 0x3ffe)) * (18*28*2*CDIC_SAMPLE_BUF_SIZE(m_ram, m_decode_addr & 0x3ffe));
+ verboselog(*this, 0, "%s", "Data is valid, setting up a new callback\n" );
+ m_decode_period = attotime::from_hz(CDIC_SAMPLE_BUF_FREQ(m_ram.get(), m_decode_addr & 0x3ffe)) * (18*28*2*CDIC_SAMPLE_BUF_SIZE(m_ram.get(), m_decode_addr & 0x3ffe));
m_audio_sample_timer->adjust(m_decode_period);
//dmadac_enable(&dmadac[0], 2, 0);
}
@@ -586,7 +586,7 @@ void cdicdic_device::sample_trigger()
// Swap buffer positions to indicate our new buffer position at the next read
m_decode_addr ^= 0x1a00;
- verboselog(machine(), 0, "%s", "Data is not valid, indicating to shut down on the next audio sample\n" );
+ verboselog(*this, 0, "%s", "Data is not valid, indicating to shut down on the next audio sample\n" );
m_decode_addr = 0xffff;
m_audio_sample_timer->adjust(m_decode_period);
}
@@ -656,7 +656,7 @@ void cdicdic_device::process_delayed_command()
lba = nybbles[0] + nybbles[1]*10 + ((nybbles[2] + nybbles[3]*10)*75) + ((nybbles[4] + nybbles[5]*10)*75*60);
//printf( "Reading Mode %d sector from MSF location %06x\n", m_command - 0x28, m_time | 2 );
- verboselog(machine(), 0, "Reading Mode %d sector from MSF location %06x\n", m_command - 0x28, m_time | 2 );
+ verboselog(*this, 0, "Reading Mode %d sector from MSF location %06x\n", m_command - 0x28, m_time | 2 );
cdrom_read_data(m_cd, lba, buffer, CD_TRACK_RAW_DONTCARE);
@@ -695,7 +695,7 @@ void cdicdic_device::process_delayed_command()
if(((buffer[CDIC_SECTOR_SUBMODE2] & (CDIC_SUBMODE_FORM | CDIC_SUBMODE_DATA | CDIC_SUBMODE_AUDIO | CDIC_SUBMODE_VIDEO)) == (CDIC_SUBMODE_FORM | CDIC_SUBMODE_AUDIO)) &&
(m_channel & m_audio_channel & (1 << buffer[CDIC_SECTOR_CHAN2])))
{
- verboselog(machine(), 0, "%s", "Audio sector\n" );
+ verboselog(*this, 0, "%s", "Audio sector\n" );
m_x_buffer |= 0x8000;
//m_data_buffer |= 0x4000;
@@ -706,10 +706,10 @@ void cdicdic_device::process_delayed_command()
m_ram[(m_data_buffer & 5) * (0xa00/2) + (index - 6)] = (buffer[index*2] << 8) | buffer[index*2 + 1];
}
- decode_audio_sector(((UINT8*)m_ram) + ((m_data_buffer & 5) * 0xa00 + 4), 0);
+ decode_audio_sector(((UINT8*)m_ram.get()) + ((m_data_buffer & 5) * 0xa00 + 4), 0);
//printf( "Setting CDIC interrupt line\n" );
- verboselog(machine(), 0, "%s", "Setting CDIC interrupt line for audio sector\n" );
+ verboselog(*this, 0, "%s", "Setting CDIC interrupt line for audio sector\n" );
state->m_maincpu->set_input_line_vector(M68K_IRQ_4, 128);
state->m_maincpu->set_input_line(M68K_IRQ_4, ASSERT_LINE);
}
@@ -728,13 +728,13 @@ void cdicdic_device::process_delayed_command()
(buffer[CDIC_SECTOR_SUBMODE2] & CDIC_SUBMODE_EOF) == CDIC_SUBMODE_EOF)
{
//printf( "Setting CDIC interrupt line\n" );
- verboselog(machine(), 0, "%s", "Setting CDIC interrupt line for message sector\n" );
+ verboselog(*this, 0, "%s", "Setting CDIC interrupt line for message sector\n" );
state->m_maincpu->set_input_line_vector(M68K_IRQ_4, 128);
state->m_maincpu->set_input_line(M68K_IRQ_4, ASSERT_LINE);
}
else
{
- verboselog(machine(), 0, "%s", "Message sector, ignored\n" );
+ verboselog(*this, 0, "%s", "Message sector, ignored\n" );
}
}
else
@@ -748,7 +748,7 @@ void cdicdic_device::process_delayed_command()
}
//printf( "Setting CDIC interrupt line\n" );
- verboselog(machine(), 0, "%s", "Setting CDIC interrupt line for data sector\n" );
+ verboselog(*this, 0, "%s", "Setting CDIC interrupt line for data sector\n" );
state->m_maincpu->set_input_line_vector(M68K_IRQ_4, 128);
state->m_maincpu->set_input_line(M68K_IRQ_4, ASSERT_LINE);
}
@@ -812,7 +812,7 @@ void cdicdic_device::process_delayed_command()
if(!(msf & 0x0000ff))
{
// next_lba = next_nybbles[0] + next_nybbles[1]*10 + ((next_nybbles[2] + next_nybbles[3]*10)*75) + ((next_nybbles[4] + next_nybbles[5]*10)*75*60);
- verboselog(machine(), 0, "Playing CDDA sector from MSF location %06x\n", m_time | 2 );
+ verboselog(*this, 0, "Playing CDDA sector from MSF location %06x\n", m_time | 2 );
state->m_cdda->start_audio(lba, rounded_next_msf);
}
@@ -843,7 +843,7 @@ void cdicdic_device::process_delayed_command()
m_ram[(m_data_buffer & 5) * (0xa00/2) + (index - 6)] = (buffer[index*2] << 8) | buffer[index*2 + 1];
}
- verboselog(machine(), 0, "%s", "Setting CDIC interrupt line for CDDA sector\n" );
+ verboselog(*this, 0, "%s", "Setting CDIC interrupt line for CDDA sector\n" );
state->m_maincpu->set_input_line_vector(M68K_IRQ_4, 128);
state->m_maincpu->set_input_line(M68K_IRQ_4, ASSERT_LINE);
break;
@@ -894,7 +894,7 @@ void cdicdic_device::process_delayed_command()
m_time = next_msf << 8;
- verboselog(machine(), 0, "%s", "Setting CDIC interrupt line for Seek sector\n" );
+ verboselog(*this, 0, "%s", "Setting CDIC interrupt line for Seek sector\n" );
state->m_maincpu->set_input_line_vector(M68K_IRQ_4, 128);
state->m_maincpu->set_input_line(M68K_IRQ_4, ASSERT_LINE);
break;
@@ -910,31 +910,31 @@ READ16_MEMBER( cdicdic_device::regs_r )
switch(addr)
{
case 0x3c00/2: // Command register
- verboselog(machine(), 0, "cdic_r: Command Register = %04x & %04x\n", m_command, mem_mask);
+ verboselog(*this, 0, "cdic_r: Command Register = %04x & %04x\n", m_command, mem_mask);
return m_command;
case 0x3c02/2: // Time register (MSW)
- verboselog(machine(), 0, "cdic_r: Time Register (MSW) = %04x & %04x\n", m_time >> 16, mem_mask);
+ verboselog(*this, 0, "cdic_r: Time Register (MSW) = %04x & %04x\n", m_time >> 16, mem_mask);
return m_time >> 16;
case 0x3c04/2: // Time register (LSW)
- verboselog(machine(), 0, "cdic_r: Time Register (LSW) = %04x & %04x\n", (UINT16)(m_time & 0x0000ffff), mem_mask);
+ verboselog(*this, 0, "cdic_r: Time Register (LSW) = %04x & %04x\n", (UINT16)(m_time & 0x0000ffff), mem_mask);
return m_time & 0x0000ffff;
case 0x3c06/2: // File register
- verboselog(machine(), 0, "cdic_r: File Register = %04x & %04x\n", m_file, mem_mask);
+ verboselog(*this, 0, "cdic_r: File Register = %04x & %04x\n", m_file, mem_mask);
return m_file;
case 0x3c08/2: // Channel register (MSW)
- verboselog(machine(), 0, "cdic_r: Channel Register (MSW) = %04x & %04x\n", m_channel >> 16, mem_mask);
+ verboselog(*this, 0, "cdic_r: Channel Register (MSW) = %04x & %04x\n", m_channel >> 16, mem_mask);
return m_channel >> 16;
case 0x3c0a/2: // Channel register (LSW)
- verboselog(machine(), 0, "cdic_r: Channel Register (LSW) = %04x & %04x\n", m_channel & 0x0000ffff, mem_mask);
+ verboselog(*this, 0, "cdic_r: Channel Register (LSW) = %04x & %04x\n", m_channel & 0x0000ffff, mem_mask);
return m_channel & 0x0000ffff;
case 0x3c0c/2: // Audio Channel register
- verboselog(machine(), 0, "cdic_r: Audio Channel Register = %04x & %04x\n", m_audio_channel, mem_mask);
+ verboselog(*this, 0, "cdic_r: Audio Channel Register = %04x & %04x\n", m_audio_channel, mem_mask);
return m_audio_channel;
case 0x3ff4/2: // ABUF
@@ -944,10 +944,10 @@ READ16_MEMBER( cdicdic_device::regs_r )
if(!((m_audio_buffer | m_x_buffer) & 0x8000))
{
state->m_maincpu->set_input_line(M68K_IRQ_4, CLEAR_LINE);
- verboselog(machine(), 0, "%s", "Clearing CDIC interrupt line\n" );
+ verboselog(*this, 0, "%s", "Clearing CDIC interrupt line\n" );
////printf("Clearing CDIC interrupt line\n" );
}
- verboselog(machine(), 0, "cdic_r: Audio Buffer Register = %04x & %04x\n", temp, mem_mask);
+ verboselog(*this, 0, "cdic_r: Audio Buffer Register = %04x & %04x\n", temp, mem_mask);
return temp;
}
@@ -958,10 +958,10 @@ READ16_MEMBER( cdicdic_device::regs_r )
if(!((m_audio_buffer | m_x_buffer) & 0x8000))
{
state->m_maincpu->set_input_line(M68K_IRQ_4, CLEAR_LINE);
- verboselog(machine(), 0, "%s", "Clearing CDIC interrupt line\n" );
+ verboselog(*this, 0, "%s", "Clearing CDIC interrupt line\n" );
////printf("Clearing CDIC interrupt line\n" );
}
- verboselog(machine(), 0, "cdic_r: X-Buffer Register = %04x & %04x\n", temp, mem_mask);
+ verboselog(*this, 0, "cdic_r: X-Buffer Register = %04x & %04x\n", temp, mem_mask);
return temp;
}
@@ -971,17 +971,17 @@ READ16_MEMBER( cdicdic_device::regs_r )
{
m_z_buffer ^= 0x0001;
}
- verboselog(machine(), 0, "cdic_r: Z-Buffer Register = %04x & %04x\n", m_z_buffer, mem_mask);
+ verboselog(*this, 0, "cdic_r: Z-Buffer Register = %04x & %04x\n", m_z_buffer, mem_mask);
return m_z_buffer;
}
case 0x3ffe/2:
{
- verboselog(machine(), 0, "cdic_r: Data buffer Register = %04x & %04x\n", m_data_buffer, mem_mask);
+ verboselog(*this, 0, "cdic_r: Data buffer Register = %04x & %04x\n", m_data_buffer, mem_mask);
return m_data_buffer;
}
default:
- verboselog(machine(), 0, "cdic_r: UNIMPLEMENTED: Unknown address: %04x & %04x\n", addr*2, mem_mask);
+ verboselog(*this, 0, "cdic_r: UNIMPLEMENTED: Unknown address: %04x & %04x\n", addr*2, mem_mask);
return 0;
}
}
@@ -995,51 +995,51 @@ WRITE16_MEMBER( cdicdic_device::regs_w )
switch(addr)
{
case 0x3c00/2: // Command register
- verboselog(machine(), 0, "cdic_w: Command Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Command Register = %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_command);
break;
case 0x3c02/2: // Time register (MSW)
m_time &= ~(mem_mask << 16);
m_time |= (data & mem_mask) << 16;
- verboselog(machine(), 0, "cdic_w: Time Register (MSW) = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Time Register (MSW) = %04x & %04x\n", data, mem_mask);
break;
case 0x3c04/2: // Time register (LSW)
m_time &= ~mem_mask;
m_time |= data & mem_mask;
- verboselog(machine(), 0, "cdic_w: Time Register (LSW) = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Time Register (LSW) = %04x & %04x\n", data, mem_mask);
break;
case 0x3c06/2: // File register
- verboselog(machine(), 0, "cdic_w: File Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: File Register = %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_file);
break;
case 0x3c08/2: // Channel register (MSW)
m_channel &= ~(mem_mask << 16);
m_channel |= (data & mem_mask) << 16;
- verboselog(machine(), 0, "cdic_w: Channel Register (MSW) = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Channel Register (MSW) = %04x & %04x\n", data, mem_mask);
break;
case 0x3c0a/2: // Channel register (LSW)
m_channel &= ~mem_mask;
m_channel |= data & mem_mask;
- verboselog(machine(), 0, "cdic_w: Channel Register (LSW) = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Channel Register (LSW) = %04x & %04x\n", data, mem_mask);
break;
case 0x3c0c/2: // Audio Channel register
- verboselog(machine(), 0, "cdic_w: Audio Channel Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Audio Channel Register = %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_audio_channel);
break;
case 0x3ff4/2:
- verboselog(machine(), 0, "cdic_w: Audio Buffer Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Audio Buffer Register = %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_audio_buffer);
break;
case 0x3ff6/2:
- verboselog(machine(), 0, "cdic_w: X Buffer Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: X Buffer Register = %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_x_buffer);
break;
@@ -1050,9 +1050,9 @@ WRITE16_MEMBER( cdicdic_device::regs_w )
UINT32 index = 0;
UINT32 device_index = (data & 0x3fff) >> 1;
UINT16 *memory = state->m_planea;
- verboselog(machine(), 0, "memory address counter: %08x\n", scc68070->dma.channel[0].memory_address_counter);
- verboselog(machine(), 0, "cdic_w: DMA Control Register = %04x & %04x\n", data, mem_mask);
- verboselog(machine(), 0, "Doing copy, transferring %04x bytes\n", count * 2 );
+ verboselog(*this, 0, "memory address counter: %08x\n", state->m_scc->dma().channel[0].memory_address_counter);
+ verboselog(*this, 0, "cdic_w: DMA Control Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "Doing copy, transferring %04x bytes\n", count * 2 );
////printf("Doing copy, transferring %04x bytes\n", count * 2 );
if((start & 0x00f00000) == 0x00200000)
{
@@ -1076,7 +1076,7 @@ WRITE16_MEMBER( cdicdic_device::regs_w )
case 0x3ffa/2:
{
- verboselog(machine(), 0, "cdic_w: Z-Buffer Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Z-Buffer Register = %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_z_buffer);
if(m_z_buffer & 0x2000)
{
@@ -1096,12 +1096,12 @@ WRITE16_MEMBER( cdicdic_device::regs_w )
break;
}
case 0x3ffc/2:
- verboselog(machine(), 0, "cdic_w: Interrupt Vector Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Interrupt Vector Register = %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_interrupt_vector);
break;
case 0x3ffe/2:
{
- verboselog(machine(), 0, "cdic_w: Data Buffer Register = %04x & %04x\n", data, mem_mask);
+ verboselog(*this, 0, "cdic_w: Data Buffer Register = %04x & %04x\n", data, mem_mask);
COMBINE_DATA(&m_data_buffer);
if(m_data_buffer & 0x8000)
{
@@ -1140,7 +1140,7 @@ WRITE16_MEMBER( cdicdic_device::regs_w )
break;
}
default:
- verboselog(machine(), 0, "Unknown CDIC command: %02x\n", m_command );
+ verboselog(*this, 0, "Unknown CDIC command: %02x\n", m_command );
break;
}
}
@@ -1148,7 +1148,7 @@ WRITE16_MEMBER( cdicdic_device::regs_w )
break;
}
default:
- verboselog(machine(), 0, "cdic_w: UNIMPLEMENTED: Unknown address: %04x = %04x & %04x\n", addr*2, data, mem_mask);
+ verboselog(*this, 0, "cdic_w: UNIMPLEMENTED: Unknown address: %04x = %04x & %04x\n", addr*2, data, mem_mask);
break;
}
}
@@ -1193,7 +1193,7 @@ void cdicdic_device::device_start()
m_audio_sample_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cdicdic_device::audio_sample_trigger), this));
m_audio_sample_timer->adjust(attotime::never);
- m_ram = auto_alloc_array(machine(), UINT16, 0x3c00/2);
+ m_ram = std::make_unique<UINT16[]>(0x3c00/2);
}
//-------------------------------------------------
@@ -1232,7 +1232,7 @@ void cdicdic_device::device_reset()
else
{
// MAME case
- m_cd = cdrom_open(get_disk_handle(machine(), ":cdrom"));
+ m_cd = cdrom_open(machine().rom_load().get_disk_handle(":cdrom"));
state->m_cdda->set_cdrom(m_cd);
}
}
diff --git a/src/mame/machine/cdicdic.h b/src/mame/machine/cdicdic.h
index 6b131f3f7cc..33ca053e066 100644
--- a/src/mame/machine/cdicdic.h
+++ b/src/mame/machine/cdicdic.h
@@ -56,10 +56,6 @@ public:
// non-static internal members
void sample_trigger();
void process_delayed_command();
- void ram_write(const UINT32 offset, const UINT16 data, const UINT16 mem_mask);
- UINT16 ram_read(const UINT32 offset, const UINT16 mem_mask);
- void register_write(const UINT32 offset, const UINT16 data, const UINT16 mem_mask);
- UINT16 register_read(const UINT32 offset, const UINT16 mem_mask);
DECLARE_READ16_MEMBER( regs_r );
DECLARE_WRITE16_MEMBER( regs_w );
@@ -103,7 +99,7 @@ private:
attotime m_decode_period;
int m_xa_last[4];
- UINT16 *m_ram;
+ std::unique_ptr<UINT16[]> m_ram;
// static internal members
static void decode_xa_mono(INT32 *cdic_xa_last, const UINT8 *xa, INT16 *dp);
diff --git a/src/mame/machine/cdislave.cpp b/src/mame/machine/cdislave.cpp
index e02b32f6221..fbf21c839c8 100644
--- a/src/mame/machine/cdislave.cpp
+++ b/src/mame/machine/cdislave.cpp
@@ -32,7 +32,7 @@ const device_type MACHINE_CDISLAVE = &device_creator<cdislave_device>;
#if ENABLE_VERBOSE_LOG
-static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_level, const char *s_fmt, ...)
+static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...)
{
if( VERBOSE_LEVEL >= n_level )
{
@@ -41,7 +41,7 @@ static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_l
va_start( v, s_fmt );
vsprintf( buf, s_fmt, v );
va_end( v );
- logerror( "%08x: %s", machine.device("maincpu")->safe_pc(), buf );
+ device.logerror("%s: %s", device.machine().describe_context(), buf );
}
}
#else
@@ -56,7 +56,7 @@ TIMER_CALLBACK_MEMBER( cdislave_device::trigger_readback_int )
{
cdi_state *state = machine().driver_data<cdi_state>();
- verboselog(machine(), 0, "%s", "Asserting IRQ2\n" );
+ verboselog(*this, 0, "%s", "Asserting IRQ2\n" );
state->m_maincpu->set_input_line_vector(M68K_IRQ_2, 26);
state->m_maincpu->set_input_line(M68K_IRQ_2, ASSERT_LINE);
m_interrupt_timer->adjust(attotime::never);
@@ -129,7 +129,7 @@ READ16_MEMBER( cdislave_device::slave_r )
if(m_channel[offset].m_out_count)
{
UINT8 ret = m_channel[offset].m_out_buf[m_channel[offset].m_out_index];
- verboselog(machine(), 0, "slave_r: Channel %d: %d, %02x\n", offset, m_channel[offset].m_out_index, ret );
+ verboselog(*this, 0, "slave_r: Channel %d: %d, %02x\n", offset, m_channel[offset].m_out_index, ret );
if(m_channel[offset].m_out_index == 0)
{
switch(m_channel[offset].m_out_cmd)
@@ -140,7 +140,7 @@ READ16_MEMBER( cdislave_device::slave_r )
case 0xf3:
case 0xf4:
case 0xf7:
- verboselog(machine(), 0, "%s", "slave_r: De-asserting IRQ2\n" );
+ verboselog(*this, 0, "%s", "slave_r: De-asserting IRQ2\n" );
state->m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE);
break;
}
@@ -155,7 +155,7 @@ READ16_MEMBER( cdislave_device::slave_r )
}
return ret;
}
- verboselog(machine(), 0, "slave_r: Channel %d: %d\n", offset, m_channel[offset].m_out_index );
+ verboselog(*this, 0, "slave_r: Channel %d: %d\n", offset, m_channel[offset].m_out_index );
return 0xff;
}
@@ -186,7 +186,7 @@ WRITE16_MEMBER( cdislave_device::slave_w )
case 0:
if(m_in_index)
{
- verboselog(machine(), 0, "slave_w: Channel %d: %d = %02x\n", offset, m_in_index, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: %d = %02x\n", offset, m_in_index, data & 0x00ff );
m_in_buf[m_in_index] = data & 0x00ff;
m_in_index++;
if(m_in_index == m_in_count)
@@ -223,11 +223,11 @@ WRITE16_MEMBER( cdislave_device::slave_w )
case 0xe8: case 0xe9: case 0xea: case 0xeb: case 0xec: case 0xed: case 0xee: case 0xef:
case 0xf0: case 0xf1: case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: case 0xf7:
case 0xf8: case 0xf9: case 0xfa: case 0xfb: case 0xfc: case 0xfd: case 0xfe: case 0xff:
- verboselog(machine(), 0, "slave_w: Channel %d: Update Mouse Position (0x%02x)\n", offset, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: Update Mouse Position (0x%02x)\n", offset, data & 0x00ff );
m_in_count = 3;
break;
default:
- verboselog(machine(), 0, "slave_w: Channel %d: Unknown register: %02x\n", offset, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: Unknown register: %02x\n", offset, data & 0x00ff );
m_in_index = 0;
break;
}
@@ -236,7 +236,7 @@ WRITE16_MEMBER( cdislave_device::slave_w )
case 1:
if(m_in_index)
{
- verboselog(machine(), 0, "slave_w: Channel %d: %d = %02x\n", offset, m_in_index, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: %d = %02x\n", offset, m_in_index, data & 0x00ff );
m_in_buf[m_in_index] = data & 0x00ff;
m_in_index++;
if(m_in_index == m_in_count)
@@ -262,7 +262,7 @@ WRITE16_MEMBER( cdislave_device::slave_w )
switch(data & 0x00ff)
{
default:
- verboselog(machine(), 0, "slave_w: Channel %d: Unknown register: %02x\n", offset, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: Unknown register: %02x\n", offset, data & 0x00ff );
memset(m_in_buf, 0, 17);
m_in_index = 0;
m_in_count = 0;
@@ -273,7 +273,7 @@ WRITE16_MEMBER( cdislave_device::slave_w )
case 2:
if(m_in_index)
{
- verboselog(machine(), 0, "slave_w: Channel %d: %d = %02x\n", offset, m_in_index, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: %d = %02x\n", offset, m_in_index, data & 0x00ff );
m_in_buf[m_in_index] = data & 0x00ff;
m_in_index++;
if(m_in_index == m_in_count)
@@ -299,24 +299,24 @@ WRITE16_MEMBER( cdislave_device::slave_w )
switch(data & 0x00ff)
{
case 0x82: // Mute Audio
- verboselog(machine(), 0, "slave_w: Channel %d: Mute Audio (0x82)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Mute Audio (0x82)\n", offset );
dmadac_enable(&state->m_dmadac[0], 2, 0);
m_in_index = 0;
m_in_count = 0;
//cdic->audio_sample_timer->adjust(attotime::never);
break;
case 0x83: // Unmute Audio
- verboselog(machine(), 0, "slave_w: Channel %d: Unmute Audio (0x83)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Unmute Audio (0x83)\n", offset );
dmadac_enable(&state->m_dmadac[0], 2, 1);
m_in_index = 0;
m_in_count = 0;
break;
case 0xf0: // Set Front Panel LCD
- verboselog(machine(), 0, "slave_w: Channel %d: Set Front Panel LCD (0xf0)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Set Front Panel LCD (0xf0)\n", offset );
m_in_count = 17;
break;
default:
- verboselog(machine(), 0, "slave_w: Channel %d: Unknown register: %02x\n", offset, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: Unknown register: %02x\n", offset, data & 0x00ff );
memset(m_in_buf, 0, 17);
m_in_index = 0;
m_in_count = 0;
@@ -327,7 +327,7 @@ WRITE16_MEMBER( cdislave_device::slave_w )
case 3:
if(m_in_index)
{
- verboselog(machine(), 0, "slave_w: Channel %d: %d = %02x\n", offset, m_in_index, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: %d = %02x\n", offset, m_in_index, data & 0x00ff );
m_in_buf[m_in_index] = data & 0x00ff;
m_in_index++;
if(m_in_index == m_in_count)
@@ -361,45 +361,45 @@ WRITE16_MEMBER( cdislave_device::slave_w )
switch(data & 0x00ff)
{
case 0xb0: // Request Disc Status
- verboselog(machine(), 0, "slave_w: Channel %d: Request Disc Status (0xb0)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Request Disc Status (0xb0)\n", offset );
m_in_count = 4;
break;
case 0xb1: // Request Disc Base
- verboselog(machine(), 0, "slave_w: Channel %d: Request Disc Base (0xb1)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Request Disc Base (0xb1)\n", offset );
m_in_count = 4;
break;
case 0xf0: // Request SLAVE Revision
- verboselog(machine(), 0, "slave_w: Channel %d: Request SLAVE Revision (0xf0)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Request SLAVE Revision (0xf0)\n", offset );
prepare_readback(attotime::from_hz(10000), 2, 2, 0xf0, 0x32, 0x31, 0, 0xf0);
m_in_index = 0;
break;
case 0xf3: // Request Pointer Type
- verboselog(machine(), 0, "slave_w: Channel %d: Request Pointer Type (0xf3)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Request Pointer Type (0xf3)\n", offset );
m_in_index = 0;
prepare_readback(attotime::from_hz(10000), 2, 2, 0xf3, 1, 0, 0, 0xf3);
break;
case 0xf4: // Request Test Plug Status
- verboselog(machine(), 0, "slave_w: Channel %d: Request Test Plug Status (0xf4)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Request Test Plug Status (0xf4)\n", offset );
m_in_index = 0;
prepare_readback(attotime::from_hz(10000), 2, 2, 0xf4, 0, 0, 0, 0xf4);
break;
case 0xf6: // Request NTSC/PAL Status
- verboselog(machine(), 0, "slave_w: Channel %d: Request NTSC/PAL Status (0xf6)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Request NTSC/PAL Status (0xf6)\n", offset );
prepare_readback(attotime::never, 2, 2, 0xf6, 2, 0, 0, 0xf6);
m_in_index = 0;
break;
case 0xf7: // Enable Input Polling
- verboselog(machine(), 0, "slave_w: Channel %d: Activate Input Polling (0xf7)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: Activate Input Polling (0xf7)\n", offset );
m_polling_active = 1;
m_in_index = 0;
break;
case 0xfa: // Enable X-Bus Interrupts
- verboselog(machine(), 0, "slave_w: Channel %d: X-Bus Interrupt Enable (0xfa)\n", offset );
+ verboselog(*this, 0, "slave_w: Channel %d: X-Bus Interrupt Enable (0xfa)\n", offset );
m_xbus_interrupt_enable = 1;
m_in_index = 0;
break;
default:
- verboselog(machine(), 0, "slave_w: Channel %d: Unknown register: %02x\n", offset, data & 0x00ff );
+ verboselog(*this, 0, "slave_w: Channel %d: Unknown register: %02x\n", offset, data & 0x00ff );
memset(m_in_buf, 0, 17);
m_in_index = 0;
m_in_count = 0;
diff --git a/src/mame/machine/cdislave.h b/src/mame/machine/cdislave.h
index b5871a7c3b9..4211574c018 100644
--- a/src/mame/machine/cdislave.h
+++ b/src/mame/machine/cdislave.h
@@ -52,7 +52,6 @@ public:
DECLARE_INPUT_CHANGED_MEMBER( mouse_update );
UINT8* get_lcd_state() { return m_lcd_state; }
- void readback_trigger();
DECLARE_READ16_MEMBER( slave_r );
DECLARE_WRITE16_MEMBER( slave_w );
diff --git a/src/mame/machine/compiskb.cpp b/src/mame/machine/compiskb.cpp
index 1fe9e356ec8..91709ad925e 100644
--- a/src/mame/machine/compiskb.cpp
+++ b/src/mame/machine/compiskb.cpp
@@ -319,7 +319,7 @@ WRITE8_MEMBER( compis_keyboard_device::bus_w )
m_speaker->level_w(BIT(data, 5));
// LEDs
- output_set_led_value(LED_CAPS, BIT(data, 6));
+ machine().output().set_led_value(LED_CAPS, BIT(data, 6));
// serial data out
m_out_tx_handler(BIT(data, 7));
diff --git a/src/mame/machine/cps2crpt.cpp b/src/mame/machine/cps2crpt.cpp
index 35bf3d11ef8..b80135acaca 100644
--- a/src/mame/machine/cps2crpt.cpp
+++ b/src/mame/machine/cps2crpt.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Andreas Naive, Nicola Salmoria,Charles MacDonald
/******************************************************************************
diff --git a/src/mame/machine/cps2crypt.h b/src/mame/machine/cps2crypt.h
index c5bc91e0792..6cd59f23ec6 100644
--- a/src/mame/machine/cps2crypt.h
+++ b/src/mame/machine/cps2crypt.h
@@ -73,6 +73,7 @@
#define RINGDEST_WORLD_KEY CRYPT_PARAMS( "19940727","17444903", "000000", "180000" ) // 3039 0080 4020 move.w $00804020,D0
#define RINGDEST_JAPAN_KEY CRYPT_PARAMS( "19940209","17031403", "000000", "180000" ) // 3039 0080 4020 move.w $00804020,D0
#define RINGDEST_ASIA_KEY CRYPT_PARAMS( "19940727","17452103", "000000", "180000" ) // 3039 0080 4020 move.w $00804020,D0
+#define RINGDEST_HISPANIC_KEY CRYPT_PARAMS( "19940727","17473803", "000000", "180000" ) // 3039 0080 4020 move.w $00804020,D0
#define CYBOTS_WORLD_KEY CRYPT_PARAMS( "45425943","05090901", "000000", "100000" ) // 0C38 00FF 0C38 cmpi.b #$FF,$0C38
#define CYBOTS_USA_KEY CRYPT_PARAMS( "43050909","01554259", "000000", "100000" ) // 0C38 00FF 0C38 cmpi.b #$FF,$0C38
diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp
index b110b45cfe3..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
@@ -630,10 +630,10 @@ void lk201_device::send_port(address_space &space, UINT8 offset, UINT8 data)
if (((data & 0x80) == 0) && (ports[offset] & 0x80))
{
// Lower nibble contains the LED values (1 = on, 0 = off)
- output_set_value("led_wait" , (led_data & 0x1) == 0);
- output_set_value("led_compose", (led_data & 0x2) == 0);
- output_set_value("led_hold" , (led_data & 0x4) == 0);
- output_set_value("led_lock" , (led_data & 0x8) == 0);
+ machine().output().set_value("led_wait" , (led_data & 0x1) == 0);
+ machine().output().set_value("led_compose", (led_data & 0x2) == 0);
+ machine().output().set_value("led_hold" , (led_data & 0x4) == 0);
+ machine().output().set_value("led_lock" , (led_data & 0x8) == 0);
}
#endif
diff --git a/src/mame/machine/docg3.cpp b/src/mame/machine/docg3.cpp
index 9ec4ef16b35..1d6fee6c0c6 100644
--- a/src/mame/machine/docg3.cpp
+++ b/src/mame/machine/docg3.cpp
@@ -134,7 +134,7 @@ void diskonchip_g3_device::g3_write_data(UINT8 data)
{
const UINT8 xxx[] = { 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
offset = g3_offset_data_2();
- memcpy( m_data[1] + offset, xxx, 16);
+ memcpy( m_data[1].get() + offset, xxx, 16);
}
offset = g3_offset_data_1() + m_transfer_offset;
m_data[0][offset] = data;
@@ -470,9 +470,9 @@ void diskonchip_g3_device::g3_erase_block()
{
m_plane = j;
offset = g3_offset_data_1();
- memset( m_data[0] + offset, 0xFF, (m_user_data_size + m_extra_area_size));
+ memset( m_data[0].get() + offset, 0xFF, (m_user_data_size + m_extra_area_size));
offset = g3_offset_data_2();
- memcpy( m_data[1] + offset, xxx, 16);
+ memcpy( m_data[1].get() + offset, xxx, 16);
}
}
}
@@ -777,12 +777,12 @@ void diskonchip_g3_device::device_start()
memset(m_sec_2, 0, sizeof(m_sec_2));
- m_data[0] = auto_alloc_array( machine(), UINT8, m_data_size[0]);
- memset(m_data[0], 0, sizeof(UINT8) * m_data_size[0]);
- m_data[1] = auto_alloc_array( machine(), UINT8, m_data_size[1]);
- memset(m_data[1], 0, sizeof(UINT8) * m_data_size[1]);
- m_data[2] = auto_alloc_array( machine(), UINT8, m_data_size[2]);
- memset(m_data[2], 0, sizeof(UINT8) * m_data_size[2]);
+ m_data[0] = std::make_unique<UINT8[]>(m_data_size[0]);
+ memset(m_data[0].get(), 0, sizeof(UINT8) * m_data_size[0]);
+ m_data[1] = std::make_unique<UINT8[]>(m_data_size[1]);
+ memset(m_data[1].get(), 0, sizeof(UINT8) * m_data_size[1]);
+ m_data[2] = std::make_unique<UINT8[]>(m_data_size[2]);
+ memset(m_data[2].get(), 0, sizeof(UINT8) * m_data_size[2]);
// diskonchip_load( device, "diskonchip");
@@ -791,9 +791,9 @@ void diskonchip_g3_device::device_start()
save_item( NAME(m_pages));
save_item( NAME(m_user_data_size));
save_item( NAME(m_extra_area_size));
- save_pointer( NAME(m_data[0]), m_data_size[0]);
- save_pointer( NAME(m_data[1]), m_data_size[1]);
- save_pointer( NAME(m_data[2]), m_data_size[2]);
+ save_pointer( NAME(m_data[0].get()), m_data_size[0]);
+ save_pointer( NAME(m_data[1].get()), m_data_size[1]);
+ save_pointer( NAME(m_data[2].get()), m_data_size[2]);
}
//-------------------------------------------------
@@ -812,9 +812,9 @@ void diskonchip_g3_device::device_reset()
void diskonchip_g3_device::nvram_default()
{
- memset(m_data[0], 0xFF, m_data_size[0]);
- memset(m_data[1], 0x00, m_data_size[1]);
- memset(m_data[2], 0xFF, m_data_size[2]);
+ memset(m_data[0].get(), 0xFF, m_data_size[0]);
+ memset(m_data[1].get(), 0x00, m_data_size[1]);
+ memset(m_data[2].get(), 0xFF, m_data_size[2]);
}
//-------------------------------------------------
@@ -824,9 +824,9 @@ void diskonchip_g3_device::nvram_default()
void diskonchip_g3_device::nvram_read(emu_file &file)
{
- file.read(m_data[0], m_data_size[0]);
- file.read(m_data[1], m_data_size[1]);
- file.read(m_data[2], m_data_size[2]);
+ file.read(m_data[0].get(), m_data_size[0]);
+ file.read(m_data[1].get(), m_data_size[1]);
+ file.read(m_data[2].get(), m_data_size[2]);
}
//-------------------------------------------------
@@ -836,7 +836,7 @@ void diskonchip_g3_device::nvram_read(emu_file &file)
void diskonchip_g3_device::nvram_write(emu_file &file)
{
- file.write(m_data[0], m_data_size[0]);
- file.write(m_data[1], m_data_size[1]);
- file.write(m_data[2], m_data_size[2]);
+ file.write(m_data[0].get(), m_data_size[0]);
+ file.write(m_data[1].get(), m_data_size[1]);
+ file.write(m_data[2].get(), m_data_size[2]);
}
diff --git a/src/mame/machine/docg3.h b/src/mame/machine/docg3.h
index a32a77da1f4..36423f12641 100644
--- a/src/mame/machine/docg3.h
+++ b/src/mame/machine/docg3.h
@@ -82,7 +82,7 @@ private:
UINT32 m_pages;
UINT32 m_user_data_size;
UINT32 m_extra_area_size;
- UINT8 *m_data[3];
+ std::unique_ptr<UINT8[]> m_data[3];
UINT32 m_data_size[3];
UINT8 m_sec_2[0x800];
UINT32 m_data_1036;
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/esqvfd.cpp b/src/mame/machine/esqvfd.cpp
index e103ef6e972..a1379238673 100644
--- a/src/mame/machine/esqvfd.cpp
+++ b/src/mame/machine/esqvfd.cpp
@@ -179,7 +179,7 @@ void esqvfd_t::update_display()
segdata |= 0x0008;
}
- output_set_indexed_value("vfd", (row*m_cols) + col, segdata);
+ machine().output().set_indexed_value("vfd", (row*m_cols) + col, segdata);
m_dirty[row][col] = 0;
}
diff --git a/src/mame/machine/fd1094.cpp b/src/mame/machine/fd1094.cpp
index 6fb0f8b866e..9dc3009cd31 100644
--- a/src/mame/machine/fd1094.cpp
+++ b/src/mame/machine/fd1094.cpp
@@ -572,7 +572,6 @@ fd1094_device::fd1094_device(const machine_config &mconfig, const char *tag, dev
memset(m_masked_opcodes_lookup, 0, sizeof(m_masked_opcodes_lookup));
for (auto opcode : s_masked_opcodes)
{
-
m_masked_opcodes_lookup[0][opcode >> 4] |= 1 << ((opcode >> 1) & 7);
m_masked_opcodes_lookup[1][opcode >> 4] |= 1 << ((opcode >> 1) & 7);
}
diff --git a/src/mame/machine/fddebug.cpp b/src/mame/machine/fddebug.cpp
index 61e019280db..fcb4a46bff8 100644
--- a/src/mame/machine/fddebug.cpp
+++ b/src/mame/machine/fddebug.cpp
@@ -496,14 +496,14 @@ void fd1094_init_debugging(running_machine &machine, const char *cpureg, const c
assert(coderegion_words == keystatus_words);
/* allocate memory for the ignore table */
- ignorepc = auto_alloc_array_clear(machine, UINT8, 1 << 23);
+ ignorepc = make_unique_clear<UINT8>(1 << 23);
/* allocate memory for the undo buffer */
- undobuff = auto_alloc_array(machine, UINT8, keystatus_words * 2);
+ undobuff = std::make_unique<UINT8[]>(keystatus_words * 2);
memcpy(undobuff, keystatus, keystatus_words * 2);
/* allocate memory for the possible seeds array */
- possible_seed = auto_alloc_array(machine, UINT32, 65536);
+ possible_seed = std::make_unique<UINT32[]>(65536);
/* build the opcode table */
build_optable(machine);
diff --git a/src/mame/machine/gaelco2.cpp b/src/mame/machine/gaelco2.cpp
index 19dfd833223..6d39cdd0962 100644
--- a/src/mame/machine/gaelco2.cpp
+++ b/src/mame/machine/gaelco2.cpp
@@ -12,6 +12,7 @@
#include "emu.h"
#include "machine/eepromser.h"
#include "includes/gaelco2.h"
+#include "chd.h"
/***************************************************************************
@@ -141,33 +142,33 @@ DRIVER_INIT_MEMBER(gaelco2_state,snowboar)
WRITE16_MEMBER(gaelco2_state::gaelco2_coin_w)
{
/* Coin Lockouts */
- coin_lockout_w(machine(), 0, ~data & 0x01);
- coin_lockout_w(machine(), 1, ~data & 0x02);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
/* Coin Counters */
- coin_counter_w(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08);
}
WRITE16_MEMBER(gaelco2_state::gaelco2_coin2_w)
{
/* coin counters */
- coin_counter_w(machine(), offset & 0x01, data & 0x01);
+ machine().bookkeeping().coin_counter_w(offset & 0x01, data & 0x01);
}
WRITE16_MEMBER(wrally2_state::wrally2_coin_w)
{
/* coin counters */
- coin_counter_w(machine(), (offset >> 3) & 0x01, data & 0x01);
+ machine().bookkeeping().coin_counter_w((offset >> 3) & 0x01, data & 0x01);
}
WRITE16_MEMBER(gaelco2_state::touchgo_coin_w)
{
if ((offset >> 2) == 0){
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
- coin_counter_w(machine(), 2, data & 0x04);
- coin_counter_w(machine(), 3, data & 0x08);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(2, data & 0x04);
+ machine().bookkeeping().coin_counter_w(3, data & 0x08);
}
}
@@ -286,25 +287,28 @@ 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]);
+ UINT16 data = (temp[(snowboard_latch & 0x1ff)*2]<<8) | temp[((snowboard_latch & 0x1ff)*2)+1];
-/*
- The game writes 2 values and then reads from a memory address.
- If the read value is wrong, the game can crash in some places.
- If we always return 0, the game doesn't crash but you can't see
- the full intro (because it expects 0xffff somewhere).
+ // TODO: replace above lookup (8GB table) with emulation of device
- The protection handles sound, controls, gameplay and some sprites
-*/
+ logerror("%06x: protection read (input %08x output %04x)\n", space.device().safe_pc(), snowboard_latch, data);
+
+
+ return data;
-READ16_MEMBER(gaelco2_state::snowboar_protection_r)
-{
- logerror("%06x: protection read from %04x\n", space.device().safe_pc(), offset*2);
- return 0x0000;
}
WRITE16_MEMBER(gaelco2_state::snowboar_protection_w)
{
COMBINE_DATA(&m_snowboar_protection[offset]);
+
+ snowboard_latch = (snowboard_latch << 16) | data;
+
logerror("%06x: protection write %04x to %04x\n", space.device().safe_pc(), data, offset*2);
}
diff --git a/src/mame/machine/galaxold.cpp b/src/mame/machine/galaxold.cpp
index 2c7d11fddc6..1414e4c3cb2 100644
--- a/src/mame/machine/galaxold.cpp
+++ b/src/mame/machine/galaxold.cpp
@@ -87,29 +87,29 @@ MACHINE_RESET_MEMBER(galaxold_state,hunchbkg)
WRITE8_MEMBER(galaxold_state::galaxold_coin_lockout_w)
{
- coin_lockout_global_w(machine(), ~data & 1);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
}
WRITE8_MEMBER(galaxold_state::galaxold_coin_counter_w)
{
- coin_counter_w(machine(), offset, data & 0x01);
+ machine().bookkeeping().coin_counter_w(offset, data & 0x01);
}
WRITE8_MEMBER(galaxold_state::galaxold_coin_counter_1_w)
{
- coin_counter_w(machine(), 1, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x01);
}
WRITE8_MEMBER(galaxold_state::galaxold_coin_counter_2_w)
{
- coin_counter_w(machine(), 2, data & 0x01);
+ machine().bookkeeping().coin_counter_w(2, data & 0x01);
}
WRITE8_MEMBER(galaxold_state::galaxold_leds_w)
{
- set_led_status(machine(), offset,data & 1);
+ output().set_led_value(offset,data & 1);
}
READ8_MEMBER(galaxold_state::scramblb_protection_1_r)
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/gdrom.cpp b/src/mame/machine/gdrom.cpp
index 59a11e97cc2..5aead47aae1 100644
--- a/src/mame/machine/gdrom.cpp
+++ b/src/mame/machine/gdrom.cpp
@@ -19,72 +19,88 @@
#define GDROM_RETRY_STATE 0x08
#define GDROM_ERROR_STATE 0x09
+
+/*
+ Following data contain real command reply obfuscated, it is extracted by such code:
+
+ for (UINT32 i = 0, offset = 0; i < length; i++)
+ {
+ offset++;
+ offset += GDROM_Cmd71_Reply[offset] - 2;
+ result[i] = GDROM_Cmd71_Reply[offset++];
+ }
+
+ in the case of cmd 0x71 only 1 byte extracted, and later verified for &0x10.
+
+ SysCalls/BIOS uses same extract routine for command 0x72 (14 bytes), but it seems not used on practice
+*/
+
static const UINT8 GDROM_Cmd71_Reply[] =
{
- 0x0b,0x96,0xf0,0x45,0xff,0x7e,0x06,0x3d,0x7d,0x4d,0xbf,0x10,0x00,0x07,0xcf,0x73,
- 0x00,0x9c,0x0c,0xbc,0xaf,0x1c,0x30,0x1c,0xa7,0xe7,0xa8,0x03,0x00,0x98,0x0f,0xbd,
- 0x5b,0xbd,0x50,0xaa,0x39,0x23,0x10,0x31,0x69,0x0e,0xe5,0x13,0xd2,0x00,0x66,0x0d,
- 0xbf,0x54,0xfd,0x5f,0x74,0x37,0x5b,0xf4,0x00,0x22,0x09,0xc6,0xca,0x0f,0xe8,0x93,
- 0xab,0xa4,0x61,0x00,0x2e,0x0e,0x4b,0xe1,0x8b,0x76,0xa5,0x6a,0xe6,0x9c,0xc4,0x23,
- 0x4b,0x00,0x1b,0x06,0x01,0x91,0xe2,0x00,0xcf,0x0d,0x38,0xca,0xb9,0x3a,0x91,0xe7,
- 0xef,0xe5,0x00,0x4b,0x09,0xd6,0x68,0xd3,0xc4,0x3e,0x2d,0xaf,0x2a,0x00,0xf9,0x0d,
- 0x78,0xfc,0xae,0xed,0xb3,0x99,0x5a,0x32,0x00,0xe7,0x0a,0x4c,0x97,0x22,0x82,0x5b,
- 0x7a,0x06,0x00,0x4c,0x0e,0x42,0x78,0x57,0xf5,0x46,0xfc,0x20,0xcb,0x6b,0x5b,0x01,
- 0x00,0x86,0x0e,0xe4,0x26,0xb2,0x71,0xcd,0xa5,0xe3,0x06,0x33,0x9a,0x8e,0x00,0x50,
- 0x07,0x07,0x34,0xf5,0xe6,0xef,0x32,0x00,0x13,0x0f,0x59,0x41,0x0f,0x56,0x38,0x02,
- 0x64,0x2a,0x07,0x2a,0x00,0x3e,0x11,0x52,0x1d,0x2a,0x76,0x5f,0xa0,0x66,0x2f,0xb2,
- 0xc7,0x97,0x6e,0x5e,0xe2,0x52,0x58,0x00,0xca,0x09,0xa5,0x89,0x0a,0xdf,0x00,0xde,
- 0x06,0x50,0xb8,0x49,0x00,0xb4,0x05,0x77,0xe8,0x24,0xbb,0x00,0x91,0x0c,0xa2,0x89,
- 0x62,0x8b,0x6a,0xde,0x60,0xc6,0xe7,0x00,0x0f,0x0f,0x96,0x11,0xd2,0x55,0xe6,0xbf,
- 0x0b,0x48,0xab,0x5c,0x00,0xdc,0x0a,0xba,0xd7,0x30,0x0e,0x48,0x63,0x78,0x00,0x0c,
- 0x0d,0xd2,0x8a,0xfb,0xfe,0xa3,0x3a,0xf8,0x88,0xdd,0x4b,0xa9,0xa2,0x00,0x75,0x0a,
- 0x0d,0x5d,0x24,0x37,0x9d,0xc5,0xf7,0x00,0x25,0x0b,0xdb,0xef,0xe0,0x41,0x3e,0x52,
- 0x00,0x4e,0x03,0xb7,0xe5,0x00,0xb9,0x11,0x5a,0xde,0xcf,0x57,0x1a,0xb9,0x7f,0xfc,
- 0xee,0x26,0xcd,0x7b,0x00,0x2b,0x08,0x4b,0x09,0xb8,0x6a,0x70,0x00,0x9f,0x11,0x4b,
- 0x15,0x8c,0xa3,0x87,0x4f,0x05,0x8e,0x37,0xde,0x63,0x39,0xef,0x4b,0xfc,0xab,0x00,
- 0x0b,0x10,0xaa,0x91,0xe1,0x0f,0xae,0xe9,0x3a,0x69,0x03,0xf8,0xd2,0x69,0xe2,0x00,
- 0xc1,0x07,0x3d,0x5c,0x00,0x82,0x08,0xa9,0xc4,0x68,0x2e,0xad,0x00,0xd1,0x0e,0xf7,
- 0x47,0xc6,0xcd,0xc8,0x7c,0x8e,0x5c,0x00,0xb9,0x95,0x00,0xf4,0x04,0xe3,0x00,0x5b,
- 0x07,0x74,0xc7,0x65,0x8e,0x84,0xc6,0x00,0x61,0x07,0x44,0x80,0x00,0x3f,0x0e,0xc8,
- 0x78,0x72,0xd3,0x47,0x4d,0xc2,0xc0,0xaf,0x13,0x54,0x00,0x31,0x0d,0xf7,0xd8,0x48,
- 0x92,0xe2,0x7f,0x9f,0x44,0x2f,0x33,0x68,0x0d,0x00,0xab,0x10,0xea,0xfe,0x19,0x8e,
- 0xf8,0x81,0x7c,0x6f,0xe1,0xde,0x06,0xb3,0x4d,0x00,0x66,0x11,0x4c,0xae,0xb7,0xf9,
- 0xee,0x2f,0x8e,0xb0,0xe1,0x7e,0x95,0x8d,0x00,0x6f,0x0d,0xf4,0x9d,0x88,0xe3,0xca,
- 0xb2,0xc4,0xbb,0x47,0x69,0xa0,0xf3,0x00,0x48,0x0b,0x41,0x17,0xa0,0x64,0x71,0x0e,
- 0x00,0x82,0x1e,0x34,0x4d,0x18,0x80,0x85,0xa9,0x4c,0x66,0x0b,0x75,0x9b,0x61,0x13,
- 0x27,0x70,0x7a,0x81,0xcd,0x02,0xab,0x57,0x02,0xdf,0x52,0x93,0xdf,0x83,0xa8,0x48,
- 0x9e,0xa6,0x6f,0x74,0x03,0x89,0x25,0x28,0x96,0x52,0x67,0xff,0xd8,0x7a,0xb1,0x3c,
- 0x46,0x2c,0xef,0x84,0xc1,0xe1,0xc9,0xc6,0x96,0xdc,0xa9,0xaa,0x82,0xc4,0x27,0x58,
- 0x75,0x57,0x34,0x67,0x3b,0xfb,0xbf,0x25,0x3b,0xfb,0x13,0xf6,0x96,0xec,0x16,0xe5,
- 0xfd,0x26,0xda,0xa8,0xc6,0x1b,0x7f,0x50,0xff,0x47,0x55,0x08,0xed,0x08,0x93,0x00,
- 0xc4,0x9b,0x67,0x71,0xa6,0xec,0x16,0xcc,0x87,0x20,0x07,0x47,0x00,0xa6,0x5d,0x79,
- 0xab,0x4f,0x6f,0xa1,0x6b,0x7a,0xc4,0x27,0xa3,0xda,0x94,0xc3,0x7f,0x4f,0xe5,0xf3,
- 0x6f,0x1b,0xe5,0xcc,0xe5,0xf0,0xc9,0x9d,0xfd,0xae,0xac,0x39,0xe5,0x4c,0x83,0x58,
- 0x65,0x25,0x74,0x92,0x81,0x9e,0xb6,0xa0,0x02,0xa9,0x07,0x9b,0xe7,0xb6,0x57,0x79,
- 0x4a,0xd9,0xfa,0xce,0x94,0xb4,0xcc,0x05,0x3c,0x86,0x06,0xdd,0xa6,0xcd,0x24,0x24,
- 0xc1,0xfa,0x48,0xf9,0x0c,0xc9,0xc4,0x6c,0x82,0x96,0xf6,0x17,0x09,0x31,0xe2,0xc4,
- 0xfd,0x77,0x46,0xcf,0xb2,0x18,0x01,0x5f,0xd1,0x6b,0x56,0x7b,0x94,0xb8,0xe5,0x4a,
- 0x19,0x6c,0xc0,0xf0,0x70,0xb6,0xf7,0x93,0xd1,0xd3,0x6e,0x2b,0x53,0x7c,0x85,0x6d,
- 0x0c,0xd1,0x77,0x8b,0x90,0xee,0x15,0xda,0xe0,0x55,0x09,0x58,0xfc,0x56,0x9f,0x31,
- 0x46,0xaf,0xc3,0xcb,0x71,0x8d,0xf2,0x75,0xc3,0x2c,0xa1,0xbb,0xcf,0xc4,0x56,0x27,
- 0x9b,0x7c,0xaf,0xfe,0x4e,0x3e,0xcd,0xb4,0xaa,0x6a,0xf3,0xf5,0x22,0xe3,0xe1,0x82,
- 0x68,0xa5,0xdb,0xb3,0x9e,0x8f,0x7b,0x5e,0xf0,0x90,0x3f,0x79,0x8c,0x52,0x88,0x61,
- 0xae,0x76,0x63,0x14,0x0f,0x19,0xce,0x1d,0x63,0xa1,0xb2,0x10,0xd7,0xe2,0xb1,0x94,
- 0xcb,0x33,0x85,0x28,0x9b,0x7d,0xf4,0xf5,0x50,0x25,0xdb,0x9b,0xa5,0x35,0x9c,0xb0,
- 0x92,0x09,0x31,0xe3,0xab,0x40,0xf4,0x4d,0xe8,0x35,0x0a,0xb3,0xc3,0x21,0x9c,0x86,
- 0x29,0xcb,0x77,0xa4,0xbc,0x57,0xda,0xd8,0x82,0xa5,0xe8,0x80,0x72,0xcf,0xad,0x81,
- 0x28,0x2e,0xd8,0xff,0xd1,0xb6,0x97,0x2b,0xff,0x00,0x06,0xe1,0x39,0x44,0x4b,0x1c,
- 0x19,0xab,0x4d,0x5b,0x3e,0xd6,0x5c,0x1b,0xbb,0x64,0x68,0x32,0x7c,0xf5,0x9e,0xc9,
- 0xb4,0xe8,0x1b,0x29,0x4d,0x7f,0x80,0x80,0x8b,0x7e,0x0a,0x1c,0x9a,0xe6,0x49,0xbf,
- 0xc5,0x1e,0x67,0xb6,0x05,0x7d,0x90,0xe4,0x4b,0x40,0x9b,0xaf,0xde,0x52,0x80,0x17,
- 0x56,0x81,0x3a,0xea,0x82,0x53,0x62,0x8c,0x96,0xfb,0x6f,0x97,0x16,0xc1,0xd4,0x78,
- 0xe7,0x7b,0x5a,0xb9,0xeb,0x2a,0x68,0x87,0xd3,0x33,0x45,0x31,0xfe,0xfa,0x1c,0xf4,
- 0x86,0x90,0x77,0x73,0xa9,0xd9,0x4a,0xd1,0xcf,0x4a,0x23,0xae,0xf9,0xdb,0xd8,0x09,
- 0xdc,0x18,0x0d,0x6a,0x19,0xe4,0x65,0x8c,0x64,0xc6,0xdc,0xc7,0xe3,0xa9,0xb1,0x91,
- 0xc8,0x4c,0x9e,0xc1,0x7f,0x3b,0xa3,0xcb,0xdd,0xcf,0x1d,0xf0,0x6e,0x07,0xce,0xdc,
- 0xcd,0x0d,0x1e,0x7e,0x11,0x55,0xdf,0x8b,0xab,0x3a,0x3b,0xb6,0x52,0x6e,0xa7,0x7f,
- 0xd1,0x00,0xbe,0x33,0x9b,0xf2,0x4a,0xfc,0x9d,0xcf,0xc6,0x8f,0x7b,0xc4,0xe7,0xda,
- 0x1c,0x2a,0x6e,0x26
+ 0x96, 0x0B, 0x45, 0xF0, 0x7E, 0xFF, 0x3D, 0x06, 0x4D, 0x7D, 0x10, 0xBF, 0x07, 0x00, 0x73, 0xCF,
+ 0x9C, 0x00, 0xBC, 0x0C, 0x1C, 0xAF, 0x1C, 0x30, 0xE7, 0xA7, 0x03, 0xA8, 0x98, 0x00, 0xBD, 0x0F,
+ 0xBD, 0x5B, 0xAA, 0x50, 0x23, 0x39, 0x31, 0x10, 0x0E, 0x69, 0x13, 0xE5, 0x00, 0xD2, 0x0D, 0x66,
+ 0x54, 0xBF, 0x5F, 0xFD, 0x37, 0x74, 0xF4, 0x5B, 0x22, 0x00, 0xC6, 0x09, 0x0F, 0xCA, 0x93, 0xE8,
+ 0xA4, 0xAB, 0x00, 0x61, 0x0E, 0x2E, 0xE1, 0x4B, 0x76, 0x8B, 0x6A, 0xA5, 0x9C, 0xE6, 0x23, 0xC4,
+ 0x00, 0x4B, 0x06, 0x1B, 0x91, 0x01, 0x00, 0xE2, 0x0D, 0xCF, 0xCA, 0x38, 0x3A, 0xB9, 0xE7, 0x91,
+ 0xE5, 0xEF, 0x4B, 0x00, 0xD6, 0x09, 0xD3, 0x68, 0x3E, 0xC4, 0xAF, 0x2D, 0x00, 0x2A, 0x0D, 0xF9,
+ 0xFC, 0x78, 0xED, 0xAE, 0x99, 0xB3, 0x32, 0x5A, 0xE7, 0x00, 0x4C, 0x0A, 0x22, 0x97, 0x5B, 0x82,
+ 0x06, 0x7A, 0x4C, 0x00, 0x42, 0x0E, 0x57, 0x78, 0x46, 0xF5, 0x20, 0xFC, 0x6B, 0xCB, 0x01, 0x5B,
+ 0x86, 0x00, 0xE4, 0x0E, 0xB2, 0x26, 0xCD, 0x71, 0xE3, 0xA5, 0x33, 0x06, 0x8E, 0x9A, 0x50, 0x00,
+ 0x07, 0x07, 0xF5, 0x34, 0xEF, 0xE6, 0x00, 0x32, 0x0F, 0x13, 0x41, 0x59, 0x56, 0x0F, 0x02, 0x38,
+ 0x2A, 0x64, 0x2A, 0x07, 0x3E, 0x00, 0x52, 0x11, 0x2A, 0x1D, 0x5F, 0x76, 0x66, 0xA0, 0xB2, 0x2F,
+ 0x97, 0xC7, 0x5E, 0x6E, 0x52, 0xE2, 0x00, 0x58, 0x09, 0xCA, 0x89, 0xA5, 0xDF, 0x0A, 0xDE, 0x00,
+ 0x50, 0x06, 0x49, 0xB8, 0xB4, 0x00, 0x77, 0x05, 0x24, 0xE8, 0x00, 0xBB, 0x0C, 0x91, 0x89, 0xA2,
+ 0x8B, 0x62, 0xDE, 0x6A, 0xC6, 0x60, 0x00, 0xE7, 0x0F, 0x0F, 0x11, 0x96, 0x55, 0xD2, 0xBF, 0xE6,
+ 0x48, 0x0B, 0x5C, 0xAB, 0xDC, 0x00, 0xBA, 0x0A, 0x30, 0xD7, 0x48, 0x0E, 0x78, 0x63, 0x0C, 0x00,
+ 0xD2, 0x0D, 0xFB, 0x8A, 0xA3, 0xFE, 0xF8, 0x3A, 0xDD, 0x88, 0xA9, 0x4B, 0x00, 0xA2, 0x0A, 0x75,
+ 0x5D, 0x0D, 0x37, 0x24, 0xC5, 0x9D, 0x00, 0xF7, 0x0B, 0x25, 0xEF, 0xDB, 0x41, 0xE0, 0x52, 0x3E,
+ 0x4E, 0x00, 0xB7, 0x03, 0x00, 0xE5, 0x11, 0xB9, 0xDE, 0x5A, 0x57, 0xCF, 0xB9, 0x1A, 0xFC, 0x7F,
+ 0x26, 0xEE, 0x7B, 0xCD, 0x2B, 0x00, 0x4B, 0x08, 0xB8, 0x09, 0x70, 0x6A, 0x9F, 0x00, 0x4B, 0x11,
+ 0x8C, 0x15, 0x87, 0xA3, 0x05, 0x4F, 0x37, 0x8E, 0x63, 0xDE, 0xEF, 0x39, 0xFC, 0x4B, 0x00, 0xAB,
+ 0x10, 0x0B, 0x91, 0xAA, 0x0F, 0xE1, 0xE9, 0xAE, 0x69, 0x3A, 0xF8, 0x03, 0x69, 0xD2, 0x00, 0xE2,
+ 0x07, 0xC1, 0x5C, 0x3D, 0x82, 0x00, 0xA9, 0x08, 0x68, 0xC4, 0xAD, 0x2E, 0xD1, 0x00, 0xF7, 0x0E,
+ 0xC6, 0x47, 0xC8, 0xCD, 0x8E, 0x7C, 0x00, 0x5C, 0x95, 0xB9, 0xF4, 0x00, 0xE3, 0x04, 0x5B, 0x00,
+ 0x74, 0x07, 0x65, 0xC7, 0x84, 0x8E, 0x00, 0xC6, 0x07, 0x61, 0x80, 0x44, 0x3F, 0x00, 0xC8, 0x0E,
+ 0x72, 0x78, 0x47, 0xD3, 0xC2, 0x4D, 0xAF, 0xC0, 0x54, 0x13, 0x31, 0x00, 0xF7, 0x0D, 0x48, 0xD8,
+ 0xE2, 0x92, 0x9F, 0x7F, 0x2F, 0x44, 0x68, 0x33, 0x00, 0x0D, 0x10, 0xAB, 0xFE, 0xEA, 0x8E, 0x19,
+ 0x81, 0xF8, 0x6F, 0x7C, 0xDE, 0xE1, 0xB3, 0x06, 0x00, 0x4D, 0x11, 0x66, 0xAE, 0x4C, 0xF9, 0xB7,
+ 0x2F, 0xEE, 0xB0, 0x8E, 0x7E, 0xE1, 0x8D, 0x95, 0x6F, 0x00, 0xF4, 0x0D, 0x88, 0x9D, 0xCA, 0xE3,
+ 0xC4, 0xB2, 0x47, 0xBB, 0xA0, 0x69, 0x00, 0xF3, 0x0B, 0x48, 0x17, 0x41, 0x64, 0xA0, 0x0E, 0x71,
+ 0x82, 0x00, 0x34, 0x1E, 0x18, 0x4D, 0x85, 0x80, 0x4C, 0xA9, 0x0B, 0x66, 0x9B, 0x75, 0x13, 0x61,
+ 0x70, 0x27, 0x81, 0x7A, 0x02, 0xCD, 0x57, 0xAB, 0xDF, 0x02, 0x93, 0x52, 0x83, 0xDF, 0x48, 0xA8,
+ 0xA6, 0x9E, 0x74, 0x6F, 0x89, 0x03, 0x28, 0x25, 0x52, 0x96, 0xFF, 0x67, 0x7A, 0xD8, 0x3C, 0xB1,
+ 0x2C, 0x46, 0x84, 0xEF, 0xE1, 0xC1, 0xC6, 0xC9, 0xDC, 0x96, 0xAA, 0xA9, 0xC4, 0x82, 0x58, 0x27,
+ 0x57, 0x75, 0x67, 0x34, 0xFB, 0x3B, 0x25, 0xBF, 0xFB, 0x3B, 0xF6, 0x13, 0xEC, 0x96, 0xE5, 0x16,
+ 0x26, 0xFD, 0xA8, 0xDA, 0x1B, 0xC6, 0x50, 0x7F, 0x47, 0xFF, 0x08, 0x55, 0x08, 0xED, 0x00, 0x93,
+ 0x9B, 0xC4, 0x71, 0x67, 0xEC, 0xA6, 0xCC, 0x16, 0x20, 0x87, 0x47, 0x07, 0xA6, 0x00, 0x79, 0x5D,
+ 0x4F, 0xAB, 0xA1, 0x6F, 0x7A, 0x6B, 0x27, 0xC4, 0xDA, 0xA3, 0xC3, 0x94, 0x4F, 0x7F, 0xF3, 0xE5,
+ 0x1B, 0x6F, 0xCC, 0xE5, 0xF0, 0xE5, 0x9D, 0xC9, 0xAE, 0xFD, 0x39, 0xAC, 0x4C, 0xE5, 0x58, 0x83,
+ 0x25, 0x65, 0x92, 0x74, 0x9E, 0x81, 0xA0, 0xB6, 0xA9, 0x02, 0x9B, 0x07, 0xB6, 0xE7, 0x79, 0x57,
+ 0xD9, 0x4A, 0xCE, 0xFA, 0xB4, 0x94, 0x05, 0xCC, 0x86, 0x3C, 0xDD, 0x06, 0xCD, 0xA6, 0x24, 0x24,
+ 0xFA, 0xC1, 0xF9, 0x48, 0xC9, 0x0C, 0x6C, 0xC4, 0x96, 0x82, 0x17, 0xF6, 0x31, 0x09, 0xC4, 0xE2,
+ 0x77, 0xFD, 0xCF, 0x46, 0x18, 0xB2, 0x5F, 0x01, 0x6B, 0xD1, 0x7B, 0x56, 0xB8, 0x94, 0x4A, 0xE5,
+ 0x6C, 0x19, 0xF0, 0xC0, 0xB6, 0x70, 0x93, 0xF7, 0xD3, 0xD1, 0x2B, 0x6E, 0x7C, 0x53, 0x6D, 0x85,
+ 0xD1, 0x0C, 0x8B, 0x77, 0xEE, 0x90, 0xDA, 0x15, 0x55, 0xE0, 0x58, 0x09, 0x56, 0xFC, 0x31, 0x9F,
+ 0xAF, 0x46, 0xCB, 0xC3, 0x8D, 0x71, 0x75, 0xF2, 0x2C, 0xC3, 0xBB, 0xA1, 0xC4, 0xCF, 0x27, 0x56,
+ 0x7C, 0x9B, 0xFE, 0xAF, 0x3E, 0x4E, 0xB4, 0xCD, 0x6A, 0xAA, 0xF5, 0xF3, 0xE3, 0x22, 0x82, 0xE1,
+ 0xA5, 0x68, 0xB3, 0xDB, 0x8F, 0x9E, 0x5E, 0x7B, 0x90, 0xF0, 0x79, 0x3F, 0x52, 0x8C, 0x61, 0x88,
+ 0x76, 0xAE, 0x14, 0x63, 0x19, 0x0F, 0x1D, 0xCE, 0xA1, 0x63, 0x10, 0xB2, 0xE2, 0xD7, 0x94, 0xB1,
+ 0x33, 0xCB, 0x28, 0x85, 0x7D, 0x9B, 0xF5, 0xF4, 0x25, 0x50, 0x9B, 0xDB, 0x35, 0xA5, 0xB0, 0x9C,
+ 0x09, 0x92, 0xE3, 0x31, 0x40, 0xAB, 0x4D, 0xF4, 0x35, 0xE8, 0xB3, 0x0A, 0x21, 0xC3, 0x86, 0x9C,
+ 0xCB, 0x29, 0xA4, 0x77, 0x57, 0xBC, 0xD8, 0xDA, 0xA5, 0x82, 0x80, 0xE8, 0xCF, 0x72, 0x81, 0xAD,
+ 0x2E, 0x28, 0xFF, 0xD8, 0xB6, 0xD1, 0x2B, 0x97, 0x00, 0xFF, 0xE1, 0x06, 0x44, 0x39, 0x1C, 0x4B,
+ 0xAB, 0x19, 0x5B, 0x4D, 0xD6, 0x3E, 0x1B, 0x5C, 0x64, 0xBB, 0x32, 0x68, 0xF5, 0x7C, 0xC9, 0x9E,
+ 0xE8, 0xB4, 0x29, 0x1B, 0x7F, 0x4D, 0x80, 0x80, 0x7E, 0x8B, 0x1C, 0x0A, 0xE6, 0x9A, 0xBF, 0x49,
+ 0x1E, 0xC5, 0xB6, 0x67, 0x7D, 0x05, 0xE4, 0x90, 0x40, 0x4B, 0xAF, 0x9B, 0x52, 0xDE, 0x17, 0x80,
+ 0x81, 0x56, 0xEA, 0x3A, 0x53, 0x82, 0x8C, 0x62, 0xFB, 0x96, 0x97, 0x6F, 0xC1, 0x16, 0x78, 0xD4,
+ 0x7B, 0xE7, 0xB9, 0x5A, 0x2A, 0xEB, 0x87, 0x68, 0x33, 0xD3, 0x31, 0x45, 0xFA, 0xFE, 0xF4, 0x1C,
+ 0x90, 0x86, 0x73, 0x77, 0xD9, 0xA9, 0xD1, 0x4A, 0x4A, 0xCF, 0xAE, 0x23, 0xDB, 0xF9, 0x09, 0xD8,
+ 0x18, 0xDC, 0x6A, 0x0D, 0xE4, 0x19, 0x8C, 0x65, 0xC6, 0x64, 0xC7, 0xDC, 0xA9, 0xE3, 0x91, 0xB1,
+ 0x4C, 0xC8, 0xC1, 0x9E, 0x3B, 0x7F, 0xCB, 0xA3, 0xCF, 0xDD, 0xF0, 0x1D, 0x07, 0x6E, 0xDC, 0xCE,
+ 0x0D, 0xCD, 0x7E, 0x1E, 0x55, 0x11, 0x8B, 0xDF, 0x3A, 0xAB, 0xB6, 0x3B, 0x6E, 0x52, 0x7F, 0xA7,
+ 0x00, 0xD1, 0x33, 0xBE, 0xF2, 0x9B, 0xFC, 0x4A, 0xCF, 0x9D, 0x8F, 0xC6, 0xC4, 0x7B, 0xDA, 0xE7,
+ 0x2A, 0x1C, 0x26, 0x6E
};
@@ -216,7 +232,7 @@ void gdrom_device::ExecCommand()
break;
}
- case 0x70:
+ case 0x70: // unknown, return no data, always followed by cmd 0x71, command[1] parameter can be 0x1f or 0x9f
m_phase = SCSI_PHASE_STATUS;
m_status_code = SCSI_STATUS_CODE_GOOD;
m_transfer_length = 0;
diff --git a/src/mame/machine/harddriv.cpp b/src/mame/machine/harddriv.cpp
index 9f4a74f8948..9dc14a34438 100644
--- a/src/mame/machine/harddriv.cpp
+++ b/src/mame/machine/harddriv.cpp
@@ -357,7 +357,7 @@ WRITE16_MEMBER( harddriv_state::hd68k_wr0_write )
case 6: /* CC1 */
case 7: /* CC2 */
- coin_counter_w(space.machine(), offset - 6, data);
+ space.machine().bookkeeping().coin_counter_w(offset - 6, data);
break;
}
}
@@ -390,7 +390,7 @@ WRITE16_MEMBER( harddriv_state::hd68k_nwr_w )
{
case 0: /* CR2 */
case 1: /* CR1 */
- set_led_status(space.machine(), offset, data);
+ machine().output().set_led_value(offset, data);
break;
case 2: /* LC1 */
break;
diff --git a/src/mame/machine/hp48.cpp b/src/mame/machine/hp48.cpp
index e9769f159c1..71bb4b656ff 100644
--- a/src/mame/machine/hp48.cpp
+++ b/src/mame/machine/hp48.cpp
@@ -262,12 +262,12 @@ void hp48_state::hp48_update_annunciators()
bit 7: master enable
*/
int markers = HP48_IO_8(0xb);
- output_set_value( "lshift0", (markers & 0x81) == 0x81 );
- output_set_value( "rshift0", (markers & 0x82) == 0x82 );
- output_set_value( "alpha0", (markers & 0x84) == 0x84 );
- output_set_value( "alert0", (markers & 0x88) == 0x88 );
- output_set_value( "busy0", (markers & 0x90) == 0x90 );
- output_set_value( "transmit0", (markers & 0xb0) == 0xb0 );
+ output().set_value( "lshift0", (markers & 0x81) == 0x81 );
+ output().set_value( "rshift0", (markers & 0x82) == 0x82 );
+ output().set_value( "alpha0", (markers & 0x84) == 0x84 );
+ output().set_value( "alert0", (markers & 0x88) == 0x88 );
+ output().set_value( "busy0", (markers & 0x90) == 0x90 );
+ output().set_value( "transmit0", (markers & 0xb0) == 0xb0 );
}
@@ -666,7 +666,7 @@ void hp48_state::hp48_apply_modules()
{
int off = (m_bank_switch << 16) % m_port_size[1];
LOG(( "hp48_apply_modules: port 2 offset is %i\n", off ));
- m_modules[HP48_NCE3].data = m_port_data[1] + off;
+ m_modules[HP48_NCE3].data = m_port_data[1].get() + off;
}
/* ROM A19 (hi 256 KB) / NCE3 (port 2) control switch */
@@ -922,13 +922,12 @@ void hp48_port_image_device::hp48_fill_port()
hp48_state *state = machine().driver_data<hp48_state>();
int size = state->m_port_size[m_port];
LOG(( "hp48_fill_port: %s module=%i size=%i rw=%i\n", tag(), m_module, size, state->m_port_write[m_port] ));
- state->m_port_data[m_port] = global_alloc_array(UINT8, 2 * size);
- memset( state->m_port_data[m_port], 0, 2 * size );
+ state->m_port_data[m_port] = make_unique_clear<UINT8[]>(2 * size);
state->m_modules[m_module].off_mask = 2 * (( size > 128 * 1024 ) ? 128 * 1024 : size) - 1;
state->m_modules[m_module].read = read8_delegate();
state->m_modules[m_module].write = write8_delegate();
state->m_modules[m_module].isnop = state->m_port_write[m_port] ? 0 : 1;
- state->m_modules[m_module].data = state->m_port_data[m_port];
+ state->m_modules[m_module].data = (void*)state->m_port_data[m_port].get();
state->hp48_apply_modules();
}
@@ -963,8 +962,8 @@ bool hp48_port_image_device::call_load()
state->m_port_size[m_port] = size;
state->m_port_write[m_port] = !is_readonly();
hp48_fill_port( );
- fread(state->m_port_data[m_port], state->m_port_size[m_port] );
- state->hp48_decode_nibble( state->m_port_data[m_port], state->m_port_data[m_port], state->m_port_size[m_port] );
+ fread(state->m_port_data[m_port].get(), state->m_port_size[m_port] );
+ state->hp48_decode_nibble( state->m_port_data[m_port].get(), state->m_port_data[m_port].get(), state->m_port_size[m_port] );
return IMAGE_INIT_PASS;
}
@@ -996,11 +995,11 @@ void hp48_port_image_device::call_unload()
tag(), state->m_port_size[m_port], state->m_port_write[m_port] ));
if ( state->m_port_write[m_port] )
{
- state->hp48_encode_nibble( state->m_port_data[m_port], state->m_port_data[m_port], state->m_port_size[m_port] );
+ state->hp48_encode_nibble( state->m_port_data[m_port].get(), state->m_port_data[m_port].get(), state->m_port_size[m_port] );
fseek( 0, SEEK_SET );
- fwrite( state->m_port_data[m_port], state->m_port_size[m_port] );
+ fwrite( state->m_port_data[m_port].get(), state->m_port_size[m_port] );
}
- global_free_array( state->m_port_data[m_port] );
+ state->m_port_data[m_port] = nullptr;
hp48_unfill_port();
state->hp48_apply_modules();
}
diff --git a/src/mame/machine/irobot.cpp b/src/mame/machine/irobot.cpp
index 011f4b8ceeb..21838961b96 100644
--- a/src/mame/machine/irobot.cpp
+++ b/src/mame/machine/irobot.cpp
@@ -140,8 +140,8 @@ WRITE8_MEMBER(irobot_state::irobot_rom_banksel_w)
membank("bank1")->set_base(&RAM[0x1A000]);
break;
}
- set_led_status(machine(), 0,data & 0x10);
- set_led_status(machine(), 1,data & 0x20);
+ output().set_led_value(0,data & 0x10);
+ output().set_led_value(1,data & 0x20);
}
TIMER_CALLBACK_MEMBER(irobot_state::scanline_callback)
diff --git a/src/mame/machine/k573dio.cpp b/src/mame/machine/k573dio.cpp
index 69632cf51bd..672aa2fa209 100644
--- a/src/mame/machine/k573dio.cpp
+++ b/src/mame/machine/k573dio.cpp
@@ -116,8 +116,8 @@ k573dio_device::k573dio_device(const machine_config &mconfig, const char *tag, d
void k573dio_device::device_start()
{
output_cb.resolve_safe();
- ram = auto_alloc_array( machine(), UINT16, 12 * 1024 * 1024 );
- save_pointer( NAME(ram), 12 * 1024 * 1024 );
+ ram = std::make_unique<UINT16[]>(12 * 1024 * 1024 );
+ save_pointer( NAME(ram.get()), 12 * 1024 * 1024 );
}
void k573dio_device::device_reset()
diff --git a/src/mame/machine/k573dio.h b/src/mame/machine/k573dio.h
index 6fb44f4089f..9762536b072 100644
--- a/src/mame/machine/k573dio.h
+++ b/src/mame/machine/k573dio.h
@@ -73,7 +73,7 @@ protected:
private:
devcb_write8 output_cb;
- UINT16 *ram;
+ std::unique_ptr<UINT16[]> ram;
UINT32 ram_adr;
UINT8 output_data[8];
diff --git a/src/mame/machine/kay_kbd.cpp b/src/mame/machine/kay_kbd.cpp
index 2568bd8af9c..736d39d5fd8 100644
--- a/src/mame/machine/kay_kbd.cpp
+++ b/src/mame/machine/kay_kbd.cpp
@@ -284,16 +284,15 @@ static const UINT8 keyboard[8][10][8] = {
MACHINE_RESET_MEMBER(kaypro_state,kay_kbd)
{
- kay_kbd_t *kbd = m_kbd = auto_alloc_clear(machine(), kay_kbd_t);
+ kay_kbd_t *kbd = m_kbd = auto_alloc_clear(machine(), <kay_kbd_t>());
/* disable CapsLock LED initially */
- set_led_status(machine(), 1, 1);
- set_led_status(machine(), 1, 0);
+ output().set_led_value(1, 1);
+ output().set_led_value(1, 0);
kbd->beeper = machine().device<beep_device>("beeper");
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 */
}
@@ -344,7 +343,7 @@ INTERRUPT_GEN_MEMBER(kaypro_state::kay_kbd_interrupt)
kbd->lastrow = row;
/* CapsLock LED */
if( row == 3 && chg == 0x80 )
- set_led_status(machine(), 1, (kbd->keyrows[3] & 0x80) ? 0 : 1);
+ output().set_led_value(1, (kbd->keyrows[3] & 0x80) ? 0 : 1);
if (newval & chg) /* key(s) pressed ? */
{
diff --git a/src/mame/machine/kaypro.cpp b/src/mame/machine/kaypro.cpp
index 1d3cdad73bd..2339e770307 100644
--- a/src/mame/machine/kaypro.cpp
+++ b/src/mame/machine/kaypro.cpp
@@ -63,8 +63,8 @@ WRITE8_MEMBER( kaypro_state::kayproii_pio_system_w )
m_floppy->ss_w(!BIT(data, 2)); // signal exists even though drives are single sided
}
- output_set_value("ledA", BIT(data, 0)); /* LEDs in artwork */
- output_set_value("ledB", BIT(data, 1));
+ output().set_value("ledA", BIT(data, 0)); /* LEDs in artwork */
+ output().set_value("ledB", BIT(data, 1));
m_centronics->write_strobe(BIT(data, 4));
@@ -124,8 +124,8 @@ WRITE8_MEMBER( kaypro_state::kaypro2x_system_port_w )
m_floppy->ss_w(!BIT(data, 2));
}
- output_set_value("ledA", BIT(data, 0)); /* LEDs in artwork */
- output_set_value("ledB", BIT(data, 1));
+ output().set_value("ledA", BIT(data, 0)); /* LEDs in artwork */
+ output().set_value("ledB", BIT(data, 1));
m_centronics->write_strobe(BIT(data, 3));
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/konppc.cpp b/src/mame/machine/konppc.cpp
index 93dbc89041b..d70d3364142 100644
--- a/src/mame/machine/konppc.cpp
+++ b/src/mame/machine/konppc.cpp
@@ -33,7 +33,7 @@ void konppc_device::device_start()
for (i=0; i < num_cgboards; i++)
{
dsp_comm_ppc[i][0] = 0x00;
- dsp_shared_ram[i] = auto_alloc_array(machine(), UINT32, DSP_BANK_SIZE * 2/4);
+ dsp_shared_ram[i] = std::make_unique<UINT32[]>(DSP_BANK_SIZE * 2/4);
dsp_shared_ram_bank[i] = 0;
dsp_state[i] = 0x80;
@@ -43,19 +43,19 @@ void konppc_device::device_start()
nwk_fifo_read_ptr[i] = 0;
nwk_fifo_write_ptr[i] = 0;
- nwk_fifo[i] = auto_alloc_array(machine(), UINT32, 0x800);
- nwk_ram[i] = auto_alloc_array(machine(), UINT32, 0x2000);
+ nwk_fifo[i] = std::make_unique<UINT32[]>(0x800);
+ nwk_ram[i] = std::make_unique<UINT32[]>(0x2000);
save_item(NAME(dsp_comm_ppc[i]), i);
save_item(NAME(dsp_comm_sharc[i]), i);
save_item(NAME(dsp_shared_ram_bank[i]), i);
- save_pointer(NAME(dsp_shared_ram[i]), DSP_BANK_SIZE * 2 / sizeof(dsp_shared_ram[i][0]), i);
+ save_pointer(NAME(dsp_shared_ram[i].get()), DSP_BANK_SIZE * 2 / sizeof(dsp_shared_ram[i][0]), i);
save_item(NAME(dsp_state[i]), i);
save_item(NAME(nwk_device_sel[i]), i);
save_item(NAME(nwk_fifo_read_ptr[i]), i);
save_item(NAME(nwk_fifo_write_ptr[i]), i);
- save_pointer(NAME(nwk_fifo[i]), 0x800, i);
- save_pointer(NAME(nwk_ram[i]), 0x2000, i);
+ save_pointer(NAME(nwk_fifo[i].get()), 0x800, i);
+ save_pointer(NAME(nwk_ram[i].get()), 0x2000, i);
}
save_item(NAME(cgboard_id));
@@ -185,7 +185,7 @@ WRITE32_MEMBER( konppc_device::cgboard_dsp_shared_w_ppc )
if (cgboard_id < MAX_CG_BOARDS)
{
space.machine().scheduler().trigger(10000); // Remove the timeout (a part of the GTI Club FIFO test workaround)
- COMBINE_DATA(dsp_shared_ram[cgboard_id] + (offset + (dsp_shared_ram_bank[cgboard_id] * DSP_BANK_SIZE_WORD)));
+ COMBINE_DATA(dsp_shared_ram[cgboard_id].get() + (offset + (dsp_shared_ram_bank[cgboard_id] * DSP_BANK_SIZE_WORD)));
}
}
diff --git a/src/mame/machine/konppc.h b/src/mame/machine/konppc.h
index c17cdfa922c..cc3a3c386b9 100644
--- a/src/mame/machine/konppc.h
+++ b/src/mame/machine/konppc.h
@@ -78,7 +78,7 @@ private:
INT32 cgboard_type;
INT32 num_cgboards;
- UINT32 *dsp_shared_ram[MAX_CG_BOARDS];
+ std::unique_ptr<UINT32[]> dsp_shared_ram[MAX_CG_BOARDS];
UINT32 dsp_state[MAX_CG_BOARDS];
UINT32 nwk_device_sel[MAX_CG_BOARDS];
@@ -89,11 +89,11 @@ private:
int nwk_fifo_full;
int nwk_fifo_mask;
- UINT32 *nwk_fifo[MAX_CG_BOARDS];
+ std::unique_ptr<UINT32[]> nwk_fifo[MAX_CG_BOARDS];
INT32 nwk_fifo_read_ptr[MAX_CG_BOARDS];
INT32 nwk_fifo_write_ptr[MAX_CG_BOARDS];
- UINT32 *nwk_ram[MAX_CG_BOARDS];
+ std::unique_ptr<UINT32[]> nwk_ram[MAX_CG_BOARDS];
};
diff --git a/src/mame/machine/leland.cpp b/src/mame/machine/leland.cpp
index f140b00603e..95d43339ecb 100644
--- a/src/mame/machine/leland.cpp
+++ b/src/mame/machine/leland.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
+// copyright-holders:Aaron Giles, Paul Leaman
/***************************************************************************
Cinemat/Leland driver
@@ -369,7 +369,7 @@ MACHINE_START_MEMBER(leland_state,ataxx)
{
/* set the odd data banks */
m_battery_ram = reinterpret_cast<UINT8 *>(memshare("battery")->ptr());
- m_extra_tram = auto_alloc_array(machine(), UINT8, ATAXX_EXTRA_TRAM_SIZE);
+ m_extra_tram = std::make_unique<UINT8[]>(ATAXX_EXTRA_TRAM_SIZE);
/* start scanline interrupts going */
m_master_int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(leland_state::ataxx_interrupt_callback),this));
@@ -378,7 +378,7 @@ MACHINE_START_MEMBER(leland_state,ataxx)
MACHINE_RESET_MEMBER(leland_state,ataxx)
{
- memset(m_extra_tram, 0, ATAXX_EXTRA_TRAM_SIZE);
+ memset(m_extra_tram.get(), 0, ATAXX_EXTRA_TRAM_SIZE);
m_master_int_timer->adjust(m_screen->time_until_pos(8), 8);
/* initialize the XROM */
diff --git a/src/mame/machine/lisa.cpp b/src/mame/machine/lisa.cpp
index 48ba7a2e9fd..c0364ccbdb9 100644
--- a/src/mame/machine/lisa.cpp
+++ b/src/mame/machine/lisa.cpp
@@ -909,7 +909,7 @@ DRIVER_INIT_MEMBER(lisa_state,lisa2)
m_features.has_double_sided_floppy = 0;
m_features.has_mac_xl_video = 0;
- m_bad_parity_table = auto_alloc_array(machine(), UINT8, 0x40000); /* 1 bit per byte of CPU RAM */
+ m_bad_parity_table = std::make_unique<UINT8[]>(0x40000); /* 1 bit per byte of CPU RAM */
}
DRIVER_INIT_MEMBER(lisa_state,lisa210)
@@ -922,7 +922,7 @@ DRIVER_INIT_MEMBER(lisa_state,lisa210)
m_features.has_double_sided_floppy = 0;
m_features.has_mac_xl_video = 0;
- m_bad_parity_table = auto_alloc_array(machine(), UINT8, 0x40000); /* 1 bit per byte of CPU RAM */
+ m_bad_parity_table = std::make_unique<UINT8[]>(0x40000); /* 1 bit per byte of CPU RAM */
}
DRIVER_INIT_MEMBER(lisa_state,mac_xl)
@@ -935,7 +935,7 @@ DRIVER_INIT_MEMBER(lisa_state,mac_xl)
m_features.has_double_sided_floppy = 0;
m_features.has_mac_xl_video = 1;
- m_bad_parity_table = auto_alloc_array(machine(), UINT8, 0x40000); /* 1 bit per byte of CPU RAM */
+ m_bad_parity_table = std::make_unique<UINT8[]>(0x40000); /* 1 bit per byte of CPU RAM */
}
void lisa_state::machine_start()
@@ -967,7 +967,7 @@ void lisa_state::machine_reset()
m_parity_error_pending = 0;
m_bad_parity_count = 0;
- memset(m_bad_parity_table, 0, 0x40000); /* Clear */
+ memset(m_bad_parity_table.get(), 0, 0x40000); /* Clear */
/* init video */
diff --git a/src/mame/machine/llc.cpp b/src/mame/machine/llc.cpp
index b208071b3c2..94deded1675 100644
--- a/src/mame/machine/llc.cpp
+++ b/src/mame/machine/llc.cpp
@@ -81,7 +81,7 @@ WRITE8_MEMBER(llc_state::llc1_port1_b_w)
count++;
if (count == 1)
- output_set_digit_value(digit, data & 0x7f);
+ output().set_digit_value(digit, data & 0x7f);
else
if (count == 3)
{
diff --git a/src/mame/machine/mac.cpp b/src/mame/machine/mac.cpp
index 2ae0f4ca38d..e62ecd96cc9 100644
--- a/src/mame/machine/mac.cpp
+++ b/src/mame/machine/mac.cpp
@@ -347,7 +347,7 @@ void mac_state::v8_resize()
if (is_rom)
{
mac_install_memory(0x00000000, memory_size-1, memory_size, memory_data, is_rom, "bank1");
-
+
// install catcher in place of ROM that will detect the first access to ROM in its real location
m_maincpu->space(AS_PROGRAM).install_read_handler(0xa00000, 0xafffff, read32_delegate(FUNC(mac_state::rom_switch_r), this), 0xffffffff);
}
@@ -496,7 +496,7 @@ void mac_state::set_memory_overlay(int overlay)
READ32_MEMBER(mac_state::rom_switch_r)
{
- offs_t ROM_size = memregion("bootrom")->bytes();
+ offs_t ROM_size = memregion("bootrom")->bytes();
UINT32 *ROM_data = (UINT32 *)memregion("bootrom")->base();
// disable the overlay
@@ -505,7 +505,7 @@ READ32_MEMBER(mac_state::rom_switch_r)
set_memory_overlay(0);
}
-// printf("rom_switch_r: offset %08x ROM_size -1 = %08x, masked = %08x\n", offset, ROM_size-1, offset & ((ROM_size - 1)>>2));
+// printf("rom_switch_r: offset %08x ROM_size -1 = %08x, masked = %08x\n", offset, ROM_size-1, offset & ((ROM_size - 1)>>2));
return ROM_data[offset & ((ROM_size - 1)>>2)];
}
@@ -1946,7 +1946,7 @@ void mac_state::machine_reset()
if (m_overlay_timeout != (emu_timer *)nullptr)
{
- if ((m_model == MODEL_MAC_LC_III) || (m_model == MODEL_MAC_LC_III_PLUS) || (m_model >= MODEL_MAC_LC_475 && m_model <= MODEL_MAC_LC_580)) // up to 36 MB
+ if ((m_model == MODEL_MAC_LC_III) || (m_model == MODEL_MAC_LC_III_PLUS) || (m_model >= MODEL_MAC_LC_475 && m_model <= MODEL_MAC_LC_580)) // up to 36 MB
{
m_overlay_timeout->adjust(attotime::never);
}
diff --git a/src/mame/machine/mboard.cpp b/src/mame/machine/mboard.cpp
index 1ea5963a3ab..255391d5bb8 100644
--- a/src/mame/machine/mboard.cpp
+++ b/src/mame/machine/mboard.cpp
@@ -158,7 +158,7 @@ data: 10 0001 0000 Line E
*/
for (i=0; i < 64; i++) /* all LED's off */
- output_set_led_value(i, 0);
+ output().set_led_value(i, 0);
if (Line18_LED)
{
@@ -170,9 +170,9 @@ data: 10 0001 0000 Line E
{
LED = (i_18*8 + 8-i_AH-1);
if (!(Line18_LED & (1 << i_18))) /* cleared bit */
- output_set_led_value(LED, 1);
+ output().set_led_value(LED, 1);
//else
- // output_set_led_value(LED, 0);
+ // output().set_led_value(LED, 0);
}
}
}
@@ -295,14 +295,14 @@ void mboard_state::set_artwork()
{
int i;
for (i=0;i<64;i++)
- output_set_indexed_value("P", i, m_board[i]);
+ output().set_indexed_value("P", i, m_board[i]);
}
void mboard_state::mboard_set_border_pieces()
{
int i;
for (i=0;i<12;i++)
- output_set_indexed_value("Q", i, border_pieces[i]);
+ output().set_indexed_value("Q", i, border_pieces[i]);
}
TIMER_DEVICE_CALLBACK_MEMBER(mboard_state::mboard_update_artwork )
diff --git a/src/mame/machine/mega32x.cpp b/src/mame/machine/mega32x.cpp
index 8c60160097d..864e3d00b0b 100644
--- a/src/mame/machine/mega32x.cpp
+++ b/src/mame/machine/mega32x.cpp
@@ -1038,13 +1038,13 @@ void sega_32x_device::_32x_check_framebuffer_swap(bool enabled)
if (m_32x_fb_swap & 1)
{
- m_32x_access_dram = m_32x_dram0;
- m_32x_display_dram = m_32x_dram1;
+ m_32x_access_dram = m_32x_dram0.get();
+ m_32x_display_dram = m_32x_dram1.get();
}
else
{
- m_32x_display_dram = m_32x_dram0;
- m_32x_access_dram = m_32x_dram1;
+ m_32x_display_dram = m_32x_dram0.get();
+ m_32x_access_dram = m_32x_dram1.get();
}
}
}
@@ -1835,20 +1835,20 @@ void sega_32x_device::device_start()
m_32x_pwm_timer = machine().scheduler().timer_alloc(FUNC(_32x_pwm_callback), (void*)this);
m_32x_pwm_timer->adjust(attotime::never);
- m_32x_dram0 = auto_alloc_array(machine(), UINT16, 0x40000/2);
- m_32x_dram1 = auto_alloc_array(machine(), UINT16, 0x40000/2);
+ m_32x_dram0 = std::make_unique<UINT16[]>(0x40000/2);
+ m_32x_dram1 = std::make_unique<UINT16[]>(0x40000/2);
- memset(m_32x_dram0, 0x00, 0x40000);
- memset(m_32x_dram1, 0x00, 0x40000);
+ memset(m_32x_dram0.get(), 0x00, 0x40000);
+ memset(m_32x_dram1.get(), 0x00, 0x40000);
- m_32x_palette_lookup = auto_alloc_array(machine(), UINT16, 0x200/2);
- m_32x_palette = auto_alloc_array(machine(), UINT16, 0x200/2);
+ m_32x_palette_lookup = std::make_unique<UINT16[]>(0x200/2);
+ m_32x_palette = std::make_unique<UINT16[]>(0x200/2);
- memset(m_32x_palette_lookup, 0x00, 0x200);
- memset(m_32x_palette, 0x00, 0x200);
+ memset(m_32x_palette_lookup.get(), 0x00, 0x200);
+ memset(m_32x_palette.get(), 0x00, 0x200);
- m_32x_display_dram = m_32x_dram0;
- m_32x_access_dram = m_32x_dram1;
+ m_32x_display_dram = m_32x_dram0.get();
+ m_32x_access_dram = m_32x_dram1.get();
}
void sega_32x_device::device_reset()
diff --git a/src/mame/machine/mega32x.h b/src/mame/machine/mega32x.h
index e79b4a32043..f076b0f7a71 100644
--- a/src/mame/machine/mega32x.h
+++ b/src/mame/machine/mega32x.h
@@ -193,11 +193,11 @@ private:
UINT16 m_commsram[8];
- UINT16* m_32x_dram0;
- UINT16* m_32x_dram1;
+ std::unique_ptr<UINT16[]> m_32x_dram0;
+ std::unique_ptr<UINT16[]> m_32x_dram1;
UINT16 *m_32x_display_dram, *m_32x_access_dram;
- UINT16* m_32x_palette;
- UINT16* m_32x_palette_lookup;
+ std::unique_ptr<UINT16[]> m_32x_palette;
+ std::unique_ptr<UINT16[]> m_32x_palette_lookup;
UINT16 m_fifo_block_a[4];
UINT16 m_fifo_block_b[4];
diff --git a/src/mame/machine/megacd.cpp b/src/mame/machine/megacd.cpp
index 0a1449eb45a..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))];
}
@@ -1240,8 +1240,8 @@ WRITE16_MEMBER( sega_segacd_device::segacd_sub_led_ready_w )
segacd_redled = (data >> 8)&1;
segacd_greenled = (data >> 9)&1;
- output_set_value("red_led",segacd_redled ^ 1);
- output_set_value("green_led",segacd_greenled ^ 1);
+ machine().output().set_value("red_led",segacd_redled ^ 1);
+ machine().output().set_value("green_led",segacd_greenled ^ 1);
//popmessage("%02x %02x",segacd_greenled,segacd_redled);
}
diff --git a/src/mame/machine/megacd.h b/src/mame/machine/megacd.h
index b592175e914..5823c0bd02c 100644
--- a/src/mame/machine/megacd.h
+++ b/src/mame/machine/megacd.h
@@ -97,8 +97,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER( irq3_timer_callback );
TIMER_DEVICE_CALLBACK_MEMBER( stamp_timer_callback );
- UINT16 handle_segacd_sub_int_callback(int irqline);
-
inline void write_pixel(UINT8 pix, int pixeloffset);
UINT16 segacd_1meg_mode_word_read(int offset, UINT16 mem_mask);
void segacd_1meg_mode_word_write(int offset, UINT16 data, UINT16 mem_mask, int use_pm);
diff --git a/src/mame/machine/megadriv.cpp b/src/mame/machine/megadriv.cpp
index 9cc3ebbbacb..ad16299070f 100644
--- a/src/mame/machine/megadriv.cpp
+++ b/src/mame/machine/megadriv.cpp
@@ -798,7 +798,7 @@ UINT32 md_base_state::screen_update_megadriv(screen_device &screen, bitmap_rgb32
if (!m_vdp->m_use_alt_timing)
srcy = &m_vdp->m_render_bitmap->pix(y, 0);
else
- srcy = m_vdp->m_render_line;
+ srcy = m_vdp->m_render_line.get();
for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
{
@@ -1030,12 +1030,12 @@ void md_base_state::megadriv_init_common()
if (m_z80snd)
{
//printf("GENESIS Sound Z80 cpu found '%s'\n", machine().device("genesis_snd_z80")->tag());
- m_genz80.z80_prgram = auto_alloc_array(machine(), UINT8, 0x2000);
- membank("bank1")->set_base(m_genz80.z80_prgram);
+ m_genz80.z80_prgram = std::make_unique<UINT8[]>(0x2000);
+ membank("bank1")->set_base(m_genz80.z80_prgram.get());
save_item(NAME(m_genz80.z80_is_reset));
save_item(NAME(m_genz80.z80_has_bus));
save_item(NAME(m_genz80.z80_bank_addr));
- save_pointer(NAME(m_genz80.z80_prgram), 0x2000);
+ save_pointer(NAME(m_genz80.z80_prgram.get()), 0x2000);
}
m_maincpu->set_tas_write_callback(write8_delegate(FUNC(md_base_state::megadriv_tas_callback),this));
diff --git a/src/mame/machine/meters.cpp b/src/mame/machine/meters.cpp
index db27b99ba7f..c948d0f77bf 100644
--- a/src/mame/machine/meters.cpp
+++ b/src/mame/machine/meters.cpp
@@ -10,110 +10,137 @@
#include "emu.h"
#include "meters.h"
-// local vars /////////////////////////////////////////////////////////////
-static struct
-{
- long on, // Activity of reel
- reacttime,
- count; // mechmeter value
- int state; // state 0/1
- emu_timer *meter_timer;
-} meter_info[MAXMECHMETERS];
+/*****************************************************************************
+ DEVICE INTERFACE
+*****************************************************************************/
-static int number_mtr;
+const device_type METERS = &device_creator<meters_device>;
-///////////////////////////////////////////////////////////////////////////
-static TIMER_CALLBACK( meter_callback )
+meters_device::meters_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, METERS, "Electro mechanical meters", tag, owner, clock, "meters", __FILE__),
+ m_number_mtr(0)
{
- meter_info[param].count++;
+ memset(m_meter_info, 0, sizeof(m_meter_info));
}
-void MechMtr_config(running_machine &machine, int number)
-{
- int i;
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
- if ( number > MAXMECHMETERS ) number = MAXMECHMETERS;
+void meters_device::device_start()
+{
+ if ( m_number_mtr > MAXMECHMETERS )
+ m_number_mtr = MAXMECHMETERS;
- for ( i = 0; i < number; i++ )
+ for ( int i = 0; i < m_number_mtr; i++ )
{
- meter_info[i].reacttime = METERREACTTIME;
- meter_info[i].state = 0;
- meter_info[i].count = 0;
- meter_info[i].on = 0;
- meter_info[i].meter_timer = machine.scheduler().timer_alloc(FUNC(meter_callback), (void*)(FPTR)i);
- meter_info[i].meter_timer->reset();
+ m_meter_info[i].reacttime = METERREACTTIME;
+ m_meter_info[i].state = 0;
+ m_meter_info[i].count = 0;
+ 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);
+ save_item(NAME(m_meter_info[i].on), i);
}
- number_mtr = number;
}
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void meters_device::device_reset()
+{
+}
+
+//-------------------------------------------------
+// device_timer - device-specific timer events
+//-------------------------------------------------
+
+void meters_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ if (id >= m_number_mtr)
+ assert_always(FALSE, "Unknown id in meters_device::device_timer");
+
+ m_meter_info[param].count++;
+}
+
+
///////////////////////////////////////////////////////////////////////////
-int MechMtr_GetNumberMeters(void)
+int meters_device::GetNumberMeters(void) // currently unused
{
- return number_mtr;
+ return m_number_mtr;
}
///////////////////////////////////////////////////////////////////////////
-void MechMtr_Setcount(int id, long count)
+void meters_device::Setcount(int id, INT32 count) // currently unused
{
- if ( id >= number_mtr ) return;
+ if ( id >= m_number_mtr )
+ return;
- meter_info[id].count = count;
+ m_meter_info[id].count = count;
}
///////////////////////////////////////////////////////////////////////////
-long MechMtr_Getcount(int id)
+INT32 meters_device::Getcount(int id) // currently unused
{
- long result = 0;
+ INT32 result = 0;
- if ( id < number_mtr ) result = meter_info[id].count;
+ if ( id < m_number_mtr )
+ result = m_meter_info[id].count;
return result;
}
///////////////////////////////////////////////////////////////////////////
-void MechMtr_ReactTime(int id, long cycles)
+void meters_device::ReactTime(int id, INT32 cycles) // currently unused
{
- if ( id >= number_mtr ) return;
- meter_info[id].reacttime = cycles;
+ if ( id >= m_number_mtr )
+ return;
+
+ m_meter_info[id].reacttime = cycles;
}
///////////////////////////////////////////////////////////////////////////
-int MechMtr_GetActivity(int id)
+int meters_device::GetActivity(int id)
{
- return meter_info[id].on;
+ return m_meter_info[id].on;
}
///////////////////////////////////////////////////////////////////////////
-int MechMtr_update(int id, int state)
+int meters_device::update(int id, int state)
{
int res = 0;
- if ( id >= number_mtr ) return res;
+ if ( id >= m_number_mtr )
+ return res;
state = state?1:0;
- if ( meter_info[id].state != state )
+ if ( m_meter_info[id].state != state )
{ // meter state is changing
- meter_info[id].state = state;
-
- if ( state )
- {
- meter_info[id].on =1;
- meter_info[id].meter_timer->adjust(attotime::from_seconds(meter_info[id].reacttime), id);
- }
- else
- {
- meter_info[id].on =0;
- meter_info[id].meter_timer->adjust(attotime::never, id);
+ m_meter_info[id].state = state;
+
+ if ( state )
+ {
+ m_meter_info[id].on =1;
+ m_meter_info[id].meter_timer->adjust(attotime::from_seconds(m_meter_info[id].reacttime), id);
+ }
+ else
+ {
+ m_meter_info[id].on =0;
+ m_meter_info[id].meter_timer->adjust(attotime::never, id);
+ }
}
- }
-
- return meter_info[id].on;
+ return m_meter_info[id].on;
}
diff --git a/src/mame/machine/meters.h b/src/mame/machine/meters.h
index fa8e3e4be5d..99e440d8c39 100644
--- a/src/mame/machine/meters.h
+++ b/src/mame/machine/meters.h
@@ -17,21 +17,50 @@
#include "emu.h"
+#define MCFG_METERS_NUMBER(_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
-void MechMtr_config(running_machine &machine, int number);
+class meters_device : public device_t
+{
+public:
+ meters_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ ~meters_device() {}
-int MechMtr_GetNumberMeters(void);
+ static void static_set_number_meters(device_t &device, int number) { downcast<meters_device &>(device).m_number_mtr = number; }
-void MechMtr_Setcount( int id, long count);
+ int update(int id, int state);
+ int GetActivity(int id);
-long MechMtr_Getcount( int id);
+ int GetNumberMeters(void); // currently unused
+ void Setcount(int id, INT32 count); // currently unused
+ INT32 Getcount(int id); // currently unused
+ void ReactTime(int id, INT32 cycles); // currently unused
-void MechMtr_ReactTime(int id, long cycles);
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-int MechMtr_update( int id, int state);
+private:
+ // internal state
+ struct meter_info
+ {
+ bool on; // Activity of reel
+ INT32 reacttime;
+ INT32 count; // mechmeter value
+ bool state; // state 0/1
+ emu_timer *meter_timer;
+ };
+
+ meter_info m_meter_info[MAXMECHMETERS];
+
+ int m_number_mtr;
+};
+
+extern const device_type METERS;
-int MechMtr_GetActivity(int id);
#endif
diff --git a/src/mame/machine/mhavoc.cpp b/src/mame/machine/mhavoc.cpp
index 67453c09d87..375517022ee 100644
--- a/src/mame/machine/mhavoc.cpp
+++ b/src/mame/machine/mhavoc.cpp
@@ -266,23 +266,23 @@ WRITE8_MEMBER(mhavoc_state::mhavoc_out_0_w)
}
/* Bit 0 = Roller light (Blinks on fatal errors) */
- set_led_status(machine(), 0, data & 0x01);
+ output().set_led_value(0, data & 0x01);
}
WRITE8_MEMBER(mhavoc_state::alphaone_out_0_w)
{
/* Bit 5 = P2 lamp */
- set_led_status(machine(), 0, ~data & 0x20);
+ output().set_led_value(0, ~data & 0x20);
/* Bit 4 = P1 lamp */
- set_led_status(machine(), 1, ~data & 0x10);
+ output().set_led_value(1, ~data & 0x10);
/* Bit 1 = right coin counter */
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* Bit 0 = left coin counter */
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
logerror("alphaone_out_0_w(%02X)\n", data);
}
@@ -291,10 +291,10 @@ logerror("alphaone_out_0_w(%02X)\n", data);
WRITE8_MEMBER(mhavoc_state::mhavoc_out_1_w)
{
/* Bit 1 = left coin counter */
- coin_counter_w(machine(), 0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
/* Bit 0 = right coin counter */
- coin_counter_w(machine(), 1, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x01);
}
/*************************************
diff --git a/src/mame/machine/microdrv.cpp b/src/mame/machine/microdrv.cpp
index 803f1d921d8..36406bd1bdf 100644
--- a/src/mame/machine/microdrv.cpp
+++ b/src/mame/machine/microdrv.cpp
@@ -77,8 +77,8 @@ void microdrive_image_device::device_start()
m_write_comms_out.resolve_safe();
// allocate track buffers
- m_left = auto_alloc_array(machine(), UINT8, MDV_IMAGE_LENGTH / 2);
- m_right = auto_alloc_array(machine(), UINT8, MDV_IMAGE_LENGTH / 2);
+ m_left = std::make_unique<UINT8[]>(MDV_IMAGE_LENGTH / 2);
+ m_right = std::make_unique<UINT8[]>(MDV_IMAGE_LENGTH / 2);
// allocate timers
m_bit_timer = timer_alloc();
@@ -97,8 +97,8 @@ bool microdrive_image_device::call_load()
for (int i = 0; i < MDV_IMAGE_LENGTH / 2; i++)
{
- fread(m_left, 1);
- fread(m_right, 1);
+ fread(m_left.get(), 1);
+ fread(m_right.get(), 1);
}
m_bit_offset = 0;
@@ -109,8 +109,8 @@ bool microdrive_image_device::call_load()
void microdrive_image_device::call_unload()
{
- memset(m_left, 0, MDV_IMAGE_LENGTH / 2);
- memset(m_right, 0, MDV_IMAGE_LENGTH / 2);
+ memset(m_left.get(), 0, MDV_IMAGE_LENGTH / 2);
+ memset(m_right.get(), 0, MDV_IMAGE_LENGTH / 2);
}
void microdrive_image_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
diff --git a/src/mame/machine/microdrv.h b/src/mame/machine/microdrv.h
index 9d83cd66956..30853bd84d7 100644
--- a/src/mame/machine/microdrv.h
+++ b/src/mame/machine/microdrv.h
@@ -86,8 +86,8 @@ private:
int m_erase;
int m_read_write;
- UINT8 *m_left;
- UINT8 *m_right;
+ std::unique_ptr<UINT8[]> m_left;
+ std::unique_ptr<UINT8[]> m_right;
int m_bit_offset;
int m_byte_offset;
diff --git a/src/mame/machine/microtan.cpp b/src/mame/machine/microtan.cpp
index 158c7a9fed5..eb9c555cd04 100644
--- a/src/mame/machine/microtan.cpp
+++ b/src/mame/machine/microtan.cpp
@@ -362,7 +362,7 @@ INTERRUPT_GEN_MEMBER(microtan_state::microtan_interrupt)
m_lastrow = row;
/* CapsLock LED */
if( row == 3 && chg == 0x80 )
- set_led_status(machine(), 1, (m_keyrows[3] & 0x80) ? 0 : 1);
+ output().set_led_value(1, (m_keyrows[3] & 0x80) ? 0 : 1);
if (newvar & chg) /* key(s) pressed ? */
{
@@ -519,7 +519,7 @@ void microtan_state::machine_reset()
{
m_keyrows[i] = ioport(keynames[i-1])->read();
}
- set_led_status(machine(), 1, (m_keyrows[3] & 0x80) ? 0 : 1);
+ output().set_led_value(1, (m_keyrows[3] & 0x80) ? 0 : 1);
}
int microtan_state::microtan_verify_snapshot(UINT8 *data, int size)
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/midxunit.cpp b/src/mame/machine/midxunit.cpp
index 47c9d3879ff..a23c8208abb 100644
--- a/src/mame/machine/midxunit.cpp
+++ b/src/mame/machine/midxunit.cpp
@@ -76,12 +76,12 @@ WRITE16_MEMBER(midxunit_state::midxunit_io_w)
/* Gun Outputs for RevX */
/* Note: The Gun for the Coin slot you use is supposed to rumble when you insert coins, and it doesn't for P3 */
/* Perhaps an Input is hooked up wrong??? */
- output_set_value("Player1_Gun_Recoil", data & 0x1 );
- output_set_value("Player2_Gun_Recoil", (data & 0x2) >> 1 );
- output_set_value("Player3_Gun_Recoil", (data & 0x4) >> 2 );
- output_set_value("Player1_Gun_LED", (~data & 0x10) >> 4 );
- output_set_value("Player2_Gun_LED", (~data & 0x20) >> 5 );
- output_set_value("Player3_Gun_LED", (~data & 0x40) >> 6 );
+ output().set_value("Player1_Gun_Recoil", data & 0x1 );
+ output().set_value("Player2_Gun_Recoil", (data & 0x2) >> 1 );
+ output().set_value("Player3_Gun_Recoil", (data & 0x4) >> 2 );
+ output().set_value("Player1_Gun_LED", (~data & 0x10) >> 4 );
+ output().set_value("Player2_Gun_LED", (~data & 0x20) >> 5 );
+ output().set_value("Player3_Gun_LED", (~data & 0x40) >> 6 );
logerror("%08X:I/O write to %d = %04X\n", space.device().safe_pc(), offset, data);
// logerror("%08X:Unknown I/O write to %d = %04X\n", space.device().safe_pc(), offset, data);
diff --git a/src/mame/machine/midyunit.cpp b/src/mame/machine/midyunit.cpp
index f91ae3bdfa2..979cca8548c 100644
--- a/src/mame/machine/midyunit.cpp
+++ b/src/mame/machine/midyunit.cpp
@@ -148,25 +148,25 @@ WRITE16_MEMBER(midyunit_state::term2_sound_w)
/* Flash Lamp Output Data */
if ( ((data & 0x800) != 0x800) && ((data & 0x400) == 0x400 ) )
{
- output_set_value("Left_Flash_1", data & 0x1);
- output_set_value("Left_Flash_2", (data & 0x2) >> 1);
- output_set_value("Left_Flash_3", (data & 0x4) >> 2);
- output_set_value("Left_Flash_4", (data & 0x8) >> 3);
- output_set_value("Right_Flash_1", (data & 0x10) >> 4);
- output_set_value("Right_Flash_2", (data & 0x20) >> 5);
- output_set_value("Right_Flash_3", (data & 0x40) >> 6);
- output_set_value("Right_Flash_4", (data & 0x80) >> 7);
+ output().set_value("Left_Flash_1", data & 0x1);
+ output().set_value("Left_Flash_2", (data & 0x2) >> 1);
+ output().set_value("Left_Flash_3", (data & 0x4) >> 2);
+ output().set_value("Left_Flash_4", (data & 0x8) >> 3);
+ output().set_value("Right_Flash_1", (data & 0x10) >> 4);
+ output().set_value("Right_Flash_2", (data & 0x20) >> 5);
+ output().set_value("Right_Flash_3", (data & 0x40) >> 6);
+ output().set_value("Right_Flash_4", (data & 0x80) >> 7);
}
/* Gun Output Data */
if ( ((data & 0x800) == 0x800) && ((data & 0x400) != 0x400 ) )
{
- output_set_value("Left_Gun_Recoil", data & 0x1);
- output_set_value("Right_Gun_Recoil", (data & 0x2) >> 1);
- output_set_value("Left_Gun_Green_Led", (~data & 0x20) >> 5);
- output_set_value("Left_Gun_Red_Led", (~data & 0x10) >> 4);
- output_set_value("Right_Gun_Green_Led", (~data & 0x80) >> 7);
- output_set_value("Right_Gun_Red_Led", (~data & 0x40) >> 6);
+ output().set_value("Left_Gun_Recoil", data & 0x1);
+ output().set_value("Right_Gun_Recoil", (data & 0x2) >> 1);
+ output().set_value("Left_Gun_Green_Led", (~data & 0x20) >> 5);
+ output().set_value("Left_Gun_Red_Led", (~data & 0x10) >> 4);
+ output().set_value("Right_Gun_Green_Led", (~data & 0x80) >> 7);
+ output().set_value("Right_Gun_Red_Led", (~data & 0x40) >> 6);
}
if (offset == 0)
diff --git a/src/mame/machine/model1.cpp b/src/mame/machine/model1.cpp
index df1e8006bbf..2f974d00a97 100644
--- a/src/mame/machine/model1.cpp
+++ b/src/mame/machine/model1.cpp
@@ -1331,7 +1331,7 @@ TGP_FUNCTION( model1_state::vmat_save )
int i;
logerror("TGP vmat_save 0x%x (%x)\n", a, m_pushpc);
for(i=0; i<16; i++)
- memcpy(m_ram_data+a+0x10*i, m_mat_vector[i], sizeof(m_cmat));
+ memcpy(m_ram_data.get()+a+0x10*i, m_mat_vector[i], sizeof(m_cmat));
next_fn();
}
@@ -1341,7 +1341,7 @@ TGP_FUNCTION( model1_state::vmat_load )
int i;
logerror("TGP vmat_load 0x%x (%x)\n", a, m_pushpc);
for(i=0; i<16; i++)
- memcpy(m_mat_vector[i], m_ram_data+a+0x10*i, sizeof(m_cmat));
+ memcpy(m_mat_vector[i], m_ram_data.get()+a+0x10*i, sizeof(m_cmat));
next_fn();
}
@@ -1449,7 +1449,7 @@ TGP_FUNCTION( model1_state::vmat_load1 )
{
UINT32 a = fifoin_pop();
logerror("TGP vmat_load1 0x%x (%x)\n", a, m_pushpc);
- memcpy(m_cmat, m_ram_data+a, sizeof(m_cmat));
+ memcpy(m_cmat, m_ram_data.get()+a, sizeof(m_cmat));
next_fn();
}
@@ -1879,9 +1879,9 @@ WRITE16_MEMBER(model1_state::model1_tgp_copro_ram_w)
MACHINE_START_MEMBER(model1_state,model1)
{
- m_ram_data = auto_alloc_array(machine(), UINT32, 0x10000);
+ m_ram_data = std::make_unique<UINT32[]>(0x10000);
- save_pointer(NAME(m_ram_data), 0x10000);
+ save_pointer(NAME(m_ram_data.get()), 0x10000);
save_item(NAME(m_ram_adr));
save_item(NAME(m_ram_scanadr));
save_item(NAME(m_ram_latch));
@@ -1902,7 +1902,7 @@ MACHINE_START_MEMBER(model1_state,model1)
void model1_state::tgp_reset(int swa)
{
m_ram_adr = 0;
- memset(m_ram_data, 0, 0x10000*4);
+ memset(m_ram_data.get(), 0, 0x10000*4);
m_fifoout_rpos = 0;
m_fifoout_wpos = 0;
@@ -1927,7 +1927,7 @@ void model1_state::tgp_reset(int swa)
void model1_state::vr_tgp_reset()
{
m_ram_adr = 0;
- memset(m_ram_data, 0, 0x8000*4);
+ memset(m_ram_data.get(), 0, 0x8000*4);
m_copro_fifoout_rpos = 0;
m_copro_fifoout_wpos = 0;
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/msx.cpp b/src/mame/machine/msx.cpp
index b881ad38d4d..285d8c359db 100644
--- a/src/mame/machine/msx.cpp
+++ b/src/mame/machine/msx.cpp
@@ -286,7 +286,7 @@ WRITE8_MEMBER(msx_state::msx_psg_port_b_w)
{
/* Arabic or kana mode led */
if ( (data ^ m_psg_b) & 0x80)
- set_led_status (machine(), 2, !(data & 0x80) );
+ output().set_led_value(2, !(data & 0x80) );
if ( (m_psg_b ^ data) & 0x10)
{
@@ -340,7 +340,7 @@ WRITE8_MEMBER( msx_state::msx_ppi_port_c_w )
/* caps lock */
if ( BIT(m_port_c_old ^ data, 6) )
- set_led_status (machine(), 1, !BIT(data, 6) );
+ output().set_led_value(1, !BIT(data, 6) );
/* key click */
if ( BIT(m_port_c_old ^ data, 7) )
diff --git a/src/mame/machine/mz700.cpp b/src/mame/machine/mz700.cpp
index 55fa4fc67d3..9d8e9fa0a85 100644
--- a/src/mame/machine/mz700.cpp
+++ b/src/mame/machine/mz700.cpp
@@ -42,9 +42,9 @@ DRIVER_INIT_MEMBER(mz_state,mz700)
m_mz700 = TRUE;
m_mz700_mode = TRUE;
- m_videoram = auto_alloc_array(machine(), UINT8, 0x1000);
- memset(m_videoram, 0, sizeof(UINT8) * 0x1000);
- m_colorram = m_videoram + 0x800;
+ m_videoram = std::make_unique<UINT8[]>(0x1000);
+ memset(m_videoram.get(), 0, sizeof(UINT8) * 0x1000);
+ m_colorram = m_videoram.get() + 0x800;
m_p_chargen = memregion("cgrom")->base();
UINT8 *rom = memregion("monitor")->base();
@@ -53,7 +53,7 @@ DRIVER_INIT_MEMBER(mz_state,mz700)
membank("bankr0")->configure_entry(1, &rom[0]); // rom
membank("bankw0")->configure_entry(0, &ram[0]); // ram
membank("bankd")->configure_entry(0, &ram[0xd000]); // ram
- membank("bankd")->configure_entry(1, m_videoram); // vram
+ membank("bankd")->configure_entry(1, m_videoram.get()); // vram
}
DRIVER_INIT_MEMBER(mz_state,mz800)
@@ -62,17 +62,18 @@ DRIVER_INIT_MEMBER(mz_state,mz800)
m_mz700_mode = true;//FALSE;
/* video ram */
- m_videoram = auto_alloc_array(machine(), UINT8, 0x4000);
- memset(m_videoram, 0, sizeof(UINT8) * 0x4000);
- m_colorram = m_videoram + 0x800;
+ m_videoram = std::make_unique<UINT8[]>(0x4000);
+ memset(m_videoram.get(), 0, sizeof(UINT8) * 0x4000);
+ m_colorram = m_videoram.get() + 0x800;
/* character generator ram */
- m_cgram = auto_alloc_array(machine(), UINT8, 0x1000);
- memset(m_cgram, 0, sizeof(UINT8) * 0x1000);
+ 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)
- m_p_chargen = m_cgram;
+ 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();
// configure banks (0 = RAM in all cases)
@@ -82,11 +83,11 @@ DRIVER_INIT_MEMBER(mz_state,mz800)
membank("bank1")->configure_entry(0, &ram[0x1000]); // ram
membank("bank1")->configure_entry(1, &rom[0x1000]); // chargen
membank("banka")->configure_entry(0, &ram[0x8000]); // ram
- membank("banka")->configure_entry(1, m_videoram); // vram in mz800 mode
+ membank("banka")->configure_entry(1, m_videoram.get()); // vram in mz800 mode
membank("bankc")->configure_entry(0, &ram[0xc000]); // ram
- membank("bankc")->configure_entry(1, m_cgram); // cgram in mz800 mode
+ membank("bankc")->configure_entry(1, m_cgram.get()); // cgram in mz800 mode
membank("bankd")->configure_entry(0, &ram[0xd000]); // ram
- membank("bankd")->configure_entry(1, m_videoram); // vram in mz700 mode
+ membank("bankd")->configure_entry(1, m_videoram.get()); // vram in mz700 mode
}
void mz_state::machine_start()
diff --git a/src/mame/machine/n64.cpp b/src/mame/machine/n64.cpp
index 4918f1a1613..a3e256a080c 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]);
@@ -2138,7 +2096,7 @@ void n64_periphs::pif_dma(int direction)
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/namco62.h b/src/mame/machine/namco62.h
index fbb4133b5ef..323c751c789 100644
--- a/src/mame/machine/namco62.h
+++ b/src/mame/machine/namco62.h
@@ -39,10 +39,6 @@ public:
template<class _Object> static devcb_base &set_output_0_callback(device_t &device, _Object object) { return downcast<namco_62xx_device &>(device).m_out_0.set_callback(object); }
template<class _Object> static devcb_base &set_output_1_callback(device_t &device, _Object object) { return downcast<namco_62xx_device &>(device).m_out_1.set_callback(object); }
-
- DECLARE_READ8_MEMBER( read );
- DECLARE_WRITE8_MEMBER( write );
-
protected:
// device-level overrides
virtual void device_start() override;
diff --git a/src/mame/machine/namcos2.cpp b/src/mame/machine/namcos2.cpp
index 7265a607d81..7996a4fc34d 100644
--- a/src/mame/machine/namcos2.cpp
+++ b/src/mame/machine/namcos2.cpp
@@ -102,8 +102,8 @@ void namcos2_shared_state::reset_all_subcpus(int state)
MACHINE_START_MEMBER(namcos2_shared_state,namcos2)
{
namcos2_kickstart = nullptr;
- m_eeprom = auto_alloc_array(machine(), UINT8, m_eeprom_size);
- machine().device<nvram_device>("nvram")->set_base(m_eeprom, m_eeprom_size);
+ m_eeprom = std::make_unique<UINT8[]>(m_eeprom_size);
+ machine().device<nvram_device>("nvram")->set_base(m_eeprom.get(), m_eeprom_size);
m_posirq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcos2_shared_state::namcos2_posirq_tick),this));
}
@@ -739,7 +739,7 @@ WRITE8_MEMBER( namcos2_shared_state::namcos2_mcu_analog_ctrl_w )
m_mcu_analog_data=ioport("AN7")->read();
break;
default:
- output_set_value("anunk",data);
+ output().set_value("anunk",data);
}
#if 0
/* Perform the offset handling on the input port */
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/naomigd.cpp b/src/mame/machine/naomigd.cpp
index 136d7a959b1..28dc2ccb3e6 100644
--- a/src/mame/machine/naomigd.cpp
+++ b/src/mame/machine/naomigd.cpp
@@ -395,6 +395,7 @@ void naomi_gdrom_board::device_start()
memset(name,'\0',128);
UINT64 key;
+ UINT8 netpic = 0;
const UINT8 *picdata = memregion(pic_tag)->base();
@@ -412,6 +413,7 @@ void naomi_gdrom_board::device_start()
key |= picdata[0x7a0];
+ netpic = picdata[0x6ee];
} else {
// use extracted pic data
// printf("This PIC key hasn't been converted to a proper PIC binary yet!\n");
@@ -431,56 +433,76 @@ void naomi_gdrom_board::device_start()
logerror("key is %08x%08x\n", (UINT32)((key & 0xffffffff00000000ULL)>>32), (UINT32)(key & 0x00000000ffffffffULL));
UINT8 buffer[2048];
- cdrom_file *gdromfile = cdrom_open(get_disk_handle(machine(), image_tag));
+ cdrom_file *gdromfile = cdrom_open(machine().rom_load().get_disk_handle(image_tag));
// primary volume descriptor
// read frame 0xb06e (frame=sector+150)
// dimm board firmware starts straight from this frame
- cdrom_read_data(gdromfile, 0xb06e - 150, buffer, CD_TRACK_MODE1);
+ cdrom_read_data(gdromfile, (netpic ? 0 : 45000) + 16, buffer, CD_TRACK_MODE1);
UINT32 path_table = ((buffer[0x8c+0] << 0) |
(buffer[0x8c+1] << 8) |
(buffer[0x8c+2] << 16) |
(buffer[0x8c+3] << 24));
// path table
cdrom_read_data(gdromfile, path_table, buffer, CD_TRACK_MODE1);
- UINT32 dir = ((buffer[0x2+0] << 0) |
- (buffer[0x2+1] << 8) |
- (buffer[0x2+2] << 16) |
- (buffer[0x2+3] << 24));
// directory
UINT8 dir_sector[2048];
- cdrom_read_data(gdromfile, dir, dir_sector, CD_TRACK_MODE1);
// find data of file
UINT32 file_start, file_size;
- find_file(name, dir_sector, file_start, file_size);
- if(file_start && (file_size == 0x100)) {
- // read file
- cdrom_read_data(gdromfile, file_start, buffer, CD_TRACK_MODE1);
- // get "rom" file name
- memset(name,'\0', 128);
- memcpy(name, buffer+0xc0, FILENAME_LENGTH-1);
+ if (netpic == 0) {
+ UINT32 dir = ((buffer[0x2 + 0] << 0) |
+ (buffer[0x2 + 1] << 8) |
+ (buffer[0x2 + 2] << 16) |
+ (buffer[0x2 + 3] << 24));
+ cdrom_read_data(gdromfile, dir, dir_sector, CD_TRACK_MODE1);
find_file(name, dir_sector, file_start, file_size);
- if(file_start) {
- UINT32 file_rounded_size = (file_size+2047) & -2048;
- for(dimm_data_size = 4096; dimm_data_size < file_rounded_size; dimm_data_size <<= 1);
- dimm_data = auto_alloc_array(machine(), UINT8, dimm_data_size);
- if(dimm_data_size != file_rounded_size)
- memset(dimm_data + file_rounded_size, 0, dimm_data_size - file_rounded_size);
+ if (file_start && (file_size == 0x100)) {
+ // read file
+ cdrom_read_data(gdromfile, file_start, buffer, CD_TRACK_MODE1);
+ // get "rom" file name
+ memset(name, '\0', 128);
+ memcpy(name, buffer + 0xc0, FILENAME_LENGTH - 1);
+ }
+ } else {
+ UINT32 i = 0;
+ while (i < 2048 && buffer[i] != 0)
+ {
+ if (buffer[i] == 3 && buffer[i + 8] == 'R' && buffer[i + 9] == 'O' && buffer[i + 10] == 'M') // find ROM dir
+ {
+ UINT32 dir = ((buffer[i + 2] << 0) |
+ (buffer[i + 3] << 8) |
+ (buffer[i + 4] << 16) |
+ (buffer[i + 5] << 24));
+ memcpy(name, "ROM.BIN", 7);
+ cdrom_read_data(gdromfile, dir, dir_sector, CD_TRACK_MODE1);
+ break;
+ }
+ i += buffer[i] + 8 + (buffer[i] & 1);
+ }
+ }
- // read encrypted data into dimm_data
- UINT32 sectors = file_rounded_size / 2048;
- for(UINT32 sec = 0; sec != sectors; sec++)
- cdrom_read_data(gdromfile, file_start+sec, dimm_data + 2048*sec, CD_TRACK_MODE1);
+ find_file(name, dir_sector, file_start, file_size);
- UINT32 des_subkeys[32];
- des_generate_subkeys(rev64(key), des_subkeys);
+ if (file_start) {
+ UINT32 file_rounded_size = (file_size + 2047) & -2048;
+ for (dimm_data_size = 4096; dimm_data_size < file_rounded_size; dimm_data_size <<= 1);
+ dimm_data = auto_alloc_array(machine(), UINT8, dimm_data_size);
+ if (dimm_data_size != file_rounded_size)
+ memset(dimm_data + file_rounded_size, 0, dimm_data_size - file_rounded_size);
- for(int i=0; i<file_rounded_size;i+=8)
- write_from_qword(dimm_data+i, rev64(des_encrypt_decrypt(true, rev64(read_to_qword(dimm_data+i)), des_subkeys)));
- }
+ // read encrypted data into dimm_data
+ UINT32 sectors = file_rounded_size / 2048;
+ for (UINT32 sec = 0; sec != sectors; sec++)
+ cdrom_read_data(gdromfile, file_start + sec, dimm_data + 2048 * sec, CD_TRACK_MODE1);
+
+ UINT32 des_subkeys[32];
+ des_generate_subkeys(rev64(key), des_subkeys);
+
+ for (int i = 0; i < file_rounded_size; i += 8)
+ write_from_qword(dimm_data + i, rev64(des_encrypt_decrypt(true, rev64(read_to_qword(dimm_data + i)), des_subkeys)));
}
// decrypt loaded data
diff --git a/src/mame/machine/naomim1.cpp b/src/mame/machine/naomim1.cpp
index c9e5bc1c359..7e205ce1ee7 100644
--- a/src/mame/machine/naomim1.cpp
+++ b/src/mame/machine/naomim1.cpp
@@ -41,9 +41,9 @@ void naomi_m1_board::device_start()
key = 0;
}
- buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
+ buffer = std::make_unique<UINT8[]>(BUFFER_SIZE);
- save_pointer(NAME(buffer), BUFFER_SIZE);
+ save_pointer(NAME(buffer.get()), BUFFER_SIZE);
save_item(NAME(dict));
save_item(NAME(hist));
save_item(NAME(rom_cur_address));
@@ -84,7 +84,7 @@ void naomi_m1_board::board_setup_address(UINT32 address, bool is_dma)
void naomi_m1_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
{
if(encryption) {
- base = buffer;
+ base = buffer.get();
limit = BUFFER_SIZE;
} else {
@@ -97,7 +97,7 @@ void naomi_m1_board::board_advance(UINT32 size)
{
if(encryption) {
if(size < buffer_actual_size) {
- memmove(buffer, buffer + size, buffer_actual_size - size);
+ memmove(buffer.get(), buffer.get() + size, buffer_actual_size - size);
buffer_actual_size -= size;
} else {
hist[0] = buffer[buffer_actual_size-2];
diff --git a/src/mame/machine/naomim1.h b/src/mame/machine/naomim1.h
index 8de82b75b01..37c5a58739b 100644
--- a/src/mame/machine/naomim1.h
+++ b/src/mame/machine/naomim1.h
@@ -29,7 +29,7 @@ private:
enum { BUFFER_SIZE = 32768 };
UINT32 key;
- UINT8 *buffer;
+ std::unique_ptr<UINT8[]> buffer;
UINT8 dict[111], hist[2];
UINT64 avail_val;
UINT32 rom_cur_address, buffer_actual_size, avail_bits;
diff --git a/src/mame/machine/naomim2.cpp b/src/mame/machine/naomim2.cpp
index 9c82089ab01..516da16435e 100644
--- a/src/mame/machine/naomim2.cpp
+++ b/src/mame/machine/naomim2.cpp
@@ -121,17 +121,17 @@ void naomi_m2_board::device_start()
{
naomi_board::device_start();
- ram = auto_alloc_array(machine(), UINT8, RAM_SIZE);
+ ram = std::make_unique<UINT8[]>(RAM_SIZE);
save_item(NAME(rom_cur_address));
- save_pointer(NAME(ram), RAM_SIZE);
+ save_pointer(NAME(ram.get()), RAM_SIZE);
}
void naomi_m2_board::device_reset()
{
naomi_board::device_reset();
- memset(ram, 0, RAM_SIZE);
+ memset(ram.get(), 0, RAM_SIZE);
rom_cur_address = 0;
}
diff --git a/src/mame/machine/naomim2.h b/src/mame/machine/naomim2.h
index f8d22b84668..ae1bdf3fed8 100644
--- a/src/mame/machine/naomim2.h
+++ b/src/mame/machine/naomim2.h
@@ -16,7 +16,7 @@ public:
naomi_m2_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
UINT32 rom_cur_address;
static const int RAM_SIZE = 65536;
- UINT8* ram;
+ std::unique_ptr<UINT8[]> ram;
UINT16 read_callback(UINT32 addr);
diff --git a/src/mame/machine/naomim4.cpp b/src/mame/machine/naomim4.cpp
index d22f7540ebc..40ced99ea5a 100644
--- a/src/mame/machine/naomim4.cpp
+++ b/src/mame/machine/naomim4.cpp
@@ -66,10 +66,10 @@ void naomi_m4_board::device_start()
subkey1 = (key_data[0x5e2] << 8) | key_data[0x5e0];
subkey2 = (key_data[0x5e6] << 8) | key_data[0x5e4];
- buffer = auto_alloc_array(machine(), UINT8, BUFFER_SIZE);
+ buffer = std::make_unique<UINT8[]>(BUFFER_SIZE);
enc_init();
- save_pointer(NAME(buffer), BUFFER_SIZE);
+ save_pointer(NAME(buffer.get()), BUFFER_SIZE);
save_item(NAME(rom_cur_address));
save_item(NAME(buffer_actual_size));
save_item(NAME(encryption));
@@ -79,7 +79,7 @@ void naomi_m4_board::device_start()
void naomi_m4_board::enc_init()
{
- one_round = auto_alloc_array(machine(), UINT16, 0x10000);
+ one_round = std::make_unique<UINT16[]>(0x10000);
for(int round_input = 0; round_input < 0x10000; round_input++) {
UINT8 input_nibble[4];
@@ -148,7 +148,7 @@ void naomi_m4_board::board_get_buffer(UINT8 *&base, UINT32 &limit)
}
if(encryption) {
- base = buffer;
+ base = buffer.get();
limit = BUFFER_SIZE;
} else {
@@ -168,7 +168,7 @@ void naomi_m4_board::board_advance(UINT32 size)
{
if(encryption) {
if(size < buffer_actual_size) {
- memmove(buffer, buffer + size, buffer_actual_size - size);
+ memmove(buffer.get(), buffer.get() + size, buffer_actual_size - size);
buffer_actual_size -= size;
} else
buffer_actual_size = 0;
diff --git a/src/mame/machine/naomim4.h b/src/mame/machine/naomim4.h
index 10d9c9f9b73..650ed901c24 100644
--- a/src/mame/machine/naomim4.h
+++ b/src/mame/machine/naomim4.h
@@ -35,9 +35,9 @@ private:
const char *key_tag;
UINT16 subkey1, subkey2;
- UINT16 *one_round;
+ std::unique_ptr<UINT16[]> one_round;
- UINT8 *buffer;
+ std::unique_ptr<UINT8[]> buffer;
UINT32 rom_cur_address, buffer_actual_size;
UINT16 iv;
UINT8 counter;
diff --git a/src/mame/machine/nb1413m3.cpp b/src/mame/machine/nb1413m3.cpp
index 94445db950e..b8992261f2c 100644
--- a/src/mame/machine/nb1413m3.cpp
+++ b/src/mame/machine/nb1413m3.cpp
@@ -597,7 +597,7 @@ WRITE8_MEMBER( nb1413m3_device::outcoin_w )
break;
}
- set_led_status(space.machine(), 2, m_outcoin_flag); // out coin
+ space.machine().output().set_led_value(2, m_outcoin_flag); // out coin
}
WRITE8_MEMBER( nb1413m3_device::vcrctrl_w )
@@ -605,11 +605,11 @@ WRITE8_MEMBER( nb1413m3_device::vcrctrl_w )
if (data & 0x08)
{
popmessage(" ** VCR CONTROL ** ");
- set_led_status(space.machine(), 2, 1);
+ space.machine().output().set_led_value(2, 1);
}
else
{
- set_led_status(space.machine(), 2, 0);
+ space.machine().output().set_led_value(2, 0);
}
}
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/nes.cpp b/src/mame/machine/nes.cpp
index c5cd79575ee..e2975f35f68 100644
--- a/src/mame/machine/nes.cpp
+++ b/src/mame/machine/nes.cpp
@@ -47,7 +47,7 @@ void nes_state::machine_start()
// NES has 2KB of internal RAM which can be used to fill the 4x1KB banks of PPU RAM at $2000-$2fff
// Line A10 is exposed to the carts, so that games can change CIRAM mapping in PPU (we emulate this with the set_nt_mirroring
// function). CIRAM can also be disabled by the game (if e.g. VROM or cart RAM has to be used in PPU...
- m_ciram = auto_alloc_array(machine(), UINT8, 0x800);
+ m_ciram = std::make_unique<UINT8[]>(0x800);
// other pointers got set in the loading routine, because they 'belong' to the cart itself
m_io_disksel = ioport("FLIPDISK");
@@ -98,13 +98,13 @@ void nes_state::machine_start()
space.install_write_handler(0x4020, 0x40ff, write8_delegate(FUNC(nes_cart_slot_device::write_ex), (nes_cart_slot_device *)m_cartslot));
}
- m_cartslot->pcb_start(m_ciram);
+ m_cartslot->pcb_start(m_ciram.get());
m_cartslot->m_cart->pcb_reg_postload(machine());
}
// register saves
save_item(NAME(m_last_frame_flip));
- save_pointer(NAME(m_ciram), 0x800);
+ save_pointer(NAME(m_ciram.get()), 0x800);
}
diff --git a/src/mame/machine/nextkbd.h b/src/mame/machine/nextkbd.h
index 6f5c3225833..ed233dd8ecd 100644
--- a/src/mame/machine/nextkbd.h
+++ b/src/mame/machine/nextkbd.h
@@ -38,8 +38,6 @@ public:
DECLARE_WRITE32_MEMBER(cdata_w);
DECLARE_WRITE32_MEMBER(kmdata_w);
- bool int_level_get();
-
DECLARE_INPUT_CHANGED_MEMBER(update);
protected:
diff --git a/src/mame/machine/nitedrvr.cpp b/src/mame/machine/nitedrvr.cpp
index 3599e062d88..e4538038014 100644
--- a/src/mame/machine/nitedrvr.cpp
+++ b/src/mame/machine/nitedrvr.cpp
@@ -227,7 +227,7 @@ D5 = Spare (Not used)
WRITE8_MEMBER(nitedrvr_state::nitedrvr_out1_w)
{
- set_led_status(machine(), 0, data & 0x10);
+ output().set_led_value(0, data & 0x10);
m_crash_en = data & 0x01;
diff --git a/src/mame/machine/ns10crypt.cpp b/src/mame/machine/ns10crypt.cpp
index b39dcd70948..e639108166c 100644
--- a/src/mame/machine/ns10crypt.cpp
+++ b/src/mame/machine/ns10crypt.cpp
@@ -172,7 +172,7 @@ UINT16 ns10_decrypter_device::decrypt(UINT16 cipherword)
void ns10_decrypter_device::device_start()
{
_active = false;
- _reducer = auto_alloc(machine(), gf2_reducer());
+ _reducer = std::make_unique<gf2_reducer>();
}
void ns10_decrypter_device::init(int iv)
diff --git a/src/mame/machine/ns10crypt.h b/src/mame/machine/ns10crypt.h
index 9be7f7d7252..163a4ac21c7 100644
--- a/src/mame/machine/ns10crypt.h
+++ b/src/mame/machine/ns10crypt.h
@@ -44,7 +44,7 @@ private:
bool _active;
const ns10_crypto_logic& _logic;
static const int initSbox[16];
- const gf2_reducer *_reducer;
+ std::unique_ptr<const gf2_reducer>_reducer;
void device_start() override;
void init(int iv);
diff --git a/src/mame/machine/opwolf.cpp b/src/mame/machine/opwolf.cpp
index 1e164f60b07..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
/*************************************************************************
@@ -560,7 +560,7 @@ TIMER_CALLBACK_MEMBER(opwolf_state::cchip_timer)
m_cchip_ram[0x52] = 0x55;
m_cchip_coins[slot] -= m_cchip_coins_for_credit[slot];
}
- coin_counter_w(machine(), slot, 1);
+ machine().bookkeeping().coin_counter_w(slot, 1);
}
if (m_cchip_ram[0x53] > 9)
@@ -581,10 +581,10 @@ TIMER_CALLBACK_MEMBER(opwolf_state::cchip_timer)
m_cchip_last_05=m_cchip_ram[0x5];
// Cchip handles coin lockout (68k flags error if more than 9 coins)
- coin_lockout_w(machine(), 1, m_cchip_ram[0x53] == 9);
- coin_lockout_w(machine(), 0, m_cchip_ram[0x53] == 9);
- coin_counter_w(machine(), 0, 0);
- coin_counter_w(machine(), 1, 0);
+ machine().bookkeeping().coin_lockout_w(1, m_cchip_ram[0x53] == 9);
+ machine().bookkeeping().coin_lockout_w(0, m_cchip_ram[0x53] == 9);
+ machine().bookkeeping().coin_counter_w(0, 0);
+ machine().bookkeeping().coin_counter_w(1, 0);
// Special handling for last level
if (m_cchip_ram[0x1b] == 0x6)
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/pc1512kb.cpp b/src/mame/machine/pc1512kb.cpp
index 6d4ef54e134..262d253d31b 100644
--- a/src/mame/machine/pc1512kb.cpp
+++ b/src/mame/machine/pc1512kb.cpp
@@ -473,10 +473,10 @@ WRITE8_MEMBER( pc1512_keyboard_device::kb_p2_w )
m_write_clock(BIT(data, 1));
// CAPS LOCK
- output_set_led_value(LED_CAPS, BIT(data, 2));
+ machine().output().set_led_value(LED_CAPS, BIT(data, 2));
// NUM LOCK
- output_set_led_value(LED_NUM, BIT(data, 3));
+ machine().output().set_led_value(LED_NUM, BIT(data, 3));
// keyboard row
m_kb_y = (((data >> 4) & 0x07) << 8) | (m_kb_y & 0xff);
diff --git a/src/mame/machine/pc9801_118.cpp b/src/mame/machine/pc9801_118.cpp
index 5549ad8dedc..ee3a189b338 100644
--- a/src/mame/machine/pc9801_118.cpp
+++ b/src/mame/machine/pc9801_118.cpp
@@ -17,7 +17,7 @@
#include "machine/pic8259.h"
#include "sound/2608intf.h"
-#define MAIN_CLOCK_X1 XTAL_1_9968MHz
+#define MAIN_CLOCK_X2 XTAL_2_4576MHz
//**************************************************************************
// GLOBAL VARIABLES
@@ -45,7 +45,7 @@ WRITE_LINE_MEMBER(pc9801_118_device::pc9801_sound_irq)
static MACHINE_CONFIG_FRAGMENT( pc9801_118_config )
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("opn3", YM2608, MAIN_CLOCK_X1*4) // actually YMF288, unknown clock / divider
+ MCFG_SOUND_ADD("opn3", YM2608, MAIN_CLOCK_X2*4) // actually YMF288, unknown clock / divider, might be X1 x 5 actually
MCFG_YM2608_IRQ_HANDLER(WRITELINE(pc9801_118_device, pc9801_sound_irq))
MCFG_AY8910_PORT_A_READ_CB(READ8(pc9801_118_device, opn_porta_r))
//MCFG_AY8910_PORT_B_READ_CB(READ8(pc9801_state, opn_portb_r))
diff --git a/src/mame/machine/pc9801_86.cpp b/src/mame/machine/pc9801_86.cpp
index 1416e01fd4b..db40adbcaa4 100644
--- a/src/mame/machine/pc9801_86.cpp
+++ b/src/mame/machine/pc9801_86.cpp
@@ -9,15 +9,17 @@
TODO:
- joystick code should be shared between -26, -86 and -118
+ - Test all pcm modes
+ - Make volume work
+ - Recording
***************************************************************************/
#include "emu.h"
#include "machine/pc9801_86.h"
-#include "machine/pic8259.h"
-#include "sound/2608intf.h"
#define MAIN_CLOCK_X1 XTAL_1_9968MHz
+#define QUEUE_SIZE 32768
//**************************************************************************
// GLOBAL VARIABLES
@@ -37,21 +39,27 @@ READ8_MEMBER(pc9801_86_device::opn_porta_r)
WRITE8_MEMBER(pc9801_86_device::opn_portb_w){ m_joy_sel = data; }
-WRITE_LINE_MEMBER(pc9801_86_device::pc9801_sound_irq)
+WRITE_LINE_MEMBER(pc9801_86_device::sound_irq)
{
+ m_fmirq = state ? true : false;
/* TODO: seems to die very often */
- machine().device<pic8259_device>(":pic8259_slave")->ir4_w(state);
+ machine().device<pic8259_device>(":pic8259_slave")->ir4_w(state || (m_pcmirq ? ASSERT_LINE : CLEAR_LINE));
}
static MACHINE_CONFIG_FRAGMENT( pc9801_86_config )
- MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("opna", YM2608, MAIN_CLOCK_X1*4) // unknown clock / divider
- MCFG_YM2608_IRQ_HANDLER(WRITELINE(pc9801_86_device, pc9801_sound_irq))
+ MCFG_YM2608_IRQ_HANDLER(WRITELINE(pc9801_86_device, sound_irq))
MCFG_AY8910_PORT_A_READ_CB(READ8(pc9801_86_device, opn_porta_r))
//MCFG_AY8910_PORT_B_READ_CB(READ8(pc9801_state, opn_portb_r))
//MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(pc9801_state, opn_porta_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(pc9801_86_device, opn_portb_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
+ MCFG_SOUND_ADD("dacl", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
+ MCFG_SOUND_ADD("dacr", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
MACHINE_CONFIG_END
//-------------------------------------------------
@@ -119,8 +127,10 @@ ioport_constructor pc9801_86_device::device_input_ports() const
pc9801_86_device::pc9801_86_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, PC9801_86, "pc9801_86", tag, owner, clock, "pc9801_86", __FILE__),
-// m_maincpu(*owner, "maincpu"),
- m_opna(*this, "opna")
+ m_opna(*this, "opna"),
+ m_dacl(*this, "dacl"),
+ m_dacr(*this, "dacr"),
+ m_queue(QUEUE_SIZE)
{
}
@@ -160,6 +170,7 @@ void pc9801_86_device::install_device(offs_t start, offs_t end, offs_t mask, off
void pc9801_86_device::device_start()
{
+ m_dac_timer = timer_alloc();
}
@@ -170,9 +181,15 @@ void pc9801_86_device::device_start()
void pc9801_86_device::device_reset()
{
UINT16 port_base = (ioport("OPNA_DSW")->read() & 1) << 8;
- install_device(port_base + 0x0088, port_base + 0x008f, 0, 0, read8_delegate(FUNC(pc9801_86_device::pc9801_86_r), this), write8_delegate(FUNC(pc9801_86_device::pc9801_86_w), this) );
-// install_device(0xa460, 0xa463, 0, 0, read8_delegate(FUNC(pc9801_86_device::pc9801_86_ext_r), this), write8_delegate(FUNC(pc9801_86_device::pc9801_86_ext_w), this) );
-
+ install_device(port_base + 0x0088, port_base + 0x008f, 0, 0, read8_delegate(FUNC(pc9801_86_device::opn_r), this), write8_delegate(FUNC(pc9801_86_device::opn_w), this) );
+ install_device(0xa460, 0xa463, 0, 0, read8_delegate(FUNC(pc9801_86_device::id_r), this), write8_delegate(FUNC(pc9801_86_device::mask_w), this));
+ install_device(0xa464, 0xa46f, 0, 0, read8_delegate(FUNC(pc9801_86_device::pcm_r), this), write8_delegate(FUNC(pc9801_86_device::pcm_w), this));
+ m_mask = 0;
+ m_head = m_tail = m_count = 0;
+ m_fmirq = m_pcmirq = false;
+ m_irq_rate = 0;
+ m_pcm_ctrl = m_pcm_mode = 0;
+ memset(&m_queue[0], 0, QUEUE_SIZE);
}
@@ -181,47 +198,162 @@ void pc9801_86_device::device_reset()
//**************************************************************************
-READ8_MEMBER(pc9801_86_device::pc9801_86_r)
+READ8_MEMBER(pc9801_86_device::opn_r)
{
if((offset & 1) == 0)
return m_opna->read(space, offset >> 1);
else // odd
{
- printf("PC9801-86: Read to undefined port [%02x]\n",offset+0x188);
+ logerror("PC9801-86: Read to undefined port [%02x]\n",offset+0x188);
return 0xff;
}
}
-
-WRITE8_MEMBER(pc9801_86_device::pc9801_86_w)
+WRITE8_MEMBER(pc9801_86_device::opn_w)
{
if((offset & 1) == 0)
m_opna->write(space, offset >> 1,data);
else // odd
- printf("PC9801-86: Write to undefined port [%02x] %02x\n",offset+0x188,data);
+ logerror("PC9801-86: Write to undefined port [%02x] %02x\n",offset+0x188,data);
+}
+
+READ8_MEMBER(pc9801_86_device::id_r)
+{
+ return 0x40 | m_mask;
}
-#if 0
-READ8_MEMBER( pc9801_86_device::pc9801_86_ext_r )
+WRITE8_MEMBER(pc9801_86_device::mask_w)
{
- if(offset == 0)
+ m_mask = data & 1;
+}
+
+READ8_MEMBER(pc9801_86_device::pcm_r)
+{
+ if((offset & 1) == 0)
{
- printf("OPNA EXT read ID [%02x]\n",offset);
- return 0xff;
+ switch(offset >> 1)
+ {
+ case 1:
+ return ((queue_count() == QUEUE_SIZE) ? 0x80 : 0) |
+ (!queue_count() ? 0x40 : 0);
+ case 2:
+ return m_pcm_ctrl | (m_pcmirq ? 0x10 : 0);
+ case 3:
+ return m_pcm_mode;
+ case 4:
+ return 0;
+ case 5:
+ return m_pcm_mute;
+ }
}
-
- printf("OPNA EXT read unk [%02x]\n",offset);
+ else // odd
+ logerror("PC9801-86: Read to undefined port [%02x]\n",offset+0xa464);
return 0xff;
}
-WRITE8_MEMBER( pc9801_86_device::pc9801_86_ext_w )
+WRITE8_MEMBER(pc9801_86_device::pcm_w)
{
- if(offset == 0)
+ const int rates[] = {44100, 33075, 22050, 16538, 11025, 8268, 5513, 4134};
+ if((offset & 1) == 0)
{
- printf("OPNA EXT write mask %02x -> [%02x]\n",data,offset);
- return;
+ switch(offset >> 1)
+ {
+ case 1:
+ m_vol[data >> 5] = data & 0x0f;
+ break;
+ case 2:
+ m_pcm_ctrl = data & ~0x10;
+ if(data & 0x80)
+ m_dac_timer->adjust(attotime::from_hz(rates[data & 7]), 0, attotime::from_hz(rates[data & 7]));
+ else
+ m_dac_timer->adjust(attotime::never);
+ if(data & 8)
+ m_head = m_tail = m_count = 0;
+ if(!(data & 0x10))
+ {
+ m_pcmirq = false;
+ machine().device<pic8259_device>(":pic8259_slave")->ir4_w(m_fmirq ? ASSERT_LINE : CLEAR_LINE);
+ }
+ break;
+ case 3:
+ if(m_pcm_ctrl & 0x20)
+ m_irq_rate = (data + 1) * 128;
+ else
+ m_pcm_mode = data;
+ break;
+ case 4:
+ if(queue_count() < QUEUE_SIZE)
+ {
+ m_queue[m_head++] = data;
+ m_head %= QUEUE_SIZE;
+ m_count++;
+ }
+ break;
+ case 5:
+ m_pcm_mute = data;
+ break;
+ }
}
+ else // odd
+ logerror("PC9801-86: Write to undefined port [%02x] %02x\n",offset+0xa464,data);
+}
+
+int pc9801_86_device::queue_count()
+{
+ return m_count;
+}
- printf("OPNA EXT write unk %02x -> [%02x]\n",data,offset);
+UINT8 pc9801_86_device::queue_pop()
+{
+ if(!queue_count())
+ return 0;
+ UINT8 ret = m_queue[m_tail++];
+ m_tail %= QUEUE_SIZE;
+ m_count--;
+ return ret;
+}
+
+void pc9801_86_device::device_timer(emu_timer& timer, device_timer_id id, int param, void* ptr)
+{
+ INT16 lsample, rsample;
+
+ if((m_pcm_ctrl & 0x40) || !(m_pcm_ctrl & 0x80) || !queue_count())
+ return;
+
+ switch(m_pcm_mode & 0x70)
+ {
+ case 0x70: // 8bit stereo
+ m_dacl->write(queue_pop() << 8);
+ m_dacr->write(queue_pop() << 8);
+ break;
+ case 0x60: // 8bit left only
+ m_dacl->write(queue_pop() << 8);
+ break;
+ case 0x50: // 8bit right only
+ m_dacr->write(queue_pop() << 8);
+ break;
+ case 0x30: // 16bit stereo
+ lsample = queue_pop();
+ lsample |= queue_pop() << 8;
+ rsample = queue_pop();
+ rsample |= queue_pop() << 8;
+ m_dacl->write(lsample);
+ m_dacr->write(rsample);
+ break;
+ case 0x20: // 16bit left only
+ lsample = queue_pop();
+ lsample |= queue_pop() << 8;
+ m_dacl->write(lsample);
+ break;
+ case 0x10: // 16bit right only
+ rsample = queue_pop();
+ rsample |= queue_pop() << 8;
+ m_dacr->write(rsample);
+ break;
+ }
+ if((queue_count() < m_irq_rate) && (m_pcm_ctrl & 0x20))
+ {
+ m_pcmirq = true;
+ machine().device<pic8259_device>(":pic8259_slave")->ir4_w(ASSERT_LINE);
+ }
}
-#endif
diff --git a/src/mame/machine/pc9801_86.h b/src/mame/machine/pc9801_86.h
index f21eb50720b..61b48dcabb9 100644
--- a/src/mame/machine/pc9801_86.h
+++ b/src/mame/machine/pc9801_86.h
@@ -14,6 +14,7 @@
#include "machine/pic8259.h"
#include "sound/2608intf.h"
+#include "sound/dac.h"
//**************************************************************************
// TYPE DEFINITIONS
@@ -33,14 +34,13 @@ public:
DECLARE_READ8_MEMBER(opn_porta_r);
DECLARE_WRITE8_MEMBER(opn_portb_w);
- DECLARE_READ8_MEMBER(pc9801_86_r);
- DECLARE_WRITE8_MEMBER(pc9801_86_w);
- DECLARE_WRITE_LINE_MEMBER(pc9801_sound_irq);
-// DECLARE_READ8_MEMBER(pc9801_86_ext_r);
-// DECLARE_WRITE8_MEMBER(pc9801_86_ext_w);
-
-// required_device<cpu_device> m_maincpu;
- required_device<ym2608_device> m_opna;
+ DECLARE_READ8_MEMBER(opn_r);
+ DECLARE_WRITE8_MEMBER(opn_w);
+ DECLARE_READ8_MEMBER(id_r);
+ DECLARE_WRITE8_MEMBER(mask_w);
+ DECLARE_READ8_MEMBER(pcm_r);
+ DECLARE_WRITE8_MEMBER(pcm_w);
+ DECLARE_WRITE_LINE_MEMBER(sound_irq);
virtual const rom_entry *device_rom_region() const override;
protected:
// device-level overrides
@@ -48,10 +48,20 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
void install_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler);
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
- UINT8 m_joy_sel;
+ int queue_count();
+ UINT8 queue_pop();
+ UINT8 m_joy_sel, m_mask, m_pcm_mode, m_vol[7], m_pcm_ctrl, m_pcm_mute;
+ UINT16 m_head, m_tail, m_count, m_irq_rate;
+ bool m_pcmirq, m_fmirq;
+ required_device<ym2608_device> m_opna;
+ required_device<dac_device> m_dacl;
+ required_device<dac_device> m_dacr;
+ dynamic_buffer m_queue;
+ emu_timer *m_dac_timer;
};
diff --git a/src/mame/machine/pce_cd.cpp b/src/mame/machine/pce_cd.cpp
index d9b9e5441ea..26e730b491e 100644
--- a/src/mame/machine/pce_cd.cpp
+++ b/src/mame/machine/pce_cd.cpp
@@ -91,29 +91,29 @@ pce_cd_device::pce_cd_device(const machine_config &mconfig, const char *tag, dev
void pce_cd_device::device_start()
{
/* Initialize BRAM */
- m_bram = auto_alloc_array(machine(), UINT8, PCE_BRAM_SIZE * 2);
- memset(m_bram, 0, PCE_BRAM_SIZE);
- memset(m_bram + PCE_BRAM_SIZE, 0xff, PCE_BRAM_SIZE);
+ m_bram = std::make_unique<UINT8[]>(PCE_BRAM_SIZE * 2);
+ memset(m_bram.get(), 0, PCE_BRAM_SIZE);
+ memset(m_bram.get() + PCE_BRAM_SIZE, 0xff, PCE_BRAM_SIZE);
m_bram_locked = 1;
- m_nvram->set_base(m_bram, PCE_BRAM_SIZE);
+ m_nvram->set_base(m_bram.get(), PCE_BRAM_SIZE);
/* set up adpcm related things */
- m_adpcm_ram = auto_alloc_array_clear(machine(), UINT8, PCE_ADPCM_RAM_SIZE);
+ m_adpcm_ram = make_unique_clear<UINT8[]>(PCE_ADPCM_RAM_SIZE);
m_adpcm_clock_divider = 1;
/* Set up cd command buffer */
- m_command_buffer = auto_alloc_array_clear(machine(), UINT8, PCE_CD_COMMAND_BUFFER_SIZE);
+ m_command_buffer = make_unique_clear<UINT8[]>(PCE_CD_COMMAND_BUFFER_SIZE);
m_command_buffer_index = 0;
/* Set up Arcade Card RAM buffer */
- m_acard_ram = auto_alloc_array_clear(machine(), UINT8, PCE_ACARD_RAM_SIZE);
+ m_acard_ram = make_unique_clear<UINT8[]>(PCE_ACARD_RAM_SIZE);
- m_data_buffer = auto_alloc_array_clear(machine(), UINT8, 8192);
+ m_data_buffer = make_unique_clear<UINT8[]>(8192);
m_data_buffer_size = 0;
m_data_buffer_index = 0;
- m_subcode_buffer = auto_alloc_array(machine(), UINT8, 96);
+ m_subcode_buffer = std::make_unique<UINT8[]>(96);
m_data_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pce_cd_device::data_timer_callback),this));
m_data_timer->adjust(attotime::never);
@@ -134,8 +134,8 @@ void pce_cd_device::device_start()
// TODO: add proper restore for the cd data...
save_item(NAME(m_regs));
- save_pointer(NAME(m_bram), PCE_BRAM_SIZE * 2);
- save_pointer(NAME(m_adpcm_ram), PCE_ADPCM_RAM_SIZE);
+ save_pointer(NAME(m_bram.get()), PCE_BRAM_SIZE * 2);
+ save_pointer(NAME(m_adpcm_ram.get()), PCE_ADPCM_RAM_SIZE);
save_item(NAME(m_bram_locked));
save_item(NAME(m_adpcm_read_ptr));
save_item(NAME(m_adpcm_read_buf));
@@ -161,16 +161,16 @@ void pce_cd_device::device_start()
save_item(NAME(m_scsi_last_RST));
save_item(NAME(m_cd_motor_on));
save_item(NAME(m_selected));
- save_pointer(NAME(m_command_buffer), PCE_CD_COMMAND_BUFFER_SIZE);
+ save_pointer(NAME(m_command_buffer.get()), PCE_CD_COMMAND_BUFFER_SIZE);
save_item(NAME(m_command_buffer_index));
save_item(NAME(m_status_sent));
save_item(NAME(m_message_after_status));
save_item(NAME(m_message_sent));
- save_pointer(NAME(m_data_buffer), 8192);
+ save_pointer(NAME(m_data_buffer.get()), 8192);
save_item(NAME(m_data_buffer_size));
save_item(NAME(m_data_buffer_index));
save_item(NAME(m_data_transferred));
- save_pointer(NAME(m_acard_ram), PCE_ACARD_RAM_SIZE);
+ save_pointer(NAME(m_acard_ram.get()), PCE_ACARD_RAM_SIZE);
save_item(NAME(m_acard_latch));
save_item(NAME(m_acard_ctrl));
save_item(NAME(m_acard_base_addr));
@@ -183,7 +183,7 @@ void pce_cd_device::device_start()
save_item(NAME(m_last_frame));
save_item(NAME(m_cdda_status));
save_item(NAME(m_cdda_play_mode));
- save_pointer(NAME(m_subcode_buffer), 96);
+ save_pointer(NAME(m_subcode_buffer.get()), 96);
save_item(NAME(m_end_mark));
save_item(NAME(m_cdda_volume));
save_item(NAME(m_adpcm_volume));
@@ -945,7 +945,7 @@ TIMER_CALLBACK_MEMBER(pce_cd_device::data_timer_callback)
{
/* Read next data sector */
logerror("read sector %d\n", m_current_frame);
- if (! cdrom_read_data(m_cd_file, m_current_frame, m_data_buffer, CD_TRACK_MODE1))
+ if (! cdrom_read_data(m_cd_file, m_current_frame, m_data_buffer.get(), CD_TRACK_MODE1))
{
logerror("Mode1 CD read failed for frame #%d\n", m_current_frame);
}
diff --git a/src/mame/machine/pce_cd.h b/src/mame/machine/pce_cd.h
index e51d46908ce..ebb39aeb680 100644
--- a/src/mame/machine/pce_cd.h
+++ b/src/mame/machine/pce_cd.h
@@ -96,8 +96,8 @@ private:
required_device<cpu_device> m_maincpu;
UINT8 m_regs[16];
- UINT8 *m_bram;
- UINT8 *m_adpcm_ram;
+ std::unique_ptr<UINT8[]> m_bram;
+ std::unique_ptr<UINT8[]> m_adpcm_ram;
int m_bram_locked;
int m_adpcm_read_ptr;
UINT8 m_adpcm_read_buf;
@@ -125,18 +125,18 @@ private:
int m_scsi_last_RST; /* To catch setting of RST signal */
int m_cd_motor_on;
int m_selected;
- UINT8 *m_command_buffer;
+ std::unique_ptr<UINT8[]> m_command_buffer;
int m_command_buffer_index;
int m_status_sent;
int m_message_after_status;
int m_message_sent;
- UINT8 *m_data_buffer;
+ std::unique_ptr<UINT8[]> m_data_buffer;
int m_data_buffer_size;
int m_data_buffer_index;
int m_data_transferred;
/* Arcade Card specific */
- UINT8 *m_acard_ram;
+ std::unique_ptr<UINT8[]> m_acard_ram;
UINT8 m_acard_latch;
UINT8 m_acard_ctrl[4];
UINT32 m_acard_base_addr[4];
@@ -150,7 +150,7 @@ private:
UINT32 m_last_frame;
UINT8 m_cdda_status;
UINT8 m_cdda_play_mode;
- UINT8 *m_subcode_buffer;
+ std::unique_ptr<UINT8[]> m_subcode_buffer;
UINT8 m_end_mark;
required_device<msm5205_device> m_msm;
diff --git a/src/mame/machine/pgmprot_igs027a_type3.cpp b/src/mame/machine/pgmprot_igs027a_type3.cpp
index 24fc0c19ccd..429e7b2d170 100644
--- a/src/mame/machine/pgmprot_igs027a_type3.cpp
+++ b/src/mame/machine/pgmprot_igs027a_type3.cpp
@@ -69,7 +69,7 @@ WRITE32_MEMBER(pgm_arm_type3_state::svg_arm7_shareram_w )
READ16_MEMBER(pgm_arm_type3_state::svg_m68k_ram_r )
{
int ram_sel = (m_svg_ram_sel & 1) ^ 1;
- UINT16 *share16 = (UINT16 *)(m_svg_shareram[ram_sel & 1]);
+ UINT16 *share16 = (UINT16 *)(m_svg_shareram[ram_sel & 1].get());
return share16[BYTE_XOR_LE(offset)];
}
@@ -77,7 +77,7 @@ READ16_MEMBER(pgm_arm_type3_state::svg_m68k_ram_r )
WRITE16_MEMBER(pgm_arm_type3_state::svg_m68k_ram_w )
{
int ram_sel = (m_svg_ram_sel & 1) ^ 1;
- UINT16 *share16 = (UINT16 *)(m_svg_shareram[ram_sel & 1]);
+ UINT16 *share16 = (UINT16 *)(m_svg_shareram[ram_sel & 1].get());
COMBINE_DATA(&share16[BYTE_XOR_LE(offset)]);
}
@@ -207,12 +207,12 @@ MACHINE_CONFIG_END
void pgm_arm_type3_state::svg_basic_init()
{
pgm_basic_init();
- m_svg_shareram[0] = auto_alloc_array(machine(), UINT32, 0x20000 / 4);
- m_svg_shareram[1] = auto_alloc_array(machine(), UINT32, 0x20000 / 4);
+ m_svg_shareram[0] = std::make_unique<UINT32[]>(0x20000 / 4);
+ m_svg_shareram[1] = std::make_unique<UINT32[]>(0x20000 / 4);
m_svg_ram_sel = 0;
- save_pointer(NAME(m_svg_shareram[0]), 0x20000 / 4);
- save_pointer(NAME(m_svg_shareram[1]), 0x20000 / 4);
+ save_pointer(NAME(m_svg_shareram[0].get()), 0x20000 / 4);
+ save_pointer(NAME(m_svg_shareram[1].get()), 0x20000 / 4);
save_item(NAME(m_svg_ram_sel));
}
@@ -719,9 +719,9 @@ DRIVER_INIT_MEMBER(pgm_arm_type3_state,dmnfrnt)
// we have to copy it to both shared ram regions because it reads from a different one before the attract story?
// could be a timing error? or shared ram behavior isn't how we think it is?
UINT16 *share16;
- share16 = (UINT16 *)(m_svg_shareram[1]);
+ share16 = (UINT16 *)(m_svg_shareram[1].get());
share16[0x158/2] = 0x0005;
- share16 = (UINT16 *)(m_svg_shareram[0]);
+ share16 = (UINT16 *)(m_svg_shareram[0].get());
share16[0x158/2] = 0x0005;
}
diff --git a/src/mame/machine/playch10.cpp b/src/mame/machine/playch10.cpp
index b9c6cf5d56a..d8c586b7826 100644
--- a/src/mame/machine/playch10.cpp
+++ b/src/mame/machine/playch10.cpp
@@ -38,11 +38,11 @@ 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 */
- m_nt_ram = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_nt_ram = std::make_unique<UINT8[]>(0x1000);
machine().device("ppu")->memory().space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(playch10_state::pc10_chr_r),this), write8_delegate(FUNC(playch10_state::pc10_chr_w),this));
machine().device("ppu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(playch10_state::pc10_nt_r),this),write8_delegate(FUNC(playch10_state::pc10_nt_w),this));
@@ -58,14 +58,14 @@ 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 */
- m_nt_ram = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_nt_ram = std::make_unique<UINT8[]>(0x1000);
/* allocate vram */
- m_vram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_vram = std::make_unique<UINT8[]>(0x2000);
machine().device("ppu")->memory().space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(playch10_state::pc10_chr_r),this), write8_delegate(FUNC(playch10_state::pc10_chr_w),this));
machine().device("ppu")->memory().space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(playch10_state::pc10_nt_r),this), write8_delegate(FUNC(playch10_state::pc10_nt_w),this));
@@ -299,29 +299,29 @@ void playch10_state::pc10_set_mirroring(int mirroring )
switch (mirroring)
{
case PPU_MIRROR_LOW:
- m_nametable[0] = m_nametable[1] = m_nametable[2] = m_nametable[3] = m_nt_ram;
+ m_nametable[0] = m_nametable[1] = m_nametable[2] = m_nametable[3] = m_nt_ram.get();
break;
case PPU_MIRROR_HIGH:
- m_nametable[0] = m_nametable[1] = m_nametable[2] = m_nametable[3] = m_nt_ram + 0x400;
+ m_nametable[0] = m_nametable[1] = m_nametable[2] = m_nametable[3] = m_nt_ram.get() + 0x400;
break;
case PPU_MIRROR_HORZ:
- m_nametable[0] = m_nt_ram;
- m_nametable[1] = m_nt_ram;
- m_nametable[2] = m_nt_ram + 0x400;
- m_nametable[3] = m_nt_ram + 0x400;
+ m_nametable[0] = m_nt_ram.get();
+ m_nametable[1] = m_nt_ram.get();
+ m_nametable[2] = m_nt_ram.get() + 0x400;
+ m_nametable[3] = m_nt_ram.get() + 0x400;
break;
case PPU_MIRROR_VERT:
- m_nametable[0] = m_nt_ram;
- m_nametable[1] = m_nt_ram + 0x400;
- m_nametable[2] = m_nt_ram;
- m_nametable[3] = m_nt_ram + 0x400;
+ m_nametable[0] = m_nt_ram.get();
+ m_nametable[1] = m_nt_ram.get() + 0x400;
+ m_nametable[2] = m_nt_ram.get();
+ m_nametable[3] = m_nt_ram.get()+ 0x400;
break;
case PPU_MIRROR_NONE:
default:
- m_nametable[0] = m_nt_ram;
- m_nametable[1] = m_nt_ram + 0x400;
- m_nametable[2] = m_nt_ram + 0x800;
- m_nametable[3] = m_nt_ram + 0xc00;
+ m_nametable[0] = m_nt_ram.get();
+ m_nametable[1] = m_nt_ram.get() + 0x400;
+ m_nametable[2] = m_nt_ram.get() + 0x800;
+ m_nametable[3] = m_nt_ram.get() + 0xc00;
break;
}
}
@@ -375,7 +375,7 @@ void playch10_state::set_videoram_bank( int first, int count, int bank, int size
for (i = 0; i < count; i++)
{
m_chr_page[i + first].writable = 1;
- m_chr_page[i + first].chr = m_vram + (((i * 0x400) + (bank * size * 0x400)) & 0x1fff);
+ m_chr_page[i + first].chr = m_vram.get() + (((i * 0x400) + (bank * size * 0x400)) & 0x1fff);
}
}
@@ -596,7 +596,7 @@ DRIVER_INIT_MEMBER(playch10_state,pcbboard)
DRIVER_INIT_CALL(playch10);
/* allocate vram */
- m_vram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_vram = std::make_unique<UINT8[]>(0x2000);
/* set the mirroring here */
m_mirroring = PPU_MIRROR_VERT;
@@ -644,7 +644,7 @@ DRIVER_INIT_MEMBER(playch10_state,pcdboard)
/* common init */
DRIVER_INIT_CALL(playch10);
/* allocate vram */
- m_vram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_vram = std::make_unique<UINT8[]>(0x2000);
/* special init */
set_videoram_bank(0, 8, 0, 8);
}
@@ -660,7 +660,7 @@ DRIVER_INIT_MEMBER(playch10_state,pcdboard_2)
DRIVER_INIT_CALL(pcdboard);
/* allocate vram */
- m_vram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_vram = std::make_unique<UINT8[]>(0x2000);
/* special init */
set_videoram_bank(0, 8, 0, 8);
}
@@ -739,7 +739,6 @@ WRITE8_MEMBER(playch10_state::eboard_rom_switch_w)
DRIVER_INIT_MEMBER(playch10_state,pceboard)
{
- ppu2c0x_device *ppu = machine().device<ppu2c0x_device>("ppu");
UINT8 *prg = memregion("cart")->base();
/* we have no vram, make sure switching games doesn't point to an old allocation */
@@ -753,7 +752,7 @@ DRIVER_INIT_MEMBER(playch10_state,pceboard)
machine().device("cart")->memory().space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::eboard_rom_switch_w),this));
/* ppu_latch callback */
- ppu->set_latch(ppu2c0x_latch_delegate(FUNC(playch10_state::mapper9_latch),this));
+ m_ppu->set_latch(ppu2c0x_latch_delegate(FUNC(playch10_state::mapper9_latch),this));
/* nvram at $6000-$6fff */
machine().device("cart")->memory().space(AS_PROGRAM).install_ram(0x6000, 0x6fff);
@@ -955,7 +954,6 @@ WRITE8_MEMBER(playch10_state::gboard_rom_switch_w)
DRIVER_INIT_MEMBER(playch10_state,pcgboard)
{
- ppu2c0x_device *ppu = machine().device<ppu2c0x_device>("ppu");
UINT8 *prg = memregion("cart")->base();
m_vram = nullptr;
@@ -981,7 +979,7 @@ DRIVER_INIT_MEMBER(playch10_state,pcgboard)
/* common init */
DRIVER_INIT_CALL(playch10);
- ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this));
+ m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this));
}
DRIVER_INIT_MEMBER(playch10_state,pcgboard_type2)
@@ -1025,7 +1023,7 @@ DRIVER_INIT_MEMBER(playch10_state,pciboard)
DRIVER_INIT_CALL(playch10);
/* allocate vram */
- m_vram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_vram = std::make_unique<UINT8[]>(0x2000);
/* special init */
set_videoram_bank(0, 8, 0, 8);
}
@@ -1100,6 +1098,8 @@ DRIVER_INIT_MEMBER(playch10_state,pchboard)
/* common init */
DRIVER_INIT_CALL(playch10);
+
+ m_ppu->set_scanline_callback(ppu2c0x_scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this));
}
/**********************************************************************************/
@@ -1125,7 +1125,7 @@ DRIVER_INIT_MEMBER(playch10_state,pckboard)
DRIVER_INIT_CALL(playch10);
/* allocate vram */
- m_vram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_vram = std::make_unique<UINT8[]>(0x2000);
/* special init */
set_videoram_bank(0, 8, 0, 8);
}
diff --git a/src/mame/machine/pmd85.cpp b/src/mame/machine/pmd85.cpp
index df62cd75b69..b66163a119e 100644
--- a/src/mame/machine/pmd85.cpp
+++ b/src/mame/machine/pmd85.cpp
@@ -257,8 +257,8 @@ WRITE8_MEMBER(pmd85_state::pmd85_ppi_0_portb_w)
WRITE8_MEMBER(pmd85_state::pmd85_ppi_0_portc_w)
{
m_ppi_port_outputs[0][2] = data;
- set_led_status(machine(), PMD85_LED_2, (data & 0x08) ? 1 : 0);
- set_led_status(machine(), PMD85_LED_3, (data & 0x04) ? 1 : 0);
+ output().set_led_value(PMD85_LED_2, (data & 0x08) ? 1 : 0);
+ output().set_led_value(PMD85_LED_3, (data & 0x04) ? 1 : 0);
}
/*******************************************************************************
@@ -290,8 +290,8 @@ READ8_MEMBER(pmd85_state::mato_ppi_0_portc_r)
WRITE8_MEMBER(pmd85_state::mato_ppi_0_portc_w)
{
m_ppi_port_outputs[0][2] = data;
- set_led_status(machine(), PMD85_LED_2, BIT(data, 3));
- set_led_status(machine(), PMD85_LED_3, BIT(data, 2));
+ output().set_led_value(PMD85_LED_2, BIT(data, 3));
+ output().set_led_value(PMD85_LED_3, BIT(data, 2));
}
/*******************************************************************************
diff --git a/src/mame/machine/psxcd.h b/src/mame/machine/psxcd.h
index f8f04305e88..4bcf9ee5696 100644
--- a/src/mame/machine/psxcd.h
+++ b/src/mame/machine/psxcd.h
@@ -25,7 +25,6 @@ public:
// static configuration helpers
template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<psxcd_device &>(device).m_irq_handler.set_callback(object); }
- static void static_set_devname(device_t &device, const char *devname);
virtual bool call_load() override;
virtual void call_unload() override;
diff --git a/src/mame/machine/qix.cpp b/src/mame/machine/qix.cpp
index 8c83f3532c6..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"
@@ -225,8 +224,8 @@ WRITE8_MEMBER(qix_state::qix_68705_portA_w)
WRITE8_MEMBER(qix_state::qix_68705_portB_w)
{
m_68705_port_out[1] = data;
- coin_lockout_w(machine(), 0, (~data >> 6) & 1);
- coin_counter_w(machine(), 0, (data >> 7) & 1);
+ machine().bookkeeping().coin_lockout_w(0, (~data >> 6) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 7) & 1);
}
@@ -266,8 +265,8 @@ WRITE8_MEMBER(qix_state::qix_pia_w)
WRITE8_MEMBER(qix_state::qix_coinctl_w)
{
- coin_lockout_w(machine(), 0, (~data >> 2) & 1);
- coin_counter_w(machine(), 0, (data >> 1) & 1);
+ machine().bookkeeping().coin_lockout_w(0, (~data >> 2) & 1);
+ machine().bookkeeping().coin_counter_w(0, (data >> 1) & 1);
}
diff --git a/src/mame/machine/radio86.cpp b/src/mame/machine/radio86.cpp
index 0f1f9360aa0..ef097a1dc48 100644
--- a/src/mame/machine/radio86.cpp
+++ b/src/mame/machine/radio86.cpp
@@ -36,8 +36,8 @@ DRIVER_INIT_MEMBER(radio86_state,radio86)
DRIVER_INIT_MEMBER(radio86_state,radioram)
{
DRIVER_INIT_CALL(radio86);
- m_radio_ram_disk = auto_alloc_array(machine(), UINT8, 0x20000);
- memset(m_radio_ram_disk,0,0x20000);
+ m_radio_ram_disk = std::make_unique<UINT8[]>(0x20000);
+ memset(m_radio_ram_disk.get(),0,0x20000);
}
READ8_MEMBER(radio86_state::radio86_8255_portb_r2)
{
diff --git a/src/mame/machine/raiden2cop.h b/src/mame/machine/raiden2cop.h
index fcb94b4869b..9f543062541 100644
--- a/src/mame/machine/raiden2cop.h
+++ b/src/mame/machine/raiden2cop.h
@@ -116,8 +116,6 @@ public:
DECLARE_READ16_MEMBER ( cop_status_r );
DECLARE_READ16_MEMBER ( cop_dist_r );
DECLARE_READ16_MEMBER ( cop_angle_r );
- DECLARE_WRITE16_MEMBER( cop_angle_compare_w );
- DECLARE_WRITE16_MEMBER( cop_angle_mod_val_w );
DECLARE_WRITE16_MEMBER(cop_hitbox_baseadr_w);
diff --git a/src/mame/machine/rbisland.cpp b/src/mame/machine/rbisland.cpp
index fa86c0ff800..951b97225f8 100644
--- a/src/mame/machine/rbisland.cpp
+++ b/src/mame/machine/rbisland.cpp
@@ -648,8 +648,8 @@ void rbisland_state::request_round_data( )
{
int round = m_CRAM[1][0x141]; /* 0...49 */
- memcpy(m_CRAM[1], CROM_BANK1, sizeof CROM_BANK1);
- memcpy(m_CRAM[2], CROM_BANK2, sizeof CROM_BANK2);
+ memcpy(m_CRAM[1].get(), CROM_BANK1, sizeof CROM_BANK1);
+ memcpy(m_CRAM[2].get(), CROM_BANK2, sizeof CROM_BANK2);
m_CRAM[1][1] = cchip_round_height[round] >> 0;
m_CRAM[1][2] = cchip_round_height[round] >> 8;
@@ -682,9 +682,9 @@ void rbisland_state::request_world_data( )
/* first two bytes in each bank are left unchanged */
- memcpy(m_CRAM[4] + 2, CROM_BANK4[world].data, CROM_BANK4[world].size);
- memcpy(m_CRAM[5] + 2, CROM_BANK5[world].data, CROM_BANK5[world].size);
- memcpy(m_CRAM[7] + 2, CROM_BANK7[world].data, CROM_BANK7[world].size);
+ memcpy(m_CRAM[4].get() + 2, CROM_BANK4[world].data, CROM_BANK4[world].size);
+ memcpy(m_CRAM[5].get() + 2, CROM_BANK5[world].data, CROM_BANK5[world].size);
+ memcpy(m_CRAM[7].get() + 2, CROM_BANK7[world].data, CROM_BANK7[world].size);
/* banks 5 and 6 are different in the extra version */
@@ -703,11 +703,11 @@ void rbisland_state::request_world_data( )
}
}
- memcpy(m_CRAM[6] + 2, CROM_BANK6_EXTRA, sizeof CROM_BANK6_EXTRA);
+ memcpy(m_CRAM[6].get() + 2, CROM_BANK6_EXTRA, sizeof CROM_BANK6_EXTRA);
}
else
{
- memcpy(m_CRAM[6] + 2, CROM_BANK6, sizeof CROM_BANK6);
+ memcpy(m_CRAM[6].get() + 2, CROM_BANK6, sizeof CROM_BANK6);
}
}
@@ -753,10 +753,10 @@ TIMER_CALLBACK_MEMBER(rbisland_state::cchip_timer)
m_CRAM[1][0x149] = 0xFF;
}
- coin_lockout_w(machine(), 1, m_CRAM[0][8] & 0x80);
- coin_lockout_w(machine(), 0, m_CRAM[0][8] & 0x40);
- coin_counter_w(machine(), 1, m_CRAM[0][8] & 0x20);
- coin_counter_w(machine(), 0, m_CRAM[0][8] & 0x10);
+ machine().bookkeeping().coin_lockout_w(1, m_CRAM[0][8] & 0x80);
+ machine().bookkeeping().coin_lockout_w(0, m_CRAM[0][8] & 0x40);
+ machine().bookkeeping().coin_counter_w(1, m_CRAM[0][8] & 0x20);
+ machine().bookkeeping().coin_counter_w(0, m_CRAM[0][8] & 0x10);
m_CRAM[0][3] = ioport("800007")->read(); /* STARTn + SERVICE1 */
m_CRAM[0][4] = ioport("800009")->read(); /* COINn */
@@ -821,9 +821,9 @@ void rbisland_state::rbisland_cchip_init( int version )
for (i = 0; i < 8; i++)
{
- m_CRAM[i] = auto_alloc_array(machine(), UINT8, 0x400);
+ m_CRAM[i] = std::make_unique<UINT8[]>(0x400);
- save_pointer(m_CRAM[i], "cchip/m_CRAM[i]", 0x400, i);
+ save_pointer(m_CRAM[i].get(), "cchip/m_CRAM[i]", 0x400, i);
}
save_item(m_current_bank, "cchip/m_current_bank");
diff --git a/src/mame/machine/scramble.cpp b/src/mame/machine/scramble.cpp
index af667349e1c..6f2293f2b90 100644
--- a/src/mame/machine/scramble.cpp
+++ b/src/mame/machine/scramble.cpp
@@ -623,8 +623,8 @@ WRITE8_MEMBER(scramble_state::harem_decrypt_clk_w)
bank = 0;
}
- membank("rombank")->set_base (m_harem_decrypted_data + 0x2000 * bank);
- membank("rombank_decrypted")->set_base (m_harem_decrypted_opcodes + 0x2000 * bank);
+ membank("rombank")->set_base (m_harem_decrypted_data.get() + 0x2000 * bank);
+ membank("rombank_decrypted")->set_base (m_harem_decrypted_opcodes.get() + 0x2000 * bank);
// logerror("%s: decrypt mode = %02x (bank %x) active\n", machine().describe_context(), m_harem_decrypt_mode, bank);
@@ -646,9 +646,10 @@ DRIVER_INIT_MEMBER(scramble_state,harem)
UINT8 *ROM = memregion("maincpu")->base() + 0x8000;
size_t size = 0x2000;
- UINT8 *data = m_harem_decrypted_data = auto_alloc_array(machine(), UINT8, size * 3);
- UINT8 *opcodes = m_harem_decrypted_opcodes = auto_alloc_array(machine(), UINT8, size * 3);
-
+ m_harem_decrypted_data = std::make_unique<UINT8[]>(size * 3);
+ UINT8 *data = m_harem_decrypted_data.get();
+ m_harem_decrypted_opcodes = std::make_unique<UINT8[]>(size * 3);
+ UINT8 *opcodes = m_harem_decrypted_opcodes.get();
// decryption 03
for (int i = 0; i < size; i++)
{
@@ -673,8 +674,8 @@ DRIVER_INIT_MEMBER(scramble_state,harem)
data [size * 2 + i] = BITSWAP8(x, 7,2,5,4,3,0,1,6);
}
- membank("rombank")->set_base (m_harem_decrypted_data);
- membank("rombank_decrypted")->set_base (m_harem_decrypted_opcodes);
+ membank("rombank")->set_base (m_harem_decrypted_data.get());
+ membank("rombank_decrypted")->set_base (m_harem_decrypted_opcodes.get());
save_item(NAME(m_harem_decrypt_mode));
save_item(NAME(m_harem_decrypt_bit));
diff --git a/src/mame/machine/simpsons.cpp b/src/mame/machine/simpsons.cpp
index aec4071ad56..420f65bef31 100644
--- a/src/mame/machine/simpsons.cpp
+++ b/src/mame/machine/simpsons.cpp
@@ -33,8 +33,8 @@ WRITE8_MEMBER(simpsons_state::simpsons_eeprom_w)
WRITE8_MEMBER(simpsons_state::simpsons_coin_counter_w)
{
/* bit 0,1 coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 selects mono or stereo sound */
/* bit 3 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
@@ -63,7 +63,7 @@ WRITE8_MEMBER( simpsons_state::banking_callback )
void simpsons_state::machine_start()
{
- m_spriteram = auto_alloc_array_clear(machine(), UINT16, 0x1000 / 2);
+ m_spriteram = make_unique_clear<UINT16[]>(0x1000 / 2);
membank("bank1")->configure_entries(0, 64, memregion("maincpu")->base(), 0x2000);
@@ -74,7 +74,7 @@ void simpsons_state::machine_start()
save_item(NAME(m_sprite_colorbase));
save_item(NAME(m_layer_colorbase));
save_item(NAME(m_layerpri));
- save_pointer(NAME(m_spriteram), 0x1000 / 2);
+ save_pointer(NAME(m_spriteram.get()), 0x1000 / 2);
}
void simpsons_state::machine_reset()
diff --git a/src/mame/machine/smartmed.cpp b/src/mame/machine/smartmed.cpp
index f8295a4110d..9ba88c447fe 100644
--- a/src/mame/machine/smartmed.cpp
+++ b/src/mame/machine/smartmed.cpp
@@ -119,7 +119,7 @@ void nand_device::device_start()
m_accumulated_status = 0;
m_mp_opcode = 0;
m_mode_3065 = 0;
- m_pagereg = auto_alloc_array(machine(), UINT8, m_page_total_size);
+ m_pagereg = std::make_unique<UINT8[]>(m_page_total_size);
#ifdef SMARTMEDIA_IMAGE_SAVE
m_image_format = 0;
@@ -151,7 +151,7 @@ bool smartmedia_image_device::smartmedia_format_1()
m_num_pages = get_UINT32BE(custom_header.num_pages);
m_log2_pages_per_block = get_UINT32BE(custom_header.log2_pages_per_block);
m_data_ptr = auto_alloc_array(machine(), UINT8, m_page_total_size*m_num_pages);
- m_data_uid_ptr = auto_alloc_array(machine(), UINT8, 256 + 16);
+ m_data_uid_ptr = std::make_unique<UINT8[]>(256 + 16);
m_mode = SM_M_INIT;
m_pointer_mode = SM_PM_A;
m_page_addr = 0;
@@ -160,7 +160,7 @@ bool smartmedia_image_device::smartmedia_format_1()
if (!is_readonly())
m_status |= 0x80;
m_accumulated_status = 0;
- m_pagereg = auto_alloc_array(machine(), UINT8, m_page_total_size);
+ m_pagereg = std::make_unique<UINT8[]>(m_page_total_size);
memset( m_id, 0, sizeof( m_id));
m_id_len = 0;
m_col_address_cycles = 1;
@@ -178,7 +178,7 @@ bool smartmedia_image_device::smartmedia_format_1()
m_id_len = 3;
fread(m_id, m_id_len);
fread(&m_mp_opcode, 1);
- fread(m_data_uid_ptr, 256 + 16);
+ fread(m_data_uid_ptr.get(), 256 + 16);
}
fread(m_data_ptr, m_page_total_size*m_num_pages);
@@ -246,7 +246,7 @@ bool smartmedia_image_device::smartmedia_format_2()
}
m_data_ptr = auto_alloc_array(machine(), UINT8, m_page_total_size*m_num_pages);
- m_data_uid_ptr = auto_alloc_array(machine(), UINT8, 256 + 16);
+ m_data_uid_ptr = std::make_unique<UINT8[]>(256 + 16);
m_mode = SM_M_INIT;
m_pointer_mode = SM_PM_A;
m_page_addr = 0;
@@ -255,7 +255,7 @@ bool smartmedia_image_device::smartmedia_format_2()
if (!is_readonly())
m_status |= 0x80;
m_accumulated_status = 0;
- m_pagereg = auto_alloc_array(machine(), UINT8, m_page_total_size);
+ m_pagereg = std::make_unique<UINT8[]>(m_page_total_size);
m_id_len = 3;
memcpy( m_id, custom_header.data1, m_id_len);
m_mp_opcode = 0;
@@ -265,10 +265,10 @@ bool smartmedia_image_device::smartmedia_format_2()
for (i=0;i<8;i++)
{
- memcpy( m_data_uid_ptr + i * 32, custom_header.data2, 16);
+ memcpy( m_data_uid_ptr.get() + i * 32, custom_header.data2, 16);
for (j=0;j<16;j++) m_data_uid_ptr[i*32+16+j] = custom_header.data2[j] ^ 0xFF;
}
- memcpy( m_data_uid_ptr + 256, custom_header.data3, 16);
+ memcpy( m_data_uid_ptr.get() + 256, custom_header.data3, 16);
fread(m_data_ptr, m_page_total_size*m_num_pages);
@@ -343,7 +343,7 @@ void smartmedia_image_device::call_unload()
m_byte_addr = 0;
m_status = 0xC0;
m_accumulated_status = 0;
- m_pagereg = auto_alloc_array(machine(), UINT8, m_page_total_size);
+ m_pagereg = std::make_unique<UINT8[]>(m_page_total_size);
memset( m_id, 0, sizeof( m_id));
m_id_len = 0;
m_mp_opcode = 0;
@@ -440,7 +440,7 @@ void nand_device::command_w(UINT8 data)
m_page_addr = 0;
m_addr_load_ptr = 0;
m_program_byte_count = 0;
- memset(m_pagereg, 0xff, m_page_total_size);
+ memset(m_pagereg.get(), 0xff, m_page_total_size);
break;
case 0x10: // Page Program (2nd cycle)
case 0x15:
diff --git a/src/mame/machine/smartmed.h b/src/mame/machine/smartmed.h
index 29268f2652e..15ad48d4235 100644
--- a/src/mame/machine/smartmed.h
+++ b/src/mame/machine/smartmed.h
@@ -145,8 +145,6 @@ public:
void address_w(UINT8 data);
void data_w(UINT8 data);
- void read(int offset, void *data, int size);
-
void set_data_ptr(void *ptr);
protected:
// device-level overrides
@@ -160,8 +158,8 @@ protected:
// 0 means no card loaded
int m_log2_pages_per_block; // log2 of number of pages per erase block (usually 4 or 5)
- UINT8 *m_data_ptr; // FEEPROM data area
- UINT8 *m_data_uid_ptr;
+ UINT8* m_data_ptr; // FEEPROM data area
+ std::unique_ptr<UINT8[]> m_data_uid_ptr;
sm_mode_t m_mode; // current operation mode
pointer_sm_mode_t m_pointer_mode; // pointer mode
@@ -173,7 +171,7 @@ protected:
int m_status; // current status
int m_accumulated_status; // accumulated status
- UINT8 *m_pagereg; // page register used by program command
+ std::unique_ptr<UINT8[]> m_pagereg; // page register used by program command
UINT8 m_id[5]; // chip ID
UINT8 m_mp_opcode; // multi-plane operation code
diff --git a/src/mame/machine/sms.cpp b/src/mame/machine/sms.cpp
index 86fb9114bc0..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)
{
@@ -892,8 +895,8 @@ MACHINE_START_MEMBER(sms_state,sms)
if (m_mainram == nullptr)
{
- m_mainram = auto_alloc_array_clear(machine(), UINT8, 0x2000);
- save_pointer(NAME(m_mainram), 0x2000);
+ m_mainram = make_unique_clear<UINT8[]>(0x2000);
+ save_pointer(NAME(m_mainram.get()), 0x2000);
// alibaba and blockhol are ports of games for the MSX system. The
// MSX bios usually initializes callback "vectors" at the top of RAM.
@@ -909,7 +912,7 @@ MACHINE_START_MEMBER(sms_state,sms)
// cartridge slot.
if (m_has_jpn_sms_cart_slot)
{
- memset(m_mainram, 0xf0, 0x2000);
+ memset(m_mainram.get(), 0xf0, 0x2000);
}
}
@@ -1162,7 +1165,7 @@ VIDEO_START_MEMBER(sms_state,sms1)
save_item(NAME(m_frame_sscope_state));
// Allow sscope screens to have crosshair, useful for the game missil3d
- crosshair_set_screen(machine(), 0, CROSSHAIR_SCREEN_ALL);
+ machine().crosshair().set_screen(0, CROSSHAIR_SCREEN_ALL);
}
@@ -1301,12 +1304,12 @@ VIDEO_START_MEMBER(sms_state,gamegear)
m_prev_bitmap_copied = false;
m_main_scr->register_screen_bitmap(m_prev_bitmap);
m_main_scr->register_screen_bitmap(m_gg_sms_mode_bitmap);
- m_line_buffer = auto_alloc_array(machine(), int, 160 * 4);
+ m_line_buffer = std::make_unique<int[]>(160 * 4);
save_item(NAME(m_prev_bitmap_copied));
save_item(NAME(m_prev_bitmap));
save_item(NAME(m_gg_sms_mode_bitmap));
- save_pointer(NAME(m_line_buffer), 160 * 4);
+ save_pointer(NAME(m_line_buffer.get()), 160 * 4);
}
VIDEO_RESET_MEMBER(sms_state,gamegear)
@@ -1319,7 +1322,7 @@ VIDEO_RESET_MEMBER(sms_state,gamegear)
if (m_cartslot->exists() && m_cartslot->m_cart->get_sms_mode())
{
m_gg_sms_mode_bitmap.fill(rgb_t::black);
- memset(m_line_buffer, 0, 160 * 4 * sizeof(int));
+ memset(m_line_buffer.get(), 0, 160 * 4 * sizeof(int));
}
}
@@ -1370,7 +1373,7 @@ void sms_state::screen_gg_sms_mode_scaling(screen_device &screen, bitmap_rgb32 &
/* Process lines, but skip those already processed before */
for (sms_y2 = MAX(sms_min_y2, sms_y2); sms_y2 <= sms_max_y2; sms_y2++)
{
- int *combineline_buffer = m_line_buffer + (sms_y2 & 0x03) * 160;
+ int *combineline_buffer = m_line_buffer.get() + (sms_y2 & 0x03) * 160;
if (sms_y2 >= vdp_bitmap.cliprect().min_y && sms_y2 <= vdp_bitmap.cliprect().max_y)
{
@@ -1432,10 +1435,10 @@ void sms_state::screen_gg_sms_mode_scaling(screen_device &screen, bitmap_rgb32 &
int *line1, *line2, *line3, *line4;
/* Setup our source lines */
- line1 = m_line_buffer + ((sms_y + y_i - 1) & 0x03) * 160;
- line2 = m_line_buffer + ((sms_y + y_i - 0) & 0x03) * 160;
- line3 = m_line_buffer + ((sms_y + y_i + 1) & 0x03) * 160;
- line4 = m_line_buffer + ((sms_y + y_i + 2) & 0x03) * 160;
+ line1 = m_line_buffer.get() + ((sms_y + y_i - 1) & 0x03) * 160;
+ line2 = m_line_buffer.get() + ((sms_y + y_i - 0) & 0x03) * 160;
+ line3 = m_line_buffer.get() + ((sms_y + y_i + 1) & 0x03) * 160;
+ line4 = m_line_buffer.get() + ((sms_y + y_i + 2) & 0x03) * 160;
UINT32 *p_bitmap = &bitmap.pix32(visarea.min_y + plot_y_group + y_i, visarea.min_x);
diff --git a/src/mame/machine/snes.cpp b/src/mame/machine/snes.cpp
index 9c4253906e2..d4a4f9c88c0 100644
--- a/src/mame/machine/snes.cpp
+++ b/src/mame/machine/snes.cpp
@@ -1187,7 +1187,7 @@ DRIVER_INIT_MEMBER(snes_state,snes)
if (nvram_size > 0x40000)
nvram_size = 0x40000;
- m_cart.m_nvram = auto_alloc_array_clear(machine(), UINT8, nvram_size);
+ m_cart.m_nvram = make_unique_clear<UINT8[]>(nvram_size);
m_cart.m_nvram_size = nvram_size;
}
@@ -1208,7 +1208,7 @@ DRIVER_INIT_MEMBER(snes_state,snes_hirom)
if (nvram_size > 0x40000)
nvram_size = 0x40000;
- m_cart.m_nvram = auto_alloc_array_clear(machine(), UINT8, nvram_size);
+ m_cart.m_nvram = make_unique_clear<UINT8[]>(nvram_size);
m_cart.m_nvram_size = nvram_size;
}
diff --git a/src/mame/machine/st0016.cpp b/src/mame/machine/st0016.cpp
index 08959876e99..598a94ebddc 100644
--- a/src/mame/machine/st0016.cpp
+++ b/src/mame/machine/st0016.cpp
@@ -570,9 +570,9 @@ void st0016_cpu_device::st0016_save_init()
save_item(NAME(st0016_char_bank));
//save_item(NAME(st0016_rom_bank));
save_item(NAME(st0016_vregs));
- save_pointer(NAME(m_charram), ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE);
- save_pointer(NAME(st0016_paletteram), ST0016_MAX_PAL_BANK*ST0016_PAL_BANK_SIZE);
- save_pointer(NAME(st0016_spriteram), ST0016_MAX_SPR_BANK*ST0016_SPR_BANK_SIZE);
+ save_pointer(NAME(m_charram.get()), ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE);
+ save_pointer(NAME(st0016_paletteram.get()), ST0016_MAX_PAL_BANK*ST0016_PAL_BANK_SIZE);
+ save_pointer(NAME(st0016_spriteram.get()), ST0016_MAX_SPR_BANK*ST0016_SPR_BANK_SIZE);
}
@@ -581,9 +581,9 @@ void st0016_cpu_device::startup()
int gfx_index=0;
macs_cart_slot = 0;
- m_charram=auto_alloc_array_clear(machine(), UINT8, ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE);
- st0016_spriteram=auto_alloc_array_clear(machine(), UINT8, ST0016_MAX_SPR_BANK*ST0016_SPR_BANK_SIZE);
- st0016_paletteram=auto_alloc_array_clear(machine(), UINT8, ST0016_MAX_PAL_BANK*ST0016_PAL_BANK_SIZE);
+ m_charram=make_unique_clear<UINT8[]>(ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE);
+ st0016_spriteram=make_unique_clear<UINT8[]>(ST0016_MAX_SPR_BANK*ST0016_SPR_BANK_SIZE);
+ st0016_paletteram=make_unique_clear<UINT8[]>(ST0016_MAX_PAL_BANK*ST0016_PAL_BANK_SIZE);
/* find first empty slot to decode gfx */
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
@@ -593,7 +593,7 @@ void st0016_cpu_device::startup()
assert(gfx_index != MAX_GFX_ELEMENTS);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(gfx_index, global_alloc(gfx_element(m_palette, charlayout, (UINT8 *) m_charram, 0, 0x40, 0)));
+ m_gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(m_palette, charlayout, m_charram.get(), 0, 0x40, 0));
st0016_ramgfx = gfx_index;
spr_dx=0;
@@ -718,7 +718,7 @@ UINT32 st0016_cpu_device::update(screen_device &screen, bitmap_ind16 &bitmap, co
{
int h,j;
FILE *p=fopen("vram.bin","wb");
- fwrite(st0016_spriteram,1,0x1000*ST0016_MAX_SPR_BANK,p);
+ fwrite(st0016_spriteram.get(),1,0x1000*ST0016_MAX_SPR_BANK,p);
fclose(p);
p=fopen("vram.txt","wt");
diff --git a/src/mame/machine/st0016.h b/src/mame/machine/st0016.h
index ae1a0ec713c..6401ddc5c19 100644
--- a/src/mame/machine/st0016.h
+++ b/src/mame/machine/st0016.h
@@ -64,7 +64,8 @@ public:
UINT32 update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void st0016_draw_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- UINT8 *st0016_spriteram,*st0016_paletteram;
+ std::unique_ptr<UINT8[]> st0016_spriteram;
+ std::unique_ptr<UINT8[]> st0016_paletteram;
UINT32 st0016_game;
@@ -74,7 +75,7 @@ public:
UINT8 st0016_vregs[0xc0];
int st0016_ramgfx;
- UINT8 *m_charram;
+ std::unique_ptr<UINT8[]> m_charram;
protected:
// device-level overrides
diff --git a/src/mame/machine/starwars.cpp b/src/mame/machine/starwars.cpp
index 4caa47d9df1..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
/***************************************************************************
@@ -67,19 +67,19 @@ WRITE8_MEMBER(starwars_state::starwars_out_w)
switch (offset & 7)
{
case 0: /* Coin counter 1 */
- coin_counter_w(machine(), 0, data);
+ machine().bookkeeping().coin_counter_w(0, data);
break;
case 1: /* Coin counter 2 */
- coin_counter_w(machine(), 1, data);
+ machine().bookkeeping().coin_counter_w(1, data);
break;
case 2: /* LED 3 */
- set_led_status(machine(), 2, ~data & 0x80);
+ output().set_led_value(2, ~data & 0x80);
break;
case 3: /* LED 2 */
- set_led_status(machine(), 1, ~data & 0x80);
+ output().set_led_value(1, ~data & 0x80);
break;
case 4: /* bank switch */
@@ -91,7 +91,7 @@ WRITE8_MEMBER(starwars_state::starwars_out_w)
break;
case 6: /* LED 1 */
- set_led_status(machine(), 0, ~data & 0x80);
+ output().set_led_value(0, ~data & 0x80);
break;
case 7: /* NVRAM array recall */
@@ -156,9 +156,9 @@ void starwars_state::starwars_mproc_init()
UINT8 *src = memregion("user2")->base();
int cnt, val;
- m_PROM_STR = auto_alloc_array(machine(), UINT8, 1024);
- m_PROM_MAS = auto_alloc_array(machine(), UINT8, 1024);
- m_PROM_AM = auto_alloc_array(machine(), UINT8, 1024);
+ m_PROM_STR = std::make_unique<UINT8[]>(1024);
+ m_PROM_MAS = std::make_unique<UINT8[]>(1024);
+ m_PROM_AM = std::make_unique<UINT8[]>(1024);
for (cnt = 0; cnt < 1024; cnt++)
{
diff --git a/src/mame/machine/stfight.cpp b/src/mame/machine/stfight.cpp
index f0aba6a01c3..2ffe2d57a95 100644
--- a/src/mame/machine/stfight.cpp
+++ b/src/mame/machine/stfight.cpp
@@ -156,8 +156,8 @@ INTERRUPT_GEN_MEMBER(stfight_state::stfight_vb_interrupt)
WRITE8_MEMBER(stfight_state::stfight_io_w)
{
// TODO: What is bit 4?
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
}
READ8_MEMBER(stfight_state::stfight_coin_r)
diff --git a/src/mame/machine/subs.cpp b/src/mame/machine/subs.cpp
index b69d581ba4a..9df1a1ced33 100644
--- a/src/mame/machine/subs.cpp
+++ b/src/mame/machine/subs.cpp
@@ -181,7 +181,7 @@ lamp1_w
***************************************************************************/
WRITE8_MEMBER(subs_state::lamp1_w)
{
- set_led_status(machine(), 0,~offset & 1);
+ output().set_led_value(0,~offset & 1);
}
/***************************************************************************
@@ -189,5 +189,5 @@ lamp2_w
***************************************************************************/
WRITE8_MEMBER(subs_state::lamp2_w)
{
- set_led_status(machine(), 1,~offset & 1);
+ output().set_led_value(1,~offset & 1);
}
diff --git a/src/mame/machine/subsino.cpp b/src/mame/machine/subsino.cpp
index 37272d11c34..1389058756f 100644
--- a/src/mame/machine/subsino.cpp
+++ b/src/mame/machine/subsino.cpp
@@ -86,7 +86,7 @@ void dump_decrypted(running_machine& machine, UINT8* decrypt)
void subsino_decrypt(running_machine& machine, void (*bitswaps)(UINT8 *decrypt, int i), const UINT8 *xors, int size)
{
int i;
- UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x10000);
+ std::unique_ptr<UINT8[]> decrypt = std::make_unique<UINT8[]>(0x10000);
UINT8* region = machine.root_device().memregion("maincpu")->base();
for (i=0;i<0x10000;i++)
@@ -94,7 +94,7 @@ void subsino_decrypt(running_machine& machine, void (*bitswaps)(UINT8 *decrypt,
if (i<size)
{
decrypt[i] = region[i]^xors[i&7];
- bitswaps(decrypt, i);
+ bitswaps(decrypt.get(), i);
}
else
{
@@ -102,5 +102,5 @@ void subsino_decrypt(running_machine& machine, void (*bitswaps)(UINT8 *decrypt,
}
}
// dump_decrypted(machine, decrypt);
- memcpy(region, decrypt, 0x10000);
+ memcpy(region, decrypt.get(), 0x10000);
}
diff --git a/src/mame/machine/svi318.cpp b/src/mame/machine/svi318.cpp
index b34b6f381fc..098e5576b4d 100644
--- a/src/mame/machine/svi318.cpp
+++ b/src/mame/machine/svi318.cpp
@@ -202,7 +202,7 @@ READ8_MEMBER(svi318_state::psg_port_a_r)
WRITE8_MEMBER(svi318_state::psg_port_b_w)
{
if ((m_bank_switch ^ data) & 0x20)
- set_led_status(machine(), 0, !(data & 0x20));
+ output().set_led_value(0, !(data & 0x20));
m_bank_switch = data;
set_banks();
@@ -409,12 +409,12 @@ DRIVER_INIT_MEMBER(svi318_state, svi318)
m_maincpu->set_input_line_vector(0, 0xff);
/* memory */
- m_empty_bank = auto_alloc_array(machine(), UINT8, 0x8000);
- memset(m_empty_bank, 0xff, 0x8000);
+ m_empty_bank = std::make_unique<UINT8[]>(0x8000);
+ memset(m_empty_bank.get(), 0xff, 0x8000);
- m_bank_low_ptr = m_empty_bank;
- m_bank_high1_ptr = m_empty_bank;
- m_bank_high2_ptr = m_empty_bank;
+ m_bank_low_ptr = m_empty_bank.get();
+ m_bank_high1_ptr = m_empty_bank.get();
+ m_bank_high2_ptr = m_empty_bank.get();
}
DRIVER_INIT_MEMBER(svi318_state, svi328_806)
@@ -535,7 +535,7 @@ void svi318_state::set_banks()
m_bank_low = (v & 1) ? ((v & 2) ? ((v & 8) ? SVI_INTERNAL : SVI_EXPRAM3) : SVI_EXPRAM2) : SVI_CART;
m_bank_high = (v & 4) ? ((v & 16) ? SVI_INTERNAL : SVI_EXPRAM3) : SVI_EXPRAM2;
- m_bank_low_ptr = m_empty_bank;
+ m_bank_low_ptr = m_empty_bank.get();
m_bank_low_read_only = 1;
switch (m_bank_low)
@@ -563,9 +563,9 @@ void svi318_state::set_banks()
break;
}
- m_bank_high1_ptr = m_empty_bank;
+ m_bank_high1_ptr = m_empty_bank.get();
m_bank_high1_read_only = 1;
- m_bank_high2_ptr = m_empty_bank;
+ m_bank_high2_ptr = m_empty_bank.get();
m_bank_high2_read_only = 1;
switch (m_bank_high)
@@ -607,9 +607,9 @@ void svi318_state::set_banks()
/* Check for special CART based banking */
if (m_bank_low == SVI_CART && (v & 0xc0 ) != 0xc0)
{
- m_bank_high1_ptr = m_empty_bank;
+ m_bank_high1_ptr = m_empty_bank.get();
m_bank_high1_read_only = 1;
- m_bank_high2_ptr = m_empty_bank;
+ m_bank_high2_ptr = m_empty_bank.get();
m_bank_high2_read_only = 1;
if (m_cart_rom && !(v & 0x80))
diff --git a/src/mame/machine/taitoio.cpp b/src/mame/machine/taitoio.cpp
index 6d2bcadd9b0..7ec4223c354 100644
--- a/src/mame/machine/taitoio.cpp
+++ b/src/mame/machine/taitoio.cpp
@@ -137,10 +137,10 @@ WRITE8_MEMBER( tc0220ioc_device::write )
case 0x04: /* coin counters and lockout, hi nibble irrelevant */
- coin_lockout_w(machine(), 0, ~data & 0x01);
- coin_lockout_w(machine(), 1, ~data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08);
//if (data & 0xf0)
//logerror("PC %06x: warning - write %02x to TC0220IOC address %02x\n",space.device().safe_pc(),data,offset);
@@ -260,10 +260,10 @@ WRITE8_MEMBER( tc0510nio_device::write )
break;
case 0x04: /* coin counters and lockout */
- coin_lockout_w(machine(), 0, ~data & 0x01);
- coin_lockout_w(machine(), 1, ~data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08);
break;
default:
@@ -387,10 +387,10 @@ WRITE8_MEMBER( tc0640fio_device::write )
break;
case 0x04: /* coin counters and lockout */
- coin_lockout_w(machine(), 0, ~data & 0x01);
- coin_lockout_w(machine(), 1, ~data & 0x02);
- coin_counter_w(machine(), 0, data & 0x04);
- coin_counter_w(machine(), 1, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08);
break;
default:
diff --git a/src/mame/machine/taitosj.cpp b/src/mame/machine/taitosj.cpp
index f32f2fc83df..ac4cdfd85c7 100644
--- a/src/mame/machine/taitosj.cpp
+++ b/src/mame/machine/taitosj.cpp
@@ -56,7 +56,7 @@ void taitosj_state::machine_reset()
WRITE8_MEMBER(taitosj_state::taitosj_bankswitch_w)
{
- coin_lockout_global_w(machine(), ~data & 1);
+ machine().bookkeeping().coin_lockout_global_w(~data & 1);
if(data & 0x80) membank("bank1")->set_entry(1);
else membank("bank1")->set_entry(0);
diff --git a/src/mame/machine/tandy2kb.cpp b/src/mame/machine/tandy2kb.cpp
index b6c7dd18db3..6e0b08351e7 100644
--- a/src/mame/machine/tandy2kb.cpp
+++ b/src/mame/machine/tandy2kb.cpp
@@ -407,8 +407,8 @@ WRITE8_MEMBER( tandy2k_keyboard_device::kb_p2_w )
m_keylatch = ((data & 0x0f) << 8) | (m_keylatch & 0xff);
// led output
- output_set_led_value(LED_2, !BIT(data, 4));
- output_set_led_value(LED_1, !BIT(data, 5));
+ machine().output().set_led_value(LED_2, !BIT(data, 4));
+ machine().output().set_led_value(LED_1, !BIT(data, 5));
// keyboard clock
int clock = BIT(data, 6);
diff --git a/src/mame/machine/thomson.cpp b/src/mame/machine/thomson.cpp
index b7deec216ee..bda8cf14c80 100644
--- a/src/mame/machine/thomson.cpp
+++ b/src/mame/machine/thomson.cpp
@@ -338,7 +338,7 @@ void thomson_state::thom_irq_4( int state )
void thomson_state::thom_set_caps_led( int led )
{
- output_set_value( "led0", led );
+ output().set_value( "led0", led );
}
/* ------------ 6850 defines ------------ */
diff --git a/src/mame/machine/ti85.cpp b/src/mame/machine/ti85.cpp
index 069e8f7f6fa..c63bdc26776 100644
--- a/src/mame/machine/ti85.cpp
+++ b/src/mame/machine/ti85.cpp
@@ -211,7 +211,7 @@ void ti85_state::update_ti86_memory ()
if (m_ti8x_memory_page_1 & 0x40)
{
- ti8x_update_bank(space, 1, m_ti8x_ram, m_ti8x_memory_page_1 & 0x07, true);
+ ti8x_update_bank(space, 1, m_ti8x_ram.get(), m_ti8x_memory_page_1 & 0x07, true);
}
else
{
@@ -220,7 +220,7 @@ void ti85_state::update_ti86_memory ()
if (m_ti8x_memory_page_2 & 0x40)
{
- ti8x_update_bank(space, 2, m_ti8x_ram, m_ti8x_memory_page_2 & 0x07, true);
+ ti8x_update_bank(space, 2, m_ti8x_ram.get(), m_ti8x_memory_page_2 & 0x07, true);
}
else
{
@@ -438,16 +438,16 @@ MACHINE_START_MEMBER(ti85_state,ti86)
m_interrupt_speed = 0;
m_port4_bit0 = 0;
- m_ti8x_ram = auto_alloc_array(machine(), UINT8, 128*1024);
- memset(m_ti8x_ram, 0, sizeof(UINT8)*128*1024);
+ m_ti8x_ram = std::make_unique<UINT8[]>(128*1024);
+ memset(m_ti8x_ram.get(), 0, sizeof(UINT8)*128*1024);
space.unmap_write(0x0000, 0x3fff);
membank("bank1")->set_base(m_bios);
membank("bank2")->set_base(m_bios + 0x04000);
- membank("bank4")->set_base(m_ti8x_ram);
- machine().device<nvram_device>("nvram")->set_base(m_ti8x_ram, sizeof(UINT8)*128*1024);
+ membank("bank4")->set_base(m_ti8x_ram.get());
+ machine().device<nvram_device>("nvram")->set_base(m_ti8x_ram.get(), sizeof(UINT8)*128*1024);
machine().scheduler().timer_pulse(attotime::from_hz(256), timer_expired_delegate(FUNC(ti85_state::ti85_timer_callback),this));
}
@@ -1129,7 +1129,7 @@ void ti85_state::ti86_setup_snapshot (UINT8 * data)
ti8x_snapshot_setup_registers ( data);
/* Memory dump */
- memcpy(m_ti8x_ram, data+0x94, 0x20000);
+ memcpy(m_ti8x_ram.get(), data+0x94, 0x20000);
m_keypad_mask = hdw[0x00]&0x7f;
diff --git a/src/mame/machine/ticket.cpp b/src/mame/machine/ticket.cpp
index 595a22b40a9..3bd90d40e53 100644
--- a/src/mame/machine/ticket.cpp
+++ b/src/mame/machine/ticket.cpp
@@ -141,7 +141,7 @@ WRITE8_MEMBER( ticket_dispenser_device::write )
{
LOG(("%s: Ticket Power Off\n", machine().describe_context()));
m_timer->adjust(attotime::never);
- set_led_status(machine(), 2,0);
+ machine().output().set_led_value(2,0);
m_power = 0;
}
}
@@ -197,12 +197,12 @@ void ticket_dispenser_device::device_timer(emu_timer &timer, device_timer_id id,
}
// update LED status (fixme: should map to an output)
- set_led_status(machine(), 2, (m_status == m_ticketdispensed));
+ machine().output().set_led_value(2, (m_status == m_ticketdispensed));
// if we just dispensed, increment global count
if (m_status == m_ticketdispensed)
{
- increment_dispensed_tickets(machine(), 1);
+ machine().bookkeeping().increment_dispensed_tickets(1);
LOG(("Ticket Dispensed\n"));
}
}
diff --git a/src/mame/machine/tnzs.cpp b/src/mame/machine/tnzs.cpp
index 108a5fa1522..cd1eafb6562 100644
--- a/src/mame/machine/tnzs.cpp
+++ b/src/mame/machine/tnzs.cpp
@@ -70,10 +70,10 @@ WRITE8_MEMBER(tnzs_state::tnzs_port2_w)
{
// logerror("I8742:%04x Write %02x to port 2\n", space.device().safe_pcbase(), data);
- coin_lockout_w(machine(), 0, (data & 0x40));
- coin_lockout_w(machine(), 1, (data & 0x80));
- coin_counter_w(machine(), 0, (~data & 0x10));
- coin_counter_w(machine(), 1, (~data & 0x20));
+ machine().bookkeeping().coin_lockout_w(0, (data & 0x40));
+ machine().bookkeeping().coin_lockout_w(1, (data & 0x80));
+ machine().bookkeeping().coin_counter_w(0, (~data & 0x10));
+ machine().bookkeeping().coin_counter_w(1, (~data & 0x20));
m_input_select = data;
}
@@ -123,7 +123,7 @@ void tnzs_state::mcu_handle_coins( int coin )
if (coin & 0x01) /* coin A */
{
// logerror("Coin dropped into slot A\n");
- coin_counter_w(machine(),0,1); coin_counter_w(machine(),0,0); /* Count slot A */
+ machine().bookkeeping().coin_counter_w(0,1); machine().bookkeeping().coin_counter_w(0,0); /* Count slot A */
m_mcu_coins_a++;
if (m_mcu_coins_a >= m_mcu_coinage[0])
{
@@ -132,11 +132,11 @@ void tnzs_state::mcu_handle_coins( int coin )
if (m_mcu_credits >= 9)
{
m_mcu_credits = 9;
- coin_lockout_global_w(machine(), 1); /* Lock all coin slots */
+ machine().bookkeeping().coin_lockout_global_w(1); /* Lock all coin slots */
}
else
{
- coin_lockout_global_w(machine(), 0); /* Unlock all coin slots */
+ machine().bookkeeping().coin_lockout_global_w(0); /* Unlock all coin slots */
}
}
}
@@ -144,7 +144,7 @@ void tnzs_state::mcu_handle_coins( int coin )
if (coin & 0x02) /* coin B */
{
// logerror("Coin dropped into slot B\n");
- coin_counter_w(machine(),1,1); coin_counter_w(machine(),1,0); /* Count slot B */
+ machine().bookkeeping().coin_counter_w(1,1); machine().bookkeeping().coin_counter_w(1,0); /* Count slot B */
m_mcu_coins_b++;
if (m_mcu_coins_b >= m_mcu_coinage[2])
{
@@ -153,11 +153,11 @@ void tnzs_state::mcu_handle_coins( int coin )
if (m_mcu_credits >= 9)
{
m_mcu_credits = 9;
- coin_lockout_global_w(machine(), 1); /* Lock all coin slots */
+ machine().bookkeeping().coin_lockout_global_w(1); /* Lock all coin slots */
}
else
{
- coin_lockout_global_w(machine(), 0); /* Unlock all coin slots */
+ machine().bookkeeping().coin_lockout_global_w(0); /* Unlock all coin slots */
}
}
}
@@ -173,7 +173,7 @@ void tnzs_state::mcu_handle_coins( int coin )
else
{
if (m_mcu_credits < 9)
- coin_lockout_global_w(machine(), 0); /* Unlock all coin slots */
+ machine().bookkeeping().coin_lockout_global_w(0); /* Unlock all coin slots */
m_mcu_reportcoin = 0;
}
@@ -702,22 +702,22 @@ WRITE8_MEMBER(tnzs_state::tnzs_bankswitch1_w)
/* Coin count and lockout is handled by the i8742 */
break;
case MCU_NONE_INSECTX:
- coin_lockout_w(machine(), 0, (~data & 0x04));
- coin_lockout_w(machine(), 1, (~data & 0x08));
- coin_counter_w(machine(), 0, (data & 0x10));
- coin_counter_w(machine(), 1, (data & 0x20));
+ machine().bookkeeping().coin_lockout_w(0, (~data & 0x04));
+ machine().bookkeeping().coin_lockout_w(1, (~data & 0x08));
+ machine().bookkeeping().coin_counter_w(0, (data & 0x10));
+ machine().bookkeeping().coin_counter_w(1, (data & 0x20));
break;
case MCU_NONE_TNZSB:
case MCU_NONE_KABUKIZ:
- coin_lockout_w(machine(), 0, (~data & 0x10));
- coin_lockout_w(machine(), 1, (~data & 0x20));
- coin_counter_w(machine(), 0, (data & 0x04));
- coin_counter_w(machine(), 1, (data & 0x08));
+ machine().bookkeeping().coin_lockout_w(0, (~data & 0x10));
+ machine().bookkeeping().coin_lockout_w(1, (~data & 0x20));
+ machine().bookkeeping().coin_counter_w(0, (data & 0x04));
+ machine().bookkeeping().coin_counter_w(1, (data & 0x08));
break;
case MCU_NONE_KAGEKI:
- coin_lockout_global_w(machine(), (~data & 0x20));
- coin_counter_w(machine(), 0, (data & 0x04));
- coin_counter_w(machine(), 1, (data & 0x08));
+ machine().bookkeeping().coin_lockout_global_w((~data & 0x20));
+ machine().bookkeeping().coin_counter_w(0, (data & 0x04));
+ machine().bookkeeping().coin_counter_w(1, (data & 0x08));
break;
case MCU_ARKANOID:
case MCU_EXTRMATN:
diff --git a/src/mame/machine/toaplan1.cpp b/src/mame/machine/toaplan1.cpp
index de9342b4007..687b130b1ed 100644
--- a/src/mame/machine/toaplan1.cpp
+++ b/src/mame/machine/toaplan1.cpp
@@ -235,15 +235,15 @@ READ16_MEMBER(toaplan1_state::vimana_system_port_r)
m_vimana_credits += toaplan1_credits_for_coin[reg][slot][dsw];
m_vimana_coins[slot] -= toaplan1_coins_for_credit[reg][slot][dsw];
}
- coin_counter_w(machine(), slot, 1);
- coin_counter_w(machine(), slot, 0);
+ machine().bookkeeping().coin_counter_w(slot, 1);
+ machine().bookkeeping().coin_counter_w(slot, 0);
}
if (m_vimana_credits >= 9)
m_vimana_credits = 9;
}
- coin_lockout_global_w(machine(), (m_vimana_credits >= 9));
+ machine().bookkeeping().coin_lockout_global_w((m_vimana_credits >= 9));
m_vimana_latch = p;
@@ -276,7 +276,7 @@ WRITE16_MEMBER(toaplan1_state::vimana_mcu_w)
if (ACCESSING_BITS_0_7)
{
m_vimana_credits = data & 0xff;
- coin_lockout_global_w(machine(), (m_vimana_credits >= 9));
+ machine().bookkeeping().coin_lockout_global_w((m_vimana_credits >= 9));
}
break;
}
@@ -314,14 +314,14 @@ WRITE16_MEMBER(toaplan1_state::toaplan1_reset_sound_w)
WRITE8_MEMBER(toaplan1_rallybik_state::rallybik_coin_w)
{
switch (data) {
- case 0x08: if (m_coin_count) { coin_counter_w(machine(), 0, 1); coin_counter_w(machine(), 0, 0); } break;
- case 0x09: if (m_coin_count) { coin_counter_w(machine(), 2, 1); coin_counter_w(machine(), 2, 0); } break;
- case 0x0a: if (m_coin_count) { coin_counter_w(machine(), 1, 1); coin_counter_w(machine(), 1, 0); } break;
- case 0x0b: if (m_coin_count) { coin_counter_w(machine(), 3, 1); coin_counter_w(machine(), 3, 0); } break;
- case 0x0c: coin_lockout_w(machine(), 0, 1); coin_lockout_w(machine(), 2, 1); break;
- case 0x0d: coin_lockout_w(machine(), 0, 0); coin_lockout_w(machine(), 2, 0); break;
- case 0x0e: coin_lockout_w(machine(), 1, 1); coin_lockout_w(machine(), 3, 1); break;
- case 0x0f: coin_lockout_w(machine(), 1, 0); coin_lockout_w(machine(), 3, 0); m_coin_count=1; break;
+ case 0x08: if (m_coin_count) { machine().bookkeeping().coin_counter_w(0, 1); machine().bookkeeping().coin_counter_w(0, 0); } break;
+ case 0x09: if (m_coin_count) { machine().bookkeeping().coin_counter_w(2, 1); machine().bookkeeping().coin_counter_w(2, 0); } break;
+ case 0x0a: if (m_coin_count) { machine().bookkeeping().coin_counter_w(1, 1); machine().bookkeeping().coin_counter_w(1, 0); } break;
+ case 0x0b: if (m_coin_count) { machine().bookkeeping().coin_counter_w(3, 1); machine().bookkeeping().coin_counter_w(3, 0); } break;
+ case 0x0c: machine().bookkeeping().coin_lockout_w(0, 1); machine().bookkeeping().coin_lockout_w(2, 1); break;
+ case 0x0d: machine().bookkeeping().coin_lockout_w(0, 0); machine().bookkeeping().coin_lockout_w(2, 0); break;
+ case 0x0e: machine().bookkeeping().coin_lockout_w(1, 1); machine().bookkeeping().coin_lockout_w(3, 1); break;
+ case 0x0f: machine().bookkeeping().coin_lockout_w(1, 0); machine().bookkeeping().coin_lockout_w(3, 0); m_coin_count=1; break;
default: logerror("PC:%04x Writing unknown data (%04x) to coin count/lockout port\n",space.device().safe_pcbase(),data); break;
}
}
@@ -334,24 +334,24 @@ WRITE8_MEMBER(toaplan1_state::toaplan1_coin_w)
/* Are some outputs for lights ? (no space on JAMMA for it though) */
switch (data) {
- case 0xee: coin_counter_w(machine(), 1,1); coin_counter_w(machine(), 1,0); break; /* Count slot B */
- case 0xed: coin_counter_w(machine(), 0,1); coin_counter_w(machine(), 0,0); break; /* Count slot A */
+ case 0xee: machine().bookkeeping().coin_counter_w(1,1); machine().bookkeeping().coin_counter_w(1,0); break; /* Count slot B */
+ case 0xed: machine().bookkeeping().coin_counter_w(0,1); machine().bookkeeping().coin_counter_w(0,0); break; /* Count slot A */
/* The following are coin counts after coin-lock active (faulty coin-lock ?) */
- case 0xe2: coin_counter_w(machine(), 1,1); coin_counter_w(machine(), 1,0); coin_lockout_w(machine(), 1,1); break;
- case 0xe1: coin_counter_w(machine(), 0,1); coin_counter_w(machine(), 0,0); coin_lockout_w(machine(), 0,1); break;
+ case 0xe2: machine().bookkeeping().coin_counter_w(1,1); machine().bookkeeping().coin_counter_w(1,0); machine().bookkeeping().coin_lockout_w(1,1); break;
+ case 0xe1: machine().bookkeeping().coin_counter_w(0,1); machine().bookkeeping().coin_counter_w(0,0); machine().bookkeeping().coin_lockout_w(0,1); break;
- case 0xec: coin_lockout_global_w(machine(), 0); break; /* ??? count games played */
+ case 0xec: machine().bookkeeping().coin_lockout_global_w(0); break; /* ??? count games played */
case 0xe8: break; /* ??? Maximum credits reached with coin/credit ratio */
case 0xe4: break; /* ??? Reset coin system */
- case 0x0c: coin_lockout_global_w(machine(), 0); break; /* Unlock all coin slots */
- case 0x08: coin_lockout_w(machine(), 2,0); break; /* Unlock coin slot C */
- case 0x09: coin_lockout_w(machine(), 0,0); break; /* Unlock coin slot A */
- case 0x0a: coin_lockout_w(machine(), 1,0); break; /* Unlock coin slot B */
+ case 0x0c: machine().bookkeeping().coin_lockout_global_w(0); break; /* Unlock all coin slots */
+ case 0x08: machine().bookkeeping().coin_lockout_w(2,0); break; /* Unlock coin slot C */
+ case 0x09: machine().bookkeeping().coin_lockout_w(0,0); break; /* Unlock coin slot A */
+ case 0x0a: machine().bookkeeping().coin_lockout_w(1,0); break; /* Unlock coin slot B */
- case 0x02: coin_lockout_w(machine(), 1,1); break; /* Lock coin slot B */
- case 0x01: coin_lockout_w(machine(), 0,1); break; /* Lock coin slot A */
- case 0x00: coin_lockout_global_w(machine(), 1); break; /* Lock all coin slots */
+ case 0x02: machine().bookkeeping().coin_lockout_w(1,1); break; /* Lock coin slot B */
+ case 0x01: machine().bookkeeping().coin_lockout_w(0,1); break; /* Lock coin slot A */
+ case 0x00: machine().bookkeeping().coin_lockout_global_w(1); break; /* Lock all coin slots */
default: logerror("PC:%04x Writing unknown data (%04x) to coin count/lockout port\n",space.device().safe_pcbase(),data); break;
}
}
@@ -377,7 +377,7 @@ MACHINE_RESET_MEMBER(toaplan1_state,toaplan1)
{
m_intenable = 0;
m_coin_count = 0;
- coin_lockout_global_w(machine(), 0);
+ machine().bookkeeping().coin_lockout_global_w(0);
}
/* zerowing, fireshrk, outzone */
diff --git a/src/mame/machine/trs80m2kb.cpp b/src/mame/machine/trs80m2kb.cpp
index 01f4dc7930a..d098a56ae88 100644
--- a/src/mame/machine/trs80m2kb.cpp
+++ b/src/mame/machine/trs80m2kb.cpp
@@ -362,8 +362,8 @@ WRITE8_MEMBER( trs80m2_keyboard_device::kb_p1_w )
m_clk = clk;
}
- output_set_led_value(LED_0, BIT(data, 2));
- output_set_led_value(LED_1, BIT(data, 4));
+ machine().output().set_led_value(LED_0, BIT(data, 2));
+ machine().output().set_led_value(LED_1, BIT(data, 4));
}
diff --git a/src/mame/machine/twincobr.cpp b/src/mame/machine/twincobr.cpp
index e727403cc24..26bf4cec699 100644
--- a/src/mame/machine/twincobr.cpp
+++ b/src/mame/machine/twincobr.cpp
@@ -256,14 +256,14 @@ void twincobr_state::toaplan0_coin_dsp_w(address_space &space, int offset, int d
if (data > 1)
LOG(("%s:Writing %08x to %08x.\n",machine().describe_context(),data,toaplan_port_type[m_toaplan_main_cpu] - offset));
switch (data) {
- case 0x08: coin_counter_w(machine(), 0,0); break;
- case 0x09: coin_counter_w(machine(), 0,1); break;
- case 0x0a: coin_counter_w(machine(), 1,0); break;
- case 0x0b: coin_counter_w(machine(), 1,1); break;
- case 0x0c: coin_lockout_w(machine(), 0,1); break;
- case 0x0d: coin_lockout_w(machine(), 0,0); break;
- case 0x0e: coin_lockout_w(machine(), 1,1); break;
- case 0x0f: coin_lockout_w(machine(), 1,0); break;
+ case 0x08: machine().bookkeeping().coin_counter_w(0,0); break;
+ case 0x09: machine().bookkeeping().coin_counter_w(0,1); break;
+ case 0x0a: machine().bookkeeping().coin_counter_w(1,0); break;
+ case 0x0b: machine().bookkeeping().coin_counter_w(1,1); break;
+ case 0x0c: machine().bookkeeping().coin_lockout_w(0,1); break;
+ case 0x0d: machine().bookkeeping().coin_lockout_w(0,0); break;
+ case 0x0e: machine().bookkeeping().coin_lockout_w(1,1); break;
+ case 0x0f: machine().bookkeeping().coin_lockout_w(1,0); break;
/****** The following apply to Flying Shark/Wardner only ******/
case 0x00: /* This means assert the INT line to the DSP */
LOG(("Turning DSP on and main CPU off\n"));
diff --git a/src/mame/machine/ut88.cpp b/src/mame/machine/ut88.cpp
index 353334b69cd..43d76bbd904 100644
--- a/src/mame/machine/ut88.cpp
+++ b/src/mame/machine/ut88.cpp
@@ -45,7 +45,7 @@ void ut88_state::device_timer(emu_timer &timer, device_timer_id id, int param, v
break;
case TIMER_UPDATE_DISPLAY:
for (int i=0;i<6;i++)
- output_set_digit_value(i, hex_to_7seg[m_lcd_digit[i]]);
+ output().set_digit_value(i, hex_to_7seg[m_lcd_digit[i]]);
timer_set(attotime::from_hz(60), TIMER_UPDATE_DISPLAY);
break;
default:
diff --git a/src/mame/machine/v1050kb.cpp b/src/mame/machine/v1050kb.cpp
index e0819004237..d1f06bcdf30 100644
--- a/src/mame/machine/v1050kb.cpp
+++ b/src/mame/machine/v1050kb.cpp
@@ -415,7 +415,7 @@ WRITE8_MEMBER( v1050_keyboard_device::kb_p2_w )
*/
// led output
- output_set_led_value(0, BIT(data, 5));
+ machine().output().set_led_value(0, BIT(data, 5));
// speaker output
m_discrete->write(space, NODE_01, BIT(data, 6));
diff --git a/src/mame/machine/victor9k_fdc.cpp b/src/mame/machine/victor9k_fdc.cpp
index ae04084757b..61bd336b47e 100644
--- a/src/mame/machine/victor9k_fdc.cpp
+++ b/src/mame/machine/victor9k_fdc.cpp
@@ -867,10 +867,10 @@ WRITE8_MEMBER( victor_9000_fdc_t::via6_pa_w )
*/
// LED, drive A
- output_set_led_value(LED_A, BIT(data, 0));
+ machine().output().set_led_value(LED_A, BIT(data, 0));
// LED, drive B
- output_set_led_value(LED_B, BIT(data, 2));
+ machine().output().set_led_value(LED_B, BIT(data, 2));
bool sync = false;
diff --git a/src/mame/machine/volfied.cpp b/src/mame/machine/volfied.cpp
index 498093a5855..e6c42f13bfc 100644
--- a/src/mame/machine/volfied.cpp
+++ b/src/mame/machine/volfied.cpp
@@ -362,10 +362,10 @@ WRITE16_MEMBER(volfied_state::volfied_cchip_ram_w)
{
m_cc_port = data;
- coin_lockout_w(machine(), 1, data & 0x80);
- coin_lockout_w(machine(), 0, data & 0x40);
- coin_counter_w(machine(), 1, data & 0x20);
- coin_counter_w(machine(), 0, data & 0x10);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x80);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
}
if (offset == 0x3fe)
@@ -493,13 +493,13 @@ READ16_MEMBER(volfied_state::volfied_cchip_ram_r)
void volfied_state::volfied_cchip_init( )
{
- m_cchip_ram = auto_alloc_array_clear(machine(), UINT8, 0x400 * 8);
+ m_cchip_ram = make_unique_clear<UINT8[]>(0x400 * 8);
save_item(NAME(m_current_bank));
save_item(NAME(m_current_cmd));
save_item(NAME(m_current_flag));
save_item(NAME(m_cc_port));
- save_pointer(NAME(m_cchip_ram), 0x400 * 8);
+ save_pointer(NAME(m_cchip_ram.get()), 0x400 * 8);
}
void volfied_state::volfied_cchip_reset( )
diff --git a/src/mame/machine/vsnes.cpp b/src/mame/machine/vsnes.cpp
index d07cb99b25d..b837ad8c4d6 100644
--- a/src/mame/machine/vsnes.cpp
+++ b/src/mame/machine/vsnes.cpp
@@ -188,23 +188,32 @@ MACHINE_START_MEMBER(vsnes_state,vsnes)
int i;
/* establish nametable ram */
- m_nt_ram[0] = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_nt_ram[0] = std::make_unique<UINT8[]>(0x1000);
/* set mirroring */
- m_nt_page[0][0] = m_nt_ram[0];
- m_nt_page[0][1] = m_nt_ram[0] + 0x400;
- m_nt_page[0][2] = m_nt_ram[0] + 0x800;
- m_nt_page[0][3] = m_nt_ram[0] + 0xc00;
+ m_nt_page[0][0] = m_nt_ram[0].get();
+ m_nt_page[0][1] = m_nt_ram[0].get() + 0x400;
+ m_nt_page[0][2] = m_nt_ram[0].get() + 0x800;
+ m_nt_page[0][3] = m_nt_ram[0].get() + 0xc00;
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++)
{
@@ -215,7 +224,7 @@ MACHINE_START_MEMBER(vsnes_state,vsnes)
}
else
{
- ppu1_space.install_ram(0x0000, 0x1fff, m_vram);
+ ppu1_space.install_ram(0x0000, 0x1fff, m_vram.get());
}
}
@@ -227,17 +236,17 @@ MACHINE_START_MEMBER(vsnes_state,vsdual)
m_vrom_size[1] = memregion("gfx2")->bytes();
/* establish nametable ram */
- m_nt_ram[0] = auto_alloc_array(machine(), UINT8, 0x1000);
- m_nt_ram[1] = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_nt_ram[0] = std::make_unique<UINT8[]>(0x1000);
+ m_nt_ram[1] = std::make_unique<UINT8[]>(0x1000);
/* set mirroring */
- m_nt_page[0][0] = m_nt_ram[0];
- m_nt_page[0][1] = m_nt_ram[0] + 0x400;
- m_nt_page[0][2] = m_nt_ram[0] + 0x800;
- m_nt_page[0][3] = m_nt_ram[0] + 0xc00;
- m_nt_page[1][0] = m_nt_ram[1];
- m_nt_page[1][1] = m_nt_ram[1] + 0x400;
- m_nt_page[1][2] = m_nt_ram[1] + 0x800;
- m_nt_page[1][3] = m_nt_ram[1] + 0xc00;
+ m_nt_page[0][0] = m_nt_ram[0].get();
+ m_nt_page[0][1] = m_nt_ram[0].get() + 0x400;
+ m_nt_page[0][2] = m_nt_ram[0].get() + 0x800;
+ m_nt_page[0][3] = m_nt_ram[0].get() + 0xc00;
+ m_nt_page[1][0] = m_nt_ram[1].get();
+ m_nt_page[1][1] = m_nt_ram[1].get() + 0x400;
+ m_nt_page[1][2] = m_nt_ram[1].get() + 0x800;
+ m_nt_page[1][3] = m_nt_ram[1].get() + 0xc00;
machine().device("ppu1")->memory().space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(vsnes_state::vsnes_nt0_r),this), write8_delegate(FUNC(vsnes_state::vsnes_nt0_w),this));
machine().device("ppu2")->memory().space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(vsnes_state::vsnes_nt1_r),this), write8_delegate(FUNC(vsnes_state::vsnes_nt1_w),this));
@@ -286,29 +295,29 @@ void vsnes_state::v_set_mirroring(int ppu, int mirroring)
switch (mirroring)
{
case PPU_MIRROR_LOW:
- m_nt_page[ppu][0] = m_nt_page[ppu][1] = m_nt_page[ppu][2] = m_nt_page[ppu][3] = m_nt_ram[ppu];
+ m_nt_page[ppu][0] = m_nt_page[ppu][1] = m_nt_page[ppu][2] = m_nt_page[ppu][3] = m_nt_ram[ppu].get();
break;
case PPU_MIRROR_HIGH:
- m_nt_page[ppu][0] = m_nt_page[ppu][1] = m_nt_page[ppu][2] = m_nt_page[ppu][3] = m_nt_ram[ppu] + 0x400;
+ m_nt_page[ppu][0] = m_nt_page[ppu][1] = m_nt_page[ppu][2] = m_nt_page[ppu][3] = m_nt_ram[ppu].get() + 0x400;
break;
case PPU_MIRROR_HORZ:
- m_nt_page[ppu][0] = m_nt_ram[ppu];
- m_nt_page[ppu][1] = m_nt_ram[ppu];
- m_nt_page[ppu][2] = m_nt_ram[ppu] + 0x400;
- m_nt_page[ppu][3] = m_nt_ram[ppu] + 0x400;
+ m_nt_page[ppu][0] = m_nt_ram[ppu].get();
+ m_nt_page[ppu][1] = m_nt_ram[ppu].get();
+ m_nt_page[ppu][2] = m_nt_ram[ppu].get() + 0x400;
+ m_nt_page[ppu][3] = m_nt_ram[ppu].get() + 0x400;
break;
case PPU_MIRROR_VERT:
- m_nt_page[ppu][0] = m_nt_ram[ppu];
- m_nt_page[ppu][1] = m_nt_ram[ppu] + 0x400;
- m_nt_page[ppu][2] = m_nt_ram[ppu];
- m_nt_page[ppu][3] = m_nt_ram[ppu] + 0x400;
+ m_nt_page[ppu][0] = m_nt_ram[ppu].get();
+ m_nt_page[ppu][1] = m_nt_ram[ppu].get() + 0x400;
+ m_nt_page[ppu][2] = m_nt_ram[ppu].get();
+ m_nt_page[ppu][3] = m_nt_ram[ppu].get() + 0x400;
break;
case PPU_MIRROR_NONE:
default:
- m_nt_page[ppu][0] = m_nt_ram[ppu];
- m_nt_page[ppu][1] = m_nt_ram[ppu] + 0x400;
- m_nt_page[ppu][2] = m_nt_ram[ppu] + 0x800;
- m_nt_page[ppu][3] = m_nt_ram[ppu] + 0xc00;
+ m_nt_page[ppu][0] = m_nt_ram[ppu].get();
+ m_nt_page[ppu][1] = m_nt_ram[ppu].get() + 0x400;
+ m_nt_page[ppu][2] = m_nt_ram[ppu].get() + 0x800;
+ m_nt_page[ppu][3] = m_nt_ram[ppu].get() + 0xc00;
break;
}
@@ -359,14 +368,37 @@ WRITE8_MEMBER(vsnes_state::gun_in0_w)
/* do the gun thing */
int x = ioport("GUNX")->read();
- int y = ioport("GUNY")->read();
- UINT32 pix, color_base;
+ float y = ioport("GUNY")->read();
+ UINT8 pix;
+
+ y = y * 0.9375f; // scale 256 (our gun input range is 0 - 255) to 240 (screen visible area / bitmap we're using is 0 - 239)
+
+ UINT8 realy = (int)y;
/* get the pixel at the gun position */
- pix = m_ppu1->get_pixel(x, y);
+ pix = m_ppu1->get_pixel(x, realy);
+
+
+ rgb_t col = m_palette->pen_color(pix);
+ UINT8 bright = col.brightness();
+ // todo, calculate how bright it is with pix.r * 0.3 + pix.g * 0.59 + pix.b * 0.11 ?
+ // the mame calc above is UINT8 brightness() const { return (r() * 222 + g() * 707 + b() * 71) / 1000; } (from lib/util/palette.h)
+#if 0
+ UINT8 r = col.r();
+ UINT8 g = col.g();
+ UINT8 b = col.b();
+ printf("pix is %02x | %02x %02x %02x | %02x\n", pix, r,g,b,bright);
+#endif
+ if (bright == 0xff)
+ {
+ m_input_latch[0] |= 0x40;
+ }
+
+
+#if 0 // this is junk code, only works for NES palette..
/* get the color base from the ppu */
- color_base = m_ppu1->get_colorbase();
+ UINT32 color_base = m_ppu1->get_colorbase();
/* look at the screen and see if the cursor is over a bright pixel */
if ((pix == color_base + 0x20 ) || (pix == color_base + 0x30) ||
@@ -374,6 +406,7 @@ WRITE8_MEMBER(vsnes_state::gun_in0_w)
{
m_input_latch[0] |= 0x40;
}
+#endif
m_input_latch[1] = ioport("IN1")->read();
}
@@ -614,7 +647,7 @@ DRIVER_INIT_MEMBER(vsnes_state,vsvram)
m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(vsnes_state::vsvram_rom_banking),this));
/* allocate m_vram */
- m_vram = auto_alloc_array(machine(), UINT8, 0x2000);
+ m_vram = std::make_unique<UINT8[]>(0x2000);
}
/**********************************************************************************/
diff --git a/src/mame/machine/wangpckb.cpp b/src/mame/machine/wangpckb.cpp
index 7e38ec2f153..679c75862a6 100644
--- a/src/mame/machine/wangpckb.cpp
+++ b/src/mame/machine/wangpckb.cpp
@@ -524,7 +524,7 @@ WRITE8_MEMBER( wangpc_keyboard_device::kb_p1_w )
for (int i = 0; i < 6; i++)
{
- output_set_led_value(i, !BIT(data, i));
+ machine().output().set_led_value(i, !BIT(data, i));
}
if (LOG) logerror("P1 %02x\n", data);
diff --git a/src/mame/machine/williams.cpp b/src/mame/machine/williams.cpp
index d0ce9f270de..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
@@ -628,7 +628,7 @@ WRITE8_MEMBER(blaster_state::blaster_snd_cmd_w)
WRITE_LINE_MEMBER(williams_state::lottofun_coin_lock_w)
{
- coin_lockout_global_w(machine(), state & 1); /* bit 5 of PIC control port A */
+ machine().bookkeeping().coin_lockout_global_w(state & 1); /* bit 5 of PIC control port A */
}
@@ -658,13 +658,13 @@ WRITE_LINE_MEMBER(williams2_state::tshoot_maxvol_w)
WRITE8_MEMBER(williams2_state::tshoot_lamp_w)
{
/* set the grenade lamp */
- output_set_value("Grenade_lamp", (~data & 0x4)>>2 );
+ output().set_value("Grenade_lamp", (~data & 0x4)>>2 );
/* set the gun lamp */
- output_set_value("Gun_lamp", (~data & 0x8)>>3 );
+ output().set_value("Gun_lamp", (~data & 0x8)>>3 );
/* gun coil */
- output_set_value("Player1_Gun_Recoil", (data & 0x10)>>4 );
+ output().set_value("Player1_Gun_Recoil", (data & 0x10)>>4 );
/* feather coil */
- output_set_value("Feather_Blower", (data & 0x20)>>5 );
+ output().set_value("Feather_Blower", (data & 0x20)>>5 );
}
diff --git a/src/mame/machine/wpc_lamp.cpp b/src/mame/machine/wpc_lamp.cpp
index 2201ba40805..eba57bb6ced 100644
--- a/src/mame/machine/wpc_lamp.cpp
+++ b/src/mame/machine/wpc_lamp.cpp
@@ -68,7 +68,7 @@ void wpc_lamp_device::device_timer(emu_timer &timer, device_timer_id id, int par
sprintf(buffer, "l:%s", names[i]);
else
sprintf(buffer, "l:%d%d", 1+(i >> 3), 1 + (i & 7));
- output_set_value(buffer, (s & 0xc0) == 0x80);
+ machine().output().set_value(buffer, (s & 0xc0) == 0x80);
}
}
}
diff --git a/src/mame/machine/wpc_out.cpp b/src/mame/machine/wpc_out.cpp
index d9d73f7b7b2..7268eeeed09 100644
--- a/src/mame/machine/wpc_out.cpp
+++ b/src/mame/machine/wpc_out.cpp
@@ -55,10 +55,10 @@ void wpc_out_device::send_output(int sid, int state)
sprintf(buffer, "u:output %02d", sid);
name = buffer;
}
- output_set_value(name, state);
+ machine().output().set_value(name, state);
if(sid == 41)
- coin_counter_w(machine(), 0, state);
+ machine().bookkeeping().coin_counter_w(0, state);
}
WRITE8_MEMBER(wpc_out_device::out_w)
@@ -108,7 +108,7 @@ WRITE8_MEMBER(wpc_out_device::gi_w)
WRITE8_MEMBER(wpc_out_device::led_w)
{
first_after_led = true;
- output_set_value("L:cpu led", data & 0x80 ? 1 : 0);
+ machine().output().set_value("L:cpu led", data & 0x80 ? 1 : 0);
}
void wpc_out_device::device_start()
diff --git a/src/mame/machine/wrally.cpp b/src/mame/machine/wrally.cpp
index 58f67225223..9ffe913e965 100644
--- a/src/mame/machine/wrally.cpp
+++ b/src/mame/machine/wrally.cpp
@@ -44,10 +44,10 @@ WRITE16_MEMBER(wrally_state::okim6295_bankswitch_w)
WRITE16_MEMBER(wrally_state::wrally_coin_counter_w)
{
- coin_counter_w( machine(), (offset >> 3) & 0x01, data & 0x01);
+ machine().bookkeeping().coin_counter_w((offset >> 3) & 0x01, data & 0x01);
}
WRITE16_MEMBER(wrally_state::wrally_coin_lockout_w)
{
- coin_lockout_w( machine(), (offset >> 3) & 0x01, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w((offset >> 3) & 0x01, ~data & 0x01);
}
diff --git a/src/mame/machine/wswan.cpp b/src/mame/machine/wswan.cpp
index fefa9df670c..d6596c77676 100644
--- a/src/mame/machine/wswan.cpp
+++ b/src/mame/machine/wswan.cpp
@@ -169,8 +169,8 @@ void wswan_state::register_save()
void wswan_state::common_start()
{
- m_ws_bios_bank = auto_alloc_array(machine(), UINT8, 0x10000);
- memcpy(m_ws_bios_bank + 0xffc0, ws_fake_bios_code, 0x40);
+ m_ws_bios_bank = std::make_unique<UINT8[]>(0x10000);
+ memcpy(m_ws_bios_bank.get() + 0xffc0, ws_fake_bios_code, 0x40);
register_save();
diff --git a/src/mame/machine/x68k_kbd.cpp b/src/mame/machine/x68k_kbd.cpp
index 18984549707..675038414c4 100644
--- a/src/mame/machine/x68k_kbd.cpp
+++ b/src/mame/machine/x68k_kbd.cpp
@@ -50,13 +50,13 @@ void x68k_keyboard_device::write(UINT8 data)
if(data & 0x80) // LED status
{
- output_set_value("key_led_kana",(data & 0x01) ? 0 : 1);
- output_set_value("key_led_romaji",(data & 0x02) ? 0 : 1);
- output_set_value("key_led_code",(data & 0x04) ? 0 : 1);
- output_set_value("key_led_caps",(data & 0x08) ? 0 : 1);
- output_set_value("key_led_insert",(data & 0x10) ? 0 : 1);
- output_set_value("key_led_hiragana",(data & 0x20) ? 0 : 1);
- output_set_value("key_led_fullsize",(data & 0x40) ? 0 : 1);
+ machine().output().set_value("key_led_kana",(data & 0x01) ? 0 : 1);
+ machine().output().set_value("key_led_romaji",(data & 0x02) ? 0 : 1);
+ machine().output().set_value("key_led_code",(data & 0x04) ? 0 : 1);
+ machine().output().set_value("key_led_caps",(data & 0x08) ? 0 : 1);
+ machine().output().set_value("key_led_insert",(data & 0x10) ? 0 : 1);
+ machine().output().set_value("key_led_hiragana",(data & 0x20) ? 0 : 1);
+ machine().output().set_value("key_led_fullsize",(data & 0x40) ? 0 : 1);
logerror("KB: LED status set to %02x\n",data & 0x7f);
}
diff --git a/src/mame/machine/xbox.cpp b/src/mame/machine/xbox.cpp
index f584f62ce1d..d341d9804d5 100644
--- a/src/mame/machine/xbox.cpp
+++ b/src/mame/machine/xbox.cpp
@@ -7,7 +7,6 @@
#include "machine/pic8259.h"
#include "machine/pit8253.h"
#include "machine/idectrl.h"
-#include "machine/idehd.h"
#include "video/poly.h"
#include "bitmap.h"
#include "debug/debugcon.h"
@@ -17,6 +16,7 @@
#include "includes/xbox.h"
#define LOG_PCI
+//#define LOG_AUDIO
//#define LOG_OHCI
//#define USB_ENABLED
@@ -479,7 +479,7 @@ WRITE32_MEMBER(xbox_base_state::geforce_w)
static UINT32 geforce_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
{
#ifdef LOG_PCI
- // logerror(" bus:1 device:NV_2A function:%d register:%d mask:%08X\n",function,reg,mem_mask);
+ busdevice->logerror(" bus:1 device:NV_2A function:%d register:%d mask:%08X\n",function,reg,mem_mask);
#endif
return 0;
}
@@ -487,7 +487,7 @@ static UINT32 geforce_pci_r(device_t *busdevice, device_t *device, int function,
static void geforce_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
{
#ifdef LOG_PCI
- // logerror(" bus:1 device:NV_2A function:%d register:%d data:%08X mask:%08X\n",function,reg,data,mem_mask);
+ busdevice->logerror(" bus:1 device:NV_2A function:%d register:%d data:%08X mask:%08X\n",function,reg,data,mem_mask);
#endif
}
@@ -827,14 +827,17 @@ static USBStandardDeviceDscriptor devdesc = {18,1,0x201,0xff,0x34,0x56,64,0x100,
ohci_function_device::ohci_function_device()
{
address = 0;
- controldir = 0;
+ newaddress = 0;
+ controldirection = 0;
remain = 0;
position = nullptr;
+ settingaddress = false;
}
void ohci_function_device::execute_reset()
{
address = 0;
+ newaddress = 0;
}
int ohci_function_device::execute_transfer(int address, int endpoint, int pid, UINT8 *buffer, int size)
@@ -842,35 +845,69 @@ int ohci_function_device::execute_transfer(int address, int endpoint, int pid, U
if (endpoint == 0) {
if (pid == SetupPid) {
struct USBSetupPacket *p=(struct USBSetupPacket *)buffer;
- // define direction
- controldir = p->bmRequestType & 128;
- // case !=0, in data stage and out status stage
- // case ==0, out data stage and in status stage
+ // define direction 0:host->device 1:device->host
+ controldirection = (p->bmRequestType & 128) >> 7;
+ // case ==1, IN data stage and OUT status stage
+ // case ==0, OUT data stage and IN status stage
+ // data stage is optional, IN status stage
+ controltype = (p->bmRequestType & 0x60) >> 5;
+ controlrecipient = p->bmRequestType & 0x1f;
position = nullptr;
remain = p->wLength;
- if ((p->bmRequestType & 0x60) == 0) {
+ // if standard
+ if (controltype == 0) {
switch (p->bRequest) {
+ case GET_STATUS:
+ case CLEAR_FEATURE:
+ case SET_FEATURE:
+ break;
+ case SET_ADDRESS:
+ newaddress = p->wValue;
+ settingaddress = true;
+ break;
case GET_DESCRIPTOR:
- if ((p->wValue >> 8) == 1) { // device descriptor
+ if ((p->wValue >> 8) == DEVICE) { // device descriptor
//p->wValue & 255;
position = (UINT8 *)&devdesc;
remain = sizeof(devdesc);
}
+ else if ((p->wValue >> 8) == CONFIGURATION) { // configuration descriptor
+ remain = 0;
+ }
+ if (remain > p->wLength)
+ remain = p->wLength;
break;
- case SET_ADDRESS:
- //p->wValue;
- break;
+ case SET_DESCRIPTOR:
+ case GET_CONFIGURATION:
+ case SET_CONFIGURATION:
+ case GET_INTERFACE:
+ case SET_INTERFACE:
+ case SYNCH_FRAME:
default:
break;
}
}
}
else if (pid == InPid) {
- // case !=0, give data
+ // if no data has been transferred (except for the setup stage)
+ // and the lenght of this IN transaction is 0
+ // assume this is the status stage
+ if (size == 0) {
+ if (settingaddress == true)
+ {
+ // set of address is active at end of status stage
+ address = newaddress;
+ settingaddress = false;
+ }
+ return 0;
+ }
+ // case ==1, give data
// case ==0, nothing
- if (size > remain)
- size = remain;
- if (controldir != 0) {
+ // if device->host
+ if (controldirection == 1) {
+ // data stage
+ if (size > remain)
+ size = remain;
if (position != nullptr)
memcpy(buffer, position, size);
position = position + size;
@@ -878,11 +915,13 @@ int ohci_function_device::execute_transfer(int address, int endpoint, int pid, U
}
}
else if (pid == OutPid) {
- // case !=0, nothing
+ // case ==1, nothing
// case ==0, give data
- if (size > remain)
- size = remain;
- if (controldir == 0) {
+ // if host->device
+ if (controldirection == 0) {
+ // data stage
+ if (size > remain)
+ size = remain;
if (position != nullptr)
memcpy(position, buffer, size);
position = position + size;
@@ -966,11 +1005,14 @@ void xbox_base_state::usb_ohci_read_isochronous_transfer_descriptor(UINT32 addre
UINT32 w;
w = ohcist.space->read_dword(address);
+ ohcist.isochronous_transfer_descriptor.word0 = w;
ohcist.isochronous_transfer_descriptor.cc = (w >> 28) & 15;
ohcist.isochronous_transfer_descriptor.fc = (w >> 24) & 7;
ohcist.isochronous_transfer_descriptor.di = (w >> 21) & 7;
ohcist.isochronous_transfer_descriptor.sf = w & 0xffff;
- ohcist.isochronous_transfer_descriptor.bp0 = ohcist.space->read_dword(address + 4) & 0xfffff000;
+ w = ohcist.space->read_dword(address + 4);
+ ohcist.isochronous_transfer_descriptor.word1 = w;
+ ohcist.isochronous_transfer_descriptor.bp0 = w & 0xfffff000;
ohcist.isochronous_transfer_descriptor.nexttd = ohcist.space->read_dword(address + 8);
ohcist.isochronous_transfer_descriptor.be = ohcist.space->read_dword(address + 12);
w = ohcist.space->read_dword(address + 16);
@@ -987,13 +1029,37 @@ void xbox_base_state::usb_ohci_read_isochronous_transfer_descriptor(UINT32 addre
ohcist.isochronous_transfer_descriptor.offset[7] = (w >> 16) & 0xffff;
}
+void xbox_base_state::usb_ohci_writeback_isochronous_transfer_descriptor(UINT32 address)
+{
+ UINT32 w;
+
+ w = ohcist.isochronous_transfer_descriptor.word0 & 0x1f0000;
+ w = w | (ohcist.isochronous_transfer_descriptor.cc << 28) | (ohcist.isochronous_transfer_descriptor.fc << 24) | (ohcist.isochronous_transfer_descriptor.di << 21) | ohcist.isochronous_transfer_descriptor.sf;
+ ohcist.space->write_dword(address, w);
+ w = ohcist.isochronous_transfer_descriptor.word1 & 0xfff;
+ w = w | ohcist.isochronous_transfer_descriptor.bp0;
+ ohcist.space->write_dword(address + 4, w);
+ ohcist.space->write_dword(address + 8, ohcist.isochronous_transfer_descriptor.nexttd);
+ ohcist.space->write_dword(address + 12, ohcist.isochronous_transfer_descriptor.be);
+ w = (ohcist.isochronous_transfer_descriptor.offset[1] << 16) | ohcist.isochronous_transfer_descriptor.offset[0];
+ ohcist.space->write_dword(address + 16, w);
+ w = (ohcist.isochronous_transfer_descriptor.offset[3] << 16) | ohcist.isochronous_transfer_descriptor.offset[2];
+ ohcist.space->write_dword(address + 20, w);
+ w = (ohcist.isochronous_transfer_descriptor.offset[5] << 16) | ohcist.isochronous_transfer_descriptor.offset[4];
+ ohcist.space->write_dword(address + 24, w);
+ w = (ohcist.isochronous_transfer_descriptor.offset[7] << 16) | ohcist.isochronous_transfer_descriptor.offset[6];
+ ohcist.space->write_dword(address + 28, w);
+}
+
/*
* Audio
*/
READ32_MEMBER(xbox_base_state::audio_apu_r)
{
+#ifdef LOG_AUDIO
logerror("Audio_APU: read from %08X mask %08X\n", 0xfe800000 + offset * 4, mem_mask);
+#endif
if (offset == 0x20010 / 4) // some kind of internal counter or state value
return 0x20 + 4 + 8 + 0x48 + 0x80;
return apust.memory[offset];
@@ -1004,7 +1070,9 @@ WRITE32_MEMBER(xbox_base_state::audio_apu_w)
//UINT32 old;
UINT32 v;
+#ifdef LOG_AUDIO
logerror("Audio_APU: write at %08X mask %08X value %08X\n", 0xfe800000 + offset * 4, mem_mask, data);
+#endif
//old = apust.memory[offset];
apust.memory[offset] = data;
if (offset == 0x02040 / 4) // address of memory area with scatter-gather info (gpdsp scratch dma)
@@ -1110,7 +1178,9 @@ READ32_MEMBER(xbox_base_state::audio_ac93_r)
{
UINT32 ret = 0;
+#ifdef LOG_AUDIO
logerror("Audio_AC3: read from %08X mask %08X\n", 0xfec00000 + offset * 4, mem_mask);
+#endif
if (offset < 0x80 / 4)
{
ret = ac97st.mixer_regs[offset];
@@ -1137,7 +1207,9 @@ READ32_MEMBER(xbox_base_state::audio_ac93_r)
WRITE32_MEMBER(xbox_base_state::audio_ac93_w)
{
+#ifdef LOG_AUDIO
logerror("Audio_AC3: write at %08X mask %08X value %08X\n", 0xfec00000 + offset * 4, mem_mask, data);
+#endif
if (offset < 0x80 / 4)
{
COMBINE_DATA(ac97st.mixer_regs + offset);
@@ -1177,20 +1249,37 @@ TIMER_CALLBACK_MEMBER(xbox_base_state::audio_apu_timer)
}
}
-static UINT32 hubintiasbridg_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
+static UINT32 pcibridghostbridg_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
+{
+#ifdef LOG_PCI
+ busdevice->logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask);
+#endif
+ if ((function == 3) && (reg == 0x6c))
+ return 0x08800044;
+ return 0;
+}
+
+static void pcibridghostbridg_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
{
#ifdef LOG_PCI
- // logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask);
+ busdevice->logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
+#endif
+}
+
+static UINT32 hubintisabridg_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
+{
+#ifdef LOG_PCI
+ busdevice->logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask);
#endif
if ((function == 0) && (reg == 8))
return 0xb4; // 0:1:0 revision id must be at least 0xb4, otherwise usb will require a hub
return 0;
}
-static void hubintiasbridg_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
+static void hubintisabridg_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
{
#ifdef LOG_PCI
- if (reg >= 16) busdevice->logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
+ busdevice->logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
#endif
}
@@ -1201,7 +1290,7 @@ static void hubintiasbridg_pci_w(device_t *busdevice, device_t *device, int func
static UINT32 dummy_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
{
#ifdef LOG_PCI
- // logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask);
+ busdevice->logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask);
#endif
return 0;
}
@@ -1209,7 +1298,7 @@ static UINT32 dummy_pci_r(device_t *busdevice, device_t *device, int function, i
static void dummy_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
{
#ifdef LOG_PCI
- if (reg >= 16) busdevice->logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
+ busdevice->logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
#endif
}
@@ -1404,6 +1493,76 @@ WRITE32_MEMBER(xbox_base_state::smbus_w)
smbusst.command = data;
}
+/*
+ * SuperIO
+ */
+READ8_MEMBER(xbox_base_state::superio_read)
+{
+ if (superiost.configuration_mode == false)
+ return 0;
+ if (offset == 0) // index port 0x2e
+ return superiost.index;
+ if (offset == 1)
+ {
+ // data port 0x2f
+ if (superiost.index < 0x30)
+ return superiost.registers[0][superiost.index];
+ return superiost.registers[superiost.selected][superiost.index];
+ }
+ return 0;
+}
+
+WRITE8_MEMBER(xbox_base_state::superio_write)
+{
+ if (superiost.configuration_mode == false)
+ {
+ // config port 0x2e
+ if ((offset == 0) && (data == 0x55))
+ superiost.configuration_mode = true;
+ return;
+ }
+ if ((offset == 0) && (data == 0xaa))
+ {
+ // config port 0x2e
+ superiost.configuration_mode = false;
+ return;
+ }
+ if (offset == 0)
+ {
+ // index port 0x2e
+ superiost.index = data;
+ }
+ if (offset == 1)
+ {
+ // data port 0x2f
+ if (superiost.index < 0x30)
+ {
+ superiost.registers[0][superiost.index] = data;
+ superiost.selected = superiost.registers[0][7];
+ } else
+ {
+ superiost.registers[superiost.selected][superiost.index] = data;
+ //if ((superiost.selected == 4) && (superiost.index == 0x30) && (data != 0))
+ // ; // add handlers 0x3f8- +7
+ }
+ }
+}
+
+READ8_MEMBER(xbox_base_state::superiors232_read)
+{
+ if (offset == 5)
+ return 0x20;
+ return 0;
+}
+
+WRITE8_MEMBER(xbox_base_state::superiors232_write)
+{
+ if (offset == 0)
+ {
+ printf("%c", data);
+ }
+}
+
ADDRESS_MAP_START(xbox_base_map, AS_PROGRAM, 32, xbox_base_state)
AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_SHARE("nv2a_share") // 128 megabytes
AM_RANGE(0xf0000000, 0xf7ffffff) AM_RAM AM_SHARE("nv2a_share") // 3d accelerator wants this
@@ -1416,9 +1575,11 @@ ADDRESS_MAP_END
ADDRESS_MAP_START(xbox_base_map_io, AS_IO, 32, xbox_base_state)
AM_RANGE(0x0020, 0x0023) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0xffffffff)
+ AM_RANGE(0x002c, 0x002f) AM_READWRITE8(superio_read, superio_write, 0xffff0000)
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffff)
AM_RANGE(0x00a0, 0x00a3) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0xffffffff)
AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, read_cs0, write_cs0)
+ AM_RANGE(0x03f8, 0x03ff) AM_READWRITE8(superiors232_read, superiors232_write, 0xffffffff)
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
AM_RANGE(0x8000, 0x80ff) AM_READWRITE(dummy_r, dummy_w)
AM_RANGE(0xc000, 0xc0ff) AM_READWRITE(smbus_r, smbus_w)
@@ -1427,7 +1588,7 @@ ADDRESS_MAP_END
void xbox_base_state::machine_start()
{
- nvidia_nv2a = auto_alloc(machine(), nv2a_renderer(machine()));
+ nvidia_nv2a = std::make_unique<nv2a_renderer>(machine());
memset(pic16lc_buffer, 0, sizeof(pic16lc_buffer));
pic16lc_buffer[0] = 'B';
pic16lc_buffer[4] = 0; // A/V connector, 2=vga
@@ -1455,11 +1616,11 @@ void xbox_base_state::machine_start()
pic16lc_buffer[0x1d] = 0x0d;
pic16lc_buffer[0x1e] = 0x0e;
pic16lc_buffer[0x1f] = 0x0f;
-#ifdef USB_ENABLED
ohcist.hc_regs[HcRevision] = 0x10;
ohcist.hc_regs[HcFmInterval] = 0x2edf;
ohcist.hc_regs[HcLSThreshold] = 0x628;
ohcist.hc_regs[HcRhDescriptorA] = 4;
+#ifdef USB_ENABLED
ohcist.interruptbulkratio = 1;
ohcist.writebackdonehadcounter = 7;
ohcist.space = &m_maincpu->space();
@@ -1467,6 +1628,9 @@ void xbox_base_state::machine_start()
ohcist.timer->enable(false);
usb_ohci_plug(1, new ohci_function_device()); // test connect
#endif
+ memset(&superiost, 0, sizeof(superiost));
+ superiost.configuration_mode = false;
+ superiost.registers[0][0x26] = 0x2e; // Configuration port address byte 0
// savestates
save_item(NAME(debug_irq_active));
save_item(NAME(debug_irq_number));
@@ -1494,8 +1658,8 @@ MACHINE_CONFIG_START(xbox_base, xbox_base_state)
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
- MCFG_PCI_BUS_LEGACY_DEVICE(0, "PCI Bridge Device - Host Bridge", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(1, "HUB Interface - ISA Bridge", hubintiasbridg_pci_r, hubintiasbridg_pci_w)
+ MCFG_PCI_BUS_LEGACY_DEVICE(0, "PCI Bridge Device - Host Bridge", pcibridghostbridg_pci_r, pcibridghostbridg_pci_w)
+ MCFG_PCI_BUS_LEGACY_DEVICE(1, "HUB Interface - ISA Bridge", hubintisabridg_pci_r, hubintisabridg_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(2, "OHCI USB Controller 1", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(3, "OHCI USB Controller 2", dummy_pci_r, dummy_pci_w)
MCFG_PCI_BUS_LEGACY_DEVICE(4, "MCP Networking Adapter", dummy_pci_r, dummy_pci_w)
diff --git a/src/mame/machine/xevious.cpp b/src/mame/machine/xevious.cpp
index ff98376498c..a8e8e304aa6 100644
--- a/src/mame/machine/xevious.cpp
+++ b/src/mame/machine/xevious.cpp
@@ -137,12 +137,12 @@ WRITE8_MEMBER( xevious_state::battles_customio_data3_w )
WRITE8_MEMBER( xevious_state::battles_CPU4_coin_w )
{
- set_led_status(machine(), 0,data & 0x02); // Start 1
- set_led_status(machine(), 1,data & 0x01); // Start 2
+ output().set_led_value(0,data & 0x02); // Start 1
+ output().set_led_value(1,data & 0x01); // Start 2
- coin_counter_w(machine(), 0,data & 0x20);
- coin_counter_w(machine(), 1,data & 0x10);
- coin_lockout_global_w(machine(), ~data & 0x04);
+ machine().bookkeeping().coin_counter_w(0,data & 0x20);
+ machine().bookkeeping().coin_counter_w(1,data & 0x10);
+ machine().bookkeeping().coin_lockout_global_w(~data & 0x04);
}
diff --git a/src/mame/machine/z80ne.cpp b/src/mame/machine/z80ne.cpp
index 657bf01fc25..8cf642848e0 100644
--- a/src/mame/machine/z80ne.cpp
+++ b/src/mame/machine/z80ne.cpp
@@ -462,7 +462,7 @@ WRITE8_MEMBER(z80ne_state::lx383_w)
*/
if ( offset < 8 )
- output_set_digit_value( offset, data ^ 0xff );
+ output().set_digit_value( offset, data ^ 0xff );
else
{
/* after writing to port 0xF8 and the first ~M1 cycles strike a NMI for single step execution */
@@ -672,8 +672,8 @@ WRITE8_MEMBER(z80ne_state::lx390_motor_w)
/* no drive selected, turn off all leds */
if (!m_wd17xx_state.drive)
{
- output_set_value("drv0", 0);
- output_set_value("drv1", 0);
+ output().set_value("drv0", 0);
+ output().set_value("drv1", 0);
}
}
@@ -742,9 +742,9 @@ WRITE8_MEMBER(z80ne_state::lx390_fdc_w)
LOG(("lx390_fdc_w, WD17xx command: %02x\n", d));
m_wd1771->cmd_w(space, offset, d ^ 0xff);
if (m_wd17xx_state.drive & 1)
- output_set_value("drv0", 2);
+ output().set_value("drv0", 2);
else if (m_wd17xx_state.drive & 2)
- output_set_value("drv1", 2);
+ output().set_value("drv1", 2);
break;
case 1:
LOG(("lx390_fdc_w, WD17xx track: %02x\n", d));
diff --git a/src/mame/mame.cpp b/src/mame/mame.cpp
index 83dc3c2703a..1acc02060ab 100644
--- a/src/mame/mame.cpp
+++ b/src/mame/mame.cpp
@@ -13,8 +13,6 @@
#define APPNAME "MAME"
#define APPNAME_LOWER "mame"
#define CONFIGNAME "mame"
-#define APPLONGNAME "M.A.M.E."
-#define FULLLONGNAME "Multiple Arcade Machine Emulator"
#define CAPGAMENOUN "MACHINE"
#define CAPSTARTGAMENOUN "Machine"
#define GAMENOUN "machine"
@@ -32,8 +30,6 @@
const char * emulator_info::get_appname() { return APPNAME;}
const char * emulator_info::get_appname_lower() { return APPNAME_LOWER;}
const char * emulator_info::get_configname() { return CONFIGNAME;}
-const char * emulator_info::get_applongname() { return APPLONGNAME;}
-const char * emulator_info::get_fulllongname() { return FULLLONGNAME;}
const char * emulator_info::get_capgamenoun() { return CAPGAMENOUN;}
const char * emulator_info::get_capstartgamenoun() { return CAPSTARTGAMENOUN;}
const char * emulator_info::get_gamenoun() { return GAMENOUN;}
diff --git a/src/mame/mess.cpp b/src/mame/mess.cpp
index 1867658ecc0..985aeaa19e7 100644
--- a/src/mame/mess.cpp
+++ b/src/mame/mess.cpp
@@ -13,8 +13,6 @@
#define APPNAME "MESS"
#define APPNAME_LOWER "mess"
#define CONFIGNAME "mess"
-#define APPLONGNAME "M.E.S.S."
-#define FULLLONGNAME "Multi Emulator Super System"
#define CAPGAMENOUN "MACHINE"
#define CAPSTARTGAMENOUN "Machine"
#define GAMENOUN "machine"
@@ -32,8 +30,6 @@
const char * emulator_info::get_appname() { return APPNAME;}
const char * emulator_info::get_appname_lower() { return APPNAME_LOWER;}
const char * emulator_info::get_configname() { return CONFIGNAME;}
-const char * emulator_info::get_applongname() { return APPLONGNAME;}
-const char * emulator_info::get_fulllongname() { return FULLLONGNAME;}
const char * emulator_info::get_capgamenoun() { return CAPGAMENOUN;}
const char * emulator_info::get_capstartgamenoun() { return CAPSTARTGAMENOUN;}
const char * emulator_info::get_gamenoun() { return GAMENOUN;}
diff --git a/src/mame/mess.lst b/src/mame/mess.lst
index 19031dfe475..a8ae22b6af3 100644
--- a/src/mame/mess.lst
+++ b/src/mame/mess.lst
@@ -77,6 +77,7 @@ smssdisp // Sega Master System Store Display Unit
megadrij // 1988 Sega Mega Drive (Japan)
genesis // 1989 Sega Genesis (USA)
megadriv // 1990 Sega Mega Drive (Europe)
+genesis_tmss //
pico // 1994 Sega Pico (Europe)
picou // 1994 Sega Pico (USA)
picoj // 1993 Sega Pico (Japan)
@@ -115,10 +116,12 @@ dcjp // 1998 Sega Dreamcast (Japan)
dc // 1999 Sega Dreamcast (USA)
dceu // 1999 Sega Dreamcast (Europe)
dcdev // 1998 Sega HKT-0120 Sega Dreamcast Development Box
-dcprt // 1998 Sega Katana Set 5 Prototype
svmu // 1998 Sega Visual Memory Unit
+// Sequential Circuits
+prpht600 // 1983 Sequential Circuits
+
// Sony
psj // 1994 Sony PlayStation (Japan)
psu // 1995 Sony PlayStation (USA)
@@ -259,7 +262,7 @@ telngtcs
krvnjvtv
oc2000
mpt05
-h21 // TRQ Video Computer H-21
+h21 // TRQ Video Computer H-21
// Game Park
@@ -325,7 +328,10 @@ neocdz // NeoGeo CDZ
neocdzj //
// Philips
-cdimono1 // Philips CD-i (Mono-I board)
+cdimono1 // Philips CD-i model 200 (Mono-I board, PAL)
+cdimono2 // Philips CD-i model 220 (Mono-II board, NTSC)
+cdi910 //
+cdi490a //
// Yamaha
mu100 // 1997 MU-100
@@ -342,12 +348,16 @@ sc55 // 1991 Sound Canvas SC-55
// Acorn
acrnsys1 // 1979 Acorn System 1 (Microcomputer Kit)
+a6809
atom // 1979 Acorn Atom
atomeb // 1979 Acorn Atom
atombb // 1979 Acorn Atom
//prophet2
bbca // 1981 BBC Micro Model A
bbcb // 1981 BBC Micro Model B w/8271 FDC
+torchf // 1982 Torch CF240
+torchh10 // 1982 Torch CH240/10
+torchh21 // 1982 Torch CH240/21
bbcb_de // 1982 BBC Micro Model B (German)
bbcb_us // 1983 BBC Micro Model B (US)
electron // 1983 Acorn Electron
@@ -373,7 +383,6 @@ a3010 // 1988 Acorn Archimedes 3010
a3020 // 1988 Acorn Archimedes 3020
a7000 // 1995 Acorn Archimedes 7000
a7000p // 1997 Acorn Archimedes 7000+
-a6809
rpc600
rpc700
sarpc
@@ -1022,9 +1031,10 @@ zslc3000 // Sharp Zaurus SL-C3000 "Spitz"
zslc1000 // Sharp Zaurus SL-C1000 "Akita"
// Silicon Graphics
-sgi_ip2 // IP2: IRIS 2x00, 68020, 16MHz
+sgi_ip2 // IP2: IRIS 3xx0, 68020, 16MHz
sgi_ip6 // IP6: 4D/PI, R2000, 20MHz
-ip204415 // IP20: Indigo 1, R4400, 150MHz
+indigo3k // IP12: Indigo 1, R3000, 33MHz
+indigo4k // IP20: Indigo 1, R4400, 150MHz
ip225015 // IP22: Indy, R5000, 150MHz
ip224613 // IP22: Indy, R4600, 133MHz
ip244415 // IP24: Indigo 2, R4400, 150MHz
@@ -1282,6 +1292,7 @@ iq128 // 1997 Genius IQ 128 (Germany)
iqtv512 // IQ TV512 (Germany)
pc1000 // 1988 PreComputer 1000
misterx // 1988 (Yeno) MisterX
+ordisava // 1988 Ordisavant (France)
pc2000 // 1993 PreComputer 2000
gl2000 // 1993 Genius Leader 2000
gl2000p // 1993 Genius Leader 2000 Plus
@@ -1303,6 +1314,8 @@ gwnf // Genius Winner Notebook Fun (Germany)
gl6000sl // Genius Leader 6000SL (Germany)
gl7007sl // Genius Leader 7007SL (Germany)
glcolor // Genius Leader Color (Germany)
+snotec // Bandai Super Note Club (Japan)
+snotecex // Bandai Super Note Club EX (Japan)
glmcolor // Genius Leader Magic Color (Germany)
glscolor // Genius Leader Super Color (Germany)
gjrstar3 // Genius Junior Redstar 3 (Germany)
@@ -1996,8 +2009,9 @@ pcm // PC/M Mugler
pecom32
pecom64
-// Samsung SPC-1000
+// Samsung Electronics
spc1000
+spc1500
// PolyMorphic Systems
poly88
@@ -2020,7 +2034,18 @@ newbrainmd
mm1m6
mm1m7
+noki3210
+noki7110
+noki8210
+noki8850
noki3310
+noki6210
+noki6250
+noki8250
+noki8890
+noki3330
+noki3410
+noki5210
// Nuova Elettronica
z80ne // 1980 - Z80NE
@@ -2098,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
@@ -2114,6 +2140,20 @@ 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
+vcc
+vccg
+vccfr
+vccsp
+uvc
+bridgec3
+vbrc
+vsc
+csc
+fscc12
+fexcelv
+
// Hegener & Glaser Munich
//mephisto // Mephisto 1 - roms needed - not in driver
mm2 // Mephisto 2
@@ -2246,6 +2286,7 @@ elecdet // Ideal
starwbc // Kenner
starwbcp // Kenner (patent)
astro // Kosmos
+mdndclab // Mattel
comp4 // Milton Bradley
simon // Milton Bradley
ssimon // Milton Bradley
@@ -2259,22 +2300,40 @@ splitsec // Parker Bros
mmerlin // Parker Bros
tandy12 // Tandy Radio Shack
tbreakup // Tomy
-tpinball // Tomy
+phpball // Tomy
// hh_tms1k derivatives
elecbowl // Marx
mbdtower // Milton Bradley
-// hh_tms1k tispeak.c
+// hh_tms1k ticalc1x.cpp
+tisr16
+tisr16ii
+ti1250
+ti125076
+ti1270
+ti1000
+ti30
+tiprog
+tibusan
+wizatron
+lilprof
+lilprof78
+dataman
+
+// hh_tms1k tispeak.cpp
snspell
snspellp
-snspella
-snspellb
+snspellua
+snspellub
snspelluk
snspelluka
snspelljp
snspellfr
snspellit
+snspellc
+snspellca
+snspellcuk
snmath
snmathp
snread
@@ -2285,18 +2344,9 @@ tntellfr
tntellp
vocaid
-// hh_tms1k ticalc1x.c
-tisr16
-tisr16ii
-ti1270
-ti1000
-ti30
-tiprog
-tibusan1
-wizatron
-lilprof
-lilprof78
-dataman
+// hh_tms1k tispellb.cpp
+spellb
+mrchalgr
// hh_ucom4
ufombs // Bambino
@@ -2320,6 +2370,7 @@ alnchase // Tomy
// hh_ucom4 derivatives
tb303 // Roland
+tr606 // Roland
// other
tama // Bandai
@@ -2334,7 +2385,7 @@ wildfire // Parker Bros
ssem // Manchester Small-Scale Experimental Machine, "Baby"
craft // Craft, by [lft]
-
+r9751 // ROLM 9751 phone system
//********** To sort (mostly skeleton drivers) *****************************
@@ -2350,6 +2401,8 @@ c80
ds348 //Sigtron Daruma
mc1000
d6809
+mp68a
+md6802
mk85
mk90
elwro800
@@ -2525,11 +2578,6 @@ dms5000
dms86
codata
rvoicepc
-vcc
-uvc
-bridgec3
-vbrc
-vsc
victor9k
phc25
phc25j
@@ -2585,7 +2633,6 @@ czk80
c10
k8915
mes
-cc10
systec
p112
selz80
@@ -2664,7 +2711,6 @@ cvicny
pc486mu
mstation
mbc200
-csc
chesstrv
alphatro
ax20
@@ -2776,3 +2822,15 @@ micral
rd100
proteus3
unichamp
+st1700h
+st1701
+st1702
+st1703
+st1704
+st1705
+st1706
+st1707
+st1708
+st1714
+sanfuze2
+marywu
diff --git a/src/mame/video/1942.cpp b/src/mame/video/1942.cpp
index bc4b168a6cf..661ad41b175 100644
--- a/src/mame/video/1942.cpp
+++ b/src/mame/video/1942.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Couriersud
/***************************************************************************
@@ -204,7 +204,7 @@ WRITE8_MEMBER(_1942_state::c1942_c804_w)
bit 4: cpu B reset
bit 0: coin counter */
- coin_counter_w(machine(), 0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
diff --git a/src/mame/video/1943.cpp b/src/mame/video/1943.cpp
index ba99dcf6cb9..9730593287b 100644
--- a/src/mame/video/1943.cpp
+++ b/src/mame/video/1943.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
@@ -133,8 +133,8 @@ WRITE8_MEMBER(_1943_state::c1943_colorram_w)
WRITE8_MEMBER(_1943_state::c1943_c804_w)
{
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bits 2, 3 and 4 select the ROM bank */
membank("bank1")->set_entry((data & 0x1c) >> 2);
diff --git a/src/mame/video/40love.cpp b/src/mame/video/40love.cpp
index 0a284915b3a..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
@@ -78,7 +78,7 @@ TILE_GET_INFO_MEMBER(fortyl_state::get_bg_tile_info)
SET_TILE_INFO_MEMBER(0,
code,
- tile_attrib & 0x07,
+ (tile_attrib & 0x07) | ((m_color_bank == true) ? 0x20 : 0),
0);
}
@@ -103,11 +103,11 @@ void fortyl_state::redraw_pixels()
void fortyl_state::video_start()
{
- m_pixram1 = auto_alloc_array_clear(machine(), UINT8, 0x4000);
- m_pixram2 = auto_alloc_array_clear(machine(), UINT8, 0x4000);
+ m_pixram1 = make_unique_clear<UINT8[]>(0x4000);
+ m_pixram2 = make_unique_clear<UINT8[]>(0x4000);
- m_tmp_bitmap1 = auto_bitmap_ind16_alloc(machine(), 256, 256);
- m_tmp_bitmap2 = auto_bitmap_ind16_alloc(machine(), 256, 256);
+ m_tmp_bitmap1 = std::make_unique<bitmap_ind16>(256, 256);
+ m_tmp_bitmap2 = std::make_unique<bitmap_ind16>(256, 256);
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fortyl_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
@@ -118,8 +118,8 @@ void fortyl_state::video_start()
save_item(NAME(m_flipscreen));
save_item(NAME(m_pix_color));
- save_pointer(NAME(m_pixram1), 0x4000);
- save_pointer(NAME(m_pixram2), 0x4000);
+ save_pointer(NAME(m_pixram1.get()), 0x4000);
+ save_pointer(NAME(m_pixram2.get()), 0x4000);
save_item(NAME(*m_tmp_bitmap1));
save_item(NAME(*m_tmp_bitmap2));
save_item(NAME(m_pixram_sel));
@@ -149,12 +149,30 @@ void fortyl_state::fortyl_set_scroll_x( int offset )
m_bg_tilemap->set_scrollx(offset / 2, x);
}
+/*!
+ @brief various video related outputs
+ --x- ---- Screen disable bit
+ ---- x--- Global screen color bank
+ ---- -x-- Pix RAM color bank select
+ ---- ---x Flip Screen set
+ */
WRITE8_MEMBER(fortyl_state::fortyl_pixram_sel_w)
{
int offs;
int f = data & 0x01;
+ bool cur_col_bank = bool(data & 8);
+
+ 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)
{
@@ -197,9 +215,9 @@ void fortyl_state::fortyl_plot_pix( int offset )
{
c = ((d2 >> i) & 1) + ((d1 >> i) & 1) * 2;
if (m_pixram_sel)
- m_tmp_bitmap2->pix16(y, x + i) = m_pix_color[c];
+ m_tmp_bitmap2->pix16(y, x + i) = m_pix_color[c] | ((m_color_bank == true) ? 0x200 : 0);
else
- m_tmp_bitmap1->pix16(y, x + i) = m_pix_color[c];
+ m_tmp_bitmap1->pix16(y, x + i) = m_pix_color[c] | ((m_color_bank == true) ? 0x200 : 0);
}
}
@@ -287,7 +305,7 @@ void fortyl_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
code = (spriteram[offs + 1] & 0x3f) + ((spriteram[offs + 2] & 0x18) << 3);
flipx = ((spriteram[offs + 1] & 0x40) >> 6) ^ m_flipscreen;
flipy = ((spriteram[offs + 1] & 0x80) >> 7) ^ m_flipscreen;
- color = (spriteram[offs + 2] & 0x07) + 0x08;
+ color = (spriteram[offs + 2] & 0x07) + 0x08; // TODO: color bank here too? Check Undoukai
if (spriteram[offs + 2] & 0xe0)
color = machine().rand() & 0xf;
@@ -349,6 +367,12 @@ void fortyl_state::draw_pixram( bitmap_ind16 &bitmap, const rectangle &cliprect
UINT32 fortyl_state::screen_update_fortyl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
+ if(m_screen_disable == true)
+ {
+ 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/733_asr.cpp b/src/mame/video/733_asr.cpp
index da1286d69f5..e9c446301a2 100644
--- a/src/mame/video/733_asr.cpp
+++ b/src/mame/video/733_asr.cpp
@@ -111,7 +111,7 @@ void asr733_device::device_start()
const rectangle &visarea = screen->visible_area();
m_last_key_pressed = 0x80;
- m_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_bitmap = std::make_unique<bitmap_ind16>(width, height);
m_bitmap->fill(0, visarea);
diff --git a/src/mame/video/733_asr.h b/src/mame/video/733_asr.h
index 5329cd0094f..9c45c69c6ed 100644
--- a/src/mame/video/733_asr.h
+++ b/src/mame/video/733_asr.h
@@ -71,7 +71,7 @@ private:
int m_x;
- bitmap_ind16* m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
required_device<palette_device> m_palette;
required_device<gfxdecode_device> m_gfxdecode;
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/alesis.cpp b/src/mame/video/alesis.cpp
index 08f4554a4f2..cccd8a30f1b 100644
--- a/src/mame/video/alesis.cpp
+++ b/src/mame/video/alesis.cpp
@@ -19,20 +19,20 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y,
case 0:
switch(y)
{
- case 0: output_set_value("a_next", state); break;
- case 1: output_set_value("b_next", state); break;
- case 2: output_set_value("fill_next", state); break;
- case 3: output_set_value("user_next", state); break;
- case 4: output_set_value("play", state); break;
- case 5: output_set_value("record", state); break;
- case 6: output_set_value("compose", state); break;
- case 7: output_set_value("perform", state); break;
+ case 0: output().set_value("a_next", state); break;
+ case 1: output().set_value("b_next", state); break;
+ case 2: output().set_value("fill_next", state); break;
+ case 3: output().set_value("user_next", state); break;
+ case 4: output().set_value("play", state); break;
+ case 5: output().set_value("record", state); break;
+ case 6: output().set_value("compose", state); break;
+ case 7: output().set_value("perform", state); break;
}
break;
case 1:
if (y == 0)
{
- output_set_value("song", state);
+ output().set_value("song", state);
}
else if (y < 8)
{
@@ -41,13 +41,13 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y,
else
m_lcd_digits[0] &= ~(1<<(y-1));
- output_set_value("digit0", BITSWAP8(m_lcd_digits[0],7,3,1,4,6,5,2,0));
+ output().set_value("digit0", BITSWAP8(m_lcd_digits[0],7,3,1,4,6,5,2,0));
}
break;
case 2:
if (y == 0)
{
- output_set_value("pattern", state);
+ output().set_value("pattern", state);
}
else if (y < 8)
{
@@ -56,26 +56,26 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y,
else
m_lcd_digits[1] &= ~(1<<(y-1));
- output_set_value("digit1", BITSWAP8(m_lcd_digits[1],7,3,1,4,6,5,2,0));
+ output().set_value("digit1", BITSWAP8(m_lcd_digits[1],7,3,1,4,6,5,2,0));
}
break;
case 3:
switch(y)
{
- case 0: output_set_value("b", state); break;
- case 1: output_set_value("a", state); break;
- case 2: output_set_value("fill", state); break;
- case 3: output_set_value("user", state); break;
- case 4: output_set_value("edited", state); break;
- case 5: output_set_value("set", state); break;
- case 6: output_set_value("drum", state); break;
- case 7: output_set_value("press_play", state); break;
+ case 0: output().set_value("b", state); break;
+ case 1: output().set_value("a", state); break;
+ case 2: output().set_value("fill", state); break;
+ case 3: output().set_value("user", state); break;
+ case 4: output().set_value("edited", state); break;
+ case 5: output().set_value("set", state); break;
+ case 6: output().set_value("drum", state); break;
+ case 7: output().set_value("press_play", state); break;
}
break;
case 4:
if (y == 7)
{
- output_set_value("metronome", state);
+ output().set_value("metronome", state);
}
else if (y < 7)
{
@@ -84,7 +84,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y,
else
m_lcd_digits[4] &= ~(1<<y);
- output_set_value("digit4", BITSWAP8(m_lcd_digits[4],7,3,5,2,0,1,4,6));
+ output().set_value("digit4", BITSWAP8(m_lcd_digits[4],7,3,5,2,0,1,4,6));
}
break;
}
@@ -96,7 +96,7 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y,
case 0:
if (y == 7)
{
- output_set_value("tempo", state);
+ output().set_value("tempo", state);
}
else if (y < 7)
{
@@ -105,13 +105,13 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y,
else
m_lcd_digits[3] &= ~(1<<y);
- output_set_value("digit3", BITSWAP8(m_lcd_digits[3],7,3,5,2,0,1,4,6));
+ output().set_value("digit3", BITSWAP8(m_lcd_digits[3],7,3,5,2,0,1,4,6));
}
break;
case 1:
if (y == 7)
{
- output_set_value("page", state);
+ output().set_value("page", state);
}
else if (y < 7)
{
@@ -120,46 +120,46 @@ void alesis_state::update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y,
else
m_lcd_digits[2] &= ~(1<<y);
- output_set_value("digit2", BITSWAP8(m_lcd_digits[2],7,3,5,2,0,1,4,6));
+ output().set_value("digit2", BITSWAP8(m_lcd_digits[2],7,3,5,2,0,1,4,6));
}
break;
case 2:
switch(y)
{
- case 0: output_set_value("step_edit", state); break;
- case 1: output_set_value("swing_off", state); break;
- case 2: output_set_value("swing_62", state); break;
- case 3: output_set_value("click_l1", state); break;
- case 4: output_set_value("click_note", state); break;
- case 5: output_set_value("click_l2", state); break;
- case 6: output_set_value("click_3", state); break;
- case 7: output_set_value("backup", state); break;
+ case 0: output().set_value("step_edit", state); break;
+ case 1: output().set_value("swing_off", state); break;
+ case 2: output().set_value("swing_62", state); break;
+ case 3: output().set_value("click_l1", state); break;
+ case 4: output().set_value("click_note", state); break;
+ case 5: output().set_value("click_l2", state); break;
+ case 6: output().set_value("click_3", state); break;
+ case 7: output().set_value("backup", state); break;
}
break;
case 3:
switch(y)
{
- case 0: output_set_value("drum_set", state); break;
- case 1: output_set_value("swing", state); break;
- case 2: output_set_value("swing_58", state); break;
- case 3: output_set_value("click_off", state); break;
- case 4: output_set_value("click", state); break;
- case 5: output_set_value("quantize_off", state); break;
- case 6: output_set_value("quantize_3", state); break;
- case 7: output_set_value("midi_setup", state); break;
+ case 0: output().set_value("drum_set", state); break;
+ case 1: output().set_value("swing", state); break;
+ case 2: output().set_value("swing_58", state); break;
+ case 3: output().set_value("click_off", state); break;
+ case 4: output().set_value("click", state); break;
+ case 5: output().set_value("quantize_off", state); break;
+ case 6: output().set_value("quantize_3", state); break;
+ case 7: output().set_value("midi_setup", state); break;
}
break;
case 4:
switch(y)
{
- case 0: output_set_value("record_setup", state); break;
- case 1: output_set_value("quantize", state); break;
- case 2: output_set_value("swing_54", state); break;
- case 3: output_set_value("quantize_l1", state); break;
- case 4: output_set_value("quantize_l2", state); break;
- case 5: output_set_value("quantize_l3", state); break;
- case 6: output_set_value("quantize_note", state); break;
- case 7: output_set_value("setup", state); break;
+ case 0: output().set_value("record_setup", state); break;
+ case 1: output().set_value("quantize", state); break;
+ case 2: output().set_value("swing_54", state); break;
+ case 3: output().set_value("quantize_l1", state); break;
+ case 4: output().set_value("quantize_l2", state); break;
+ case 5: output().set_value("quantize_l3", state); break;
+ case 6: output().set_value("quantize_note", state); break;
+ case 7: output().set_value("setup", state); break;
}
break;
}
diff --git a/src/mame/video/antic.cpp b/src/mame/video/antic.cpp
index b01b7ba259e..e393107bf53 100644
--- a/src/mame/video/antic.cpp
+++ b/src/mame/video/antic.cpp
@@ -65,9 +65,9 @@ void antic_device::device_start()
m_gtia = machine().device<gtia_device>(m_gtia_tag);
assert(m_gtia);
- m_bitmap = auto_bitmap_ind16_alloc(machine(), m_screen->width(), m_screen->height());
+ m_bitmap = std::make_unique<bitmap_ind16>(m_screen->width(), m_screen->height());
- m_cclk_expand = auto_alloc_array_clear(machine(), UINT32, 21 * 256);
+ m_cclk_expand = make_unique_clear<UINT32[]>(21 * 256);
m_pf_21 = &m_cclk_expand[ 0 * 256];
m_pf_x10b = &m_cclk_expand[ 1 * 256];
@@ -79,9 +79,9 @@ void antic_device::device_start()
m_pf_gtia2 = &m_cclk_expand[19 * 256];
m_pf_gtia3 = &m_cclk_expand[20 * 256];
- m_used_colors = auto_alloc_array(machine(), UINT8, 21 * 256);
+ m_used_colors = std::make_unique<UINT8[]>(21 * 256);
- memset(m_used_colors, 0, 21 * 256 * sizeof(UINT8));
+ memset(m_used_colors.get(), 0, 21 * 256 * sizeof(UINT8));
m_uc_21 = &m_used_colors[ 0 * 256];
m_uc_x10b = &m_used_colors[ 1 * 256];
@@ -97,13 +97,13 @@ void antic_device::device_start()
cclk_init();
for (auto & elem : m_prio_table)
- elem = auto_alloc_array_clear(machine(), UINT8, 8*256);
+ elem = make_unique_clear<UINT8[]>(8*256);
LOG(("atari prio_init\n"));
prio_init();
for (int i = 0; i < m_screen->height(); i++)
- m_video[i] = auto_alloc_clear(machine(), VIDEO);
+ m_video[i] = auto_alloc_clear(machine(), <VIDEO>());
/* save states */
save_pointer(NAME((UINT8 *) &m_r), sizeof(m_r));
@@ -133,8 +133,8 @@ void antic_device::device_start()
save_item(NAME(m_cclock));
save_item(NAME(m_pmbits));
- save_pointer(NAME(m_cclk_expand), 21 * 256);
- save_pointer(NAME(m_used_colors), 21 * 256);
+ save_pointer(NAME(m_cclk_expand.get()), 21 * 256);
+ save_pointer(NAME(m_used_colors.get()), 21 * 256);
}
@@ -1804,7 +1804,7 @@ TIMER_CALLBACK_MEMBER( antic_device::scanline_render )
}
if (m_scanline >= VBL_END && m_scanline < 256)
- m_gtia->render((UINT8 *)m_pmbits + PMOFFSET, (UINT8 *)m_cclock + PMOFFSET - m_hscrol_old, (UINT8 *)m_prio_table[m_gtia->get_w_prior() & 0x3f], (UINT8 *)&m_pmbits);
+ m_gtia->render((UINT8 *)m_pmbits + PMOFFSET, (UINT8 *)m_cclock + PMOFFSET - m_hscrol_old, m_prio_table[m_gtia->get_w_prior() & 0x3f].get(), (UINT8 *)&m_pmbits);
m_steal_cycles += CYCLES_REFRESH;
LOG((" run CPU for %d cycles\n", CYCLES_HSYNC - CYCLES_HSTART - m_steal_cycles));
diff --git a/src/mame/video/antic.h b/src/mame/video/antic.h
index b83afe9d8f2..2b278c2a780 100644
--- a/src/mame/video/antic.h
+++ b/src/mame/video/antic.h
@@ -435,9 +435,9 @@ private:
ANTIC_W m_w; /* ANTIC write registers */
UINT8 m_cclock[256+32]; /* color clock buffer filled by ANTIC */
UINT8 m_pmbits[256+32]; /* player missile buffer filled by GTIA */
- UINT8 *m_prio_table[64]; /* player/missile priority tables */
+ std::unique_ptr<UINT8[]> m_prio_table[64]; /* player/missile priority tables */
VIDEO *m_video[312]; /* video buffer */
- UINT32 *m_cclk_expand; /* shared buffer for the following: */
+ std::unique_ptr<UINT32[]> m_cclk_expand; /* shared buffer for the following: */
UINT32 *m_pf_21; /* 1cclk 2 color txt 2,3 */
UINT32 *m_pf_x10b; /* 1cclk 4 color txt 4,5, gfx D,E */
UINT32 *m_pf_3210b2; /* 1cclk 5 color txt 6,7, gfx 9,B,C */
@@ -447,7 +447,7 @@ private:
UINT32 *m_pf_gtia1; /* 1cclk gtia mode 1 */
UINT32 *m_pf_gtia2; /* 1cclk gtia mode 2 */
UINT32 *m_pf_gtia3; /* 1cclk gtia mode 3 */
- UINT8 *m_used_colors; /* shared buffer for the following: */
+ std::unique_ptr<UINT8[]> m_used_colors; /* shared buffer for the following: */
UINT8 *m_uc_21; /* used colors for txt (2,3) */
UINT8 *m_uc_x10b; /* used colors for txt 4,5, gfx D,E */
UINT8 *m_uc_3210b2; /* used colors for txt 6,7, gfx 9,B,C */
@@ -457,7 +457,7 @@ private:
UINT8 *m_uc_g1; /* used colors for gfx GTIA 1 */
UINT8 *m_uc_g2; /* used colors for gfx GTIA 2 */
UINT8 *m_uc_g3; /* used colors for gfx GTIA 3 */
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
void prio_init();
void cclk_init();
diff --git a/src/mame/video/apollo.cpp b/src/mame/video/apollo.cpp
index 2cebbc8b4bd..7d6cc7099ef 100644
--- a/src/mame/video/apollo.cpp
+++ b/src/mame/video/apollo.cpp
@@ -1246,7 +1246,7 @@ READ8_MEMBER( apollo_graphics_15i::apollo_ccr_r )
UINT8 apollo_graphics_15i::get_pixel(UINT32 offset, UINT16 mask)
{
UINT8 data = 0;
- UINT16 *source_ptr = m_image_memory + offset;
+ UINT16 *source_ptr = m_image_memory.get() + offset;
if (m_n_planes == 4)
{
@@ -1555,7 +1555,7 @@ UINT32 apollo_graphics_15i::screen_update(screen_device &screen, bitmap_rgb32 &b
void apollo_graphics_15i::screen_update1(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- UINT16 *source_ptr = m_image_memory;
+ UINT16 *source_ptr = m_image_memory.get();
int x, y;
UINT16 data, mask;
UINT16 inverse = (m_cr1 & CR1_INV) ? 0xffff : 0;
@@ -1872,14 +1872,14 @@ void apollo_graphics_15i::device_reset()
m_image_plane_size = m_buffer_height * m_buffer_width / 16;
m_image_memory_size = m_image_plane_size * m_n_planes;
m_image_memory
- = auto_alloc_array(machine(), UINT16, m_image_memory_size);
+ = std::make_unique<UINT16[]>(m_image_memory_size);
assert(m_image_memory != nullptr);
- MLOG1(("device reset apollo graphics: buffer=%p size=%0x", (void *) m_image_memory, m_image_memory_size));
+ MLOG1(("device reset apollo graphics: buffer=%p size=%0x", (void *) m_image_memory.get(), m_image_memory_size));
}
memset(m_color_lookup_table, 0, sizeof(m_color_lookup_table));
- memset(m_image_memory, 0, m_image_memory_size * 2);
+ memset(m_image_memory.get(), 0, m_image_memory_size * 2);
// register_vblank_callback(this);
diff --git a/src/mame/video/apple2.cpp b/src/mame/video/apple2.cpp
index c62c9d02456..a496d3e3e15 100644
--- a/src/mame/video/apple2.cpp
+++ b/src/mame/video/apple2.cpp
@@ -500,10 +500,10 @@ void apple2_state::apple2_video_start(const UINT8 *vram, const UINT8 *aux_vram,
m_textgfx_datalen = memregion("gfx1")->bytes();
/* 2^3 dependent pixels * 2 color sets * 2 offsets */
- m_hires_artifact_map = auto_alloc_array(machine(), UINT16, 8 * 2 * 2);
+ m_hires_artifact_map = std::make_unique<UINT16[]>(8 * 2 * 2);
/* 2^4 dependent pixels */
- m_dhires_artifact_map = auto_alloc_array(machine(), UINT16, 16);
+ m_dhires_artifact_map = std::make_unique<UINT16[]>(16);
/* build hires artifact map */
for (i = 0; i < 8; i++)
@@ -704,7 +704,7 @@ void a2_video_device::device_start()
UINT16 c;
/* 2^3 dependent pixels * 2 color sets * 2 offsets */
- m_hires_artifact_map = auto_alloc_array(machine(), UINT16, 8 * 2 * 2);
+ m_hires_artifact_map = std::make_unique<UINT16[]>(8 * 2 * 2);
/* build hires artifact map */
for (i = 0; i < 8; i++)
@@ -731,7 +731,7 @@ void a2_video_device::device_start()
}
/* 2^4 dependent pixels */
- m_dhires_artifact_map = auto_alloc_array(machine(), UINT16, 16);
+ m_dhires_artifact_map = std::make_unique<UINT16[]>(16);
/* build double hires artifact map */
for (i = 0; i < 16; i++)
@@ -1283,7 +1283,7 @@ void a2_video_device::hgr_update(screen_device &screen, bitmap_ind16 &bitmap, co
// verified on h/w: setting dhires w/o 80col emulates a rev. 0 Apple ][ with no orange/blue
if (m_dhires)
{
- artifact_map_ptr = m_hires_artifact_map;
+ artifact_map_ptr = m_hires_artifact_map.get();
}
else
{
diff --git a/src/mame/video/apple2.h b/src/mame/video/apple2.h
index f28ed518c11..420a293a703 100644
--- a/src/mame/video/apple2.h
+++ b/src/mame/video/apple2.h
@@ -28,8 +28,8 @@ public:
bool m_dhires;
bool m_80col;
bool m_altcharset;
- UINT16 *m_hires_artifact_map;
- UINT16 *m_dhires_artifact_map;
+ std::unique_ptr<UINT16[]> m_hires_artifact_map;
+ std::unique_ptr<UINT16[]> m_dhires_artifact_map;
UINT8 *m_ram_ptr, *m_aux_ptr, *m_char_ptr;
int m_char_size;
diff --git a/src/mame/video/apple2gs.cpp b/src/mame/video/apple2gs.cpp
index fb00047c30a..eacb0e9c632 100644
--- a/src/mame/video/apple2gs.cpp
+++ b/src/mame/video/apple2gs.cpp
@@ -18,8 +18,8 @@
VIDEO_START_MEMBER(apple2gs_state,apple2gs)
{
m_bordercolor = 0;
- apple2_video_start(m_slowmem, m_slowmem+0x10000, 0, 8);
- m_legacy_gfx = auto_bitmap_ind16_alloc(machine(), 560, 192);
+ apple2_video_start(m_slowmem.get(), m_slowmem.get()+0x10000, 0, 8);
+ m_legacy_gfx = std::make_unique<bitmap_ind16>(560, 192);
save_item(m_bordercolor, "BORDERCLR");
save_item(NAME(m_fgcolor));
diff --git a/src/mame/video/apple3.cpp b/src/mame/video/apple3.cpp
index e733199bd87..06245b5ef80 100644
--- a/src/mame/video/apple3.cpp
+++ b/src/mame/video/apple3.cpp
@@ -125,7 +125,7 @@ VIDEO_START_MEMBER(apple3_state,apple3)
memset(m_char_mem, 0, 0x800);
- m_hgr_map = auto_alloc_array(machine(), UINT32, 192);
+ m_hgr_map = std::make_unique<UINT32[]>(192);
for (i = 0; i < 24; i++)
{
v = text_map[i] - 0x0400;
diff --git a/src/mame/video/aquarium.cpp b/src/mame/video/aquarium.cpp
index a941388269e..273697a291f 100644
--- a/src/mame/video/aquarium.cpp
+++ b/src/mame/video/aquarium.cpp
@@ -105,7 +105,7 @@ UINT32 aquarium_state::screen_update_aquarium(screen_device &screen, bitmap_ind1
m_bak_tilemap->set_scrolly(0, m_scroll[3]);
m_txt_tilemap->set_scrollx(0, m_scroll[4]);
m_txt_tilemap->set_scrolly(0, m_scroll[5]);
-
+
bitmap.fill(0, cliprect); // WDUD logo suggests this
m_temp_sprite_bitmap.fill(0, cliprect);
diff --git a/src/mame/video/arabian.cpp b/src/mame/video/arabian.cpp
index 0e0010cb708..e99bc95750c 100644
--- a/src/mame/video/arabian.cpp
+++ b/src/mame/video/arabian.cpp
@@ -161,10 +161,10 @@ void arabian_state::video_start()
/* allocate a common bitmap to use for both planes */
/* plane A (top plane with motion objects) is in the upper 4 bits */
/* plane B (bottom plane with playfield) is in the lower 4 bits */
- m_main_bitmap = auto_alloc_array(machine(), UINT8, BITMAP_WIDTH * BITMAP_HEIGHT);
+ m_main_bitmap = std::make_unique<UINT8[]>(BITMAP_WIDTH * BITMAP_HEIGHT);
/* allocate memory for the converted graphics data */
- m_converted_gfx = auto_alloc_array(machine(), UINT8, 0x8000 * 2);
+ m_converted_gfx = std::make_unique<UINT8[]>(0x8000 * 2);
/*--------------------------------------------------
transform graphics data into more usable format
@@ -207,8 +207,8 @@ void arabian_state::video_start()
m_converted_gfx[offs * 4 + 0] = p4;
}
- save_pointer(NAME(m_main_bitmap), BITMAP_WIDTH * BITMAP_HEIGHT);
- save_pointer(NAME(m_converted_gfx), 0x8000 * 2);
+ save_pointer(NAME(m_main_bitmap.get()), BITMAP_WIDTH * BITMAP_HEIGHT);
+ save_pointer(NAME(m_converted_gfx.get()), 0x8000 * 2);
save_item(NAME(m_video_control));
save_item(NAME(m_flip_screen));
}
diff --git a/src/mame/video/arcadia.cpp b/src/mame/video/arcadia.cpp
index 869439aef10..21d1c0066c8 100644
--- a/src/mame/video/arcadia.cpp
+++ b/src/mame/video/arcadia.cpp
@@ -306,7 +306,7 @@ void arcadia_state::video_start()
{
int width = m_screen->width();
int height = m_screen->height();
- m_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_bitmap = std::make_unique<bitmap_ind16>(width, height);
}
}
diff --git a/src/mame/video/argus.cpp b/src/mame/video/argus.cpp
index 49577665bc4..4baa2323356 100644
--- a/src/mame/video/argus.cpp
+++ b/src/mame/video/argus.cpp
@@ -270,12 +270,12 @@ VIDEO_START_MEMBER(argus_state,argus)
m_tx_tilemap->set_transparent_pen(15);
/* dummy RAM for back ground */
- m_dummy_bg0ram = auto_alloc_array(machine(), UINT8, 0x800);
+ m_dummy_bg0ram = std::make_unique<UINT8[]>(0x800);
save_item(NAME(m_bg_status));
save_item(NAME(m_flipscreen));
save_item(NAME(m_palette_intensity));
- save_pointer(NAME(m_dummy_bg0ram), 0x800);
+ save_pointer(NAME(m_dummy_bg0ram.get()), 0x800);
save_item(NAME(m_lowbitscroll));
save_item(NAME(m_prvscrollx));
}
@@ -286,7 +286,7 @@ VIDEO_RESET_MEMBER(argus_state,argus)
m_prvscrollx = 0;
m_bg0_scrollx[0] = 0;
m_bg0_scrollx[1] = 0;
- memset(m_dummy_bg0ram, 0, 0x800);
+ memset(m_dummy_bg0ram.get(), 0, 0x800);
reset_common();
}
@@ -324,8 +324,8 @@ VIDEO_START_MEMBER(argus_state,butasan)
m_bg1_tilemap->set_transparent_pen(15);
m_tx_tilemap->set_transparent_pen(15);
- m_butasan_pagedram[0] = auto_alloc_array(machine(), UINT8, 0x1000);
- m_butasan_pagedram[1] = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_butasan_pagedram[0] = std::make_unique<UINT8[]>(0x1000);
+ m_butasan_pagedram[1] = std::make_unique<UINT8[]>(0x1000);
m_butasan_bg0ram = &m_butasan_pagedram[0][0x000];
m_butasan_bg0backram = &m_butasan_pagedram[0][0x800];
@@ -335,8 +335,8 @@ VIDEO_START_MEMBER(argus_state,butasan)
save_item(NAME(m_bg_status));
save_item(NAME(m_flipscreen));
save_item(NAME(m_palette_intensity));
- save_pointer(NAME(m_butasan_pagedram[0]), 0x1000);
- save_pointer(NAME(m_butasan_pagedram[1]), 0x1000);
+ save_pointer(NAME(m_butasan_pagedram[0].get()), 0x1000);
+ save_pointer(NAME(m_butasan_pagedram[1].get()), 0x1000);
save_item(NAME(m_butasan_page_latch));
save_item(NAME(m_butasan_bg1_status));
save_item(NAME(m_butasan_unknown));
@@ -346,8 +346,8 @@ VIDEO_RESET_MEMBER(argus_state,butasan)
{
m_butasan_page_latch = 0;
m_butasan_bg1_status = 0x01;
- memset(m_butasan_pagedram[0], 0, 0x1000);
- memset(m_butasan_pagedram[1], 0, 0x1000);
+ memset(m_butasan_pagedram[0].get(), 0, 0x1000);
+ memset(m_butasan_pagedram[1].get(), 0, 0x1000);
reset_common();
}
diff --git a/src/mame/video/arkanoid.cpp b/src/mame/video/arkanoid.cpp
index f85b0c9ee9f..b297ff562c3 100644
--- a/src/mame/video/arkanoid.cpp
+++ b/src/mame/video/arkanoid.cpp
@@ -30,8 +30,8 @@ WRITE8_MEMBER(arkanoid_state::arkanoid_d008_w)
m_paddle_select = data & 0x04;
/* bit 3 is coin lockout (but not the service coin) */
- coin_lockout_w(machine(), 0, !(data & 0x08));
- coin_lockout_w(machine(), 1, !(data & 0x08));
+ machine().bookkeeping().coin_lockout_w(0, !(data & 0x08));
+ machine().bookkeeping().coin_lockout_w(1, !(data & 0x08));
/* bit 4 is unknown */
@@ -136,8 +136,8 @@ WRITE8_MEMBER(arkanoid_state::tetrsark_d008_w)
}
/* bit 7 is coin lockout (but not the service coin) */
- coin_lockout_w(machine(), 0, !(data & 0x80));
- coin_lockout_w(machine(), 1, !(data & 0x80));
+ machine().bookkeeping().coin_lockout_w(0, !(data & 0x80));
+ machine().bookkeeping().coin_lockout_w(1, !(data & 0x80));
}
diff --git a/src/mame/video/armedf.cpp b/src/mame/video/armedf.cpp
index 0b82b573edd..84c08f9c022 100644
--- a/src/mame/video/armedf.cpp
+++ b/src/mame/video/armedf.cpp
@@ -128,10 +128,10 @@ VIDEO_START_MEMBER(armedf_state,terraf)
if (m_scroll_type != 1)
m_tx_tilemap->set_scrollx(0, -128);
- m_text_videoram = auto_alloc_array(machine(), UINT8, 0x1000);
- memset(m_text_videoram, 0x00, 0x1000);
+ m_text_videoram = std::make_unique<UINT8[]>(0x1000);
+ memset(m_text_videoram.get(), 0x00, 0x1000);
- save_pointer(NAME(m_text_videoram), 0x1000);
+ save_pointer(NAME(m_text_videoram.get()), 0x1000);
}
VIDEO_START_MEMBER(armedf_state,armedf)
@@ -150,10 +150,10 @@ VIDEO_START_MEMBER(armedf_state,armedf)
if (m_scroll_type != 1)
m_tx_tilemap->set_scrollx(0, -128);
- m_text_videoram = auto_alloc_array(machine(), UINT8, 0x1000);
- memset(m_text_videoram, 0x00, 0x1000);
+ m_text_videoram = std::make_unique<UINT8[]>(0x1000);
+ memset(m_text_videoram.get(), 0x00, 0x1000);
- save_pointer(NAME(m_text_videoram), 0x1000);
+ save_pointer(NAME(m_text_videoram.get()), 0x1000);
}
/***************************************************************************
diff --git a/src/mame/video/astrocde.cpp b/src/mame/video/astrocde.cpp
index 2df2fb11706..a26e2aff2e3 100644
--- a/src/mame/video/astrocde.cpp
+++ b/src/mame/video/astrocde.cpp
@@ -187,13 +187,13 @@ VIDEO_START_MEMBER(astrocde_state,profpac)
m_intoff_timer = timer_alloc(TIMER_INTERRUPT_OFF);
/* allocate videoram */
- m_profpac_videoram = auto_alloc_array(machine(), UINT16, 0x4000 * 4);
+ m_profpac_videoram = std::make_unique<UINT16[]>(0x4000 * 4);
/* register for save states */
init_savestate();
/* register our specific save state data */
- save_pointer(NAME(m_profpac_videoram), 0x4000 * 4);
+ save_pointer(NAME(m_profpac_videoram.get()), 0x4000 * 4);
save_item(NAME(m_profpac_palette));
save_item(NAME(m_profpac_colormap));
save_item(NAME(m_profpac_intercept));
@@ -924,7 +924,7 @@ void astrocde_state::init_sparklestar()
m_sparkle[0] = m_sparkle[1] = m_sparkle[2] = m_sparkle[3] = 0;
/* allocate memory for the sparkle/star array */
- m_sparklestar = auto_alloc_array(machine(), UINT8, RNG_PERIOD);
+ m_sparklestar = std::make_unique<UINT8[]>(RNG_PERIOD);
/* generate the data for the sparkle/star array */
for (shiftreg = i = 0; i < RNG_PERIOD; i++)
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/atarisy1.cpp b/src/mame/video/atarisy1.cpp
index 992609effa4..0c3e4daf63f 100644
--- a/src/mame/video/atarisy1.cpp
+++ b/src/mame/video/atarisy1.cpp
@@ -617,15 +617,15 @@ int atarisy1_state::get_bank(UINT8 prom1, UINT8 prom2, int bpp)
switch (bpp)
{
case 4:
- m_gfxdecode->set_gfx(gfx_index,global_alloc(gfx_element(m_palette, objlayout_4bpp, srcdata, 0, 0x40, 256)));
+ m_gfxdecode->set_gfx(gfx_index,std::make_unique<gfx_element>(m_palette, objlayout_4bpp, srcdata, 0, 0x40, 256));
break;
case 5:
- m_gfxdecode->set_gfx(gfx_index,global_alloc(gfx_element(m_palette, objlayout_5bpp, srcdata, 0, 0x40, 256)));
+ m_gfxdecode->set_gfx(gfx_index,std::make_unique<gfx_element>(m_palette, objlayout_5bpp, srcdata, 0, 0x40, 256));
break;
case 6:
- m_gfxdecode->set_gfx(gfx_index,global_alloc(gfx_element(m_palette, objlayout_6bpp, srcdata, 0, 0x40, 256)));
+ m_gfxdecode->set_gfx(gfx_index,std::make_unique<gfx_element>(m_palette, objlayout_6bpp, srcdata, 0, 0x40, 256));
break;
default:
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 b986e61191a..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__
@@ -175,7 +176,6 @@ public:
virtual void vgrst() override;
virtual void device_start() override;
- void avg_start_common();
};
// device type definition
diff --git a/src/mame/video/awpvid.cpp b/src/mame/video/awpvid.cpp
index 55dcdfde240..fbe4e82e991 100644
--- a/src/mame/video/awpvid.cpp
+++ b/src/mame/video/awpvid.cpp
@@ -17,18 +17,18 @@
#include "machine/steppers.h"
-void awp_draw_reel(const char* reeltag, stepper_device &reel)
+void awp_draw_reel(running_machine &machine, const char* reeltag, stepper_device &reel)
{
char rg[16];
int reelpos = reel.get_position();
- if (reelpos == output_get_value(reeltag))
+ if (reelpos == machine.output().get_value(reeltag))
{
// Not moved, no need to update.
}
else
{
- output_set_value(reeltag,(reelpos));
+ machine.output().set_value(reeltag,(reelpos));
// if the reel isn't configured don't do this, otherwise you'll get DIV0
if (reel.get_max())
@@ -37,7 +37,7 @@ void awp_draw_reel(const char* reeltag, stepper_device &reel)
// normalize the value
int sreelpos = (reelpos * 0x10000) / reel.get_max();
- output_set_value(rg,sreelpos);
+ machine.output().set_value(rg,sreelpos);
}
}
}
diff --git a/src/mame/video/awpvid.h b/src/mame/video/awpvid.h
index 2a53149fc9c..89f45c55f27 100644
--- a/src/mame/video/awpvid.h
+++ b/src/mame/video/awpvid.h
@@ -10,6 +10,6 @@
#include "machine/steppers.h"
-void awp_draw_reel(const char* reeltag, stepper_device &reel);
+void awp_draw_reel(running_machine &machine, const char* reeltag, stepper_device &reel);
#endif
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/battlane.cpp b/src/mame/video/battlane.cpp
index 159f986e00c..1b9967d8e36 100644
--- a/src/mame/video/battlane.cpp
+++ b/src/mame/video/battlane.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
diff --git a/src/mame/video/battlex.cpp b/src/mame/video/battlex.cpp
index 1c8086c417f..f808d1e536e 100644
--- a/src/mame/video/battlex.cpp
+++ b/src/mame/video/battlex.cpp
@@ -92,7 +92,11 @@ void battlex_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
UINT32 battlex_state::screen_update_battlex(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_bg_tilemap->set_scrollx(0, m_scroll_lsb | (m_scroll_msb << 8));
+ if (!flip_screen())
+ 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/bfm_adr2.h b/src/mame/video/bfm_adr2.h
index 0b5cc356c49..301ee7acf0d 100644
--- a/src/mame/video/bfm_adr2.h
+++ b/src/mame/video/bfm_adr2.h
@@ -9,8 +9,6 @@ public:
// construction/destruction
bfm_adder2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- static void static_set_palette_tag(device_t &device, const char *tag);
-
TILE_GET_INFO_MEMBER( get_tile0_info );
TILE_GET_INFO_MEMBER( get_tile1_info );
UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
diff --git a/src/mame/video/bfm_dm01.cpp b/src/mame/video/bfm_dm01.cpp
index 19911ee5654..c1977276f00 100644
--- a/src/mame/video/bfm_dm01.cpp
+++ b/src/mame/video/bfm_dm01.cpp
@@ -190,7 +190,7 @@ WRITE8_MEMBER( bfmdm01_device::mux_w )
for (int pos=0;pos<65;pos++)
{
- output_set_indexed_value("dotmatrix", pos +(65*row), m_segbuffer[(pos)]);
+ machine().output().set_indexed_value("dotmatrix", pos +(65*row), m_segbuffer[(pos)]);
}
}
}
diff --git a/src/mame/video/bigevglf.cpp b/src/mame/video/bigevglf.cpp
index 0684433e3ca..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
/***************************************************************************
@@ -61,9 +61,9 @@ void bigevglf_state::video_start()
save_item(NAME(m_tmp_bitmap[2]));
save_item(NAME(m_tmp_bitmap[3]));
- m_vidram = auto_alloc_array(machine(), UINT8, 0x100 * 0x100 * 4);
+ m_vidram = std::make_unique<UINT8[]>(0x100 * 0x100 * 4);
- save_pointer(NAME(m_vidram), 0x100 * 0x100 * 4);
+ save_pointer(NAME(m_vidram.get()), 0x100 * 0x100 * 4);
}
void bigevglf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
diff --git a/src/mame/video/bionicc.cpp b/src/mame/video/bionicc.cpp
index 9c6b38a053c..4a774117151 100644
--- a/src/mame/video/bionicc.cpp
+++ b/src/mame/video/bionicc.cpp
@@ -1,5 +1,6 @@
-// license:???
-// copyright-holders:Steven Frew, Phil Stroffolino, Paul Leaman
+// license:BSD-3-Clause
+// copyright-holders:Phil Stroffolino, Paul Leaman
+// thanks-to: Steven Frew (the author of Slutte)
/***************************************************************************
Bionic Commando Video Hardware
@@ -171,8 +172,8 @@ WRITE16_MEMBER(bionicc_state::bionicc_gfxctrl_w)
m_bg_tilemap->enable(data & 0x2000); /* guess */
m_fg_tilemap->enable(data & 0x1000); /* guess */
- coin_counter_w(machine(), 0, data & 0x8000);
- coin_counter_w(machine(), 1, data & 0x4000);
+ machine().bookkeeping().coin_counter_w(0, data & 0x8000);
+ machine().bookkeeping().coin_counter_w(1, data & 0x4000);
}
}
diff --git a/src/mame/video/bking.cpp b/src/mame/video/bking.cpp
index 87b0795ea05..ac3851e7217 100644
--- a/src/mame/video/bking.cpp
+++ b/src/mame/video/bking.cpp
@@ -124,7 +124,7 @@ WRITE8_MEMBER(bking_state::bking_cont1_w)
/* D3 = Not Connected */
/* D4-D7 = CROW0-CROW3 (selects crow picture) */
- coin_lockout_global_w(machine(), ~data & 0x01);
+ machine().bookkeeping().coin_lockout_global_w(~data & 0x01);
flip_screen_set(data & 0x04);
diff --git a/src/mame/video/blktiger.cpp b/src/mame/video/blktiger.cpp
index c9e62949ed7..b0affb717ce 100644
--- a/src/mame/video/blktiger.cpp
+++ b/src/mame/video/blktiger.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
#include "emu.h"
#include "includes/blktiger.h"
@@ -69,7 +69,7 @@ void blktiger_state::video_start()
m_objon = 1;
m_screen_layout = 0;
- m_scroll_ram = auto_alloc_array(machine(), UINT8, BGRAM_BANK_SIZE * BGRAM_BANKS);
+ m_scroll_ram = std::make_unique<UINT8[]>(BGRAM_BANK_SIZE * BGRAM_BANKS);
m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(blktiger_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_bg_tilemap8x4 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(blktiger_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(blktiger_state::bg8x4_scan),this), 16, 16, 128, 64);
@@ -86,7 +86,7 @@ void blktiger_state::video_start()
m_bg_tilemap4x8->set_transmask(2, 0xff00, 0x80ff);
m_bg_tilemap4x8->set_transmask(3, 0xf000, 0x8fff);
- save_pointer(NAME(m_scroll_ram), BGRAM_BANK_SIZE * BGRAM_BANKS);
+ save_pointer(NAME(m_scroll_ram.get()), BGRAM_BANK_SIZE * BGRAM_BANKS);
}
@@ -147,8 +147,8 @@ WRITE8_MEMBER(blktiger_state::blktiger_scrollx_w)
WRITE8_MEMBER(blktiger_state::blktiger_video_control_w)
{
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0,data & 1);
- coin_counter_w(machine(), 1,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
+ machine().bookkeeping().coin_counter_w(1,data & 2);
/* bit 5 resets the sound CPU */
m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
diff --git a/src/mame/video/btime.cpp b/src/mame/video/btime.cpp
index 8ce07c28918..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));
}
@@ -128,7 +128,7 @@ VIDEO_START_MEMBER(btime_state,bnj)
/* the background area is twice as wide as the screen */
int width = 256;
int height = 256;
- m_background_bitmap = auto_bitmap_ind16_alloc(machine(), 2 * width, height);
+ m_background_bitmap = std::make_unique<bitmap_ind16>(2 * width, height);
save_item(NAME(*m_background_bitmap));
}
diff --git a/src/mame/video/buggychl.cpp b/src/mame/video/buggychl.cpp
index 898a85fa5cb..cc12707c4fd 100644
--- a/src/mame/video/buggychl.cpp
+++ b/src/mame/video/buggychl.cpp
@@ -63,8 +63,8 @@ WRITE8_MEMBER(buggychl_state::buggychl_ctrl_w)
m_sprite_color_base = (data & 0x10) ? 1 * 16 : 3 * 16;
- coin_lockout_global_w(machine(), (~data & 0x40) >> 6);
- set_led_status(machine(), 0, ~data & 0x80);
+ machine().bookkeeping().coin_lockout_global_w((~data & 0x40) >> 6);
+ output().set_led_value(0, ~data & 0x80);
}
WRITE8_MEMBER(buggychl_state::buggychl_bg_scrollx_w)
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/carpolo.cpp b/src/mame/video/carpolo.cpp
index dbeb2e479e5..1cf3c51c57a 100644
--- a/src/mame/video/carpolo.cpp
+++ b/src/mame/video/carpolo.cpp
@@ -145,13 +145,13 @@ PALETTE_INIT_MEMBER(carpolo_state, carpolo)
void carpolo_state::video_start()
{
- m_sprite_sprite_collision_bitmap1 = auto_bitmap_ind16_alloc(machine(), SPRITE_WIDTH*2, SPRITE_HEIGHT*2);
- m_sprite_sprite_collision_bitmap2 = auto_bitmap_ind16_alloc(machine(), SPRITE_WIDTH*2, SPRITE_HEIGHT*2);
+ m_sprite_sprite_collision_bitmap1 = std::make_unique<bitmap_ind16>(SPRITE_WIDTH*2, SPRITE_HEIGHT*2);
+ m_sprite_sprite_collision_bitmap2 = std::make_unique<bitmap_ind16>(SPRITE_WIDTH*2, SPRITE_HEIGHT*2);
- m_sprite_goal_collision_bitmap1 = auto_bitmap_ind16_alloc(machine(), SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT);
- m_sprite_goal_collision_bitmap2 = auto_bitmap_ind16_alloc(machine(), SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT);
+ m_sprite_goal_collision_bitmap1 = std::make_unique<bitmap_ind16>(SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT);
+ m_sprite_goal_collision_bitmap2 = std::make_unique<bitmap_ind16>(SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT);
- m_sprite_border_collision_bitmap = auto_bitmap_ind16_alloc(machine(), SPRITE_WIDTH, SPRITE_HEIGHT);
+ m_sprite_border_collision_bitmap = std::make_unique<bitmap_ind16>(SPRITE_WIDTH, SPRITE_HEIGHT);
save_item(NAME(*m_sprite_sprite_collision_bitmap1));
save_item(NAME(*m_sprite_sprite_collision_bitmap2));
diff --git a/src/mame/video/cave.cpp b/src/mame/video/cave.cpp
index 19f051c0744..777d4a878fe 100644
--- a/src/mame/video/cave.cpp
+++ b/src/mame/video/cave.cpp
@@ -75,7 +75,7 @@ PALETTE_INIT_MEMBER(cave_state,cave)
for (int chip = 0; chip < 4; chip++)
{
/* create a 1:1 palette map covering everything */
- m_palette_map[chip] = auto_alloc_array(machine(), UINT16, palette.entries());
+ m_palette_map[chip] = std::make_unique<UINT16[]>(palette.entries());
int maxpens = m_paletteram[chip].bytes() / 2;
if (!maxpens)
@@ -1715,11 +1715,11 @@ UINT32 cave_state::screen_update_ppsatan_top(screen_device &screen, bitmap_rgb32
}
UINT32 cave_state::screen_update_ppsatan_left(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- crosshair_set_screen(machine(), 1, &screen);
+ machine().crosshair().set_screen(1, &screen);
return screen_update_ppsatan_core(screen, bitmap, cliprect, 1);
}
UINT32 cave_state::screen_update_ppsatan_right(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- crosshair_set_screen(machine(), 0, &screen);
+ machine().crosshair().set_screen(0, &screen);
return screen_update_ppsatan_core(screen, bitmap, cliprect, 2);
}
diff --git a/src/mame/video/cbasebal.cpp b/src/mame/video/cbasebal.cpp
index cd7a368de4f..c24370d5a2c 100644
--- a/src/mame/video/cbasebal.cpp
+++ b/src/mame/video/cbasebal.cpp
@@ -38,16 +38,16 @@ TILE_GET_INFO_MEMBER(cbasebal_state::get_fg_tile_info)
void cbasebal_state::video_start()
{
- m_textram = auto_alloc_array(machine(), UINT8, 0x1000);
- m_scrollram = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_textram = std::make_unique<UINT8[]>(0x1000);
+ m_scrollram = std::make_unique<UINT8[]>(0x1000);
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cbasebal_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cbasebal_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_fg_tilemap->set_transparent_pen(3);
- save_pointer(NAME(m_textram), 0x1000);
- save_pointer(NAME(m_scrollram), 0x1000);
+ save_pointer(NAME(m_textram.get()), 0x1000);
+ save_pointer(NAME(m_scrollram.get()), 0x1000);
}
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 11de0e5269a..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
@@ -21,8 +21,8 @@ Todo: Priority between tree0 and tree1.
void changela_state::video_start()
{
- m_memory_devices = auto_alloc_array(machine(), UINT8, 4 * 0x800); /* 0 - not connected, 1,2,3 - RAMs*/
- m_tree_ram = auto_alloc_array(machine(), UINT8, 2 * 0x20);
+ m_memory_devices = std::make_unique<UINT8[]>(4 * 0x800); /* 0 - not connected, 1,2,3 - RAMs*/
+ m_tree_ram = std::make_unique<UINT8[]>(2 * 0x20);
m_screen->register_screen_bitmap(m_obj0_bitmap);
m_screen->register_screen_bitmap(m_river_bitmap);
@@ -32,8 +32,8 @@ void changela_state::video_start()
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(changela_state::changela_scanline_callback),this));
m_scanline_timer->adjust(m_screen->time_until_pos(30), 30);
- save_pointer(NAME(m_memory_devices), 4 * 0x800);
- save_pointer(NAME(m_tree_ram), 2 * 0x20);
+ save_pointer(NAME(m_memory_devices.get()), 4 * 0x800);
+ save_pointer(NAME(m_tree_ram.get()), 2 * 0x20);
}
/**************************************************************************
@@ -173,9 +173,9 @@ void changela_state::draw_river( bitmap_ind16 &bitmap, int sy )
int sx, i, j;
UINT8* ROM = memregion("user2")->base();
- UINT8* RAM = m_memory_devices + 0x800;
+ UINT8* RAM = m_memory_devices.get() + 0x800;
UINT8* TILE_ROM = memregion("gfx1")->base();
- UINT8* TILE_RAM = m_memory_devices + 0x1000;
+ UINT8* TILE_RAM = m_memory_devices.get() + 0x1000;
UINT8* PROM = memregion("proms")->base();
int preload = ((sy < 32) ? 1 : 0);
@@ -352,13 +352,13 @@ void changela_state::draw_tree( bitmap_ind16 &bitmap, int sy, int tree_num )
/* State machine */
UINT8* ROM = memregion("user2")->base();
- UINT8* RAM = m_memory_devices + 0x840 + 0x40 * tree_num;
+ UINT8* RAM = m_memory_devices.get() + 0x840 + 0x40 * tree_num;
UINT8* PROM = memregion("proms")->base();
/* Tree Data */
- UINT8* RAM2 = m_tree_ram + 0x20 * tree_num;
+ UINT8* RAM2 = m_tree_ram.get() + 0x20 * tree_num;
UINT8* TILE_ROM = (tree_num ? (memregion("user3")->base() + 0x1000) : (memregion("gfx1")->base() + 0x2000));
- UINT8* TILE_RAM = (tree_num ? (memregion("user3")->base()) : (m_memory_devices + 0x1800));
+ UINT8* TILE_RAM = (tree_num ? (memregion("user3")->base()) : (m_memory_devices.get() + 0x1800));
int preload = ((sy < 32) ? 1 : 0);
diff --git a/src/mame/video/cheekyms.cpp b/src/mame/video/cheekyms.cpp
index 99a98580f82..572c2476575 100644
--- a/src/mame/video/cheekyms.cpp
+++ b/src/mame/video/cheekyms.cpp
@@ -96,7 +96,7 @@ void cheekyms_state::video_start()
width = m_screen->width();
height = m_screen->height();
- m_bitmap_buffer = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_bitmap_buffer = std::make_unique<bitmap_ind16>(width, height);
m_cm_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cheekyms_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_cm_tilemap->set_transparent_pen(0);
diff --git a/src/mame/video/chihiro.cpp b/src/mame/video/chihiro.cpp
index 3826afa828f..9f803c45651 100644
--- a/src/mame/video/chihiro.cpp
+++ b/src/mame/video/chihiro.cpp
@@ -1250,7 +1250,7 @@ inline UINT8 *nv2a_renderer::read_pixel(int x, int y, INT32 c[4])
if (type_rendertarget == NV2A_RT_TYPE::SWIZZLED)
offset = (dilated0[dilate_rendertarget][x] + dilated1[dilate_rendertarget][y]) * bytespixel_rendertarget;
- else // type_rendertarget == LINEAR*/
+ else // type_rendertarget == LINEAR
offset = pitch_rendertarget * y + x * bytespixel_rendertarget;
switch (colorformat_rendertarget) {
case NV2A_COLOR_FORMAT::R5G6B5:
@@ -2197,9 +2197,9 @@ int nv2a_renderer::read_vertices_0x1800(address_space & space, vertex_nv *destin
for (m = 0; m < limit; m++) {
if (indexesleft_count == 0) {
data = space.read_dword(address);
- i = (indexesleft_first + indexesleft_count) & 7;
- indexesleft[i] = data & 0xffff;
- indexesleft[(i + 1) & 7] = (data >> 16) & 0xffff;
+ i = indexesleft_first + indexesleft_count;
+ indexesleft[i & 1023] = data & 0xffff;
+ indexesleft[(i + 1) & 1023] = (data >> 16) & 0xffff;
indexesleft_count = indexesleft_count + 2;
address += 4;
c++;
@@ -2211,7 +2211,7 @@ int nv2a_renderer::read_vertices_0x1800(address_space & space, vertex_nv *destin
}
b = b >> 1;
}
- indexesleft_first = (indexesleft_first + 1) & 7;
+ indexesleft_first = (indexesleft_first + 1) & 1023;
indexesleft_count--;
}
return (int)c;
@@ -2231,8 +2231,8 @@ int nv2a_renderer::read_vertices_0x1808(address_space & space, vertex_nv *destin
for (m = 0; m < limit; m++) {
if (indexesleft_count == 0) {
data = space.read_dword(address);
- i = (indexesleft_first + indexesleft_count) & 7;
- indexesleft[i] = data;
+ i = indexesleft_first + indexesleft_count;
+ indexesleft[i & 1023] = data;
indexesleft_count = indexesleft_count + 1;
address += 4;
c++;
@@ -2244,7 +2244,7 @@ int nv2a_renderer::read_vertices_0x1808(address_space & space, vertex_nv *destin
}
b = b >> 1;
}
- indexesleft_first = (indexesleft_first + 1) & 7;
+ indexesleft_first = (indexesleft_first + 1) & 1023;
indexesleft_count--;
}
return (int)c;
@@ -2298,6 +2298,7 @@ void nv2a_renderer::convert_vertices_poly(vertex_nv *source, vertex_t *destinati
{
vertex_nv vert[4];
int m, u;
+ float t[4],v[4];
// take each vertex with its attributes and obtain data for drawing
// should use either the vertex program or transformation matrices
@@ -2305,15 +2306,33 @@ void nv2a_renderer::convert_vertices_poly(vertex_nv *source, vertex_t *destinati
// transformation matrices
// it is not implemented, so we pretend its always using screen coordinates
for (m = 0; m < count; m++) {
- destination[m].x = source[m].attribute[0].fv[0];
- destination[m].y = source[m].attribute[0].fv[1];
+ for (int i = 0; i < 4; i++) {
+ t[i] = 0;
+ for (int j = 0; j < 4; j++)
+ t[i] += matrix.modelview[i][j] * source[m].attribute[0].fv[j];
+ };
+ for (int i = 0; i < 4; i++) {
+ v[i] = 0;
+ for (int j = 0; j < 4; j++)
+ v[i] += matrix.projection[i][j] * t[j];
+ };
+ /*
+ for (int i = 0; i < 4; i++) {
+ v[i] *= matrix.scale[i];
+ }
+ for (int i = 0; i < 4; i++) {
+ v[i] += matrix.translate[i];
+ }
+ */
+ destination[m].x = v[0] / v[3]; // source[m].attribute[0].fv[0];
+ destination[m].y = v[1] / v[3]; // source[m].attribute[0].fv[1];
for (u = (int)VERTEX_PARAMETER::PARAM_COLOR_B; u <= (int)VERTEX_PARAMETER::PARAM_COLOR_A; u++) // 0=b 1=g 2=r 3=a
destination[m].p[u] = source[m].attribute[3].fv[u];
for (u = 0; u < 4; u++) {
destination[m].p[(int)VERTEX_PARAMETER::PARAM_TEXTURE0_U + u * 2] = source[m].attribute[9 + u].fv[0];
destination[m].p[(int)VERTEX_PARAMETER::PARAM_TEXTURE0_V + u * 2] = source[m].attribute[9 + u].fv[1];
}
- destination[m].p[(int)VERTEX_PARAMETER::PARAM_Z] = 0xffffff;
+ destination[m].p[(int)VERTEX_PARAMETER::PARAM_Z] = v[2] / v[3];
}
}
else {
@@ -2335,6 +2354,123 @@ void nv2a_renderer::convert_vertices_poly(vertex_nv *source, vertex_t *destinati
}
}
+void nv2a_renderer::clear_render_target(int what, UINT32 value)
+{
+ int m;
+ int xi, yi, xf, yf;
+ int x, y;
+ UINT32 color;
+ UINT8 *addr;
+ UINT32 mask;
+ UINT32 offset;
+
+ if (what == 0)
+ return;
+ mask = 0;
+ switch (colorformat_rendertarget) {
+ case NV2A_COLOR_FORMAT::R5G6B5:
+ if (what & 1)
+ mask = 0x1f;
+ if (what & 2)
+ mask = mask | 0x07e0;
+ if (what & 4)
+ mask = mask | 0xf800;
+ break;
+ case NV2A_COLOR_FORMAT::X8R8G8B8_Z8R8G8B8:
+ case NV2A_COLOR_FORMAT::X8R8G8B8_X8R8G8B8:
+ for (x = 3; x >= 0; x--) {
+ if (what & 8)
+ mask = (mask << 8) | 255;
+ what = what << 1;
+ }
+ break;
+ case NV2A_COLOR_FORMAT::A8R8G8B8:
+ for (x = 3; x >= 0; x--) {
+ if (what & 8)
+ mask = (mask << 8) | 255;
+ what = what << 1;
+ }
+ break;
+ case NV2A_COLOR_FORMAT::B8:
+ if (what & 1)
+ mask = 255;
+ break;
+ default:
+ return;
+ }
+ m = antialias_control;
+ if (antialiasing_rendertarget != 0)
+ m = 2;
+ else
+ m = 1;
+ xi = limits_rendertarget.left();
+ if (clear_rendertarget.left() > xi)
+ xi = clear_rendertarget.left();
+ xf = limits_rendertarget.right();
+ if (clear_rendertarget.right() < xf)
+ xf = clear_rendertarget.right();
+ yi = limits_rendertarget.top();
+ if (clear_rendertarget.top() > yi)
+ yi = clear_rendertarget.top();
+ yf = limits_rendertarget.bottom();
+ if (clear_rendertarget.bottom() < yf)
+ yf = clear_rendertarget.bottom();
+ xi = xi*m;
+ yi = yi*m;
+ xf = xf*m;
+ yf = yf*m;
+ for (y = yi; y <= yf; y++)
+ for (x = xi; x <= xf; x++) {
+ if (type_rendertarget == NV2A_RT_TYPE::SWIZZLED)
+ offset = (dilated0[dilate_rendertarget][x] + dilated1[dilate_rendertarget][y]) * bytespixel_rendertarget;
+ else // type_rendertarget == LINEAR
+ offset = pitch_rendertarget * y + x * bytespixel_rendertarget;
+ switch (colorformat_rendertarget) {
+ case NV2A_COLOR_FORMAT::R5G6B5:
+ addr = (UINT8 *)rendertarget + offset;
+ color = *((UINT16 *)addr);
+ break;
+ case NV2A_COLOR_FORMAT::X8R8G8B8_Z8R8G8B8:
+ case NV2A_COLOR_FORMAT::X8R8G8B8_X8R8G8B8:
+ addr = (UINT8 *)rendertarget + offset;
+ color = *((UINT32 *)addr);
+ break;
+ case NV2A_COLOR_FORMAT::A8R8G8B8:
+ addr = (UINT8 *)rendertarget + offset;
+ color = *((UINT32 *)addr);
+ break;
+ case NV2A_COLOR_FORMAT::B8:
+ addr = (UINT8 *)rendertarget + offset;
+ color = *addr;
+ break;
+ default:
+ return;
+ }
+ color = (color & ~mask) | (value & mask);
+ switch (colorformat_rendertarget) {
+ case NV2A_COLOR_FORMAT::R5G6B5:
+ *((UINT16 *)addr) = color;
+ break;
+ case NV2A_COLOR_FORMAT::X8R8G8B8_Z8R8G8B8:
+ case NV2A_COLOR_FORMAT::X8R8G8B8_X8R8G8B8:
+ *((UINT32 *)addr) = color;
+ break;
+ case NV2A_COLOR_FORMAT::A8R8G8B8:
+ *((UINT32 *)addr) = color;
+ break;
+ case NV2A_COLOR_FORMAT::B8:
+ *addr = color;
+ break;
+ default:
+ return;
+ }
+
+ }
+#ifdef LOG_NV2A
+ printf("clearscreen\n\r");
+#endif
+}
+
void nv2a_renderer::clear_depth_buffer(int what, UINT32 value)
{
int m;
@@ -2426,21 +2562,22 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
printf("A:%08X MTHD:%08X D:%08X\n\r",address,maddress,data);
#endif
if (maddress == 0x17fc) {
+ vertex_count = 0;
+ vertex_first = 0;
indexesleft_count = 0;
indexesleft_first = 0;
primitives_count = 0;
+ primitive_type = (NV2A_BEGIN_END)data;
countlen--;
}
if (maddress == 0x1810) {
// draw vertices
int offset, count;
- NV2A_BEGIN_END type;
UINT32 n;
render_delegate renderspans;
offset = data & 0xffffff;
count = (data >> 24) & 0xff;
- type = (NV2A_BEGIN_END)channel[chanel][subchannel].object.method[0x17fc / 4];
if (((channel[chanel][subchannel].object.method[0x1e60 / 4] & 7) > 0) && (combiner.used != 0)) {
renderspans = render_delegate(FUNC(nv2a_renderer::render_register_combiners), this);
}
@@ -2452,54 +2589,77 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
#ifdef LOG_NV2A
printf("vertex %d %d %d\n\r", type, offset, count);
#endif
- if (type == NV2A_BEGIN_END::QUADS) {
+ if (primitive_type == NV2A_BEGIN_END::QUADS) {
for (n = 0; n <= count; n += 4) {
- vertex_nv vert[4];
- vertex_t xy[4];
-
- read_vertices_0x1810(space, vert, n + offset, 4);
- convert_vertices_poly(vert, xy, 4);
- render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, xy); // 4 rgba, 4 texture units 2 uv
+ 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
+ vertex_first = (vertex_first + 4) & 1023;
+ vertex_count = vertex_count + 4;
wait();
}
}
- else if (type == NV2A_BEGIN_END::TRIANGLE_FAN) {
- vertex_nv vert[3];
- vertex_t xy[3];
-
- read_vertices_0x1810(space, vert, offset, 2);
- convert_vertices_poly(vert, xy, 2);
- count = count - 2;
- offset = offset + 2;
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLES) {
+ 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
+ vertex_first = (vertex_first + 3) & 1023;
+ vertex_count = vertex_count + 3;
+ wait();
+ }
+ }
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLE_FAN) {
+ if (vertex_count == 0) {
+ read_vertices_0x1810(space, vertex_software + 1024, offset, 1);
+ convert_vertices_poly(vertex_software + 1024, vertex_xy + 1024, 1);
+ read_vertices_0x1810(space, vertex_software, offset + 1, 1);
+ convert_vertices_poly(vertex_software, vertex_xy, 1);
+ count = count - 2;
+ offset = offset + 2;
+ vertex_first = 1;
+ vertex_count = 2;
+ }
+ // if software sends the vertices 0 1 2 3 4 5 6
+ // hardware will draw triangles made by (0,1,2) (0,2,3) (0,3,4) (0,4,5) (0,5,6)
for (n = 0; n <= count; n++) {
- read_vertices_0x1810(space, vert + (((n + 1) & 1) + 1), offset + n, 1);
- convert_vertices_poly(vert + (((n + 1) & 1) + 1), xy + (((n + 1) & 1) + 1), 1);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[(~(n + 1) & 1) + 1], xy[((n + 1) & 1) + 1]);
+ 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]);
+ vertex_first = (vertex_first + 1) & 1023;
+ vertex_count = vertex_count + 1;
wait();
}
}
- else if (type == NV2A_BEGIN_END::TRIANGLE_STRIP) {
- vertex_nv vert[4];
- vertex_t xy[4];
-
- read_vertices_0x1810(space, vert, offset, 2);
- convert_vertices_poly(vert, xy, 2);
- count = count - 2;
- offset = offset + 2;
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLE_STRIP) {
+ // if software sends the vertices 0 1 2 3 4 5 6
+ // hardware will draw triangles made by (0,1,2) (1,3,2) (2,3,4) (3,5,4) (4,5,6)
+ if (vertex_count == 0) {
+ read_vertices_0x1810(space, vertex_software, offset, 2);
+ convert_vertices_poly(vertex_software, vertex_xy, 2);
+ count = count - 2;
+ offset = offset + 2;
+ vertex_first = 2;
+ vertex_count = 2;
+ }
for (n = 0; n <= count; n++) {
- read_vertices_0x1810(space, vert + ((n + 2) & 3), offset + n, 1);
- convert_vertices_poly(vert + ((n + 2) & 3), xy + ((n + 2) & 3), 1);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[((n & 1) + n) & 3], xy[((~n & 1) + n) & 3], xy[(2 + n) & 3]);
+ 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]);
+ 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]);
+ vertex_first = (vertex_first + 1) & 1023;
+ vertex_count = vertex_count + 1;
wait();
}
}
else {
- machine().logerror("Unsupported primitive %d for method 0x1810\n", type);
+ machine().logerror("Unsupported primitive %d for method 0x1810\n", primitive_type);
}
countlen--;
}
if ((maddress == 0x1800) || (maddress == 0x1808)) {
- NV2A_BEGIN_END type;
UINT32 n;
render_delegate renderspans;
int mult;
@@ -2519,116 +2679,140 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
// vertices are selected from the vertex buffer using an array of indexes
// each dword after 1800 contains two 16 bit index values to select the vartices
// each dword after 1808 contains a 32 bit index value to select the vartices
- type = (NV2A_BEGIN_END)channel[chanel][subchannel].object.method[0x17fc / 4];
- if (type == NV2A_BEGIN_END::QUADS) {
+ if (primitive_type == NV2A_BEGIN_END::QUADS) {
while (1) {
- vertex_nv vert[4];
- vertex_t xy[4];
int c;
if ((countlen * mult + indexesleft_count) < 4)
break;
if (mult == 1)
- c = read_vertices_0x1808(space, vert, address, 4);
+ c = read_vertices_0x1808(space, vertex_software + vertex_first, address, 4);
else
- c = read_vertices_0x1800(space, vert, address, 4);
+ c = read_vertices_0x1800(space, vertex_software + vertex_first, address, 4);
address = address + c * 4;
countlen = countlen - c;
- convert_vertices_poly(vert, xy, 4);
- render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, xy); // 4 rgba, 4 texture units 2 uv
+ 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
+ vertex_first = (vertex_first + 4) & 1023;
+ vertex_count = vertex_count + 4;
wait();
}
}
- else if (type == NV2A_BEGIN_END::TRIANGLE_FAN) {
- if ((countlen * mult + indexesleft_count) >= 3) {
- vertex_nv vert[3];
- vertex_t xy[3];
- int c, count;
-
- if (mult == 1)
- c = read_vertices_0x1808(space, vert, address, 2);
- else
- c = read_vertices_0x1800(space, vert, address, 2);
- convert_vertices_poly(vert, xy, 2);
- address = address + c * 4;
- countlen = countlen - c;
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLE_FAN) {
+ int required, c, count;
+
+ required = 1;
+ if (vertex_count == 0)
+ required = 3;
+ if ((countlen * mult + indexesleft_count) >= required) {
+ if (vertex_count == 0) {
+ if (mult == 1)
+ c = read_vertices_0x1808(space, vertex_software + 1024, address, 1);
+ else
+ c = read_vertices_0x1800(space, vertex_software + 1024, address, 1);
+ convert_vertices_poly(vertex_software + 1024, vertex_xy + 1024, 1);
+ address = address + c * 4;
+ countlen = countlen - c;
+ if (mult == 1)
+ c = read_vertices_0x1808(space, vertex_software, address, 1);
+ else
+ c = read_vertices_0x1800(space, vertex_software, address, 1);
+ convert_vertices_poly(vertex_software, vertex_xy, 1);
+ address = address + c * 4;
+ countlen = countlen - c;
+ vertex_first = 1;
+ vertex_count = 2;
+ }
count = countlen * mult + indexesleft_count;
+ // if software sends the vertices 0 1 2 3 4 5 6
+ // hardware will draw triangles made by (0,1,2) (0,2,3) (0,3,4) (0,4,5) (0,5,6)
for (n = 1; n <= count; n++) {
if (mult == 1)
- c = read_vertices_0x1808(space, vert + ((n & 1) + 1), address, 1);
+ c = read_vertices_0x1808(space, vertex_software + vertex_first, address, 1);
else
- c = read_vertices_0x1800(space, vert + ((n & 1) + 1), address, 1);
-
- convert_vertices_poly(vert + ((n & 1) + 1), xy + ((n & 1) + 1), 1);
+ c = read_vertices_0x1800(space, vertex_software + vertex_first, address, 1);
+ 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, xy[0], xy[(~n & 1) + 1], xy[(n & 1) + 1]);
+ render_triangle(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();
}
}
}
- else if (type == NV2A_BEGIN_END::TRIANGLES) {
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLES) {
while (1) {
- vertex_nv vert[3];
- vertex_t xy[3];
int c;
if ((countlen * mult + indexesleft_count) < 3)
break;
if (mult == 1)
- c = read_vertices_0x1808(space, vert, address, 3);
+ c = read_vertices_0x1808(space, vertex_software + vertex_first, address, 3);
else
- c = read_vertices_0x1800(space, vert, address, 3);
+ c = read_vertices_0x1800(space, vertex_software + vertex_first, address, 3);
address = address + c * 4;
countlen = countlen - c;
- convert_vertices_poly(vert, xy, 3);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[1], xy[2]); // 4 rgba, 4 texture units 2 uv
+ 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
+ vertex_first = (vertex_first + 3) & 1023;
+ vertex_count = vertex_count + 3;
wait();
}
}
- else if (type == NV2A_BEGIN_END::TRIANGLE_STRIP) {
- if ((countlen * mult + indexesleft_count) >= 3) {
- vertex_nv vert[4];
- vertex_t xy[4];
- int c, count;
-
- if (mult == 1)
- c = read_vertices_0x1808(space, vert, address, 2);
- else
- c = read_vertices_0x1800(space, vert, address, 2);
- convert_vertices_poly(vert, xy, 2);
- address = address + c * 4;
- countlen = countlen - c;
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLE_STRIP) {
+ int required, c, count;
+
+ required = 1;
+ if (vertex_count == 0)
+ required = 3;
+ if ((countlen * mult + indexesleft_count) >= required) {
+ // if software sends the vertices 0 1 2 3 4 5 6
+ // hardware will draw triangles made by (0,1,2) (1,3,2) (2,3,4) (3,5,4) (4,5,6)
+ if (vertex_count == 0) {
+ if (mult == 1)
+ c = read_vertices_0x1808(space, vertex_software, address, 2);
+ else
+ c = read_vertices_0x1800(space, vertex_software, address, 2);
+ convert_vertices_poly(vertex_software, vertex_xy, 2);
+ address = address + c * 4;
+ countlen = countlen - c;
+ vertex_first = 2;
+ vertex_count = 2;
+ }
count = countlen * mult + indexesleft_count;
for (n = 0; n < count; n++) {
if (mult == 1)
- c = read_vertices_0x1808(space, vert + ((n + 2) & 3), address, 1);
+ c = read_vertices_0x1808(space, vertex_software + vertex_first, address, 1);
else
- c = read_vertices_0x1800(space, vert + ((n + 2) & 3), address, 1);
+ c = read_vertices_0x1800(space, vertex_software + vertex_first, address, 1);
address = address + c * 4;
countlen = countlen - c;
- convert_vertices_poly(vert + ((n + 2) & 3), xy + ((n + 2) & 3), 1);
- if (xy[(n + 2) & 3].y > 293800000.0f)
- xy[(n + 2) & 3].y = xy[(n + 2) & 3].y + 1.0f;
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[((n & 1) + n) & 3], xy[((~n & 1) + n) & 3], xy[(2 + n) & 3]);
+ 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]);
+ 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]);
+ vertex_first = (vertex_first + 1) & 1023;
+ vertex_count = vertex_count + 1;
wait();
}
}
}
else {
- machine().logerror("Unsupported primitive %d for method 0x1800/8\n", type);
+ machine().logerror("Unsupported primitive %d for method 0x1800/8\n", primitive_type);
countlen = 0;
}
while (countlen > 0) {
data = space.read_dword(address);
- n = (indexesleft_first + indexesleft_count) & 7;
+ n = indexesleft_first + indexesleft_count;
if (mult == 2) {
- indexesleft[n] = data & 0xffff;
- indexesleft[(n + 1) & 7] = (data >> 16) & 0xffff;
+ indexesleft[n & 1023] = data & 0xffff;
+ indexesleft[(n + 1) & 1023] = (data >> 16) & 0xffff;
indexesleft_count = indexesleft_count + 2;
}
else {
- indexesleft[n] = data;
+ indexesleft[n & 1023] = data;
indexesleft_count = indexesleft_count + 1;
}
address += 4;
@@ -2638,7 +2822,6 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
}
if (maddress == 0x1818) {
int n;
- NV2A_BEGIN_END type;
render_delegate renderspans;
if (((channel[chanel][subchannel].object.method[0x1e60 / 4] & 7) > 0) && (combiner.used != 0)) {
@@ -2654,14 +2837,30 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
// then countlen number of dwords with 1818
// end with 17fc primitive type 0
// at 1760 16 words specify the vertex format:for each possible vertex attribute the number of components (0=not present) and type of each
- type = (NV2A_BEGIN_END)channel[chanel][subchannel].object.method[0x17fc / 4];
- if (type == NV2A_BEGIN_END::TRIANGLE_FAN) {
- vertex_nv vert[3];
- vertex_t xy[3];
+ if (primitive_type == NV2A_BEGIN_END::QUADS) {
+ while (countlen > 0) {
+ int c;
+
+ c = read_vertices_0x1818(space, vertex_software + vertex_first, address, 4);
+ convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 4);
+ countlen = countlen - c;
+ if (countlen < 0) {
+ machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
+ countlen = 0;
+ break;
+ }
+ address = address + c * 4;
+ render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, vertex_xy); // 4 rgba, 4 texture units 2 uv
+ vertex_first = (vertex_first + 4) & 1023;
+ vertex_count = vertex_count + 4;
+ wait();
+ }
+ }
+ else if (primitive_type == NV2A_BEGIN_END::QUAD_STRIP) {
int c;
- c = read_vertices_0x1818(space, vert, address, 2);
- convert_vertices_poly(vert, xy, 2);
+ c = read_vertices_0x1818(space, vertex_software, address, 2);
+ convert_vertices_poly(vertex_software, vertex_xy, 2);
countlen = countlen - c;
if (countlen < 0) {
machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
@@ -2669,56 +2868,45 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
return 0;
}
address = address + c * 4;
- for (n = 1; countlen > 0; n++) {
- c = read_vertices_0x1818(space, vert + ((n & 1) + 1), address, 1);
+ for (n = 0; countlen > 0; n += 2) {
+ c = read_vertices_0x1818(space, vertex_software + ((n + 2) & 3), address + ((n + 2) & 3), 2);
+ convert_vertices_poly(vertex_software + ((n + 2) & 3), vertex_xy + ((n + 2) & 3), 2);
countlen = countlen - c;
if (countlen < 0) {
machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
countlen = 0;
- break;
+ return 0;
}
address = address + c * 4;
- convert_vertices_poly(vert + ((n & 1) + 1), xy + ((n & 1) + 1), 1);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[(~n & 1) + 1], xy[(n & 1) + 1]);
+ 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]);
wait();
}
}
- else if (type == NV2A_BEGIN_END::TRIANGLES) {
- while (countlen > 0) {
- vertex_nv vert[3];
- vertex_t xy[3];
- int c;
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLE_FAN) {
+ int c;
- c = read_vertices_0x1818(space, vert, address, 3);
- convert_vertices_poly(vert, xy, 3);
+ if (vertex_count == 0) {
+ c = read_vertices_0x1818(space, vertex_software + 1024, address, 1);
+ convert_vertices_poly(vertex_software + 1024, vertex_xy + 1024, 1);
+ countlen = countlen - c;
+ address = address + c * 4;
+ c = read_vertices_0x1818(space, vertex_software, address, 1);
+ convert_vertices_poly(vertex_software, vertex_xy, 1);
countlen = countlen - c;
if (countlen < 0) {
machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
countlen = 0;
- break;
+ return 0;
}
- address = address + c * 3;
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[1], xy[2]); // 4 rgba, 4 texture units 2 uv
- wait();
- }
- }
- else if (type == NV2A_BEGIN_END::TRIANGLE_STRIP) {
- vertex_nv vert[4];
- vertex_t xy[4];
- int c;
-
- c = read_vertices_0x1818(space, vert, address, 2);
- convert_vertices_poly(vert, xy, 2);
- countlen = countlen - c;
- if (countlen < 0) {
- machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
- countlen = 0;
- return 0;
+ address = address + c * 4;
+ vertex_first = 1;
+ vertex_count = 2;
}
- address = address + c * 4;
- for (n = 0; countlen > 0; n++) {
- c = read_vertices_0x1818(space, vert + ((n + 2) & 3), address, 1);
- convert_vertices_poly(vert + ((n + 2) & 3), xy + ((n + 2) & 3), 1);
+ // if software sends the vertices 0 1 2 3 4 5 6
+ // hardware will draw triangles made by (0,1,2) (0,2,3) (0,3,4) (0,4,5) (0,5,6)
+ while (countlen > 0) {
+ c = read_vertices_0x1818(space, vertex_software + vertex_first, address, 1);
countlen = countlen - c;
if (countlen < 0) {
machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
@@ -2726,18 +2914,19 @@ 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, xy[((n & 1) + n) & 3], xy[((~n & 1) + n) & 3], xy[(2 + n) & 3]);
+ 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]);
+ vertex_first = (vertex_first + 1) & 1023;
+ vertex_count = vertex_count + 1;
wait();
}
}
- else if (type == NV2A_BEGIN_END::QUADS) {
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLES) {
while (countlen > 0) {
- vertex_nv vert[4];
- vertex_t xy[4];
int c;
- c = read_vertices_0x1818(space, vert, address, 4);
- convert_vertices_poly(vert, xy, 4);
+ c = read_vertices_0x1818(space, vertex_software + vertex_first, address, 3);
+ convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 3);
countlen = countlen - c;
if (countlen < 0) {
machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
@@ -2745,27 +2934,20 @@ 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, xy); // 4 rgba, 4 texture units 2 uv
+ 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
+ vertex_first = (vertex_first + 3) & 1023;
+ vertex_count = vertex_count + 3;
wait();
}
}
- else if (type == NV2A_BEGIN_END::QUAD_STRIP) {
- vertex_nv vert[4];
- vertex_t xy[4];
+ else if (primitive_type == NV2A_BEGIN_END::TRIANGLE_STRIP) {
int c;
- c = read_vertices_0x1818(space, vert, address, 2);
- convert_vertices_poly(vert, xy, 2);
- countlen = countlen - c;
- if (countlen < 0) {
- machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
- countlen = 0;
- return 0;
- }
- address = address + c * 4;
- for (n = 0; countlen > 0; n += 2) {
- c = read_vertices_0x1818(space, vert + ((n + 2) & 3), address + ((n + 2) & 3), 2);
- convert_vertices_poly(vert + ((n + 2) & 3), xy + ((n + 2) & 3), 2);
+ // if software sends the vertices 0 1 2 3 4 5 6
+ // hardware will draw triangles made by (0,1,2) (1,3,2) (2,3,4) (3,5,4) (4,5,6)
+ if (vertex_count == 0) {
+ c = read_vertices_0x1818(space, vertex_software, address, 2);
+ convert_vertices_poly(vertex_software, vertex_xy, 2);
countlen = countlen - c;
if (countlen < 0) {
machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
@@ -2773,13 +2955,30 @@ 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, xy[n & 3], xy[(n + 1) & 3], xy[(n + 2) & 3]);
- render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[(n + 2) & 3], xy[(n + 1) & 3], xy[(n + 3) & 3]);
+ vertex_first = 2;
+ vertex_count = 2;
+ }
+ while (countlen > 0) {
+ c = read_vertices_0x1818(space, vertex_software + vertex_first, address, 1);
+ convert_vertices_poly(vertex_software + vertex_first, vertex_xy + vertex_first, 1);
+ countlen = countlen - c;
+ if (countlen < 0) {
+ machine().logerror("Method 0x1818 missing %d words to draw a complete primitive\n", -countlen);
+ countlen = 0;
+ break;
+ }
+ 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]);
+ 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]);
+ vertex_first = (vertex_first + 1) & 1023;
+ vertex_count = vertex_count + 1;
wait();
}
}
else {
- machine().logerror("Unsupported primitive %d for method 0x1818\n", type);
+ machine().logerror("Unsupported primitive %d for method 0x1818\n", primitive_type);
countlen = 0;
}
}
@@ -2853,44 +3052,25 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
countlen--;
}
if (maddress == 0x1d98) {
+ int x, w;
+
+ x = data & 0xffff;
+ w = (data >> 16) & 0xffff;
+ clear_rendertarget.setx(x, w);
countlen--;
}
if (maddress == 0x1d9c) {
+ int y, h;
+
+ y = data & 0xffff;
+ h = (data >> 16) & 0xffff;
+ clear_rendertarget.sety(y, h);
countlen--;
}
if (maddress == 0x1d94) {
- int m;
-
- m = antialias_control;
- if (antialiasing_rendertarget != 0)
- m = 2;
- else
- m = 1;
// possible buffers: color, depth, stencil
// clear framebuffer
- if ((data & 0xf0) == 0xf0) {
- if (bytespixel_rendertarget == 4) {
- bitmap_rgb32 bm(rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 4);
-
- UINT32 color = channel[chanel][subchannel].object.method[0x1d90 / 4];
- bm.fill(color);
- }
- else if (bytespixel_rendertarget == 2) {
- bitmap_ind16 bm((UINT16 *)rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 2);
-
- UINT16 color = channel[chanel][subchannel].object.method[0x1d90 / 4] & 0xffff;
-
- bm.fill(color);
- }
- else if (bytespixel_rendertarget == 1) {
- UINT8 color = channel[chanel][subchannel].object.method[0x1d90 / 4] & 0xff;
-
- memset(rendertarget, color, pitch_rendertarget*(limits_rendertarget.bottom() + 1) * m);
- }
-#ifdef LOG_NV2A
- printf("clearscreen\n\r");
-#endif
- }
+ clear_render_target((data >> 4) & 15, channel[chanel][subchannel].object.method[0x1d90 / 4]);
clear_depth_buffer(data & 3, channel[chanel][subchannel].object.method[0x1d8c / 4]);
countlen--;
}
@@ -3153,19 +3333,19 @@ int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UIN
// modelview matrix
if ((maddress >= 0x0480) && (maddress < 0x04c0)) {
maddress = (maddress - 0x0480) / 4;
- *(UINT32 *)(&matrix.modelview[maddress]) = data;
+ *(UINT32 *)(&matrix.modelview[maddress >> 2][maddress & 3]) = data;
countlen--;
}
// inverse modelview matrix
if ((maddress >= 0x0580) && (maddress < 0x05c0)) {
maddress = (maddress - 0x0580) / 4;
- *(UINT32 *)(&matrix.modelview_inverse[maddress]) = data;
+ *(UINT32 *)(&matrix.modelview_inverse[maddress >> 2][maddress & 3]) = data;
countlen--;
}
// projection matrix
if ((maddress >= 0x0680) && (maddress < 0x06c0)) {
maddress = (maddress - 0x0680) / 4;
- *(UINT32 *)(&matrix.projection[maddress]) = data;
+ *(UINT32 *)(&matrix.projection[maddress >> 2][maddress & 3]) = data;
countlen--;
}
// viewport translate
@@ -4157,7 +4337,12 @@ READ32_MEMBER(nv2a_renderer::geforce_r)
x = x ^ 0x08080808;
ret = x;
}
- if ((offset >= 0x00101000 / 4) && (offset < 0x00102000 / 4)) {
+ if ((offset >= 0x00100000 / 4) && (offset < 0x00101000 / 4)) {
+ //machine().logerror("NV_2A: read 100000[%06X] mask %08X value %08X\n",offset*4-0x00101000,mem_mask,ret);
+ if (offset == 0x100200 / 4)
+ return 3;
+ }
+ else if ((offset >= 0x00101000 / 4) && (offset < 0x00102000 / 4)) {
//machine().logerror("NV_2A: read STRAPS[%06X] mask %08X value %08X\n",offset*4-0x00101000,mem_mask,ret);
}
else if ((offset >= 0x00002000 / 4) && (offset < 0x00004000 / 4)) {
diff --git a/src/mame/video/cidelsa.cpp b/src/mame/video/cidelsa.cpp
index f942bf187fb..2bda7fe88cc 100644
--- a/src/mame/video/cidelsa.cpp
+++ b/src/mame/video/cidelsa.cpp
@@ -118,13 +118,13 @@ ADDRESS_MAP_END
void cidelsa_state::video_start()
{
// allocate memory
- m_pcbram = auto_alloc_array_clear(machine(), UINT8, CIDELSA_CHARRAM_SIZE);
- m_charram = auto_alloc_array_clear(machine(), UINT8, CIDELSA_CHARRAM_SIZE);
+ m_pcbram = make_unique_clear<UINT8[]>(CIDELSA_CHARRAM_SIZE);
+ m_charram = make_unique_clear<UINT8[]>(CIDELSA_CHARRAM_SIZE);
// register for state saving
save_item(NAME(m_cdp1869_pcb));
- save_pointer(NAME(m_pcbram), CIDELSA_CHARRAM_SIZE);
- save_pointer(NAME(m_charram), CIDELSA_CHARRAM_SIZE);
+ save_pointer(NAME(m_pcbram.get()), CIDELSA_CHARRAM_SIZE);
+ save_pointer(NAME(m_charram.get()), CIDELSA_CHARRAM_SIZE);
}
/* AY-3-8910 */
diff --git a/src/mame/video/cinemat.cpp b/src/mame/video/cinemat.cpp
index adad41b6740..09d17aad598 100644
--- a/src/mame/video/cinemat.cpp
+++ b/src/mame/video/cinemat.cpp
@@ -227,15 +227,15 @@ UINT32 cinemat_state::screen_update_spacewar(screen_device &screen, bitmap_rgb32
screen_update_cinemat(screen, bitmap, cliprect);
/* set the state of the artwork */
- output_set_value("pressed3", (~sw_option >> 0) & 1);
- output_set_value("pressed8", (~sw_option >> 1) & 1);
- output_set_value("pressed4", (~sw_option >> 2) & 1);
- output_set_value("pressed9", (~sw_option >> 3) & 1);
- output_set_value("pressed1", (~sw_option >> 4) & 1);
- output_set_value("pressed6", (~sw_option >> 5) & 1);
- output_set_value("pressed2", (~sw_option >> 6) & 1);
- output_set_value("pressed7", (~sw_option >> 7) & 1);
- output_set_value("pressed5", (~sw_option >> 10) & 1);
- output_set_value("pressed0", (~sw_option >> 11) & 1);
+ output().set_value("pressed3", (~sw_option >> 0) & 1);
+ output().set_value("pressed8", (~sw_option >> 1) & 1);
+ output().set_value("pressed4", (~sw_option >> 2) & 1);
+ output().set_value("pressed9", (~sw_option >> 3) & 1);
+ output().set_value("pressed1", (~sw_option >> 4) & 1);
+ output().set_value("pressed6", (~sw_option >> 5) & 1);
+ output().set_value("pressed2", (~sw_option >> 6) & 1);
+ output().set_value("pressed7", (~sw_option >> 7) & 1);
+ output().set_value("pressed5", (~sw_option >> 10) & 1);
+ output().set_value("pressed0", (~sw_option >> 11) & 1);
return 0;
}
diff --git a/src/mame/video/cischeat.cpp b/src/mame/video/cischeat.cpp
index 01df6c29bbf..92d0fcac868 100644
--- a/src/mame/video/cischeat.cpp
+++ b/src/mame/video/cischeat.cpp
@@ -329,10 +329,10 @@ WRITE16_MEMBER(cischeat_state::bigrun_vregs_w)
case 0x0000/2 : // leds
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0,new_data & 0x01);
- coin_counter_w(machine(), 1,new_data & 0x02);
- set_led_status(machine(), 0,new_data & 0x10); // start button
- set_led_status(machine(), 1,new_data & 0x20); // ?
+ machine().bookkeeping().coin_counter_w(0,new_data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,new_data & 0x02);
+ output().set_led_value(0,new_data & 0x10); // start button
+ output().set_led_value(1,new_data & 0x20); // ?
}
break;
@@ -341,7 +341,7 @@ WRITE16_MEMBER(cischeat_state::bigrun_vregs_w)
case 0x0004/2 : // motor (seat?)
if (ACCESSING_BITS_0_7)
- set_led_status(machine(), 2, (new_data != old_data) ? 1 : 0);
+ output().set_led_value(2, (new_data != old_data) ? 1 : 0);
break;
case 0x0006/2 : // motor (wheel?)
@@ -422,10 +422,10 @@ WRITE16_MEMBER(cischeat_state::cischeat_vregs_w)
case 0x0000/2 : // leds
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0,new_data & 0x01);
- coin_counter_w(machine(), 1,new_data & 0x02);
- set_led_status(machine(), 0,new_data & 0x10); // start button
- set_led_status(machine(), 1,new_data & 0x20); // ?
+ machine().bookkeeping().coin_counter_w(0,new_data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,new_data & 0x02);
+ output().set_led_value(0,new_data & 0x10); // start button
+ output().set_led_value(1,new_data & 0x20); // ?
}
break;
@@ -434,7 +434,7 @@ WRITE16_MEMBER(cischeat_state::cischeat_vregs_w)
case 0x0004/2 : // motor (seat?)
if (ACCESSING_BITS_0_7)
- set_led_status(machine(), 2, (new_data != old_data) ? 1 : 0);
+ output().set_led_value(2, (new_data != old_data) ? 1 : 0);
break;
case 0x0006/2 : // motor (wheel?)
@@ -563,12 +563,12 @@ CPU #0 PC 00235C : Warning, vreg 0006 <- 0000
case 0x0004/2 :
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0,new_data & 0x01);
- coin_counter_w(machine(), 1,new_data & 0x02);
- set_led_status(machine(), 0,new_data & 0x04); // start button
- set_led_status(machine(), 1,new_data & 0x20); // ?
+ machine().bookkeeping().coin_counter_w(0,new_data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,new_data & 0x02);
+ output().set_led_value(0,new_data & 0x04); // start button
+ output().set_led_value(1,new_data & 0x20); // ?
// wheel | seat motor
- set_led_status(machine(), 2, ((new_data >> 3) | (new_data >> 4)) & 1 );
+ output().set_led_value(2, ((new_data >> 3) | (new_data >> 4)) & 1 );
}
break;
case 0x0014/2 : break;
@@ -1415,6 +1415,15 @@ if ( machine().input().code_pressed(KEYCODE_Z) || machine().input().code_pressed
scudhamm_motor_pos_r(space,0,0xffff),
scudhamm_motor_status_r(space,0,0xffff),
scudhamm_analog_r(space,0,0xffff) );
+
+#if 0
+ // captflag
+ {
+ popmessage( "[%04x] [%04x]\nLEDS %04x", m_captflag_motor_command[LEFT], m_captflag_motor_command[RIGHT], m_captflag_leds );
+ m_captflag_motor_command[LEFT] = m_captflag_motor_command[RIGHT] = 0;
+ }
+#endif
+
}
#endif
diff --git a/src/mame/video/cloak.cpp b/src/mame/video/cloak.cpp
index d0951091be2..b9916328679 100644
--- a/src/mame/video/cloak.cpp
+++ b/src/mame/video/cloak.cpp
@@ -49,7 +49,7 @@ WRITE8_MEMBER(cloak_state::cloak_paletteram_w)
void cloak_state::set_pen(int i)
{
- UINT16 *palette_ram = m_palette_ram;
+ UINT16 *palette_ram = m_palette_ram.get();
static const int resistances[3] = { 10000, 4700, 2200 };
double weights[3];
@@ -86,8 +86,8 @@ void cloak_state::set_pen(int i)
void cloak_state::set_current_bitmap_videoram_pointer()
{
- m_current_bitmap_videoram_accessed = m_bitmap_videoram_selected ? m_bitmap_videoram1 : m_bitmap_videoram2;
- m_current_bitmap_videoram_displayed = m_bitmap_videoram_selected ? m_bitmap_videoram2 : m_bitmap_videoram1;
+ m_current_bitmap_videoram_accessed = m_bitmap_videoram_selected ? m_bitmap_videoram1.get() : m_bitmap_videoram2.get();
+ m_current_bitmap_videoram_displayed = m_bitmap_videoram_selected ? m_bitmap_videoram2.get() : m_bitmap_videoram1.get();
}
WRITE8_MEMBER(cloak_state::cloak_clearbmp_w)
@@ -163,18 +163,18 @@ void cloak_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cloak_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
- m_bitmap_videoram1 = auto_alloc_array(machine(), UINT8, 256*256);
- m_bitmap_videoram2 = auto_alloc_array(machine(), UINT8, 256*256);
- m_palette_ram = auto_alloc_array(machine(), UINT16, NUM_PENS);
+ m_bitmap_videoram1 = std::make_unique<UINT8[]>(256*256);
+ m_bitmap_videoram2 = std::make_unique<UINT8[]>(256*256);
+ m_palette_ram = std::make_unique<UINT16[]>(NUM_PENS);
set_current_bitmap_videoram_pointer();
save_item(NAME(m_bitmap_videoram_address_x));
save_item(NAME(m_bitmap_videoram_address_y));
save_item(NAME(m_bitmap_videoram_selected));
- save_pointer(NAME(m_bitmap_videoram1), 256*256);
- save_pointer(NAME(m_bitmap_videoram2), 256*256);
- save_pointer(NAME(m_palette_ram), NUM_PENS);
+ save_pointer(NAME(m_bitmap_videoram1.get()), 256*256);
+ save_pointer(NAME(m_bitmap_videoram2.get()), 256*256);
+ save_pointer(NAME(m_palette_ram.get()), NUM_PENS);
machine().save().register_postload(save_prepost_delegate(FUNC(cloak_state::set_current_bitmap_videoram_pointer), this));
}
diff --git a/src/mame/video/cloud9.cpp b/src/mame/video/cloud9.cpp
index 0db0912de0a..23f382a9751 100644
--- a/src/mame/video/cloud9.cpp
+++ b/src/mame/video/cloud9.cpp
@@ -22,8 +22,8 @@ void cloud9_state::video_start()
static const int resistances[3] = { 22000, 10000, 4700 };
/* allocate second bank of videoram */
- m_videoram = auto_alloc_array(machine(), UINT8, 0x8000);
- membank("bank1")->set_base(m_videoram);
+ m_videoram = std::make_unique<UINT8[]>(0x8000);
+ membank("bank1")->set_base(m_videoram.get());
/* get pointers to our PROMs */
m_syncprom = memregion("proms")->base() + 0x000;
@@ -40,7 +40,7 @@ void cloud9_state::video_start()
m_screen->register_screen_bitmap(m_spritebitmap);
/* register for savestates */
- save_pointer(NAME(m_videoram), 0x8000);
+ save_pointer(NAME(m_videoram.get()), 0x8000);
save_item(NAME(m_video_control));
save_item(NAME(m_bitmode_addr));
}
diff --git a/src/mame/video/combatsc.cpp b/src/mame/video/combatsc.cpp
index e02cb1eb618..c22edbce232 100644
--- a/src/mame/video/combatsc.cpp
+++ b/src/mame/video/combatsc.cpp
@@ -258,8 +258,8 @@ VIDEO_START_MEMBER(combatsc_state,combatsc)
m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_tile_info1),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_textlayer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_text_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
- m_spriteram[0] = auto_alloc_array_clear(machine(), UINT8, 0x800);
- m_spriteram[1] = auto_alloc_array_clear(machine(), UINT8, 0x800);
+ m_spriteram[0] = make_unique_clear<UINT8[]>(0x800);
+ m_spriteram[1] = make_unique_clear<UINT8[]>(0x800);
m_bg_tilemap[0]->set_transparent_pen(0);
m_bg_tilemap[1]->set_transparent_pen(0);
@@ -267,8 +267,8 @@ VIDEO_START_MEMBER(combatsc_state,combatsc)
m_textlayer->set_scroll_rows(32);
- save_pointer(NAME(m_spriteram[0]), 0x800);
- save_pointer(NAME(m_spriteram[1]), 0x800);
+ save_pointer(NAME(m_spriteram[0].get()), 0x800);
+ save_pointer(NAME(m_spriteram[1].get()), 0x800);
}
VIDEO_START_MEMBER(combatsc_state,combatscb)
@@ -277,8 +277,8 @@ VIDEO_START_MEMBER(combatsc_state,combatscb)
m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_tile_info1_bootleg),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_textlayer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_text_info_bootleg),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
- m_spriteram[0] = auto_alloc_array_clear(machine(), UINT8, 0x800);
- m_spriteram[1] = auto_alloc_array_clear(machine(), UINT8, 0x800);
+ m_spriteram[0] = make_unique_clear<UINT8[]>(0x800);
+ m_spriteram[1] = make_unique_clear<UINT8[]>(0x800);
m_bg_tilemap[0]->set_transparent_pen(0);
m_bg_tilemap[1]->set_transparent_pen(0);
@@ -287,8 +287,8 @@ VIDEO_START_MEMBER(combatsc_state,combatscb)
m_bg_tilemap[0]->set_scroll_rows(32);
m_bg_tilemap[1]->set_scroll_rows(32);
- save_pointer(NAME(m_spriteram[0]), 0x800);
- save_pointer(NAME(m_spriteram[1]), 0x800);
+ save_pointer(NAME(m_spriteram[0].get()), 0x800);
+ save_pointer(NAME(m_spriteram[1].get()), 0x800);
}
/***************************************************************************
@@ -330,9 +330,9 @@ WRITE8_MEMBER(combatsc_state::combatsc_pf_control_w)
if (offset == 3)
{
if (data & 0x08)
- memcpy(m_spriteram[m_video_circuit], m_page[m_video_circuit] + 0x1000, 0x800);
+ memcpy(m_spriteram[m_video_circuit].get(), m_page[m_video_circuit] + 0x1000, 0x800);
else
- memcpy(m_spriteram[m_video_circuit], m_page[m_video_circuit] + 0x1800, 0x800);
+ memcpy(m_spriteram[m_video_circuit].get(), m_page[m_video_circuit] + 0x1800, 0x800);
}
}
@@ -406,8 +406,8 @@ UINT32 combatsc_state::screen_update_combatsc(screen_device &screen, bitmap_ind1
m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 1, 2);
/* we use the priority buffer so sprites are drawn front to back */
- draw_sprites(bitmap, cliprect, m_spriteram[1], 1, screen.priority(), 0x0f00);
- draw_sprites(bitmap, cliprect, m_spriteram[0], 0, screen.priority(), 0x4444);
+ draw_sprites(bitmap, cliprect, m_spriteram[1].get(), 1, screen.priority(), 0x0f00);
+ draw_sprites(bitmap, cliprect, m_spriteram[0].get(), 0, screen.priority(), 0x4444);
}
else
{
@@ -417,8 +417,8 @@ UINT32 combatsc_state::screen_update_combatsc(screen_device &screen, bitmap_ind1
m_bg_tilemap[1]->draw(screen, bitmap, cliprect, 0, 8);
/* we use the priority buffer so sprites are drawn front to back */
- draw_sprites(bitmap, cliprect, m_spriteram[1], 1, screen.priority(), 0x0f00);
- draw_sprites(bitmap, cliprect, m_spriteram[0], 0, screen.priority(), 0x4444);
+ draw_sprites(bitmap, cliprect, m_spriteram[1].get(), 1, screen.priority(), 0x0f00);
+ draw_sprites(bitmap, cliprect, m_spriteram[0].get(), 0, screen.priority(), 0x4444);
}
if (m_k007121_1->ctrlram_r(space, 1) & 0x08)
diff --git a/src/mame/video/commando.cpp b/src/mame/video/commando.cpp
index 26a5ebeabb6..4280c867777 100644
--- a/src/mame/video/commando.cpp
+++ b/src/mame/video/commando.cpp
@@ -51,8 +51,8 @@ WRITE8_MEMBER(commando_state::commando_scrolly_w)
WRITE8_MEMBER(commando_state::commando_c804_w)
{
// bits 0 and 1 are coin counters
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
// bit 4 resets the sound CPU
m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
diff --git a/src/mame/video/contra.cpp b/src/mame/video/contra.cpp
index 4e639e9e7ba..2728f0378ac 100644
--- a/src/mame/video/contra.cpp
+++ b/src/mame/video/contra.cpp
@@ -147,8 +147,8 @@ void contra_state::video_start()
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(contra_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(contra_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
- m_buffered_spriteram = auto_alloc_array(machine(), UINT8, 0x800);
- m_buffered_spriteram_2 = auto_alloc_array(machine(), UINT8, 0x800);
+ m_buffered_spriteram = std::make_unique<UINT8[]>(0x800);
+ m_buffered_spriteram_2 = std::make_unique<UINT8[]>(0x800);
m_bg_clip = m_screen->visible_area();
m_bg_clip.min_x += 40;
@@ -161,8 +161,8 @@ void contra_state::video_start()
m_fg_tilemap->set_transparent_pen(0);
- save_pointer(NAME(m_buffered_spriteram), 0x800);
- save_pointer(NAME(m_buffered_spriteram_2), 0x800);
+ save_pointer(NAME(m_buffered_spriteram.get()), 0x800);
+ save_pointer(NAME(m_buffered_spriteram_2.get()), 0x800);
}
@@ -215,9 +215,9 @@ WRITE8_MEMBER(contra_state::contra_K007121_ctrl_0_w)
if (offset == 3)
{
if ((data & 0x8) == 0)
- memcpy(m_buffered_spriteram, m_spriteram + 0x800, 0x800);
+ memcpy(m_buffered_spriteram.get(), m_spriteram + 0x800, 0x800);
else
- memcpy(m_buffered_spriteram, m_spriteram, 0x800);
+ memcpy(m_buffered_spriteram.get(), m_spriteram, 0x800);
}
if (offset == 6)
@@ -239,9 +239,9 @@ WRITE8_MEMBER(contra_state::contra_K007121_ctrl_1_w)
if (offset == 3)
{
if ((data & 0x8) == 0)
- memcpy(m_buffered_spriteram_2, m_spriteram + 0x2800, 0x800);
+ memcpy(m_buffered_spriteram_2.get(), m_spriteram + 0x2800, 0x800);
else
- memcpy(m_buffered_spriteram_2, m_spriteram + 0x2000, 0x800);
+ memcpy(m_buffered_spriteram_2.get(), m_spriteram + 0x2000, 0x800);
}
if (offset == 6)
{
@@ -270,9 +270,9 @@ void contra_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect,
const UINT8 *source;
if (bank == 0)
- source = m_buffered_spriteram;
+ source = m_buffered_spriteram.get();
else
- source = m_buffered_spriteram_2;
+ source = m_buffered_spriteram_2.get();
k007121->sprites_draw(bitmap, cliprect, m_gfxdecode->gfx(bank), m_palette, source, base_color, 40, 0, priority_bitmap, (UINT32)-1);
}
diff --git a/src/mame/video/cop01.cpp b/src/mame/video/cop01.cpp
index ca29e24db63..1ad3183a157 100644
--- a/src/mame/video/cop01.cpp
+++ b/src/mame/video/cop01.cpp
@@ -146,8 +146,8 @@ WRITE8_MEMBER(cop01_state::cop01_vreg_w)
if (offset == 0)
{
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
flip_screen_set(data & 4);
}
}
diff --git a/src/mame/video/cps1.cpp b/src/mame/video/cps1.cpp
index 0e91647975c..790db240802 100644
--- a/src/mame/video/cps1.cpp
+++ b/src/mame/video/cps1.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
@@ -463,7 +463,7 @@ The games seem to use them to mark platforms, kill zones and no-go areas.
#define CPS_B_14 0x1e,0x0404, __not_applicable__, 0x12,{0x14,0x16,0x18,0x1a},0x1c, {0x08,0x20,0x10,0x00,0x00}
#define CPS_B_15 0x0e,0x0405, __not_applicable__, 0x02,{0x04,0x06,0x08,0x0a},0x0c, {0x04,0x02,0x20,0x00,0x00}
#define CPS_B_16 0x00,0x0406, __not_applicable__, 0x0c,{0x0a,0x08,0x06,0x04},0x02, {0x10,0x0a,0x0a,0x00,0x00}
-#define CPS_B_17 0x08,0x0407, __not_applicable__, 0x14,{0x12,0x10,0x0e,0x0c},0x0a, {0x08,0x10,0x02,0x00,0x00}
+#define CPS_B_17 0x08,0x0407, __not_applicable__, 0x14,{0x12,0x10,0x0e,0x0c},0x0a, {0x08,0x14,0x02,0x00,0x00} // the sf2 -> strider conversion needs 0x04 for the 2nd layer enable on one level, gfx confirmed to appear on the PCB, register at the time is 0x8e, so 0x10 is not set.
#define CPS_B_18 0x10,0x0408, __not_applicable__, 0x1c,{0x1a,0x18,0x16,0x14},0x12, {0x10,0x08,0x02,0x00,0x00}
#define CPS_B_21_DEF 0x32, -1, 0x00,0x02,0x04,0x06, 0x08, -1, -1, 0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x02,0x04,0x08,0x30,0x30} // pang3 sets layer enable to 0x26 on startup
#define CPS_B_21_BT1 0x32,0x0800, 0x0e,0x0c,0x0a,0x08, 0x06,0x04,0x02, 0x28,{0x26,0x24,0x22,0x20},0x30, {0x20,0x04,0x08,0x12,0x12}
@@ -1402,6 +1402,7 @@ static const struct CPS1config cps1_config_table[]=
{"daimakair", CPS_B_21_DEF, mapper_DAM63B }, // equivalent to DM620, also CPS_B_21_DEF is equivalent to CPS_B_01
{"strider", CPS_B_01, mapper_ST24M1 },
{"striderua", CPS_B_01, mapper_ST24M1 }, // wrong, this set uses ST24B2, still not dumped
+ {"strideruc", CPS_B_17, mapper_ST24M1 }, // wrong?
{"striderj", CPS_B_01, mapper_ST22B }, // equivalent to ST24M1
{"striderjr", CPS_B_21_DEF, mapper_ST24M1 }, // wrong, this set uses STH63B, still not dumped
{"dynwar", CPS_B_02, mapper_TK22B }, // wrong, this set uses TK24B1, dumped but equations still not added
@@ -1517,6 +1518,7 @@ static const struct CPS1config cps1_config_table[]=
{"sf2v004", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2acc", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2ceblp", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2cebltw", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2acca", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2accp2", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2amf", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, // probably wrong but this set is not completely dumped anyway
@@ -1818,15 +1820,15 @@ WRITE16_MEMBER(cps_state::cps1_cps_b_w)
{
if (m_game_config->cpsb_value == 0x0402) // Mercs (CN2 connector)
{
- coin_lockout_w(machine(), 2, ~data & 0x01);
- set_led_status(machine(), 0, data & 0x02);
- set_led_status(machine(), 1, data & 0x04);
- set_led_status(machine(), 2, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x01);
+ output().set_led_value(0, data & 0x02);
+ output().set_led_value(1, data & 0x04);
+ output().set_led_value(2, data & 0x08);
}
else // kod, captcomm, knights
{
- coin_lockout_w(machine(), 2, ~data & 0x02);
- coin_lockout_w(machine(), 3, ~data & 0x08);
+ machine().bookkeeping().coin_lockout_w(2, ~data & 0x02);
+ machine().bookkeeping().coin_lockout_w(3, ~data & 0x08);
}
}
}
@@ -2222,10 +2224,10 @@ VIDEO_START_MEMBER(cps_state,cps)
for (i = 0; i < cps1_palette_entries * 16; i++)
m_palette->set_pen_color(i, rgb_t(0,0,0));
- m_buffered_obj = auto_alloc_array_clear(machine(), UINT16, m_obj_size / 2);
+ m_buffered_obj = make_unique_clear<UINT16[]>(m_obj_size / 2);
if (m_cps_version == 2)
- m_cps2_buffered_obj = auto_alloc_array_clear(machine(), UINT16, m_cps2_obj_size / 2);
+ m_cps2_buffered_obj = make_unique_clear<UINT16[]>(m_cps2_obj_size / 2);
/* clear RAM regions */
memset(m_gfxram, 0, m_gfxram.bytes()); /* Clear GFX RAM */
@@ -2280,11 +2282,11 @@ VIDEO_START_MEMBER(cps_state,cps)
save_item(NAME(m_pri_ctrl));
save_item(NAME(m_objram_bank));
- save_pointer(NAME(m_buffered_obj), m_obj_size / 2);
+ save_pointer(NAME(m_buffered_obj.get()), m_obj_size / 2);
if (m_cps_version == 2)
{
save_item(NAME(m_cps2_last_sprite_offset));
- save_pointer(NAME(m_cps2_buffered_obj), m_cps2_obj_size / 2);
+ save_pointer(NAME(m_cps2_buffered_obj.get()), m_cps2_obj_size / 2);
}
machine().save().register_postload(save_prepost_delegate(FUNC(cps_state::cps1_get_video_base), this));
@@ -2443,7 +2445,7 @@ void cps_state::cps1_render_sprites( screen_device &screen, bitmap_ind16 &bitmap
int i, baseadd;
- UINT16 *base = m_buffered_obj;
+ UINT16 *base = m_buffered_obj.get();
/* some sf2 hacks draw the sprites in reverse order */
if ((m_game_config->bootleg_kludge == 1) || (m_game_config->bootleg_kludge == 2) || (m_game_config->bootleg_kludge == 3))
@@ -2636,7 +2638,7 @@ UINT16 *cps_state::cps2_objbase()
void cps_state::cps2_find_last_sprite() /* Find the offset of last sprite */
{
int offset = 0;
- UINT16 *base = m_cps2_buffered_obj;
+ UINT16 *base = m_cps2_buffered_obj.get();
/* Locate the end of table marker */
while (offset < m_cps2_obj_size / 2)
@@ -2675,7 +2677,7 @@ void cps_state::cps2_render_sprites( screen_device &screen, bitmap_ind16 &bitmap
}
int i;
- UINT16 *base = m_cps2_buffered_obj;
+ UINT16 *base = m_cps2_buffered_obj.get();
int xoffs = 64 - m_output[CPS2_OBJ_XOFFS /2];
int yoffs = 16 - m_output[CPS2_OBJ_YOFFS /2];
@@ -2804,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]))
{
@@ -2965,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;
@@ -3065,7 +3070,7 @@ void cps_state::screen_eof_cps1(screen_device &screen, bool state)
if (m_cps_version == 1)
{
/* CPS1 sprites have to be delayed one frame */
- memcpy(m_buffered_obj, m_obj, m_obj_size);
+ memcpy(m_buffered_obj.get(), m_obj, m_obj_size);
}
}
}
@@ -3078,5 +3083,5 @@ void cps_state::cps2_set_sprite_priorities()
void cps_state::cps2_objram_latch()
{
cps2_set_sprite_priorities();
- memcpy(m_cps2_buffered_obj, cps2_objbase(), m_cps2_obj_size);
+ memcpy(m_cps2_buffered_obj.get(), cps2_objbase(), m_cps2_obj_size);
}
diff --git a/src/mame/video/crgolf.cpp b/src/mame/video/crgolf.cpp
index 96d9664de6c..9934a78a5b9 100644
--- a/src/mame/video/crgolf.cpp
+++ b/src/mame/video/crgolf.cpp
@@ -92,12 +92,12 @@ void crgolf_state::get_pens( pen_t *pens )
VIDEO_START_MEMBER(crgolf_state,crgolf)
{
/* allocate memory for the two bitmaps */
- m_videoram_a = auto_alloc_array(machine(), UINT8, VIDEORAM_SIZE);
- m_videoram_b = auto_alloc_array(machine(), UINT8, VIDEORAM_SIZE);
+ m_videoram_a = std::make_unique<UINT8[]>(VIDEORAM_SIZE);
+ m_videoram_b = std::make_unique<UINT8[]>(VIDEORAM_SIZE);
/* register for save states */
- save_pointer(NAME(m_videoram_a), VIDEORAM_SIZE);
- save_pointer(NAME(m_videoram_b), VIDEORAM_SIZE);
+ save_pointer(NAME(m_videoram_a.get()), VIDEORAM_SIZE);
+ save_pointer(NAME(m_videoram_b.get()), VIDEORAM_SIZE);
}
diff --git a/src/mame/video/crt.cpp b/src/mame/video/crt.cpp
index e69fcfa9b70..524696f7e17 100644
--- a/src/mame/video/crt.cpp
+++ b/src/mame/video/crt.cpp
@@ -71,7 +71,7 @@ void crt_device::device_start()
{
/* alloc the arrays */
m_list = auto_alloc_array(machine(), crt_point, m_window_width * m_window_height);
- m_list_head = auto_alloc_array(machine(), int, m_window_height);
+ m_list_head = std::make_unique<int[]>(m_window_height);
/* fill with black and set up list as empty */
for (int i = 0; i < (m_window_width * m_window_height); i++)
diff --git a/src/mame/video/crt.h b/src/mame/video/crt.h
index 10d4b6e8539..41eb10da2a1 100644
--- a/src/mame/video/crt.h
+++ b/src/mame/video/crt.h
@@ -73,7 +73,7 @@ protected:
private:
crt_point *m_list; /* array of (crt_window_width*crt_window_height) point */
- int *m_list_head; /* head of the list of lit pixels (index in the array) */
+ std::unique_ptr<int[]> m_list_head; /* head of the list of lit pixels (index in the array) */
/* keep a separate list for each display line (makes the video code slightly faster) */
int m_decay_counter; /* incremented each frame (tells for how many frames the CRT has decayed between two screen refresh) */
diff --git a/src/mame/video/cvs.cpp b/src/mame/video/cvs.cpp
index 91a8dba64a8..25165534cd8 100644
--- a/src/mame/video/cvs.cpp
+++ b/src/mame/video/cvs.cpp
@@ -90,8 +90,8 @@ WRITE8_MEMBER(cvs_state::cvs_video_fx_w)
if (data & 0x04) logerror(" SCREEN ROTATE\n");
if (data & 0x08) logerror(" SHADE BRIGHTER TO LEFT\n");
- set_led_status(machine(), 1, data & 0x10); /* lamp 1 */
- set_led_status(machine(), 2, data & 0x20); /* lamp 2 */
+ output().set_led_value(1, data & 0x10); /* lamp 1 */
+ output().set_led_value(2, data & 0x20); /* lamp 2 */
if (data & 0x40) logerror(" SHADE BRIGHTER TO BOTTOM\n");
if (data & 0x80) logerror(" SHADE BRIGHTER TO TOP\n");
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/dcheese.cpp b/src/mame/video/dcheese.cpp
index 0bef838655b..98cfaa3611e 100644
--- a/src/mame/video/dcheese.cpp
+++ b/src/mame/video/dcheese.cpp
@@ -97,7 +97,7 @@ void dcheese_state::device_timer(emu_timer &timer, device_timer_id id, int param
void dcheese_state::video_start()
{
/* the destination bitmap is not directly accessible to the CPU */
- m_dstbitmap = auto_bitmap_ind16_alloc(machine(), DSTBITMAP_WIDTH, DSTBITMAP_HEIGHT);
+ m_dstbitmap = std::make_unique<bitmap_ind16>(DSTBITMAP_WIDTH, DSTBITMAP_HEIGHT);
/* create a timer */
m_blitter_timer = timer_alloc(TIMER_BLITTER_SCANLINE);
diff --git a/src/mame/video/dday.cpp b/src/mame/video/dday.cpp
index 738a5662a5b..a8088eb7b28 100644
--- a/src/mame/video/dday.cpp
+++ b/src/mame/video/dday.cpp
@@ -271,10 +271,10 @@ WRITE8_MEMBER(dday_state::dday_control_w)
//if (data & 0xac) logerror("Control = %02X\n", data & 0xac);
/* bit 0 is coin counter 1 */
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
/* bit 1 is coin counter 2 */
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 4 is sound enable */
if (!(data & 0x10) && (m_control & 0x10))
diff --git a/src/mame/video/decbac06.cpp b/src/mame/video/decbac06.cpp
index 32c2f7c1b4c..c974c4adf13 100644
--- a/src/mame/video/decbac06.cpp
+++ b/src/mame/video/decbac06.cpp
@@ -108,9 +108,9 @@ void deco_bac06_device::device_start()
if(!m_gfxdecode->started())
throw device_missing_dependencies();
- m_pf_data = auto_alloc_array_clear(machine(), UINT16, 0x4000 / 2); // 0x2000 is the maximum needed, some games / chip setups map less and mirror - stadium hero banks this to 0x4000?!
- m_pf_rowscroll = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
- m_pf_colscroll = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
+ m_pf_data = make_unique_clear<UINT16[]>(0x4000 / 2); // 0x2000 is the maximum needed, some games / chip setups map less and mirror - stadium hero banks this to 0x4000?!
+ m_pf_rowscroll = make_unique_clear<UINT16[]>(0x2000 / 2);
+ m_pf_colscroll = make_unique_clear<UINT16[]>(0x2000 / 2);
create_tilemaps(m_gfxregion8x8, m_gfxregion16x16);
m_gfxcolmask = 0x0f;
@@ -119,9 +119,9 @@ void deco_bac06_device::device_start()
m_bppmask = 0x0f;
m_rambank = 0;
- save_pointer(NAME(m_pf_data), 0x4000/2);
- save_pointer(NAME(m_pf_rowscroll), 0x2000/2);
- save_pointer(NAME(m_pf_colscroll), 0x2000/2);
+ save_pointer(NAME(m_pf_data.get()), 0x4000/2);
+ save_pointer(NAME(m_pf_rowscroll.get()), 0x2000/2);
+ save_pointer(NAME(m_pf_colscroll.get()), 0x2000/2);
save_item(NAME(m_pf_control_0));
save_item(NAME(m_pf_control_1));
save_item(NAME(m_gfxcolmask));
@@ -344,7 +344,7 @@ void deco_bac06_device::deco_bac06_pf_draw(bitmap_ind16 &bitmap,const rectangle
}
if (tm)
- custom_tilemap_draw(bitmap,cliprect,tm,m_pf_rowscroll,m_pf_colscroll,m_pf_control_0,m_pf_control_1,flags, penmask, pencondition, colprimask, colpricondition);
+ custom_tilemap_draw(bitmap,cliprect,tm,m_pf_rowscroll.get(),m_pf_colscroll.get(),m_pf_control_0,m_pf_control_1,flags, penmask, pencondition, colprimask, colpricondition);
}
@@ -355,7 +355,7 @@ void deco_bac06_device::deco_bac06_pf_draw_bootleg(bitmap_ind16 &bitmap,const re
if (!mode) tm = m_pf8x8_tilemap[type];
else tm = m_pf16x16_tilemap[type];
- custom_tilemap_draw(bitmap,cliprect,tm,m_pf_rowscroll,m_pf_colscroll,nullptr,nullptr,flags, 0, 0, 0, 0);
+ custom_tilemap_draw(bitmap,cliprect,tm,m_pf_rowscroll.get(),m_pf_colscroll.get(),nullptr,nullptr,flags, 0, 0, 0, 0);
}
diff --git a/src/mame/video/decbac06.h b/src/mame/video/decbac06.h
index f163a4e8cf4..51a991636fa 100644
--- a/src/mame/video/decbac06.h
+++ b/src/mame/video/decbac06.h
@@ -21,8 +21,9 @@ public:
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
static void set_gfx_region_wide(device_t &device, int region8x8, int region16x16, int wide);
- UINT16* m_pf_data;
- UINT16* m_pf_rowscroll, *m_pf_colscroll;
+ std::unique_ptr<UINT16[]> m_pf_data;
+ std::unique_ptr<UINT16[]> m_pf_rowscroll;
+ std::unique_ptr<UINT16[]> m_pf_colscroll;
tilemap_t* m_pf8x8_tilemap[3];
tilemap_t* m_pf16x16_tilemap[3];
diff --git a/src/mame/video/deco16ic.cpp b/src/mame/video/deco16ic.cpp
index a792ff6fb0c..fa5b1caba0a 100644
--- a/src/mame/video/deco16ic.cpp
+++ b/src/mame/video/deco16ic.cpp
@@ -259,9 +259,9 @@ void deco16ic_device::device_start()
m_pf1_8bpp_mode = 0;
- m_pf1_data = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
- m_pf2_data = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
- m_pf12_control = auto_alloc_array_clear(machine(), UINT16, 0x10 / 2);
+ m_pf1_data = make_unique_clear<UINT16[]>(0x2000 / 2);
+ m_pf2_data = make_unique_clear<UINT16[]>(0x2000 / 2);
+ m_pf12_control = make_unique_clear<UINT16[]>(0x10 / 2);
save_item(NAME(m_use_custom_pf1));
@@ -275,9 +275,9 @@ void deco16ic_device::device_start()
save_item(NAME(m_pf1_8bpp_mode));
- save_pointer(NAME(m_pf1_data), 0x2000 / 2);
- save_pointer(NAME(m_pf2_data), 0x2000 / 2);
- save_pointer(NAME(m_pf12_control), 0x10 / 2);
+ save_pointer(NAME(m_pf1_data.get()), 0x2000 / 2);
+ save_pointer(NAME(m_pf2_data.get()), 0x2000 / 2);
+ save_pointer(NAME(m_pf12_control.get()), 0x10 / 2);
}
//-------------------------------------------------
diff --git a/src/mame/video/deco16ic.h b/src/mame/video/deco16ic.h
index 9ae1d5bfd0d..5e45336c093 100644
--- a/src/mame/video/deco16ic.h
+++ b/src/mame/video/deco16ic.h
@@ -124,8 +124,9 @@ protected:
private:
// internal state
- UINT16 *m_pf1_data, *m_pf2_data;
- UINT16 *m_pf12_control;
+ std::unique_ptr<UINT16[]> m_pf1_data;
+ std::unique_ptr<UINT16[]> m_pf2_data;
+ std::unique_ptr<UINT16[]> m_pf12_control;
const UINT16 *m_pf1_rowscroll_ptr, *m_pf2_rowscroll_ptr;
diff --git a/src/mame/video/deco32.cpp b/src/mame/video/deco32.cpp
index eed824f4067..ef1874db2c9 100644
--- a/src/mame/video/deco32.cpp
+++ b/src/mame/video/deco32.cpp
@@ -165,27 +165,27 @@ VIDEO_START_MEMBER(deco32_state,captaven)
VIDEO_START_MEMBER(deco32_state,fghthist)
{
- m_dirty_palette = auto_alloc_array(machine(), UINT8, 4096);
+ m_dirty_palette = std::make_unique<UINT8[]>(4096);
m_sprgen->alloc_sprite_bitmap();
m_has_ace_ram=0;
- save_pointer(NAME(m_dirty_palette), 4096);
+ save_pointer(NAME(m_dirty_palette.get()), 4096);
deco32_state::video_start();
}
VIDEO_START_MEMBER(deco32_state,nslasher)
{
int width, height;
- m_dirty_palette = auto_alloc_array(machine(), UINT8, 4096);
+ m_dirty_palette = std::make_unique<UINT8[]>(4096);
width = m_screen->width();
height = m_screen->height();
- m_tilemap_alpha_bitmap=auto_bitmap_ind16_alloc(machine(), width, height );
+ m_tilemap_alpha_bitmap=std::make_unique<bitmap_ind16>(width, height );
m_sprgen1->alloc_sprite_bitmap();
m_sprgen2->alloc_sprite_bitmap();
- memset(m_dirty_palette,0,4096);
+ memset(m_dirty_palette.get(),0,4096);
m_has_ace_ram=1;
- save_pointer(NAME(m_dirty_palette), 4096);
+ save_pointer(NAME(m_dirty_palette.get()), 4096);
save_item(NAME(m_ace_ram_dirty));
save_item(NAME(m_spriteram16_2));
save_item(NAME(m_spriteram16_2_buffered));
@@ -203,28 +203,28 @@ void dragngun_state::video_start()
VIDEO_START_MEMBER(dragngun_state,dragngun)
{
- m_dirty_palette = auto_alloc_array(machine(), UINT8, 4096);
+ m_dirty_palette = std::make_unique<UINT8[]>(4096);
m_screen->register_screen_bitmap(m_temp_render_bitmap);
- memset(m_dirty_palette,0,4096);
+ memset(m_dirty_palette.get(),0,4096);
m_has_ace_ram=0;
save_item(NAME(m_sprite_ctrl));
- save_pointer(NAME(m_dirty_palette), 4096);
+ save_pointer(NAME(m_dirty_palette.get()), 4096);
}
VIDEO_START_MEMBER(dragngun_state,lockload)
{
- m_dirty_palette = auto_alloc_array(machine(), UINT8, 4096);
+ m_dirty_palette = std::make_unique<UINT8[]>(4096);
m_screen->register_screen_bitmap(m_temp_render_bitmap);
- memset(m_dirty_palette,0,4096);
+ memset(m_dirty_palette.get(),0,4096);
m_has_ace_ram=0;
save_item(NAME(m_sprite_ctrl));
- save_pointer(NAME(m_dirty_palette), 4096);
+ save_pointer(NAME(m_dirty_palette.get()), 4096);
}
/******************************************************************************/
diff --git a/src/mame/video/deco_mlc.cpp b/src/mame/video/deco_mlc.cpp
index 808b177bf91..a419d2c9846 100644
--- a/src/mame/video/deco_mlc.cpp
+++ b/src/mame/video/deco_mlc.cpp
@@ -24,15 +24,15 @@ VIDEO_START_MEMBER(deco_mlc_state,mlc)
else
m_colour_mask=0x1f;
-// temp_bitmap = auto_bitmap_rgb32_alloc( machine(), 512, 512 );
- m_mlc_buffered_spriteram = auto_alloc_array(machine(), UINT16, 0x3000/2);
- m_mlc_spriteram_spare = auto_alloc_array(machine(), UINT16, 0x3000/2);
- m_mlc_spriteram = auto_alloc_array(machine(), UINT16, 0x3000/2);
+// temp_bitmap = std::make_unique<bitmap_rgb32>(512, 512 );
+ m_mlc_buffered_spriteram = std::make_unique<UINT16[]>(0x3000/2);
+ m_mlc_spriteram_spare = std::make_unique<UINT16[]>(0x3000/2);
+ m_mlc_spriteram = std::make_unique<UINT16[]>(0x3000/2);
- save_pointer(NAME(m_mlc_spriteram), 0x3000/2);
- save_pointer(NAME(m_mlc_spriteram_spare), 0x3000/2);
- save_pointer(NAME(m_mlc_buffered_spriteram), 0x3000/2);
+ save_pointer(NAME(m_mlc_spriteram.get()), 0x3000/2);
+ save_pointer(NAME(m_mlc_spriteram_spare.get()), 0x3000/2);
+ save_pointer(NAME(m_mlc_buffered_spriteram.get()), 0x3000/2);
}
@@ -153,7 +153,7 @@ void deco_mlc_state::draw_sprites( const rectangle &cliprect, int scanline, UINT
int clipper=0;
rectangle user_clip;
- UINT16* mlc_spriteram=m_mlc_buffered_spriteram; // spriteram32
+ UINT16* mlc_spriteram=m_mlc_buffered_spriteram.get(); // spriteram32
//printf("%d - (%08x %08x %08x) (%08x %08x %08x) (%08x %08x %08x)\n", scanline, m_irq_ram[6], m_irq_ram[7], m_irq_ram[8], m_irq_ram[9], m_irq_ram[10], m_irq_ram[11] , m_irq_ram[12] , m_irq_ram[13] , m_irq_ram[14]);
@@ -547,7 +547,7 @@ void deco_mlc_state::screen_eof_mlc(screen_device &screen, bool state)
lookup table. Without buffering incorrect one frame glitches are seen
in several places, especially in Hoops.
*/
- memcpy(m_mlc_buffered_spriteram, m_mlc_spriteram, 0x3000/2);
+ memcpy(m_mlc_buffered_spriteram.get(), m_mlc_spriteram.get(), 0x3000/2);
}
}
diff --git a/src/mame/video/decocomn.cpp b/src/mame/video/decocomn.cpp
index f0a5aa76c3f..f8bbb7f32bc 100644
--- a/src/mame/video/decocomn.cpp
+++ b/src/mame/video/decocomn.cpp
@@ -53,10 +53,10 @@ void decocomn_device::device_start()
// width = m_screen->width();
// height = m_screen->height();
- m_dirty_palette = auto_alloc_array_clear(machine(), UINT8, 4096);
+ m_dirty_palette = make_unique_clear<UINT8[]>(4096);
save_item(NAME(m_priority));
- save_pointer(NAME(m_dirty_palette), 4096);
+ save_pointer(NAME(m_dirty_palette.get()), 4096);
}
//-------------------------------------------------
diff --git a/src/mame/video/decocomn.h b/src/mame/video/decocomn.h
index 07be0f30281..b2c758c9d60 100644
--- a/src/mame/video/decocomn.h
+++ b/src/mame/video/decocomn.h
@@ -41,7 +41,7 @@ protected:
private:
// internal state
- UINT8 *m_dirty_palette;
+ std::unique_ptr<UINT8[]> m_dirty_palette;
UINT16 m_priority;
required_device<palette_device> m_palette;
required_shared_ptr<UINT16> m_generic_paletteram_16;
diff --git a/src/mame/video/decodmd1.h b/src/mame/video/decodmd1.h
index bf30ee64c00..62247b91a82 100644
--- a/src/mame/video/decodmd1.h
+++ b/src/mame/video/decodmd1.h
@@ -31,7 +31,6 @@ public:
UINT32 screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect );
- DECLARE_WRITE8_MEMBER(bank_w);
DECLARE_READ8_MEMBER(latch_r);
DECLARE_WRITE8_MEMBER(data_w);
DECLARE_READ8_MEMBER(busy_r);
diff --git a/src/mame/video/decodmd2.h b/src/mame/video/decodmd2.h
index bf7688ed7c6..1a1fb990c67 100644
--- a/src/mame/video/decodmd2.h
+++ b/src/mame/video/decodmd2.h
@@ -30,8 +30,6 @@ public:
required_device<ram_device> m_ram;
memory_region* m_rom;
- UINT32 screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect );
-
DECLARE_WRITE8_MEMBER(bank_w);
DECLARE_WRITE8_MEMBER(crtc_address_w);
DECLARE_WRITE8_MEMBER(crtc_register_w);
diff --git a/src/mame/video/deniam.cpp b/src/mame/video/deniam.cpp
index e423402b8c6..20d29dcd2b0 100644
--- a/src/mame/video/deniam.cpp
+++ b/src/mame/video/deniam.cpp
@@ -159,7 +159,7 @@ WRITE16_MEMBER(deniam_state::deniam_coinctrl_w)
COMBINE_DATA(&m_coinctrl);
/* bit 0 is coin counter */
- coin_counter_w(machine(), 0, m_coinctrl & 0x01);
+ machine().bookkeeping().coin_counter_w(0, m_coinctrl & 0x01);
/* bit 6 is display enable (0 freezes screen) */
m_display_enable = m_coinctrl & 0x20;
diff --git a/src/mame/video/dogfgt.cpp b/src/mame/video/dogfgt.cpp
index 82c400233a8..88d8a64d8e9 100644
--- a/src/mame/video/dogfgt.cpp
+++ b/src/mame/video/dogfgt.cpp
@@ -70,8 +70,8 @@ void dogfgt_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(dogfgt_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
- m_bitmapram = auto_alloc_array(machine(), UINT8, BITMAPRAM_SIZE);
- save_pointer(NAME(m_bitmapram), BITMAPRAM_SIZE);
+ m_bitmapram = std::make_unique<UINT8[]>(BITMAPRAM_SIZE);
+ save_pointer(NAME(m_bitmapram.get()), BITMAPRAM_SIZE);
m_screen->register_screen_bitmap(m_pixbitmap);
save_item(NAME(m_pixbitmap));
@@ -154,8 +154,8 @@ WRITE8_MEMBER(dogfgt_state::dogfgt_1800_w)
m_pixcolor = ((data & 0x01) << 1) | ((data & 0x02) >> 1);
/* bits 4 and 5 are coin counters */
- coin_counter_w(machine(), 0, data & 0x10);
- coin_counter_w(machine(), 1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
/* bit 7 is screen flip */
flip_screen_set(data & 0x80);
diff --git a/src/mame/video/dooyong.cpp b/src/mame/video/dooyong.cpp
index 3b8455009b9..3eb5900e000 100644
--- a/src/mame/video/dooyong.cpp
+++ b/src/mame/video/dooyong.cpp
@@ -87,8 +87,8 @@ WRITE8_MEMBER(dooyong_z80_state::txvideoram_w)
WRITE8_MEMBER(dooyong_z80_ym2203_state::lastday_ctrl_w)
{
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 3 is used but unknown */
@@ -101,20 +101,31 @@ WRITE8_MEMBER(dooyong_z80_ym2203_state::lastday_ctrl_w)
WRITE8_MEMBER(dooyong_z80_ym2203_state::pollux_ctrl_w)
{
+// printf("pollux_ctrl_w %02x\n", data);
+
/* bit 0 is flip screen */
flip_screen_set(data & 0x01);
/* bits 6 and 7 are coin counters */
- coin_counter_w(machine(), 0, data & 0x80);
- coin_counter_w(machine(), 1, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
+
+ /* bit 1 is used but unknown - palette banking (both write and display based on pollux bombs) */
+ int last_palbank = m_palette_bank;
+ if (m_paletteram_flytiger) m_palette_bank = (data & 0x02)>>1;
- /* bit 1 is used but unknown - possibly palette banking */
- m_flytiger_palette_bank = (data & 0x02)^2;
+ if (last_palbank != m_palette_bank)
+ {
+ m_bg_tilemap->mark_all_dirty();
+ m_fg_tilemap->mark_all_dirty();
+ m_tx_tilemap->mark_all_dirty();
+ }
/* bit 2 is continuously toggled (unknown) */
- /* bit 4 is used but unknown */
+
+ /* bit 4 is used but unknown - display disable? */
}
-
+
WRITE8_MEMBER(dooyong_z80_state::primella_ctrl_w)
@@ -133,14 +144,22 @@ WRITE8_MEMBER(dooyong_z80_state::primella_ctrl_w)
// logerror("%04x: bankswitch = %02x\n",space.device().safe_pc(),data&0xe0);
}
+READ8_MEMBER(dooyong_z80_state::paletteram_flytiger_r)
+{
+ if (m_palette_bank) offset+= 0x800;
+
+ return m_paletteram_flytiger[offset];
+}
+
+
WRITE8_MEMBER(dooyong_z80_state::paletteram_flytiger_w)
{
- if (!m_flytiger_palette_bank) offset+= 0x800;
-
+ if (m_palette_bank) offset+= 0x800;
+
m_paletteram_flytiger[offset] = data;
UINT16 const value = m_paletteram_flytiger[offset & ~1] | (m_paletteram_flytiger[offset | 1] << 8);
m_palette->set_pen_color(offset/2, pal5bit(value >> 10), pal5bit(value >> 5), pal5bit(value >> 0));
-
+
}
WRITE8_MEMBER(dooyong_z80_state::flytiger_ctrl_w)
@@ -150,8 +169,16 @@ WRITE8_MEMBER(dooyong_z80_state::flytiger_ctrl_w)
/* bits 1, 2 used but unknown */
- /* bit 3 fg palette banking: trash protection? */
- m_flytiger_palette_bank = data & 0x08;
+ /* bit 3 palette banking */
+ int last_palbank = m_palette_bank;
+ m_palette_bank = (data & 0x08)>>3;
+
+ if (last_palbank != m_palette_bank)
+ {
+ m_bg_tilemap->mark_all_dirty();
+ m_fg_tilemap->mark_all_dirty();
+ m_tx_tilemap->mark_all_dirty();
+ }
/* bit 4 changes tilemaps priority */
m_flytiger_pri = data & 0x10;
@@ -186,6 +213,7 @@ inline void dooyong_state::get_tile_info(tile_data &tileinfo, int tile_index,
Y = y flip */
code = tilerom[offs + 1] | ((attr & 0x01) << 8) | ((attr & 0x80) << 2);
color = (attr & 0x78) >> 3;
+ color += m_palette_bank * 0x40;
flags = TILE_FLIPYX((attr & 0x06) >> 1);
}
else
@@ -257,7 +285,7 @@ TILE_GET_INFO_MEMBER(dooyong_z80_state::get_tx_tile_info)
int const code = m_txvideoram[offs] | ((attr & 0x0f) << 8);
int const color = (attr & 0xf0) >> 4;
- tileinfo.set(0, code, color, 0);
+ tileinfo.set(0, code, color + m_palette_bank *0x40, 0);
}
@@ -292,7 +320,8 @@ void dooyong_z80_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap
int sx = buffered_spriteram[offs+3] | ((buffered_spriteram[offs+1] & 0x10) << 4);
int sy = buffered_spriteram[offs+2];
int code = buffered_spriteram[offs] | ((buffered_spriteram[offs+1] & 0xe0) << 3);
- int const color = buffered_spriteram[offs+1] & 0x0f;
+ int color = buffered_spriteram[offs+1] & 0x0f;
+
//TODO: This priority mechanism works for known games, but seems a bit strange.
//Are we missing something? (The obvious spare palette bit isn't it.)
int const pri = (((color == 0x00) || (color == 0x0f)) ? 0xfc : 0xf0);
@@ -330,6 +359,8 @@ void dooyong_z80_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap
flipy = !flipy;
}
+ color += m_palette_bank * 0x40;
+
for (int y = 0; y <= height; y++)
{
m_gfxdecode->gfx(1)->prio_transpen(bitmap,cliprect,
@@ -449,6 +480,8 @@ UINT32 dooyong_z80_state::screen_update_primella(screen_device &screen, bitmap_i
return 0;
}
+
+
VIDEO_START_MEMBER(dooyong_z80_ym2203_state, lastday)
{
/* Configure tilemap callbacks */
@@ -525,8 +558,8 @@ VIDEO_START_MEMBER(dooyong_z80_ym2203_state, pollux)
m_fg_gfx = 3;
m_tx_tilemap_mode = 0;
- m_paletteram_flytiger = auto_alloc_array_clear(machine(), UINT8, 0x1000);
- save_pointer(NAME(m_paletteram_flytiger), 0x1000);
+ m_paletteram_flytiger = make_unique_clear<UINT8[]>(0x1000);
+ save_pointer(NAME(m_paletteram_flytiger.get()), 0x1000);
/* Create tilemaps */
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(dooyong_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS,
@@ -598,8 +631,8 @@ VIDEO_START_MEMBER(dooyong_z80_state, flytiger)
m_fg_gfx = 3;
m_tx_tilemap_mode = 0;
- m_paletteram_flytiger = auto_alloc_array_clear(machine(), UINT8, 0x1000);
- save_pointer(NAME(m_paletteram_flytiger), 0x1000);
+ m_paletteram_flytiger = make_unique_clear<UINT8[]>(0x1000);
+ save_pointer(NAME(m_paletteram_flytiger.get()), 0x1000);
/* Create tilemaps */
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(dooyong_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS,
@@ -806,6 +839,7 @@ UINT32 dooyong_68k_state::screen_update_popbingo(screen_device &screen, bitmap_i
}
+
VIDEO_START_MEMBER(dooyong_68k_state, rshark)
{
/* Configure tilemap callbacks */
diff --git a/src/mame/video/dragrace.cpp b/src/mame/video/dragrace.cpp
index 4bbbdd4907c..0a1ee960b4c 100644
--- a/src/mame/video/dragrace.cpp
+++ b/src/mame/video/dragrace.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/drmicro.cpp b/src/mame/video/drmicro.cpp
index 446dbc49b32..06fefd17cbb 100644
--- a/src/mame/video/drmicro.cpp
+++ b/src/mame/video/drmicro.cpp
@@ -102,8 +102,8 @@ PALETTE_INIT_MEMBER(drmicro_state, drmicro)
void drmicro_state::video_start()
{
- m_videoram = auto_alloc_array(machine(), UINT8, 0x1000);
- save_pointer(NAME(m_videoram), 0x1000);
+ m_videoram = std::make_unique<UINT8[]>(0x1000);
+ save_pointer(NAME(m_videoram.get()), 0x1000);
m_bg1 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(drmicro_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_bg2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(drmicro_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
diff --git a/src/mame/video/dynax.cpp b/src/mame/video/dynax.cpp
index 6c179631645..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;
@@ -868,52 +874,52 @@ void dynax_state::dynax_common_reset()
VIDEO_START_MEMBER(dynax_state,hanamai)
{
- m_pixmap[0][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[0][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[2][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[2][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[3][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[3][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
+ m_pixmap[0][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[0][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[2][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[2][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[3][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[3][1] = std::make_unique<UINT8[]>(256 * 256);
dynax_common_reset();
m_layer_layout = LAYOUT_HANAMAI;
- save_pointer(NAME(m_pixmap[0][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[0][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[2][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[2][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[3][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[3][1]), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[2][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[2][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[3][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[3][1].get()), 256 * 256);
}
VIDEO_START_MEMBER(dynax_state,hnoridur)
{
- m_pixmap[0][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[0][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[2][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[2][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[3][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[3][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
+ m_pixmap[0][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[0][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[2][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[2][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[3][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[3][1] = std::make_unique<UINT8[]>(256 * 256);
dynax_common_reset();
m_layer_layout = LAYOUT_HNORIDUR;
m_priority_table = priority_hnoridur;
- save_pointer(NAME(m_pixmap[0][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[0][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[2][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[2][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[3][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[3][1]), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[2][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[2][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[3][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[3][1].get()), 256 * 256);
}
VIDEO_START_MEMBER(dynax_state,mcnpshnt)
@@ -924,76 +930,76 @@ VIDEO_START_MEMBER(dynax_state,mcnpshnt)
VIDEO_START_MEMBER(dynax_state,sprtmtch)
{
- m_pixmap[0][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[0][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[2][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[2][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
+ m_pixmap[0][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[0][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[2][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[2][1] = std::make_unique<UINT8[]>(256 * 256);
dynax_common_reset();
m_layer_layout = LAYOUT_DRGPUNCH;
- save_pointer(NAME(m_pixmap[0][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[0][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[2][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[2][1]), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[2][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[2][1].get()), 256 * 256);
}
VIDEO_START_MEMBER(dynax_state,jantouki)
{
- m_pixmap[0][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[0][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[2][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[2][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[3][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[3][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[4][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[4][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[5][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[5][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[6][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[6][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[7][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[7][1] = auto_alloc_array(machine(), UINT8, 256 * 256);
+ m_pixmap[0][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[0][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[2][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[2][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[3][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[3][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[4][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[4][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[5][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[5][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[6][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[6][1] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[7][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[7][1] = std::make_unique<UINT8[]>(256 * 256);
dynax_common_reset();
m_layer_layout = LAYOUT_JANTOUKI;
m_update_irq_func = &dynax_state::jantouki_update_irq;
- save_pointer(NAME(m_pixmap[0][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[0][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[2][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[2][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[3][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[3][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[4][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[4][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[5][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[5][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[6][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[6][1]), 256 * 256);
- save_pointer(NAME(m_pixmap[7][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[7][1]), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[2][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[2][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[3][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[3][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[4][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[4][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[5][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[5][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[6][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[6][1].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[7][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[7][1].get()), 256 * 256);
}
VIDEO_START_MEMBER(dynax_state,mjdialq2)
{
- m_pixmap[0][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_pixmap[1][0] = auto_alloc_array(machine(), UINT8, 256 * 256);
+ m_pixmap[0][0] = std::make_unique<UINT8[]>(256 * 256);
+ m_pixmap[1][0] = std::make_unique<UINT8[]>(256 * 256);
dynax_common_reset();
m_layer_layout = LAYOUT_MJDIALQ2;
m_update_irq_func = nullptr;
- save_pointer(NAME(m_pixmap[0][0]), 256 * 256);
- save_pointer(NAME(m_pixmap[1][0]), 256 * 256);
+ save_pointer(NAME(m_pixmap[0][0].get()), 256 * 256);
+ save_pointer(NAME(m_pixmap[1][0].get()), 256 * 256);
}
VIDEO_START_MEMBER(dynax_state,mjelctrn)
@@ -1055,8 +1061,8 @@ void dynax_state::hanamai_copylayer(bitmap_ind16 &bitmap, const rectangle &clipr
{
int dy, length, pen;
- UINT8 *src1 = m_pixmap[i][1];
- UINT8 *src2 = m_pixmap[i][0];
+ UINT8 *src1 = m_pixmap[i][1].get();
+ UINT8 *src2 = m_pixmap[i][0].get();
int palbase = 16 * color;
@@ -1121,8 +1127,8 @@ void dynax_state::jantouki_copylayer( bitmap_ind16 &bitmap, const rectangle &cli
{
int dy, length, pen;
- UINT8 *src1 = m_pixmap[i][1];
- UINT8 *src2 = m_pixmap[i][0];
+ UINT8 *src1 = m_pixmap[i][1].get();
+ UINT8 *src2 = m_pixmap[i][0].get();
int palbase = 16 * color;
@@ -1184,7 +1190,7 @@ void dynax_state::mjdialq2_copylayer( bitmap_ind16 &bitmap, const rectangle &cli
{
int dy, length, pen;
- UINT8 *src = m_pixmap[i][0];
+ UINT8 *src = m_pixmap[i][0].get();
int palbase = 16 * color;
@@ -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;
@@ -1288,12 +1294,12 @@ int dynax_state::debug_viewer(bitmap_ind16 &bitmap, const rectangle &cliprect )
m_blit_palbank = (c >> 4) & 1;
bitmap.fill(0, cliprect);
- memset(m_pixmap[0][0], 0, sizeof(UINT8) * 0x100 * 0x100);
+ memset(m_pixmap[0][0].get(), 0, sizeof(UINT8) * 0x100 * 0x100);
if (m_layer_layout != LAYOUT_MJDIALQ2)
- memset(m_pixmap[0][1], 0, sizeof(UINT8) * 0x100 * 0x100);
+ 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/eolith.cpp b/src/mame/video/eolith.cpp
index 25497162379..215af20ced4 100644
--- a/src/mame/video/eolith.cpp
+++ b/src/mame/video/eolith.cpp
@@ -34,8 +34,8 @@ READ32_MEMBER(eolith_state::eolith_vram_r)
VIDEO_START_MEMBER(eolith_state,eolith)
{
- m_vram = auto_alloc_array(machine(), UINT32, 0x40000*2/4);
- save_pointer(NAME(m_vram), 0x40000*2/4);
+ m_vram = std::make_unique<UINT32[]>(0x40000*2/4);
+ save_pointer(NAME(m_vram.get()), 0x40000*2/4);
save_item(NAME(m_buffer));
}
diff --git a/src/mame/video/epos.cpp b/src/mame/video/epos.cpp
index 5c2f2b70ab8..55f58b09062 100644
--- a/src/mame/video/epos.cpp
+++ b/src/mame/video/epos.cpp
@@ -64,10 +64,10 @@ WRITE8_MEMBER(epos_state::epos_port_1_w)
D4-D7 - unused
*/
- set_led_status(machine(), 0, (data >> 0) & 0x01);
- set_led_status(machine(), 1, (data >> 1) & 0x01);
+ output().set_led_value(0, (data >> 0) & 0x01);
+ output().set_led_value(1, (data >> 1) & 0x01);
- coin_counter_w(machine(), 0, (data >> 2) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 2) & 0x01);
m_palette = (data >> 3) & 0x01;
}
diff --git a/src/mame/video/equites.cpp b/src/mame/video/equites.cpp
index a5913bc879a..ce6f607fc5c 100644
--- a/src/mame/video/equites.cpp
+++ b/src/mame/video/equites.cpp
@@ -119,8 +119,8 @@ TILE_GET_INFO_MEMBER(equites_state::splndrbt_bg_info)
VIDEO_START_MEMBER(equites_state,equites)
{
- m_fg_videoram = auto_alloc_array(machine(), UINT8, 0x800);
- save_pointer(NAME(m_fg_videoram), 0x800);
+ m_fg_videoram = std::make_unique<UINT8[]>(0x800);
+ save_pointer(NAME(m_fg_videoram.get()), 0x800);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(equites_state::equites_fg_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
m_fg_tilemap->set_transparent_pen(0);
@@ -134,8 +134,8 @@ VIDEO_START_MEMBER(equites_state,splndrbt)
{
assert(m_screen->format() == BITMAP_FORMAT_IND16);
- m_fg_videoram = auto_alloc_array(machine(), UINT8, 0x800);
- save_pointer(NAME(m_fg_videoram), 0x800);
+ m_fg_videoram = std::make_unique<UINT8[]>(0x800);
+ save_pointer(NAME(m_fg_videoram.get()), 0x800);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(equites_state::splndrbt_fg_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
m_fg_tilemap->set_transparent_pen(0);
diff --git a/src/mame/video/esripsys.cpp b/src/mame/video/esripsys.cpp
index 0a75d0fc0b9..7cbbf21b8d9 100644
--- a/src/mame/video/esripsys.cpp
+++ b/src/mame/video/esripsys.cpp
@@ -62,13 +62,13 @@ void esripsys_state::video_start()
int i;
/* Allocate memory for the two 512-pixel line buffers */
- line_buffer[0].colour_buf = auto_alloc_array(machine(), UINT8, 512);
- line_buffer[0].intensity_buf = auto_alloc_array(machine(), UINT8, 512);
- line_buffer[0].priority_buf = auto_alloc_array(machine(), UINT8, 512);
+ line_buffer[0].colour_buf = std::make_unique<UINT8[]>(512);
+ line_buffer[0].intensity_buf = std::make_unique<UINT8[]>(512);
+ line_buffer[0].priority_buf = std::make_unique<UINT8[]>(512);
- line_buffer[1].colour_buf = auto_alloc_array(machine(), UINT8, 512);
- line_buffer[1].intensity_buf = auto_alloc_array(machine(), UINT8, 512);
- line_buffer[1].priority_buf = auto_alloc_array(machine(), UINT8, 512);
+ line_buffer[1].colour_buf = std::make_unique<UINT8[]>(512);
+ line_buffer[1].intensity_buf = std::make_unique<UINT8[]>(512);
+ line_buffer[1].priority_buf = std::make_unique<UINT8[]>(512);
/* Create and initialise the HBLANK timers */
m_hblank_start_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(esripsys_state::hblank_start_callback),this));
@@ -76,7 +76,7 @@ void esripsys_state::video_start()
m_hblank_start_timer->adjust(m_screen->time_until_pos(0, ESRIPSYS_HBLANK_START));
/* Create the sprite scaling table */
- m_scale_table = auto_alloc_array(machine(), UINT8, 64 * 64);
+ m_scale_table = std::make_unique<UINT8[]>(64 * 64);
for (i = 0; i < 64; ++i)
{
@@ -109,7 +109,7 @@ void esripsys_state::video_start()
}
/* Now create a lookup table for scaling the sprite 'fig' value */
- m_fig_scale_table = auto_alloc_array(machine(), UINT8, 1024 * 64);
+ m_fig_scale_table = std::make_unique<UINT8[]>(1024 * 64);
for (i = 0; i < 1024; ++i)
{
@@ -133,13 +133,13 @@ void esripsys_state::video_start()
}
/* Register stuff for state saving */
- save_pointer(NAME(line_buffer[0].colour_buf), 512);
- save_pointer(NAME(line_buffer[0].intensity_buf), 512);
- save_pointer(NAME(line_buffer[0].priority_buf), 512);
+ save_pointer(NAME(line_buffer[0].colour_buf.get()), 512);
+ save_pointer(NAME(line_buffer[0].intensity_buf.get()), 512);
+ save_pointer(NAME(line_buffer[0].priority_buf.get()), 512);
- save_pointer(NAME(line_buffer[1].colour_buf), 512);
- save_pointer(NAME(line_buffer[1].intensity_buf), 512);
- save_pointer(NAME(line_buffer[1].priority_buf), 512);
+ save_pointer(NAME(line_buffer[1].colour_buf.get()), 512);
+ save_pointer(NAME(line_buffer[1].intensity_buf.get()), 512);
+ save_pointer(NAME(line_buffer[1].priority_buf.get()), 512);
save_item(NAME(m_video_firq));
save_item(NAME(m_bg_intensity));
@@ -154,9 +154,9 @@ UINT32 esripsys_state::screen_update_esripsys(screen_device &screen, bitmap_rgb3
struct line_buffer_t *line_buffer = m_line_buffer;
int x, y;
- UINT8 *colour_buf = line_buffer[m_12sel ? 0 : 1].colour_buf;
- UINT8 *intensity_buf = line_buffer[m_12sel ? 0 : 1].intensity_buf;
- UINT8 *priority_buf = line_buffer[m_12sel ? 0 : 1].priority_buf;
+ UINT8 *colour_buf = line_buffer[m_12sel ? 0 : 1].colour_buf.get();
+ UINT8 *intensity_buf = line_buffer[m_12sel ? 0 : 1].intensity_buf.get();
+ UINT8 *priority_buf = line_buffer[m_12sel ? 0 : 1].priority_buf.get();
for (y = cliprect.min_y; y <= cliprect.max_y; ++y)
{
@@ -191,9 +191,9 @@ WRITE8_MEMBER(esripsys_state::esripsys_bg_intensity_w)
ESRIP_DRAW(esripsys_state::esripsys_draw )
{
struct line_buffer_t *line_buffer = m_line_buffer;
- UINT8 *colour_buf = line_buffer[m_12sel ? 1 : 0].colour_buf;
- UINT8 *intensity_buf = line_buffer[m_12sel ? 1 : 0].intensity_buf;
- UINT8 *priority_buf = line_buffer[m_12sel ? 1 : 0].priority_buf;
+ UINT8 *colour_buf = line_buffer[m_12sel ? 1 : 0].colour_buf.get();
+ UINT8 *intensity_buf = line_buffer[m_12sel ? 1 : 0].intensity_buf.get();
+ UINT8 *priority_buf = line_buffer[m_12sel ? 1 : 0].priority_buf.get();
UINT8 pri = attr & 0xff;
UINT8 iny = (attr >> 8) & 0xf;
diff --git a/src/mame/video/excellent_spr.cpp b/src/mame/video/excellent_spr.cpp
index 2b178641abd..f58f80f69d6 100644
--- a/src/mame/video/excellent_spr.cpp
+++ b/src/mame/video/excellent_spr.cpp
@@ -30,8 +30,8 @@ excellent_spr_device::excellent_spr_device(const machine_config &mconfig, const
void excellent_spr_device::device_start()
{
- m_ram = auto_alloc_array_clear(this->machine(), UINT8, 0x1000);
- save_pointer(NAME(m_ram), 0x1000);
+ m_ram = make_unique_clear<UINT8[]>(0x1000);
+ save_pointer(NAME(m_ram.get()), 0x1000);
}
@@ -154,7 +154,7 @@ void excellent_spr_device::aquarium_draw_sprites( bitmap_ind16 &bitmap, const re
void excellent_spr_device::gcpinbal_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, gfxdecode_device *gfxdecode, int y_offs, int priority )
{
- UINT8 *spriteram = m_ram;
+ UINT8 *spriteram = m_ram.get();
int offs, chain_pos;
int x, y, curx, cury;
// int priority = 0;
diff --git a/src/mame/video/excellent_spr.h b/src/mame/video/excellent_spr.h
index da4368ea0d4..6f713eac13d 100644
--- a/src/mame/video/excellent_spr.h
+++ b/src/mame/video/excellent_spr.h
@@ -7,8 +7,6 @@ class excellent_spr_device : public device_t,
public:
excellent_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- void draw_sprites(screen_device &screen, gfxdecode_device *gfxdecode, const rectangle &cliprect);
-
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
@@ -16,7 +14,7 @@ public:
void gcpinbal_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, gfxdecode_device *gfxdecode, int y_offs, int priority);
protected:
- UINT8* m_ram;
+ std::unique_ptr<UINT8[]> m_ram;
virtual void device_start() override;
virtual void device_reset() override;
diff --git a/src/mame/video/exedexes.cpp b/src/mame/video/exedexes.cpp
index 1636908abd3..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
/***************************************************************************
@@ -95,11 +95,11 @@ WRITE8_MEMBER(exedexes_state::exedexes_colorram_w)
WRITE8_MEMBER(exedexes_state::exedexes_c804_w)
{
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
- coin_lockout_w(machine(), 0, data & 0x04);
- coin_lockout_w(machine(), 1, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x08);
/* bit 7 is text enable */
m_chon = data & 0x80;
diff --git a/src/mame/video/exerion.cpp b/src/mame/video/exerion.cpp
index 8f1743f0ba0..dee291a0419 100644
--- a/src/mame/video/exerion.cpp
+++ b/src/mame/video/exerion.cpp
@@ -112,12 +112,15 @@ void exerion_state::video_start()
m_background_mixer = memregion("proms")->base() + 0x320;
/* allocate memory for the decoded background graphics */
- m_background_gfx[0] = auto_alloc_array(machine(), UINT16, 256 * 256 * 4);
- m_background_gfx[1] = m_background_gfx[0] + 256 * 256;
- m_background_gfx[2] = m_background_gfx[1] + 256 * 256;
- m_background_gfx[3] = m_background_gfx[2] + 256 * 256;
+ m_background_gfx[0] = std::make_unique<UINT16[]>(256 * 256);
+ m_background_gfx[1] = std::make_unique<UINT16[]>(256 * 256);
+ m_background_gfx[2] = std::make_unique<UINT16[]>(256 * 256);
+ m_background_gfx[3] = std::make_unique<UINT16[]>(256 * 256);
- save_pointer(NAME(m_background_gfx[0]), 256 * 256 * 4);
+ save_pointer(NAME(m_background_gfx[0].get()), 256 * 256);
+ save_pointer(NAME(m_background_gfx[1].get()), 256 * 256);
+ save_pointer(NAME(m_background_gfx[2].get()), 256 * 256);
+ save_pointer(NAME(m_background_gfx[3].get()), 256 * 256);
/*---------------------------------
* Decode the background graphics
@@ -140,7 +143,7 @@ void exerion_state::video_start()
int y;
UINT8 *src = gfx + i * 0x2000;
- UINT16 *dst = m_background_gfx[i];
+ UINT16 *dst = m_background_gfx[i].get();
for (y = 0; y < 0x100; y++)
{
diff --git a/src/mame/video/exidy440.cpp b/src/mame/video/exidy440.cpp
index 5528165795a..94472bde421 100644
--- a/src/mame/video/exidy440.cpp
+++ b/src/mame/video/exidy440.cpp
@@ -44,12 +44,12 @@ VIDEO_START_MEMBER(exidy440_state,exidy440)
m_firq_beam = 0;
/* allocate a buffer for VRAM */
- m_local_videoram = auto_alloc_array(machine(), UINT8, 256 * 256 * 2);
- memset(m_local_videoram, 0, 256 * 256 * 2);
+ m_local_videoram = std::make_unique<UINT8[]>(256 * 256 * 2);
+ memset(m_local_videoram.get(), 0, 256 * 256 * 2);
/* allocate a buffer for palette RAM */
- m_local_paletteram = auto_alloc_array(machine(), UINT8, 512 * 2);
- memset(m_local_paletteram, 0, 512 * 2);
+ m_local_paletteram = std::make_unique<UINT8[]>(512 * 2);
+ memset(m_local_paletteram.get(), 0, 512 * 2);
}
diff --git a/src/mame/video/fgoal.cpp b/src/mame/video/fgoal.cpp
index 47c02d6d7fa..0ed8d5b7026 100644
--- a/src/mame/video/fgoal.cpp
+++ b/src/mame/video/fgoal.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
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/fmtowns.cpp b/src/mame/video/fmtowns.cpp
index 1790f856bc4..b61f5103402 100644
--- a/src/mame/video/fmtowns.cpp
+++ b/src/mame/video/fmtowns.cpp
@@ -854,9 +854,9 @@ void towns_state::draw_sprites(const rectangle* rect)
// clears VRAM for each frame?
if(m_video.towns_sprite_page == 0)
- memset(m_towns_gfxvram+0x40000,0x80,0x20000);
+ memset(m_towns_gfxvram.get()+0x40000,0x80,0x20000);
else
- memset(m_towns_gfxvram+0x60000,0x80,0x20000);
+ memset(m_towns_gfxvram.get()+0x60000,0x80,0x20000);
for(n=sprite_limit;n<1024;n++)
{
diff --git a/src/mame/video/fromanc2.cpp b/src/mame/video/fromanc2.cpp
index 0a8204d744e..e3a37c9f6a0 100644
--- a/src/mame/video/fromanc2.cpp
+++ b/src/mame/video/fromanc2.cpp
@@ -283,23 +283,23 @@ 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] = auto_alloc_array(machine(), UINT16, (64 * 64));
+ m_videoram[screen][tmap] = std::make_unique<UINT16[]>((64 * 64));
m_tilemap[screen][tmap]->set_palette(palette);
if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x000);
}
}
- save_pointer(NAME(m_videoram[0][0]), (64 * 64));
- save_pointer(NAME(m_videoram[0][1]), (64 * 64));
- save_pointer(NAME(m_videoram[0][2]), (64 * 64));
- save_pointer(NAME(m_videoram[0][3]), (64 * 64));
- save_pointer(NAME(m_videoram[1][0]), (64 * 64));
- save_pointer(NAME(m_videoram[1][1]), (64 * 64));
- save_pointer(NAME(m_videoram[1][2]), (64 * 64));
- save_pointer(NAME(m_videoram[1][3]), (64 * 64));
+ save_pointer(NAME(m_videoram[0][0].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[0][1].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[0][2].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[0][3].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[1][0].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[1][1].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[1][2].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[1][3].get()), (64 * 64));
save_item(NAME(m_scrollx[0]));
save_item(NAME(m_scrollx[1]));
save_item(NAME(m_scrolly[0]));
@@ -321,21 +321,21 @@ 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] = auto_alloc_array(machine(), UINT16, (64 * 64));
+ m_videoram[screen][tmap] = std::make_unique<UINT16[]>((64 * 64));
m_tilemap[screen][tmap]->set_palette(palette);
if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x0ff);
}
}
- save_pointer(NAME(m_videoram[0][0]), (64 * 64));
- save_pointer(NAME(m_videoram[0][1]), (64 * 64));
- save_pointer(NAME(m_videoram[0][2]), (64 * 64));
- save_pointer(NAME(m_videoram[1][0]), (64 * 64));
- save_pointer(NAME(m_videoram[1][1]), (64 * 64));
- save_pointer(NAME(m_videoram[1][2]), (64 * 64));
+ save_pointer(NAME(m_videoram[0][0].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[0][1].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[0][2].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[1][0].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[1][1].get()), (64 * 64));
+ save_pointer(NAME(m_videoram[1][2].get()), (64 * 64));
save_item(NAME(m_scrollx[0]));
save_item(NAME(m_scrollx[1]));
save_item(NAME(m_scrolly[0]));
@@ -357,21 +357,21 @@ 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] = auto_alloc_array(machine(), UINT16, (256 * 64));
+ m_videoram[screen][tmap] = std::make_unique<UINT16[]>((256 * 64));
m_tilemap[screen][tmap]->set_palette(palette);
if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x000);
}
}
- save_pointer(NAME(m_videoram[0][0]), (256 * 64));
- save_pointer(NAME(m_videoram[0][1]), (256 * 64));
- save_pointer(NAME(m_videoram[0][2]), (256 * 64));
- save_pointer(NAME(m_videoram[1][0]), (256 * 64));
- save_pointer(NAME(m_videoram[1][1]), (256 * 64));
- save_pointer(NAME(m_videoram[1][2]), (256 * 64));
+ save_pointer(NAME(m_videoram[0][0].get()), (256 * 64));
+ save_pointer(NAME(m_videoram[0][1].get()), (256 * 64));
+ save_pointer(NAME(m_videoram[0][2].get()), (256 * 64));
+ save_pointer(NAME(m_videoram[1][0].get()), (256 * 64));
+ save_pointer(NAME(m_videoram[1][1].get()), (256 * 64));
+ save_pointer(NAME(m_videoram[1][2].get()), (256 * 64));
save_item(NAME(m_scrollx[0]));
save_item(NAME(m_scrollx[1]));
save_item(NAME(m_scrolly[0]));
diff --git a/src/mame/video/fromance.cpp b/src/mame/video/fromance.cpp
index b5f5d6ca659..f8eff58d92c 100644
--- a/src/mame/video/fromance.cpp
+++ b/src/mame/video/fromance.cpp
@@ -58,11 +58,11 @@ TILE_GET_INFO_MEMBER(fromance_state::get_nekkyoku_fg_tile_info){ get_nekkyoku_ti
void fromance_state::init_common( )
{
/* allocate local videoram */
- m_local_videoram[0] = auto_alloc_array(machine(), UINT8, 0x1000 * 3);
- m_local_videoram[1] = auto_alloc_array(machine(), UINT8, 0x1000 * 3);
+ m_local_videoram[0] = std::make_unique<UINT8[]>(0x1000 * 3);
+ m_local_videoram[1] = std::make_unique<UINT8[]>(0x1000 * 3);
/* allocate local palette RAM */
- m_local_paletteram = auto_alloc_array(machine(), UINT8, 0x800 * 2);
+ m_local_paletteram = std::make_unique<UINT8[]>(0x800 * 2);
/* configure tilemaps */
m_fg_tilemap->set_transparent_pen(15);
@@ -72,8 +72,8 @@ void fromance_state::init_common( )
/* state save */
save_item(NAME(m_selected_videoram));
- save_pointer(NAME(m_local_videoram[0]), 0x1000 * 3);
- save_pointer(NAME(m_local_videoram[1]), 0x1000 * 3);
+ save_pointer(NAME(m_local_videoram[0].get()), 0x1000 * 3);
+ save_pointer(NAME(m_local_videoram[1].get()), 0x1000 * 3);
save_item(NAME(m_selected_paletteram));
save_item(NAME(m_scrollx));
save_item(NAME(m_scrolly));
@@ -84,7 +84,7 @@ void fromance_state::init_common( )
save_item(NAME(m_scrolly_ofs));
save_item(NAME(m_crtc_register));
save_item(NAME(m_crtc_data));
- save_pointer(NAME(m_local_paletteram), 0x800 * 2);
+ save_pointer(NAME(m_local_paletteram.get()), 0x800 * 2);
}
VIDEO_START_MEMBER(fromance_state,fromance)
diff --git a/src/mame/video/fuukifg.cpp b/src/mame/video/fuukifg.cpp
index 07257c8931d..bf891fc8201 100644
--- a/src/mame/video/fuukifg.cpp
+++ b/src/mame/video/fuukifg.cpp
@@ -23,18 +23,18 @@ void fuukivid_device::static_set_gfxdecode_tag(device_t &device, const char *tag
void fuukivid_device::device_start()
{
- m_sprram = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
+ m_sprram = make_unique_clear<UINT16[]>(0x2000 / 2);
// fuukifg3 clearly has buffered ram, it is unclear if fuukifg2 has
// it is likely these render to a framebuffer as the tile bank (which is probably external hw) also needs to be banked
// suggesting that the sprites are rendered earlier, then displayed from a buffer
- m_sprram_old = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
- m_sprram_old2 = auto_alloc_array_clear(machine(), UINT16, 0x2000 / 2);
+ m_sprram_old = make_unique_clear<UINT16[]>(0x2000 / 2);
+ m_sprram_old2 = make_unique_clear<UINT16[]>(0x2000 / 2);
- save_pointer(NAME(m_sprram), 0x2000 / 2);
- save_pointer(NAME(m_sprram_old), 0x2000 / 2);
- save_pointer(NAME(m_sprram_old2), 0x2000 / 2);
+ save_pointer(NAME(m_sprram.get()), 0x2000 / 2);
+ save_pointer(NAME(m_sprram_old.get()), 0x2000 / 2);
+ save_pointer(NAME(m_sprram_old2.get()), 0x2000 / 2);
}
@@ -88,9 +88,9 @@ void fuukivid_device::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
bitmap_ind8 &priority_bitmap = screen.priority();
const rectangle &visarea = screen.visible_area();
- UINT16 *spriteram16 = m_sprram;
+ UINT16 *spriteram16 = m_sprram.get();
- if (tilebank) spriteram16 = m_sprram_old2; // so that FG3 uses the buffered RAM
+ if (tilebank) spriteram16 = m_sprram_old2.get(); // so that FG3 uses the buffered RAM
int max_x = visarea.max_x + 1;
int max_y = visarea.max_y + 1;
@@ -180,6 +180,6 @@ void fuukivid_device::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
void fuukivid_device::buffer_sprites(void)
{
- memcpy(m_sprram_old2, m_sprram_old, 0x2000);
- memcpy(m_sprram_old, m_sprram, 0x2000);
+ memcpy(m_sprram_old2.get(), m_sprram_old.get(), 0x2000);
+ memcpy(m_sprram_old.get(), m_sprram.get(), 0x2000);
}
diff --git a/src/mame/video/fuukifg.h b/src/mame/video/fuukifg.h
index 28bfb4a0c79..41668672abf 100644
--- a/src/mame/video/fuukifg.h
+++ b/src/mame/video/fuukifg.h
@@ -13,9 +13,9 @@ public:
static void static_set_gfxdecode_tag(device_t &device, const char *tag);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int flip_screen, UINT32* tilebank);
- UINT16* m_sprram;
- UINT16* m_sprram_old;
- UINT16* m_sprram_old2;
+ std::unique_ptr<UINT16[]> m_sprram;
+ std::unique_ptr<UINT16[]> m_sprram_old;
+ std::unique_ptr<UINT16[]> m_sprram_old2;
DECLARE_WRITE16_MEMBER(fuuki_sprram_w)
diff --git a/src/mame/video/fuukifg3.cpp b/src/mame/video/fuukifg3.cpp
index db045401a06..80f96111f46 100644
--- a/src/mame/video/fuukifg3.cpp
+++ b/src/mame/video/fuukifg3.cpp
@@ -92,8 +92,8 @@ WRITE32_MEMBER(fuuki32_state::vram_3_w){ vram_w(offset, data, mem_mask, 3); }
void fuuki32_state::video_start()
{
-// m_buf_spriteram = auto_alloc_array(machine(), UINT32, m_spriteram.bytes() / 4);
-// m_buf_spriteram2 = auto_alloc_array(machine(), UINT32, m_spriteram.bytes() / 4);
+// m_buf_spriteram = std::make_unique<UINT32[]>(m_spriteram.bytes() / 4);
+// m_buf_spriteram2 = std::make_unique<UINT32[]>(m_spriteram.bytes() / 4);
diff --git a/src/mame/video/gaelco3d.cpp b/src/mame/video/gaelco3d.cpp
index 43041d2fa0e..49164395510 100644
--- a/src/mame/video/gaelco3d.cpp
+++ b/src/mame/video/gaelco3d.cpp
@@ -33,15 +33,15 @@ gaelco3d_renderer::gaelco3d_renderer(gaelco3d_state &state)
m_polygons(0),
m_texture_size(state.memregion("gfx1")->bytes()),
m_texmask_size(state.memregion("gfx2")->bytes() * 8),
- m_texture(auto_alloc_array(state.machine(), UINT8, m_texture_size)),
- m_texmask(auto_alloc_array(state.machine(), UINT8, m_texmask_size))
+ m_texture(std::make_unique<UINT8[]>(m_texture_size)),
+ m_texmask(std::make_unique<UINT8[]>(m_texmask_size))
{
state.machine().save().save_item(NAME(m_screenbits));
state.machine().save().save_item(NAME(m_zbuffer));
/* first expand the pixel data */
UINT8 *src = state.memregion("gfx1")->base();
- UINT8 *dst = m_texture;
+ UINT8 *dst = m_texture.get();
for (int y = 0; y < m_texture_size/4096; y += 2)
for (int x = 0; x < 4096; x += 2)
{
@@ -53,7 +53,7 @@ gaelco3d_renderer::gaelco3d_renderer(gaelco3d_state &state)
/* then expand the mask data */
src = state.memregion("gfx2")->base();
- dst = m_texmask;
+ dst = m_texmask.get();
for (int y = 0; y < m_texmask_size/4096; y++)
for (int x = 0; x < 4096; x++)
dst[y * 4096 + x] = (src[(x / 1024) * (m_texmask_size/8/4) + (y * 1024 + x % 1024) / 8] >> (x % 8)) & 1;
@@ -68,15 +68,15 @@ gaelco3d_renderer::gaelco3d_renderer(gaelco3d_state &state)
void gaelco3d_state::video_start()
{
- m_poly = auto_alloc(machine(), gaelco3d_renderer(*this));
+ m_poly = std::make_unique<gaelco3d_renderer>(*this);
- m_palette = auto_alloc_array(machine(), rgb_t, 32768);
- m_polydata_buffer = auto_alloc_array(machine(), UINT32, MAX_POLYDATA);
+ m_palette = std::make_unique<rgb_t[]>(32768);
+ m_polydata_buffer = std::make_unique<UINT32[]>(MAX_POLYDATA);
/* save states */
- save_pointer(NAME(m_palette), 32768);
- save_pointer(NAME(m_polydata_buffer), MAX_POLYDATA);
+ save_pointer(NAME(m_palette.get()), 32768);
+ save_pointer(NAME(m_polydata_buffer.get()), MAX_POLYDATA);
save_item(NAME(m_polydata_count));
save_item(NAME(m_lastscan));
}
@@ -208,7 +208,7 @@ void gaelco3d_renderer::render_noz_noperspective(INT32 scanline, const extent_t
float voz_step = object.voz_dx * zbase;
int zbufval = (int)(-object.z0 * zbase);
offs_t endmask = m_texture_size - 1;
- const rgb_t *palsource = m_state.m_palette + object.color;
+ const rgb_t *palsource = m_state.m_palette.get() + object.color;
UINT32 tex = object.tex;
UINT16 *dest = &m_screenbits.pix16(scanline);
UINT16 *zbuf = &m_zbuffer.pix16(scanline);
@@ -246,7 +246,7 @@ void gaelco3d_renderer::render_normal(INT32 scanline, const extent_t &extent, co
float uoz_dx = object.uoz_dx;
float voz_dx = object.voz_dx;
offs_t endmask = m_texture_size - 1;
- const rgb_t *palsource = m_state.m_palette + object.color;
+ const rgb_t *palsource = m_state.m_palette.get() + object.color;
UINT32 tex = object.tex;
float z0 = object.z0;
UINT16 *dest = &m_screenbits.pix16(scanline);
@@ -296,7 +296,7 @@ void gaelco3d_renderer::render_alphablend(INT32 scanline, const extent_t &extent
float uoz_dx = object.uoz_dx;
float voz_dx = object.voz_dx;
offs_t endmask = m_texture_size - 1;
- const rgb_t *palsource = m_state.m_palette + object.color;
+ const rgb_t *palsource = m_state.m_palette.get() + object.color;
UINT32 tex = object.tex;
float z0 = object.z0;
UINT16 *dest = &m_screenbits.pix16(scanline);
diff --git a/src/mame/video/galastrm.cpp b/src/mame/video/galastrm.cpp
index 46bc722ab86..b2841777249 100644
--- a/src/mame/video/galastrm.cpp
+++ b/src/mame/video/galastrm.cpp
@@ -19,9 +19,9 @@ galastrm_renderer::galastrm_renderer(galastrm_state& state)
void galastrm_state::video_start()
{
- m_spritelist = auto_alloc_array(machine(), struct gs_tempsprite, 0x4000);
+ m_spritelist = std::make_unique<gs_tempsprite[]>(0x4000);
- m_poly = auto_alloc(machine(), galastrm_renderer(*this));
+ m_poly = std::make_unique<galastrm_renderer>(*this);
m_screen->register_screen_bitmap(m_tmpbitmaps);
m_screen->register_screen_bitmap(m_poly->screenbits());
@@ -87,7 +87,7 @@ void galastrm_state::draw_sprites_pre(int x_offs, int y_offs)
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
while processing sprite ram and then draw them all at the end */
- m_sprite_ptr_pre = m_spritelist;
+ m_sprite_ptr_pre = m_spritelist.get();
for (offs = (m_spriteram.bytes()/4-4);offs >= 0;offs -= 4)
{
@@ -184,7 +184,7 @@ void galastrm_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
{
struct gs_tempsprite *sprite_ptr = m_sprite_ptr_pre;
- while (sprite_ptr != m_spritelist)
+ while (sprite_ptr != m_spritelist.get())
{
sprite_ptr--;
@@ -228,7 +228,7 @@ void galastrm_renderer::tc0610_rotate_draw(bitmap_ind16 &srcbitmap, const rectan
{
float x;
float y;
-// float z;
+// float z;
} tmpz[4];
vertex_t vert[4];
@@ -372,19 +372,19 @@ void galastrm_renderer::tc0610_rotate_draw(bitmap_ind16 &srcbitmap, const rectan
}
{
-// polyVert tmpz[4];
+// polyVert tmpz[4];
tmpz[0].x = ((float)(-zx) * zcs) - ((float)(-zy) * zsn);
tmpz[0].y = ((float)(-zx) * zsn) + ((float)(-zy) * zcs);
-// tmpz[0].z = 0.0;
+// tmpz[0].z = 0.0;
tmpz[1].x = ((float)(-zx) * zcs) - ((float)(zy-1) * zsn);
tmpz[1].y = ((float)(-zx) * zsn) + ((float)(zy-1) * zcs);
-// tmpz[1].z = 0.0;
+// tmpz[1].z = 0.0;
tmpz[2].x = ((float)(zx-1) * zcs) - ((float)(zy-1) * zsn);
tmpz[2].y = ((float)(zx-1) * zsn) + ((float)(zy-1) * zcs);
-// tmpz[2].z = 0.0;
+// tmpz[2].z = 0.0;
tmpz[3].x = ((float)(zx-1) * zcs) - ((float)(-zy) * zsn);
tmpz[3].y = ((float)(zx-1) * zsn) + ((float)(-zy) * zcs);
-// tmpz[3].z = 0.0;
+// tmpz[3].z = 0.0;
vert[0].x = tmpz[0].x + (float)(lx / 2);
vert[0].y = tmpz[0].y + (float)(ly / 2);
diff --git a/src/mame/video/galaxian.cpp b/src/mame/video/galaxian.cpp
index ba022af66b5..9af1055eea0 100644
--- a/src/mame/video/galaxian.cpp
+++ b/src/mame/video/galaxian.cpp
@@ -786,7 +786,7 @@ void galaxian_state::stars_init()
m_stars_blink_state = 0;
/* precalculate the RNG */
- m_stars = auto_alloc_array(machine(), UINT8, STAR_RNG_PERIOD);
+ m_stars = std::make_unique<UINT8[]>(STAR_RNG_PERIOD);
shiftreg = 0;
for (i = 0; i < STAR_RNG_PERIOD; i++)
{
diff --git a/src/mame/video/galaxold.cpp b/src/mame/video/galaxold.cpp
index cebfe20e687..1a4c42ac7c4 100644
--- a/src/mame/video/galaxold.cpp
+++ b/src/mame/video/galaxold.cpp
@@ -803,10 +803,10 @@ VIDEO_START_MEMBER(galaxold_state,dambustr)
m_draw_bullets = &galaxold_state::dambustr_draw_bullets;
/* allocate the temporary bitmap for the background priority */
- m_dambustr_tmpbitmap = auto_bitmap_ind16_alloc(machine(), m_screen->width(), m_screen->height());
+ m_dambustr_tmpbitmap = std::make_unique<bitmap_ind16>(m_screen->width(), m_screen->height());
/* make a copy of the tilemap to emulate background priority */
- m_dambustr_videoram2 = auto_alloc_array(machine(), UINT8, 0x0400);
+ m_dambustr_videoram2 = std::make_unique<UINT8[]>(0x0400);
m_dambustr_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxold_state::dambustr_get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,32,32);
m_dambustr_tilemap2->set_transparent_pen(0);
@@ -1776,7 +1776,7 @@ UINT32 galaxold_state::screen_update_dambustr(screen_device &screen, bitmap_ind1
dambustr_draw_upper_background(bitmap, cliprect);
/* only rows with color code > 3 are stronger than the background */
- memset(m_dambustr_videoram2, 0x20, 0x0400);
+ memset(m_dambustr_videoram2.get(), 0x20, 0x0400);
for (i=0; i<32; i++) {
color = m_attributesram[(i << 1) | 1] & m_color_mask;
if (color > 3) {
diff --git a/src/mame/video/galivan.cpp b/src/mame/video/galivan.cpp
index 1c427c02321..7b067829c9f 100644
--- a/src/mame/video/galivan.cpp
+++ b/src/mame/video/galivan.cpp
@@ -208,8 +208,8 @@ WRITE8_MEMBER(galivan_state::galivan_videoram_w)
WRITE8_MEMBER(galivan_state::galivan_gfxbank_w)
{
/* bits 0 and 1 coin counters */
- coin_counter_w(machine(), 0,data & 1);
- coin_counter_w(machine(), 1,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
+ machine().bookkeeping().coin_counter_w(1,data & 2);
/* bit 2 flip screen */
flip_screen_set(data & 0x04);
@@ -223,8 +223,8 @@ WRITE8_MEMBER(galivan_state::galivan_gfxbank_w)
WRITE8_MEMBER(galivan_state::ninjemak_gfxbank_w)
{
/* bits 0 and 1 coin counters */
- coin_counter_w(machine(), 0,data & 1);
- coin_counter_w(machine(), 1,data & 2);
+ machine().bookkeeping().coin_counter_w(0,data & 1);
+ machine().bookkeeping().coin_counter_w(1,data & 2);
/* bit 2 flip screen */
flip_screen_set(data & 0x04);
diff --git a/src/mame/video/gameplan.cpp b/src/mame/video/gameplan.cpp
index e20324372e0..9456e6910f1 100644
--- a/src/mame/video/gameplan.cpp
+++ b/src/mame/video/gameplan.cpp
@@ -219,7 +219,7 @@ WRITE_LINE_MEMBER(gameplan_state::video_command_trigger_w)
m_via_0->write_ca1(1);
}
- memset(m_videoram, m_video_data & 0x0f, m_videoram_size);
+ memset(m_videoram.get(), m_video_data & 0x0f, m_videoram_size);
/* set a timer for an arbitrarily short period.
The real time it takes to clear to screen is not
@@ -268,12 +268,12 @@ TIMER_CALLBACK_MEMBER(gameplan_state::via_0_ca1_timer_callback)
VIDEO_START_MEMBER(gameplan_state,common)
{
m_videoram_size = (HBSTART - HBEND) * (VBSTART - VBEND);
- m_videoram = auto_alloc_array(machine(), UINT8, m_videoram_size);
+ m_videoram = std::make_unique<UINT8[]>(m_videoram_size);
m_via_0_ca1_timer = timer_alloc(TIMER_VIA_0_CAL);
/* register for save states */
- save_pointer(NAME(m_videoram), m_videoram_size);
+ save_pointer(NAME(m_videoram.get()), m_videoram_size);
}
diff --git a/src/mame/video/gb_lcd.cpp b/src/mame/video/gb_lcd.cpp
index 9e0db236901..c7560b485bf 100644
--- a/src/mame/video/gb_lcd.cpp
+++ b/src/mame/video/gb_lcd.cpp
@@ -218,13 +218,13 @@ void gb_lcd_device::common_start()
{
m_screen->register_screen_bitmap(m_bitmap);
save_item(NAME(m_bitmap));
- m_oam = auto_alloc_array_clear(machine(), UINT8, 0x100);
+ m_oam = make_unique_clear<UINT8[]>(0x100);
machine().save().register_postload(save_prepost_delegate(FUNC(gb_lcd_device::videoptr_restore), this));
m_maincpu = machine().device<cpu_device>("maincpu");
- save_pointer(NAME(m_oam), 0x100);
+ save_pointer(NAME(m_oam.get()), 0x100);
save_item(NAME(m_window_lines_drawn));
save_item(NAME(m_vid_regs));
save_item(NAME(m_bg_zbuf));
@@ -286,18 +286,18 @@ void gb_lcd_device::common_start()
void gb_lcd_device::videoptr_restore()
{
- m_layer[0].bg_map = m_vram + m_gb_bgdtab_offs;
- m_layer[0].bg_tiles = m_vram + m_gb_chrgen_offs;
- m_layer[1].bg_map = m_vram + m_gb_wndtab_offs;
- m_layer[1].bg_tiles = m_vram + m_gb_chrgen_offs;
+ m_layer[0].bg_map = m_vram.get() + m_gb_bgdtab_offs;
+ m_layer[0].bg_tiles = m_vram.get() + m_gb_chrgen_offs;
+ m_layer[1].bg_map = m_vram.get() + m_gb_wndtab_offs;
+ m_layer[1].bg_tiles = m_vram.get() + m_gb_chrgen_offs;
}
void cgb_lcd_device::videoptr_restore()
{
- m_layer[0].bg_map = m_vram + m_gb_bgdtab_offs;
- m_layer[0].gbc_map = m_vram + m_gbc_bgdtab_offs;
- m_layer[1].bg_map = m_vram + m_gb_wndtab_offs;
- m_layer[1].gbc_map = m_vram + m_gbc_wndtab_offs;
+ m_layer[0].bg_map = m_vram.get() + m_gb_bgdtab_offs;
+ m_layer[0].gbc_map = m_vram.get() + m_gbc_bgdtab_offs;
+ m_layer[1].bg_map = m_vram.get() + m_gb_wndtab_offs;
+ m_layer[1].gbc_map = m_vram.get() + m_gbc_wndtab_offs;
}
@@ -306,10 +306,10 @@ void gb_lcd_device::device_start()
common_start();
m_lcd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gb_lcd_device::lcd_timer_proc),this));
- m_vram = auto_alloc_array_clear(machine(), UINT8, 0x2000);
- save_pointer(NAME(m_vram), 0x2000);
+ m_vram = make_unique_clear<UINT8[]>(0x2000);
+ save_pointer(NAME(m_vram.get()), 0x2000);
- memcpy(m_oam, dmg_oam_fingerprint, 0x100);
+ memcpy(m_oam.get(), dmg_oam_fingerprint, 0x100);
}
void mgb_lcd_device::device_start()
@@ -317,10 +317,10 @@ void mgb_lcd_device::device_start()
common_start();
m_lcd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mgb_lcd_device::lcd_timer_proc),this));
- m_vram = auto_alloc_array_clear(machine(), UINT8, 0x2000);
- save_pointer(NAME(m_vram), 0x2000);
+ m_vram = make_unique_clear<UINT8[]>(0x2000);
+ save_pointer(NAME(m_vram.get()), 0x2000);
- memcpy(m_oam, mgb_oam_fingerprint, 0x100);
+ memcpy(m_oam.get(), mgb_oam_fingerprint, 0x100);
}
void sgb_lcd_device::device_start()
@@ -328,11 +328,11 @@ void sgb_lcd_device::device_start()
common_start();
m_lcd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sgb_lcd_device::lcd_timer_proc),this));
- m_vram = auto_alloc_array_clear(machine(), UINT8, 0x2000);
- save_pointer(NAME(m_vram), 0x2000);
+ m_vram = make_unique_clear<UINT8[]>(0x2000);
+ save_pointer(NAME(m_vram.get()), 0x2000);
- m_sgb_tile_data = auto_alloc_array_clear(machine(), UINT8, 0x2000);
- save_pointer(NAME(m_sgb_tile_data), 0x2000);
+ m_sgb_tile_data = make_unique_clear<UINT8[]>(0x2000);
+ save_pointer(NAME(m_sgb_tile_data.get()), 0x2000);
memset(m_sgb_tile_map, 0, sizeof(m_sgb_tile_map));
@@ -359,10 +359,10 @@ void cgb_lcd_device::device_start()
common_start();
m_lcd_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cgb_lcd_device::lcd_timer_proc),this));
- m_vram = auto_alloc_array_clear(machine(), UINT8, 0x4000);
- save_pointer(NAME(m_vram), 0x4000);
+ m_vram = make_unique_clear<UINT8[]>(0x4000);
+ save_pointer(NAME(m_vram.get()), 0x4000);
- memcpy(m_oam, cgb_oam_fingerprint, 0x100);
+ memcpy(m_oam.get(), cgb_oam_fingerprint, 0x100);
/* Background is initialised as white */
for (int i = 0; i < 32; i++)
@@ -447,7 +447,7 @@ void sgb_lcd_device::device_reset()
{
common_reset();
- memset(m_sgb_tile_data, 0, 0x2000);
+ memset(m_sgb_tile_data.get(), 0, 0x2000);
m_sgb_window_mask = 0;
@@ -484,7 +484,7 @@ inline void gb_lcd_device::plot_pixel(bitmap_ind16 &bitmap, int x, int y, UINT32
void gb_lcd_device::select_sprites()
{
int /*yindex,*/ line, height;
- UINT8 *oam = m_oam + 39 * 4;
+ UINT8 *oam = m_oam.get() + 39 * 4;
m_sprCount = 0;
@@ -537,8 +537,8 @@ void gb_lcd_device::update_sprites()
yindex = m_current_line;
line = m_current_line + 16;
- oam = m_oam + 39 * 4;
- vram = m_vram;
+ oam = m_oam.get() + 39 * 4;
+ vram = m_vram.get();
for (int i = 39; i >= 0; i--)
{
/* if sprite is on current line && x-coordinate && x-coordinate is < 168 */
@@ -630,8 +630,8 @@ void gb_lcd_device::update_scanline()
if (m_layer[0].enabled)
{
m_layer[0].bgline = (SCROLLY + m_current_line) & 0xFF;
- m_layer[0].bg_map = m_vram + m_gb_bgdtab_offs;
- m_layer[0].bg_tiles = m_vram + m_gb_chrgen_offs;
+ m_layer[0].bg_map = m_vram.get() + m_gb_bgdtab_offs;
+ m_layer[0].bg_tiles = m_vram.get() + m_gb_chrgen_offs;
m_layer[0].xindex = SCROLLX >> 3;
m_layer[0].xshift = SCROLLX & 7;
m_layer[0].xstart = 0;
@@ -645,8 +645,8 @@ void gb_lcd_device::update_scanline()
xpos = 0;
m_layer[1].bgline = m_window_lines_drawn;
- m_layer[1].bg_map = m_vram + m_gb_wndtab_offs;
- m_layer[1].bg_tiles = m_vram + m_gb_chrgen_offs;
+ m_layer[1].bg_map = m_vram.get() + m_gb_wndtab_offs;
+ m_layer[1].bg_tiles = m_vram.get() + m_gb_chrgen_offs;
m_layer[1].xindex = 0;
m_layer[1].xshift = 0;
m_layer[1].xstart = xpos;
@@ -771,8 +771,8 @@ void sgb_lcd_device::update_sprites()
yindex = m_current_line + SGB_YOFFSET;
line = m_current_line + 16;
- oam = m_oam + 39 * 4;
- vram = m_vram;
+ oam = m_oam.get() + 39 * 4;
+ vram = m_vram.get();
for (int i = 39; i >= 0; i--)
{
/* if sprite is on current line && x-coordinate && x-coordinate is < 168 */
@@ -860,9 +860,9 @@ void sgb_lcd_device::refresh_border()
for (UINT16 xidx = 0; xidx < 64; xidx += 2)
{
if (map[xidx + 1] & 0x80) /* Vertical flip */
- tiles = m_sgb_tile_data + ((7 - (yidx % 8)) << 1);
+ tiles = m_sgb_tile_data.get() + ((7 - (yidx % 8)) << 1);
else /* No vertical flip */
- tiles = m_sgb_tile_data + ((yidx % 8) << 1);
+ tiles = m_sgb_tile_data.get() + ((yidx % 8) << 1);
tiles2 = tiles + 16;
UINT8 pal = (map[xidx + 1] & 0x1C) >> 2;
@@ -941,8 +941,8 @@ void sgb_lcd_device::update_scanline()
if (m_layer[0].enabled)
{
m_layer[0].bgline = (SCROLLY + m_current_line) & 0xFF;
- m_layer[0].bg_map = m_vram + m_gb_bgdtab_offs;
- m_layer[0].bg_tiles = m_vram + m_gb_chrgen_offs;
+ m_layer[0].bg_map = m_vram.get() + m_gb_bgdtab_offs;
+ m_layer[0].bg_tiles = m_vram.get() + m_gb_chrgen_offs;
m_layer[0].xindex = SCROLLX >> 3;
m_layer[0].xshift = SCROLLX & 7;
m_layer[0].xstart = 0;
@@ -959,8 +959,8 @@ void sgb_lcd_device::update_scanline()
xpos = 0;
m_layer[1].bgline = m_window_lines_drawn;
- m_layer[1].bg_map = m_vram + m_gb_wndtab_offs;
- m_layer[1].bg_tiles = m_vram + m_gb_chrgen_offs;
+ m_layer[1].bg_map = m_vram.get() + m_gb_wndtab_offs;
+ m_layer[1].bg_tiles = m_vram.get() + m_gb_chrgen_offs;
m_layer[1].xindex = 0;
m_layer[1].xshift = 0;
m_layer[1].xstart = xpos;
@@ -1117,7 +1117,7 @@ void cgb_lcd_device::update_sprites()
yindex = m_current_line;
line = m_current_line + 16;
- oam = m_oam + 39 * 4;
+ oam = m_oam.get() + 39 * 4;
for (int i = 39; i >= 0; i--)
{
/* if sprite is on current line && x-coordinate && x-coordinate is < 168 */
@@ -1236,8 +1236,8 @@ void cgb_lcd_device::update_scanline()
if (m_layer[0].enabled)
{
m_layer[0].bgline = (SCROLLY + m_current_line) & 0xFF;
- m_layer[0].bg_map = m_vram + m_gb_bgdtab_offs;
- m_layer[0].gbc_map = m_vram + m_gbc_bgdtab_offs;
+ m_layer[0].bg_map = m_vram.get() + m_gb_bgdtab_offs;
+ m_layer[0].gbc_map = m_vram.get() + m_gbc_bgdtab_offs;
m_layer[0].xindex = SCROLLX >> 3;
m_layer[0].xshift = SCROLLX & 7;
m_layer[0].xstart = 0;
@@ -1254,8 +1254,8 @@ void cgb_lcd_device::update_scanline()
xpos = 0;
m_layer[1].bgline = m_window_lines_drawn;
- m_layer[1].bg_map = m_vram + m_gb_wndtab_offs;
- m_layer[1].gbc_map = m_vram + m_gbc_wndtab_offs;
+ m_layer[1].bg_map = m_vram.get() + m_gb_wndtab_offs;
+ m_layer[1].gbc_map = m_vram.get() + m_gbc_wndtab_offs;
m_layer[1].xindex = 0;
m_layer[1].xshift = 0;
m_layer[1].xstart = xpos;
@@ -1287,7 +1287,7 @@ void cgb_lcd_device::update_scanline()
}
map = m_layer[l].bg_map + ((m_layer[l].bgline << 2) & 0x3E0);
gbcmap = m_layer[l].gbc_map + ((m_layer[l].bgline << 2) & 0x3E0);
- tiles = (gbcmap[m_layer[l].xindex] & 0x08) ? (m_vram + m_gbc_chrgen_offs) : (m_vram + m_gb_chrgen_offs);
+ tiles = (gbcmap[m_layer[l].xindex] & 0x08) ? (m_vram.get() + m_gbc_chrgen_offs) : (m_vram.get() + m_gb_chrgen_offs);
/* Check for vertical flip */
if (gbcmap[m_layer[l].xindex] & 0x40)
@@ -1352,7 +1352,7 @@ void cgb_lcd_device::update_scanline()
m_layer[l].xindex = (m_layer[l].xindex + 1) & 31;
m_layer[l].xshift = 0;
- tiles = (gbcmap[m_layer[l].xindex] & 0x08) ? (m_vram + m_gbc_chrgen_offs) : (m_vram + m_gb_chrgen_offs);
+ tiles = (gbcmap[m_layer[l].xindex] & 0x08) ? (m_vram.get() + m_gbc_chrgen_offs) : (m_vram.get() + m_gb_chrgen_offs);
/* Check for vertical flip */
if (gbcmap[m_layer[l].xindex] & 0x40)
@@ -2181,7 +2181,7 @@ WRITE8_MEMBER(gb_lcd_device::video_w)
break;
case 0x06: /* DMA - DMA Transfer and Start Address */
{
- UINT8 *P = m_oam;
+ UINT8 *P = m_oam.get();
offset = (UINT16) data << 8;
for (data = 0; data < 0xA0; data++)
*P++ = space.read_byte(offset++);
@@ -2782,16 +2782,16 @@ void sgb_lcd_device::sgb_io_write_pal(int offs, UINT8 *data)
break;
case 0x13: /* CHR_TRN */
if (data[1] & 0x1)
- memcpy(m_sgb_tile_data + 4096, m_vram + 0x0800, 4096);
+ memcpy(m_sgb_tile_data.get() + 4096, m_vram.get() + 0x0800, 4096);
else
- memcpy(m_sgb_tile_data, m_vram + 0x0800, 4096);
+ memcpy(m_sgb_tile_data.get(), m_vram.get() + 0x0800, 4096);
break;
case 0x14: /* PCT_TRN */
{
UINT16 col;
if (m_sgb_border_hack)
{
- memcpy(m_sgb_tile_map, m_vram + 0x1000, 2048);
+ memcpy(m_sgb_tile_map, m_vram.get() + 0x1000, 2048);
for (int i = 0; i < 64; i++)
{
col = (m_vram[0x0800 + (i * 2) + 1 ] << 8) | m_vram[0x0800 + (i * 2)];
@@ -2800,7 +2800,7 @@ void sgb_lcd_device::sgb_io_write_pal(int offs, UINT8 *data)
}
else /* Do things normally */
{
- memcpy(m_sgb_tile_map, m_vram + 0x0800, 2048);
+ memcpy(m_sgb_tile_map, m_vram.get() + 0x0800, 2048);
for (int i = 0; i < 64; i++)
{
col = (m_vram[0x1000 + (i * 2) + 1] << 8) | m_vram[0x1000 + (i * 2)];
@@ -2810,7 +2810,7 @@ void sgb_lcd_device::sgb_io_write_pal(int offs, UINT8 *data)
}
break;
case 0x15: /* ATTR_TRN */
- memcpy(m_sgb_atf_data, m_vram + 0x0800, 4050);
+ memcpy(m_sgb_atf_data, m_vram.get() + 0x0800, 4050);
break;
case 0x16: /* ATTR_SET */
{
diff --git a/src/mame/video/gb_lcd.h b/src/mame/video/gb_lcd.h
index b68648046b4..4e512e3da79 100644
--- a/src/mame/video/gb_lcd.h
+++ b/src/mame/video/gb_lcd.h
@@ -73,7 +73,7 @@ protected:
UINT16 m_sgb_pal_data[4096];
UINT8 m_sgb_pal_map[20][18];
UINT16 m_sgb_pal[128];
- UINT8 *m_sgb_tile_data;
+ std::unique_ptr<UINT8[]> m_sgb_tile_data;
UINT8 m_sgb_tile_map[2048];
UINT8 m_sgb_window_mask;
@@ -119,8 +119,8 @@ protected:
emu_timer *m_lcd_timer;
int m_gbc_mode;
- UINT8 *m_vram; // Pointer to VRAM
- UINT8 *m_oam; // Pointer to OAM memory
+ std::unique_ptr<UINT8[]> m_vram; // Pointer to VRAM
+ std::unique_ptr<UINT8[]> m_oam; // Pointer to OAM memory
UINT8 m_gb_tile_no_mod;
UINT32 m_gb_chrgen_offs; // GB Character generator
UINT32 m_gb_bgdtab_offs; // GB Background character table
@@ -133,7 +133,6 @@ protected:
TIMER_CALLBACK_MEMBER(video_init_vbl);
virtual TIMER_CALLBACK_MEMBER(lcd_timer_proc);
virtual void videoptr_restore();
- void save_gb_video();
void increment_scanline();
void lcd_switch_on();
};
diff --git a/src/mame/video/gime.h b/src/mame/video/gime.h
index 2caf82c5ddb..b73c64440e7 100644
--- a/src/mame/video/gime.h
+++ b/src/mame/video/gime.h
@@ -270,7 +270,6 @@ private:
UINT32 get_data_mc6847(UINT32 video_position, UINT8 *data, UINT8 *mode);
UINT32 get_data_without_attributes(UINT32 video_position, UINT8 *data, UINT8 *mode);
UINT32 get_data_with_attributes(UINT32 video_position, UINT8 *data, UINT8 *mode);
- bool is_blinking(void);
// template function for doing video update collection
template<UINT8 xres, get_data_func get_data, bool record_mode>
diff --git a/src/mame/video/glass.cpp b/src/mame/video/glass.cpp
index 416dbb37f7d..a661ce578a2 100644
--- a/src/mame/video/glass.cpp
+++ b/src/mame/video/glass.cpp
@@ -129,7 +129,7 @@ void glass_state::video_start()
{
m_pant[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(glass_state::get_tile_info_glass_screen0),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
m_pant[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(glass_state::get_tile_info_glass_screen1),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
- m_screen_bitmap = auto_bitmap_ind16_alloc (machine(), 320, 200);
+ m_screen_bitmap = std::make_unique<bitmap_ind16>(320, 200);
save_item(NAME(*m_screen_bitmap));
diff --git a/src/mame/video/goal92.cpp b/src/mame/video/goal92.cpp
index 43d8941a0c7..c4f0e99529a 100644
--- a/src/mame/video/goal92.cpp
+++ b/src/mame/video/goal92.cpp
@@ -88,7 +88,7 @@ TILE_GET_INFO_MEMBER(goal92_state::get_fore_tile_info)
void goal92_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
{
- UINT16 *buffered_spriteram16 = m_buffered_spriteram;
+ UINT16 *buffered_spriteram16 = m_buffered_spriteram.get();
int offs, fx, fy, x, y, color, sprite;
for (offs = 3; offs <= 0x400 - 5; offs += 4)
@@ -136,8 +136,8 @@ void goal92_state::video_start()
m_fg_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goal92_state::get_fore_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
m_tx_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goal92_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
- m_buffered_spriteram = auto_alloc_array(machine(), UINT16, 0x400 * 2);
- save_pointer(NAME(m_buffered_spriteram), 0x400 * 2);
+ m_buffered_spriteram = std::make_unique<UINT16[]>(0x400 * 2);
+ save_pointer(NAME(m_buffered_spriteram.get()), 0x400 * 2);
m_bg_layer->set_transparent_pen(15);
m_fg_layer->set_transparent_pen(15);
@@ -184,6 +184,6 @@ void goal92_state::screen_eof_goal92(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_buffered_spriteram, m_spriteram, 0x400 * 2);
+ memcpy(m_buffered_spriteram.get(), m_spriteram, 0x400 * 2);
}
}
diff --git a/src/mame/video/gp9001.cpp b/src/mame/video/gp9001.cpp
index 9a8c379bf7f..de1435b49eb 100644
--- a/src/mame/video/gp9001.cpp
+++ b/src/mame/video/gp9001.cpp
@@ -308,11 +308,11 @@ void gp9001vdp_device::create_tilemaps()
void gp9001vdp_device::device_start()
{
- sp.vram16_buffer = auto_alloc_array_clear(machine(), UINT16, GP9001_SPRITERAM_SIZE/2);
+ sp.vram16_buffer = make_unique_clear<UINT16[]>(GP9001_SPRITERAM_SIZE/2);
create_tilemaps();
- save_pointer(NAME(sp.vram16_buffer), GP9001_SPRITERAM_SIZE/2);
+ save_pointer(NAME(sp.vram16_buffer.get()), GP9001_SPRITERAM_SIZE/2);
save_item(NAME(gp9001_scroll_reg));
save_item(NAME(gp9001_voffs));
@@ -680,10 +680,10 @@ void gp9001vdp_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clip
UINT16 *source;
- if (sp.use_sprite_buffer) source = sp.vram16_buffer;
- else source = m_spriteram;
- int total_elements = m_gfx[1]->elements();
- int total_colors = m_gfx[1]->colors();
+ if (sp.use_sprite_buffer) source = sp.vram16_buffer.get();
+ 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;
@@ -936,5 +936,5 @@ void gp9001vdp_device::gp9001_render_vdp(bitmap_ind16 &bitmap, const rectangle &
void gp9001vdp_device::gp9001_screen_eof(void)
{
/** Shift sprite RAM buffers *** Used to fix sprite lag **/
- if (sp.use_sprite_buffer) memcpy(sp.vram16_buffer,m_spriteram,GP9001_SPRITERAM_SIZE);
+ if (sp.use_sprite_buffer) memcpy(sp.vram16_buffer.get(),m_spriteram,GP9001_SPRITERAM_SIZE);
}
diff --git a/src/mame/video/gp9001.h b/src/mame/video/gp9001.h
index 45bdd5faeb4..f7dcebe491c 100644
--- a/src/mame/video/gp9001.h
+++ b/src/mame/video/gp9001.h
@@ -26,7 +26,7 @@ struct gp9001tilemaplayer : gp9001layer
struct gp9001spritelayer : gp9001layer
{
bool use_sprite_buffer;
- UINT16 *vram16_buffer; // vram buffer for this layer
+ std::unique_ptr<UINT16[]> vram16_buffer; // vram buffer for this layer
};
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/gridlee.cpp b/src/mame/video/gridlee.cpp
index 96b7fd0733f..60010d897d3 100644
--- a/src/mame/video/gridlee.cpp
+++ b/src/mame/video/gridlee.cpp
@@ -63,12 +63,12 @@ void gridlee_state::expand_pixels()
void gridlee_state::video_start()
{
/* allocate a local copy of video RAM */
- m_local_videoram = auto_alloc_array_clear(machine(), UINT8, 256 * 256);
+ m_local_videoram = make_unique_clear<UINT8[]>(256 * 256);
/* reset the palette */
m_palettebank_vis = 0;
- save_pointer(NAME(m_local_videoram), 256 * 256);
+ save_pointer(NAME(m_local_videoram.get()), 256 * 256);
save_item(NAME(m_cocktail_flip));
save_item(NAME(m_palettebank_vis));
machine().save().register_postload(save_prepost_delegate(FUNC(gridlee_state::expand_pixels), this));
diff --git a/src/mame/video/groundfx.cpp b/src/mame/video/groundfx.cpp
index 0f5d385845e..93dd3474384 100644
--- a/src/mame/video/groundfx.cpp
+++ b/src/mame/video/groundfx.cpp
@@ -7,7 +7,7 @@
void groundfx_state::video_start()
{
- m_spritelist = auto_alloc_array(machine(), struct gfx_tempsprite, 0x4000);
+ m_spritelist = std::make_unique<gfx_tempsprite[]>(0x4000);
/* Hack */
m_hack_cliprect.set(69, 250, 24 + 5, 24 + 44);
@@ -74,7 +74,7 @@ void groundfx_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
while processing sprite ram and then draw them all at the end */
- struct gfx_tempsprite *sprite_ptr = m_spritelist;
+ struct gfx_tempsprite *sprite_ptr = m_spritelist.get();
for (offs = (m_spriteram.bytes()/4-4);offs >= 0;offs -= 4)
{
@@ -170,7 +170,7 @@ void groundfx_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
}
/* this happens only if primsks != NULL */
- while (sprite_ptr != m_spritelist)
+ while (sprite_ptr != m_spritelist.get())
{
const rectangle *clipper;
diff --git a/src/mame/video/gunbustr.cpp b/src/mame/video/gunbustr.cpp
index 854f46c72f7..62a6dcb1a2b 100644
--- a/src/mame/video/gunbustr.cpp
+++ b/src/mame/video/gunbustr.cpp
@@ -7,7 +7,7 @@
void gunbustr_state::video_start()
{
- m_spritelist = auto_alloc_array(machine(), struct gb_tempsprite, 0x4000);
+ m_spritelist = std::make_unique<gb_tempsprite[]>(0x4000);
}
/************************************************************
@@ -69,7 +69,7 @@ void gunbustr_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
while processing sprite ram and then draw them all at the end */
- struct gb_tempsprite *sprite_ptr = m_spritelist;
+ struct gb_tempsprite *sprite_ptr = m_spritelist.get();
for (offs = (m_spriteram.bytes()/4-4);offs >= 0;offs -= 4)
{
@@ -181,7 +181,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
}
/* this happens only if primsks != NULL */
- while (sprite_ptr != m_spritelist)
+ while (sprite_ptr != m_spritelist.get())
{
sprite_ptr--;
diff --git a/src/mame/video/gunsmoke.cpp b/src/mame/video/gunsmoke.cpp
index c9b3069cb89..c5570da6592 100644
--- a/src/mame/video/gunsmoke.cpp
+++ b/src/mame/video/gunsmoke.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
#include "emu.h"
#include "includes/gunsmoke.h"
@@ -73,8 +73,8 @@ WRITE8_MEMBER(gunsmoke_state::gunsmoke_colorram_w)
WRITE8_MEMBER(gunsmoke_state::gunsmoke_c804_w)
{
/* bits 0 and 1 are for coin counters */
- coin_counter_w(machine(), 1, data & 0x01);
- coin_counter_w(machine(), 0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
/* bits 2 and 3 select the ROM bank */
membank("bank1")->set_entry((data & 0x0c) >> 2);
diff --git a/src/mame/video/higemaru.cpp b/src/mame/video/higemaru.cpp
index 0069eedbfd8..4cf0847d29b 100644
--- a/src/mame/video/higemaru.cpp
+++ b/src/mame/video/higemaru.cpp
@@ -77,8 +77,8 @@ WRITE8_MEMBER(higemaru_state::higemaru_c800_w)
logerror("c800 = %02x\n",data);
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0,data & 2);
- coin_counter_w(machine(), 1,data & 1);
+ machine().bookkeeping().coin_counter_w(0,data & 2);
+ machine().bookkeeping().coin_counter_w(1,data & 1);
/* bit 7 flips screen */
if (flip_screen() != (data & 0x80))
diff --git a/src/mame/video/hng64.cpp b/src/mame/video/hng64.cpp
index 015c8ae0fac..a666474bb5e 100644
--- a/src/mame/video/hng64.cpp
+++ b/src/mame/video/hng64.cpp
@@ -1285,10 +1285,10 @@ void hng64_state::video_start()
m_additive_tilemap_debug = 0;
// Rasterizer creation
- m_poly_renderer = auto_alloc(machine(), hng64_poly_renderer(*this));
+ m_poly_renderer = std::make_unique<hng64_poly_renderer>(*this);
// 3d information
- m_dl = auto_alloc_array(machine(), UINT16, 0x100);
+ m_dl = std::make_unique<UINT16[]>(0x100);
m_polys.resize(HNG64_MAX_POLYGONS);
m_texturerom = memregion("textures")->base();
diff --git a/src/mame/video/hng64_3d.cpp b/src/mame/video/hng64_3d.cpp
index 868f871fcf8..b28aa4109d6 100644
--- a/src/mame/video/hng64_3d.cpp
+++ b/src/mame/video/hng64_3d.cpp
@@ -15,7 +15,7 @@ hng64_poly_renderer::hng64_poly_renderer(hng64_state& state)
, m_colorBuffer3d(state.m_screen->visible_area().width(), state.m_screen->visible_area().height())
{
const INT32 bufferSize = state.m_screen->visible_area().width() * state.m_screen->visible_area().height();
- m_depthBuffer3d = auto_alloc_array(state.machine(), float, bufferSize);
+ m_depthBuffer3d = std::make_unique<float[]>(bufferSize);
}
diff --git a/src/mame/video/hyprduel.cpp b/src/mame/video/hyprduel.cpp
index 70b6864d2f4..266c0ad0724 100644
--- a/src/mame/video/hyprduel.cpp
+++ b/src/mame/video/hyprduel.cpp
@@ -125,7 +125,7 @@ inline void hyprduel_state::get_tile_info( tile_data &tileinfo, int tile_index,
if (code & 0x8000) /* Special: draw a tile of a single color (i.e. not from the gfx ROMs) */
{
int _code = code & 0x000f;
- tileinfo.pen_data = m_empty_tiles + _code * 16 * 16;
+ tileinfo.pen_data = m_empty_tiles.get() + _code * 16 * 16;
tileinfo.palette_base = ((code & 0x0ff0)) + 0x1000;
tileinfo.flags = 0;
tileinfo.group = 0;
@@ -162,7 +162,7 @@ inline void hyprduel_state::get_tile_info_8bit( tile_data &tileinfo, int tile_in
if (code & 0x8000) /* Special: draw a tile of a single color (i.e. not from the gfx ROMs) */
{
int _code = code & 0x000f;
- tileinfo.pen_data = m_empty_tiles + _code * 16 * 16;
+ tileinfo.pen_data = m_empty_tiles.get() + _code * 16 * 16;
tileinfo.palette_base = ((code & 0x0ff0)) + 0x1000;
tileinfo.flags = 0;
tileinfo.group = 0;
@@ -207,7 +207,7 @@ inline void hyprduel_state::get_tile_info_16x16_8bit( tile_data &tileinfo, int t
if (code & 0x8000) /* Special: draw a tile of a single color (i.e. not from the gfx ROMs) */
{
int _code = code & 0x000f;
- tileinfo.pen_data = m_empty_tiles + _code * 16 * 16;
+ tileinfo.pen_data = m_empty_tiles.get() + _code * 16 * 16;
tileinfo.palette_base = ((code & 0x0ff0)) + 0x1000;
tileinfo.flags = 0;
tileinfo.group = 0;
@@ -304,8 +304,8 @@ void hyprduel_state::alloc_empty_tiles( )
{
int code,i;
- m_empty_tiles = auto_alloc_array(machine(), UINT8, 16*16*16);
- save_pointer(NAME(m_empty_tiles), 16*16*16);
+ m_empty_tiles = std::make_unique<UINT8[]>(16*16*16);
+ save_pointer(NAME(m_empty_tiles.get()), 16*16*16);
for (code = 0; code < 0x10; code++)
for (i = 0; i < 16 * 16; i++)
@@ -334,7 +334,7 @@ void hyprduel_state::expand_gfx1(hyprduel_state &state)
{
UINT8 *base_gfx = state.memregion("gfx1")->base();
UINT32 length = 2 * state.memregion("gfx1")->bytes();
- state.m_expanded_gfx1 = auto_alloc_array(state.machine(), UINT8, length);
+ state.m_expanded_gfx1 = std::make_unique<UINT8[]>(length);
for (int i = 0; i < length; i += 2)
{
UINT8 src = base_gfx[i / 2];
@@ -347,11 +347,11 @@ VIDEO_START_MEMBER(hyprduel_state,common_14220)
{
expand_gfx1(*this);
alloc_empty_tiles();
- m_tiletable_old = auto_alloc_array(machine(), UINT16, m_tiletable.bytes() / 2);
- m_dirtyindex = auto_alloc_array(machine(), UINT8, m_tiletable.bytes() / 4);
+ m_tiletable_old = std::make_unique<UINT16[]>(m_tiletable.bytes() / 2);
+ m_dirtyindex = std::make_unique<UINT8[]>(m_tiletable.bytes() / 4);
- save_pointer(NAME(m_tiletable_old), m_tiletable.bytes() / 2);
- save_pointer(NAME(m_dirtyindex), m_tiletable.bytes() / 4);
+ save_pointer(NAME(m_tiletable_old.get()), m_tiletable.bytes() / 2);
+ save_pointer(NAME(m_dirtyindex.get()), m_tiletable.bytes() / 4);
m_bg_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hyprduel_state::get_tile_info_0_8bit),this), TILEMAP_SCAN_ROWS, 8, 8, WIN_NX, WIN_NY);
m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(hyprduel_state::get_tile_info_1_8bit),this), TILEMAP_SCAN_ROWS, 8, 8, WIN_NX, WIN_NY);
@@ -449,7 +449,7 @@ VIDEO_START_MEMBER(hyprduel_state,magerror_14220)
void hyprduel_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- UINT8 *base_gfx4 = m_expanded_gfx1;
+ UINT8 *base_gfx4 = m_expanded_gfx1.get();
UINT8 *base_gfx8 = memregion("gfx1")->base();
UINT32 gfx_size = memregion("gfx1")->bytes();
@@ -660,7 +660,7 @@ UINT32 hyprduel_state::screen_update_hyprduel(screen_device &screen, bitmap_ind1
{
int dirty = 0;
- memset(m_dirtyindex, 0, m_tiletable.bytes() / 4);
+ memset(m_dirtyindex.get(), 0, m_tiletable.bytes() / 4);
for (i = 0; i < m_tiletable.bytes() / 4; i++)
{
UINT32 tile_new = (m_tiletable[2 * i + 0] << 16 ) + m_tiletable[2 * i + 1];
@@ -672,7 +672,7 @@ UINT32 hyprduel_state::screen_update_hyprduel(screen_device &screen, bitmap_ind1
dirty = 1;
}
}
- memcpy(m_tiletable_old, m_tiletable, m_tiletable.bytes());
+ memcpy(m_tiletable_old.get(), m_tiletable, m_tiletable.bytes());
if (dirty)
{
diff --git a/src/mame/video/igs017_igs031.cpp b/src/mame/video/igs017_igs031.cpp
index 8aa254db422..8e8993e0fa7 100644
--- a/src/mame/video/igs017_igs031.cpp
+++ b/src/mame/video/igs017_igs031.cpp
@@ -242,7 +242,7 @@ void igs017_igs031_device::expand_sprites()
int i;
m_sprites_gfx_size = size / 2 * 3;
- m_sprites_gfx = auto_alloc_array(machine(), UINT8, m_sprites_gfx_size);
+ m_sprites_gfx = std::make_unique<UINT8[]>(m_sprites_gfx_size);
for (i = 0; i < size / 2 ; i++)
{
@@ -296,7 +296,7 @@ void igs017_igs031_device::draw_sprite(bitmap_ind16 &bitmap,const rectangle &cli
if ( addr + dimx * dimy >= m_sprites_gfx_size )
return;
- gfx_element gfx(m_palette, m_sprites_gfx + addr, dimx, dimy, dimx, m_palette->entries(), 0x100, 32);
+ gfx_element gfx(m_palette, m_sprites_gfx.get() + addr, dimx, dimy, dimx, m_palette->entries(), 0x100, 32);
gfx.transpen(bitmap,cliprect,
0, color,
diff --git a/src/mame/video/igs017_igs031.h b/src/mame/video/igs017_igs031.h
index b8d2e18f2ec..4c3b2c66ed3 100644
--- a/src/mame/video/igs017_igs031.h
+++ b/src/mame/video/igs017_igs031.h
@@ -49,7 +49,7 @@ public:
UINT8 m_video_disable;
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
- UINT8 *m_sprites_gfx;
+ std::unique_ptr<UINT8[]> m_sprites_gfx;
int m_sprites_gfx_size;
int get_nmi_enable() { return m_nmi_enable; }
diff --git a/src/mame/video/inufuku.cpp b/src/mame/video/inufuku.cpp
index d9f896c9e95..35ce40a1df2 100644
--- a/src/mame/video/inufuku.cpp
+++ b/src/mame/video/inufuku.cpp
@@ -123,7 +123,7 @@ void inufuku_state::video_start()
m_bg_tilemap->set_transparent_pen(255);
m_tx_tilemap->set_transparent_pen(255);
- m_spriteram1_old = auto_alloc_array_clear(machine(), UINT16, m_spriteram1.bytes()/2);
+ m_spriteram1_old = make_unique_clear<UINT16[]>(m_spriteram1.bytes()/2);
}
@@ -159,7 +159,7 @@ UINT32 inufuku_state::screen_update_inufuku(screen_device &screen, bitmap_ind16
m_tx_tilemap->set_scrolly(0, m_tx_scrolly);
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 4);
- m_spr->draw_sprites( m_spriteram1_old, m_spriteram1.bytes(), screen, bitmap, cliprect );
+ m_spr->draw_sprites( m_spriteram1_old.get(), m_spriteram1.bytes(), screen, bitmap, cliprect );
return 0;
}
@@ -168,6 +168,6 @@ void inufuku_state::screen_eof_inufuku(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_spriteram1_old,m_spriteram1,m_spriteram1.bytes());
+ memcpy(m_spriteram1_old.get(),m_spriteram1,m_spriteram1.bytes());
}
}
diff --git a/src/mame/video/irobot.cpp b/src/mame/video/irobot.cpp
index 418384d4f99..6ee40245158 100644
--- a/src/mame/video/irobot.cpp
+++ b/src/mame/video/irobot.cpp
@@ -85,7 +85,7 @@ void irobot_state::_irobot_poly_clear(UINT8 *bitmap_base)
void irobot_state::irobot_poly_clear()
{
- UINT8 *bitmap_base = m_bufsel ? m_polybitmap2 : m_polybitmap1;
+ UINT8 *bitmap_base = m_bufsel ? m_polybitmap2.get() : m_polybitmap1.get();
_irobot_poly_clear(bitmap_base);
}
@@ -99,12 +99,12 @@ void irobot_state::video_start()
{
/* Setup 2 bitmaps for the polygon generator */
int height = m_screen->height();
- m_polybitmap1 = auto_alloc_array(machine(), UINT8, BITMAP_WIDTH * height);
- m_polybitmap2 = auto_alloc_array(machine(), UINT8, BITMAP_WIDTH * height);
+ m_polybitmap1 = std::make_unique<UINT8[]>(BITMAP_WIDTH * height);
+ m_polybitmap2 = std::make_unique<UINT8[]>(BITMAP_WIDTH * height);
/* clear the bitmaps so we start with valid palette look-up values for drawing */
- _irobot_poly_clear(m_polybitmap1);
- _irobot_poly_clear(m_polybitmap2);
+ _irobot_poly_clear(m_polybitmap1.get());
+ _irobot_poly_clear(m_polybitmap2.get());
/* Set clipping */
m_ir_xmin = m_ir_ymin = 0;
@@ -225,9 +225,9 @@ void irobot_state::irobot_run_video()
logerror("Starting Polygon Generator, Clear=%d\n",m_vg_clear);
if (m_bufsel)
- polybitmap = m_polybitmap2;
+ polybitmap = m_polybitmap2.get();
else
- polybitmap = m_polybitmap1;
+ polybitmap = m_polybitmap1.get();
lpnt=0;
while (lpnt < 0x7ff)
@@ -348,7 +348,7 @@ void irobot_state::irobot_run_video()
UINT32 irobot_state::screen_update_irobot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
UINT8 *videoram = m_videoram;
- UINT8 *bitmap_base = m_bufsel ? m_polybitmap1 : m_polybitmap2;
+ UINT8 *bitmap_base = m_bufsel ? m_polybitmap1.get() : m_polybitmap2.get();
int x, y, offs;
/* copy the polygon bitmap */
diff --git a/src/mame/video/ironhors.cpp b/src/mame/video/ironhors.cpp
index 8f68938ea6a..c10abdd1669 100644
--- a/src/mame/video/ironhors.cpp
+++ b/src/mame/video/ironhors.cpp
@@ -111,8 +111,8 @@ WRITE8_MEMBER(ironhors_state::palettebank_w)
machine().tilemap().mark_all_dirty();
}
- coin_counter_w(machine(), 0, data & 0x10);
- coin_counter_w(machine(), 1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x10);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
/* bit 6 unknown - set after game over */
diff --git a/src/mame/video/itech32.cpp b/src/mame/video/itech32.cpp
index f0b9b84b8e0..3c882ac757b 100644
--- a/src/mame/video/itech32.cpp
+++ b/src/mame/video/itech32.cpp
@@ -168,8 +168,8 @@ void itech32_state::video_start()
int i;
/* allocate memory */
- m_videoram = auto_alloc_array(machine(), UINT16, VRAM_WIDTH * (m_vram_height + 16) * 2);
- memset(m_videoram, 0xff, VRAM_WIDTH * (m_vram_height + 16) * 2 * 2);
+ m_videoram = std::make_unique<UINT16[]>(VRAM_WIDTH * (m_vram_height + 16) * 2);
+ memset(m_videoram.get(), 0xff, VRAM_WIDTH * (m_vram_height + 16) * 2 * 2);
/* videoplane[0] is the foreground; videoplane[1] is the background */
m_videoplane[0] = &m_videoram[0 * VRAM_WIDTH * (m_vram_height + 16) + 8 * VRAM_WIDTH];
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/jalblend.cpp b/src/mame/video/jalblend.cpp
index 1220d2a3d09..93359334934 100644
--- a/src/mame/video/jalblend.cpp
+++ b/src/mame/video/jalblend.cpp
@@ -36,9 +36,9 @@ jaleco_blend_device::jaleco_blend_device(const machine_config &mconfig, const ch
void jaleco_blend_device::device_start()
{
- m_table = auto_alloc_array_clear(machine(), UINT8, 0xc00);
+ m_table = make_unique_clear<UINT8[]>(0xc00);
- save_pointer(NAME(m_table), 0xc00);
+ save_pointer(NAME(m_table.get()), 0xc00);
}
//-------------------------------------------------
@@ -47,7 +47,7 @@ void jaleco_blend_device::device_start()
void jaleco_blend_device::device_reset()
{
- memset(m_table, 0, 0xc00);
+ memset(m_table.get(), 0, 0xc00);
}
void jaleco_blend_device::set(int color, UINT8 val)
diff --git a/src/mame/video/jalblend.h b/src/mame/video/jalblend.h
index 109e4c66e44..721bf320676 100644
--- a/src/mame/video/jalblend.h
+++ b/src/mame/video/jalblend.h
@@ -22,7 +22,7 @@ protected:
private:
/* each palette entry contains a fourth 'alpha' value */
- UINT8 *m_table;
+ std::unique_ptr<UINT8[]> m_table;
template<class _BitmapClass>
void drawgfx_common(palette_device &palette,_BitmapClass &dest_bmp,const rectangle &clip,gfx_element *gfx,
diff --git a/src/mame/video/k001005.cpp b/src/mame/video/k001005.cpp
index 0a6b3e535b7..fad84787317 100644
--- a/src/mame/video/k001005.cpp
+++ b/src/mame/video/k001005.cpp
@@ -32,12 +32,12 @@ k001005_renderer::k001005_renderer(device_t &parent, screen_device &screen, devi
int width = screen.width();
int height = screen.height();
- m_fb[0] = auto_bitmap_rgb32_alloc(machine(), width, height);
- m_fb[1] = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_fb[0] = std::make_unique<bitmap_rgb32>( width, height);
+ m_fb[1] = std::make_unique<bitmap_rgb32>( width, height);
- m_zb = auto_bitmap_ind32_alloc(machine(), width, height);
+ m_zb = std::make_unique<bitmap_ind32>(width, height);
- m_3dfifo = auto_alloc_array(machine(), UINT32, 0x10000);
+ m_3dfifo = std::make_unique<UINT32[]>(0x10000);
m_3dfifo_ptr = 0;
m_fb_page = 0;
@@ -45,8 +45,8 @@ k001005_renderer::k001005_renderer(device_t &parent, screen_device &screen, devi
for (int k=0; k < 8; k++)
{
- m_tex_mirror_table[0][k] = auto_alloc_array(machine(), int, 128);
- m_tex_mirror_table[1][k] = auto_alloc_array(machine(), int, 128);
+ m_tex_mirror_table[0][k] = std::make_unique<int[]>(128);
+ m_tex_mirror_table[1][k] = std::make_unique<int[]>(128);
int size = (k+1)*8;
@@ -58,7 +58,7 @@ k001005_renderer::k001005_renderer(device_t &parent, screen_device &screen, devi
}
// save state
- parent.save_pointer(NAME(m_3dfifo), 0x10000);
+ parent.save_pointer(NAME(m_3dfifo.get()), 0x10000);
parent.save_item(NAME(m_3dfifo_ptr));
parent.save_item(NAME(*m_fb[0]));
parent.save_item(NAME(*m_fb[1]));
@@ -143,7 +143,7 @@ void k001005_renderer::render_polygons()
vertex_t *vertex3;
vertex_t *vertex4;
- UINT32 *fifo = m_3dfifo;
+ UINT32 *fifo = m_3dfifo.get();
const rectangle& visarea = screen().visible_area();
@@ -917,8 +917,8 @@ void k001005_renderer::draw_scanline_2d_tex(INT32 scanline, const extent_t &exte
int texture_width = extradata.texture_width;
int texture_height = extradata.texture_height;
- int *x_mirror_table = m_tex_mirror_table[texture_mirror_x][texture_width];
- int *y_mirror_table = m_tex_mirror_table[texture_mirror_y][texture_height];
+ int *x_mirror_table = m_tex_mirror_table[texture_mirror_x][texture_width].get();
+ int *y_mirror_table = m_tex_mirror_table[texture_mirror_y][texture_height].get();
for (int x = extent.startx; x < extent.stopx; x++)
{
@@ -1038,8 +1038,8 @@ void k001005_renderer::draw_scanline_tex(INT32 scanline, const extent_t &extent,
UINT32 *fb = &m_fb[m_fb_page]->pix32(scanline);
float *zb = (float*)&m_zb->pix32(scanline);
- int *x_mirror_table = m_tex_mirror_table[texture_mirror_x][texture_width];
- int *y_mirror_table = m_tex_mirror_table[texture_mirror_y][texture_height];
+ int *x_mirror_table = m_tex_mirror_table[texture_mirror_x][texture_width].get();
+ int *y_mirror_table = m_tex_mirror_table[texture_mirror_y][texture_height].get();
for (int x = extent.startx; x < extent.stopx; x++)
{
@@ -1203,16 +1203,16 @@ void k001005_device::device_start()
{
m_k001006 = machine().device(m_k001006_tag);
- m_ram[0] = auto_alloc_array(machine(), UINT16, 0x140000);
- m_ram[1] = auto_alloc_array(machine(), UINT16, 0x140000);
+ m_ram[0] = std::make_unique<UINT16[]>(0x140000);
+ m_ram[1] = std::make_unique<UINT16[]>(0x140000);
- m_fifo = auto_alloc_array(machine(), UINT32, 0x800);
+ m_fifo = std::make_unique<UINT32[]>(0x800);
m_renderer = auto_alloc(machine(), k001005_renderer(*this, *m_screen, m_k001006));
- save_pointer(NAME(m_ram[0]), 0x140000);
- save_pointer(NAME(m_ram[1]), 0x140000);
- save_pointer(NAME(m_fifo), 0x800);
+ save_pointer(NAME(m_ram[0].get()), 0x140000);
+ save_pointer(NAME(m_ram[1].get()), 0x140000);
+ save_pointer(NAME(m_fifo.get()), 0x800);
save_item(NAME(m_status));
save_item(NAME(m_ram_ptr));
save_item(NAME(m_fifo_read_ptr));
diff --git a/src/mame/video/k001005.h b/src/mame/video/k001005.h
index ae4838f4b65..b863ffdc8de 100644
--- a/src/mame/video/k001005.h
+++ b/src/mame/video/k001005.h
@@ -72,12 +72,12 @@ public:
static const int POLY_B = 5;
private:
- bitmap_rgb32 *m_fb[2];
- bitmap_ind32 *m_zb;
+ std::unique_ptr<bitmap_rgb32> m_fb[2];
+ std::unique_ptr<bitmap_ind32> m_zb;
rectangle m_cliprect;
int m_fb_page;
- UINT32 *m_3dfifo;
+ std::unique_ptr<UINT32[]> m_3dfifo;
int m_3dfifo_ptr;
vertex_t m_prev_v[4];
@@ -95,7 +95,7 @@ private:
device_t *m_k001006;
- int *m_tex_mirror_table[2][8];
+ std::unique_ptr<int[]> m_tex_mirror_table[2][8];
};
@@ -110,8 +110,6 @@ public:
void draw(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void swap_buffers();
- void preprocess_texture_data(UINT8 *rom, int length, int gticlub);
- void render_polygons();
DECLARE_READ32_MEMBER( read );
DECLARE_WRITE32_MEMBER( write );
@@ -128,8 +126,8 @@ private:
device_t *m_k001006;
const char *m_k001006_tag;
- UINT16 * m_ram[2];
- UINT32 * m_fifo;
+ std::unique_ptr<UINT16[]> m_ram[2];
+ std::unique_ptr<UINT32[]> m_fifo;
UINT32 m_status;
int m_ram_ptr;
diff --git a/src/mame/video/k001006.cpp b/src/mame/video/k001006.cpp
index 67a55f137fc..1c60d4b56b0 100644
--- a/src/mame/video/k001006.cpp
+++ b/src/mame/video/k001006.cpp
@@ -20,7 +20,7 @@ k001006_device::k001006_device(const machine_config &mconfig, const char *tag, d
m_unknown_ram(nullptr),
m_addr(0),
m_device_sel(0),
- m_palette(nullptr),
+ m_palette(nullptr), m_gfx_region(nullptr), m_gfxrom(nullptr),
m_tex_layout(0)
{
}
@@ -41,18 +41,18 @@ void k001006_device::device_config_complete()
void k001006_device::device_start()
{
- m_pal_ram = auto_alloc_array_clear(machine(), UINT16, 0x800);
- m_unknown_ram = auto_alloc_array_clear(machine(), UINT16, 0x1000);
- m_palette = auto_alloc_array_clear(machine(), UINT32, 0x800);
+ m_pal_ram = make_unique_clear<UINT16[]>(0x800);
+ m_unknown_ram = make_unique_clear<UINT16[]>(0x1000);
+ m_palette = make_unique_clear<UINT32[]>(0x800);
m_gfxrom = machine().root_device().memregion(m_gfx_region)->base();
- m_texrom = auto_alloc_array(machine(), UINT8, 0x800000);
+ m_texrom = std::make_unique<UINT8[]>(0x800000);
- preprocess_texture_data(m_texrom, m_gfxrom, 0x800000, m_tex_layout);
+ preprocess_texture_data(m_texrom.get(), m_gfxrom, 0x800000, m_tex_layout);
- save_pointer(NAME(m_pal_ram), 0x800*sizeof(UINT16));
- save_pointer(NAME(m_unknown_ram), 0x1000*sizeof(UINT16));
- save_pointer(NAME(m_palette), 0x800*sizeof(UINT32));
+ save_pointer(NAME(m_pal_ram.get()), 0x800*sizeof(UINT16));
+ save_pointer(NAME(m_unknown_ram.get()), 0x1000*sizeof(UINT16));
+ save_pointer(NAME(m_palette.get()), 0x800*sizeof(UINT32));
save_item(NAME(m_device_sel));
save_item(NAME(m_addr));
}
@@ -65,7 +65,7 @@ void k001006_device::device_reset()
{
m_addr = 0;
m_device_sel = 0;
- memset(m_palette, 0, 0x800*sizeof(UINT32));
+ memset(m_palette.get(), 0, 0x800*sizeof(UINT32));
}
/*****************************************************************************
@@ -155,7 +155,7 @@ WRITE32_MEMBER( k001006_device::write )
UINT32 k001006_device::fetch_texel(int page, int pal_index, int u, int v)
{
- UINT8 *tex = m_texrom + page;
+ UINT8 *tex = m_texrom.get() + page;
int texel = tex[((v & 0x1ff) * 512) + (u & 0x1ff)];
return m_palette[pal_index + texel];
}
diff --git a/src/mame/video/k001006.h b/src/mame/video/k001006.h
index eb9fba02c80..6b3b23e41c2 100644
--- a/src/mame/video/k001006.h
+++ b/src/mame/video/k001006.h
@@ -30,14 +30,14 @@ protected:
private:
// internal state
- UINT16 * m_pal_ram;
- UINT16 * m_unknown_ram;
+ std::unique_ptr<UINT16[]> m_pal_ram;
+ std::unique_ptr<UINT16[]> m_unknown_ram;
UINT32 m_addr;
int m_device_sel;
- UINT8 * m_texrom;
+ std::unique_ptr<UINT8[]> m_texrom;
- UINT32 * m_palette;
+ std::unique_ptr<UINT32[]> m_palette;
const char * m_gfx_region;
UINT8 * m_gfxrom;
diff --git a/src/mame/video/k001604.cpp b/src/mame/video/k001604.cpp
index 474dddce394..6308e9f2736 100644
--- a/src/mame/video/k001604.cpp
+++ b/src/mame/video/k001604.cpp
@@ -25,6 +25,7 @@ k001604_device::k001604_device(const machine_config &mconfig, const char *tag, d
m_roz_size(0),
m_txt_mem_offset(0),
m_roz_mem_offset(0),
+ m_layer_roz(nullptr),
m_tile_ram(nullptr),
m_char_ram(nullptr),
m_reg(nullptr),
@@ -81,9 +82,9 @@ void k001604_device::device_start()
m_gfx_index[0] = m_gfx_index_1;
m_gfx_index[1] = m_gfx_index_2;
- m_char_ram = auto_alloc_array_clear(machine(), UINT32, 0x200000 / 4);
- m_tile_ram = auto_alloc_array_clear(machine(), UINT32, 0x20000 / 4);
- m_reg = auto_alloc_array_clear(machine(), UINT32, 0x400 / 4);
+ m_char_ram = make_unique_clear<UINT32[]>(0x200000 / 4);
+ m_tile_ram = make_unique_clear<UINT32[]>(0x20000 / 4);
+ m_reg = make_unique_clear<UINT32[]>(0x400 / 4);
/* create tilemaps */
roz_tile_size = m_roz_size ? 16 : 8;
@@ -106,12 +107,12 @@ void k001604_device::device_start()
m_layer_8x8[0]->set_transparent_pen(0);
m_layer_8x8[1]->set_transparent_pen(0);
- m_gfxdecode->set_gfx(m_gfx_index[0], global_alloc(gfx_element(m_palette, k001604_char_layout_layer_8x8, (UINT8*)&m_char_ram[0], 0, m_palette->entries() / 16, 0)));
- m_gfxdecode->set_gfx(m_gfx_index[1], global_alloc(gfx_element(m_palette, k001604_char_layout_layer_16x16, (UINT8*)&m_char_ram[0], 0, m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index[0], std::make_unique<gfx_element>(m_palette, k001604_char_layout_layer_8x8, (UINT8*)&m_char_ram[0], 0, m_palette->entries() / 16, 0));
+ m_gfxdecode->set_gfx(m_gfx_index[1], std::make_unique<gfx_element>(m_palette, k001604_char_layout_layer_16x16, (UINT8*)&m_char_ram[0], 0, m_palette->entries() / 16, 0));
- save_pointer(NAME(m_reg), 0x400 / 4);
- save_pointer(NAME(m_char_ram), 0x200000 / 4);
- save_pointer(NAME(m_tile_ram), 0x20000 / 4);
+ save_pointer(NAME(m_reg.get()), 0x400 / 4);
+ save_pointer(NAME(m_char_ram.get()), 0x200000 / 4);
+ save_pointer(NAME(m_tile_ram.get()), 0x20000 / 4);
}
@@ -121,9 +122,9 @@ void k001604_device::device_start()
void k001604_device::device_reset()
{
- memset(m_char_ram, 0, 0x200000);
- memset(m_tile_ram, 0, 0x10000);
- memset(m_reg, 0, 0x400);
+ memset(m_char_ram.get(), 0, 0x200000);
+ memset(m_tile_ram.get(), 0, 0x10000);
+ memset(m_reg.get(), 0, 0x400);
}
/*****************************************************************************
@@ -337,7 +338,7 @@ READ32_MEMBER( k001604_device::reg_r )
WRITE32_MEMBER( k001604_device::tile_w )
{
int x/*, y*/;
- COMBINE_DATA(m_tile_ram + offset);
+ COMBINE_DATA(m_tile_ram.get() + offset);
if (m_layer_size)
{
@@ -394,7 +395,7 @@ WRITE32_MEMBER( k001604_device::char_w )
addr = offset + ((set + (bank * 0x40000)) / 4);
- COMBINE_DATA(m_char_ram + addr);
+ COMBINE_DATA(m_char_ram.get() + addr);
m_gfxdecode->gfx(m_gfx_index[0])->mark_dirty(addr / 32);
m_gfxdecode->gfx(m_gfx_index[1])->mark_dirty(addr / 128);
@@ -402,7 +403,7 @@ WRITE32_MEMBER( k001604_device::char_w )
WRITE32_MEMBER( k001604_device::reg_w )
{
- COMBINE_DATA(m_reg + offset);
+ COMBINE_DATA(m_reg.get() + offset);
switch (offset)
{
diff --git a/src/mame/video/k001604.h b/src/mame/video/k001604.h
index e33227328d1..d0719936029 100644
--- a/src/mame/video/k001604.h
+++ b/src/mame/video/k001604.h
@@ -47,9 +47,9 @@ private:
tilemap_t *m_layer_roz;
int m_gfx_index[2];
- UINT32 * m_tile_ram;
- UINT32 * m_char_ram;
- UINT32 * m_reg;
+ std::unique_ptr<UINT32[]> m_tile_ram;
+ std::unique_ptr<UINT32[]> m_char_ram;
+ std::unique_ptr<UINT32[]> m_reg;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
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/k007342.cpp b/src/mame/video/k007342.cpp
index 0cc57b6c826..e44dd84e068 100644
--- a/src/mame/video/k007342.cpp
+++ b/src/mame/video/k007342.cpp
@@ -81,8 +81,8 @@ void k007342_device::device_start()
m_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(k007342_device::get_tile_info0),this), tilemap_mapper_delegate(FUNC(k007342_device::scan),this), 8, 8, 64, 32);
m_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(k007342_device::get_tile_info1),this), tilemap_mapper_delegate(FUNC(k007342_device::scan),this), 8, 8, 64, 32);
- m_ram = auto_alloc_array_clear(machine(), UINT8, 0x2000);
- m_scroll_ram = auto_alloc_array_clear(machine(), UINT8, 0x0200);
+ m_ram = make_unique_clear<UINT8[]>(0x2000);
+ m_scroll_ram = make_unique_clear<UINT8[]>(0x0200);
m_colorram_0 = &m_ram[0x0000];
m_colorram_1 = &m_ram[0x1000];
@@ -92,8 +92,8 @@ void k007342_device::device_start()
m_tilemap[0]->set_transparent_pen(0);
m_tilemap[1]->set_transparent_pen(0);
- save_pointer(NAME(m_ram), 0x2000);
- save_pointer(NAME(m_scroll_ram), 0x0200);
+ save_pointer(NAME(m_ram.get()), 0x2000);
+ save_pointer(NAME(m_scroll_ram.get()), 0x0200);
save_item(NAME(m_int_enabled));
save_item(NAME(m_flipscreen));
save_item(NAME(m_scrollx));
diff --git a/src/mame/video/k007342.h b/src/mame/video/k007342.h
index 5700c0aca76..edc307868fa 100644
--- a/src/mame/video/k007342.h
+++ b/src/mame/video/k007342.h
@@ -33,8 +33,8 @@ protected:
virtual void device_reset() override;
private:
// internal state
- UINT8 *m_ram;
- UINT8 *m_scroll_ram;
+ std::unique_ptr<UINT8[]> m_ram;
+ std::unique_ptr<UINT8[]> m_scroll_ram;
UINT8 *m_videoram_0;
UINT8 *m_videoram_1;
UINT8 *m_colorram_0;
diff --git a/src/mame/video/k007420.cpp b/src/mame/video/k007420.cpp
index d9806491022..9b539f23669 100644
--- a/src/mame/video/k007420.cpp
+++ b/src/mame/video/k007420.cpp
@@ -37,9 +37,9 @@ void k007420_device::device_start()
// bind the init function
m_callback.bind_relative_to(*owner());
- m_ram = auto_alloc_array_clear(machine(), UINT8, 0x200);
+ m_ram = make_unique_clear<UINT8[]>(0x200);
- save_pointer(NAME(m_ram), 0x200);
+ save_pointer(NAME(m_ram.get()), 0x200);
save_item(NAME(m_flipscreen)); // current one uses 7342 one
save_item(NAME(m_regs)); // current one uses 7342 ones
}
diff --git a/src/mame/video/k007420.h b/src/mame/video/k007420.h
index cc94cda3be1..471efe297b6 100644
--- a/src/mame/video/k007420.h
+++ b/src/mame/video/k007420.h
@@ -26,7 +26,7 @@ protected:
virtual void device_reset() override;
private:
// internal state
- UINT8 *m_ram;
+ std::unique_ptr<UINT8[]> m_ram;
int m_flipscreen; // current code uses the 7342 flipscreen!!
UINT8 m_regs[8]; // current code uses the 7342 regs!! (only [2])
diff --git a/src/mame/video/k037122.cpp b/src/mame/video/k037122.cpp
index c5e42a8c4fc..e7f57786174 100644
--- a/src/mame/video/k037122.cpp
+++ b/src/mame/video/k037122.cpp
@@ -67,9 +67,9 @@ void k037122_device::device_start()
if(!m_gfxdecode->started())
throw device_missing_dependencies();
- m_char_ram = auto_alloc_array_clear(machine(), UINT32, 0x200000 / 4);
- m_tile_ram = auto_alloc_array_clear(machine(), UINT32, 0x20000 / 4);
- m_reg = auto_alloc_array_clear(machine(), UINT32, 0x400 / 4);
+ m_char_ram = make_unique_clear<UINT32[]>(0x200000 / 4);
+ m_tile_ram = make_unique_clear<UINT32[]>(0x20000 / 4);
+ m_reg = make_unique_clear<UINT32[]>(0x400 / 4);
m_layer[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(k037122_device::tile_info_layer0),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64);
m_layer[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(k037122_device::tile_info_layer1),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64);
@@ -77,11 +77,11 @@ void k037122_device::device_start()
m_layer[0]->set_transparent_pen(0);
m_layer[1]->set_transparent_pen(0);
- m_gfxdecode->set_gfx(m_gfx_index,global_alloc(gfx_element(m_palette, k037122_char_layout, (UINT8*)m_char_ram, 0, m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index,std::make_unique<gfx_element>(m_palette, k037122_char_layout, (UINT8*)m_char_ram.get(), 0, m_palette->entries() / 16, 0));
- save_pointer(NAME(m_reg), 0x400 / 4);
- save_pointer(NAME(m_char_ram), 0x200000 / 4);
- save_pointer(NAME(m_tile_ram), 0x20000 / 4);
+ save_pointer(NAME(m_reg.get()), 0x400 / 4);
+ save_pointer(NAME(m_char_ram.get()), 0x200000 / 4);
+ save_pointer(NAME(m_tile_ram.get()), 0x20000 / 4);
}
@@ -91,9 +91,9 @@ void k037122_device::device_start()
void k037122_device::device_reset()
{
- memset(m_char_ram, 0, 0x200000);
- memset(m_tile_ram, 0, 0x20000);
- memset(m_reg, 0, 0x400);
+ memset(m_char_ram.get(), 0, 0x200000);
+ memset(m_tile_ram.get(), 0, 0x20000);
+ memset(m_reg.get(), 0, 0x400);
}
/*****************************************************************************
@@ -163,7 +163,7 @@ READ32_MEMBER( k037122_device::sram_r )
WRITE32_MEMBER( k037122_device::sram_w )
{
- COMBINE_DATA(m_tile_ram + offset);
+ COMBINE_DATA(m_tile_ram.get() + offset);
if (m_reg[0xc] & 0x10000)
{
@@ -210,7 +210,7 @@ WRITE32_MEMBER( k037122_device::char_w )
int bank = m_reg[0x30 / 4] & 0x7;
UINT32 addr = offset + (bank * (0x40000/4));
- COMBINE_DATA(m_char_ram + addr);
+ COMBINE_DATA(m_char_ram.get() + addr);
m_gfxdecode->gfx(m_gfx_index)->mark_dirty(addr / 32);
}
@@ -228,5 +228,5 @@ READ32_MEMBER( k037122_device::reg_r )
WRITE32_MEMBER( k037122_device::reg_w )
{
- COMBINE_DATA(m_reg + offset);
+ COMBINE_DATA(m_reg.get() + offset);
}
diff --git a/src/mame/video/k037122.h b/src/mame/video/k037122.h
index 086d9eb445f..181f28e355d 100644
--- a/src/mame/video/k037122.h
+++ b/src/mame/video/k037122.h
@@ -33,9 +33,9 @@ private:
// internal state
tilemap_t *m_layer[2];
- UINT32 * m_tile_ram;
- UINT32 * m_char_ram;
- UINT32 * m_reg;
+ std::unique_ptr<UINT32[]> m_tile_ram;
+ std::unique_ptr<UINT32[]> m_char_ram;
+ std::unique_ptr<UINT32[]> m_reg;
int m_gfx_index;
required_device<gfxdecode_device> m_gfxdecode;
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 45f634e95ca..ae93ec9cb01 100644
--- a/src/mame/video/k051960.cpp
+++ b/src/mame/video/k051960.cpp
@@ -196,12 +196,12 @@ 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 = auto_alloc_array_clear(machine(), UINT8, 0x400);
+ m_ram = make_unique_clear<UINT8[]>(0x400);
// bind callbacks
m_k051960_cb.bind_relative_to(*owner());
@@ -217,7 +217,7 @@ void k051960_device::device_start()
save_item(NAME(m_readroms));
save_item(NAME(m_nmi_enabled));
save_item(NAME(m_spriterombank));
- save_pointer(NAME(m_ram), 0x400);
+ save_pointer(NAME(m_ram.get()), 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/k051960.h b/src/mame/video/k051960.h
index c05afc3cadc..069f0f48440 100644
--- a/src/mame/video/k051960.h
+++ b/src/mame/video/k051960.h
@@ -87,7 +87,7 @@ protected:
private:
// internal state
- UINT8 *m_ram;
+ std::unique_ptr<UINT8[]> m_ram;
UINT8 *m_sprite_rom;
UINT32 m_sprite_size;
diff --git a/src/mame/video/k052109.cpp b/src/mame/video/k052109.cpp
index 07e4e1ef80c..08e781da0f8 100644
--- a/src/mame/video/k052109.cpp
+++ b/src/mame/video/k052109.cpp
@@ -223,9 +223,9 @@ 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 = auto_alloc_array_clear(machine(), UINT8, 0x6000);
+ m_ram = make_unique_clear<UINT8[]>(0x6000);
m_colorram_F = &m_ram[0x0000];
m_colorram_A = &m_ram[0x0800];
@@ -253,7 +253,7 @@ void k052109_device::device_start()
m_firq_handler.resolve_safe();
m_nmi_handler.resolve_safe();
- save_pointer(NAME(m_ram), 0x6000);
+ save_pointer(NAME(m_ram.get()), 0x6000);
save_item(NAME(m_rmrd_line));
save_item(NAME(m_romsubbank));
save_item(NAME(m_scrollctrl));
diff --git a/src/mame/video/k052109.h b/src/mame/video/k052109.h
index a8f893ee443..96f25882fa4 100644
--- a/src/mame/video/k052109.h
+++ b/src/mame/video/k052109.h
@@ -76,7 +76,7 @@ protected:
private:
// internal state
- UINT8 *m_ram;
+ std::unique_ptr<UINT8[]> m_ram;
UINT8 *m_videoram_F;
UINT8 *m_videoram_A;
UINT8 *m_videoram_B;
diff --git a/src/mame/video/k053244_k053245.cpp b/src/mame/video/k053244_k053245.cpp
index 8596af1ce54..796eff8a3ec 100644
--- a/src/mame/video/k053244_k053245.cpp
+++ b/src/mame/video/k053244_k053245.cpp
@@ -123,22 +123,22 @@ 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;
m_z_rejection = -1;
- m_ram = auto_alloc_array_clear(machine(), UINT16, m_ramsize / 2);
- m_buffer = auto_alloc_array_clear(machine(), UINT16, m_ramsize / 2);
+ m_ram = make_unique_clear<UINT16[]>(m_ramsize / 2);
+ m_buffer = make_unique_clear<UINT16[]>(m_ramsize / 2);
// bind callbacks
m_k05324x_cb.bind_relative_to(*owner());
- save_pointer(NAME(m_ram), m_ramsize / 2);
- save_pointer(NAME(m_buffer), m_ramsize / 2);
+ save_pointer(NAME(m_ram.get()), m_ramsize / 2);
+ save_pointer(NAME(m_buffer.get()), m_ramsize / 2);
save_item(NAME(m_rombank));
save_item(NAME(m_z_rejection));
save_item(NAME(m_regs));
@@ -167,7 +167,7 @@ READ16_MEMBER( k05324x_device::k053245_word_r )
WRITE16_MEMBER( k05324x_device::k053245_word_w )
{
- COMBINE_DATA(m_ram + offset);
+ COMBINE_DATA(m_ram.get() + offset);
}
READ8_MEMBER( k05324x_device::k053245_r )
@@ -197,7 +197,7 @@ void k05324x_device::clear_buffer()
void k05324x_device::update_buffer()
{
- memcpy(m_buffer, m_ram, m_ramsize);
+ memcpy(m_buffer.get(), m_ram.get(), m_ramsize);
}
READ8_MEMBER( k05324x_device::k053244_r )
@@ -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/k053244_k053245.h b/src/mame/video/k053244_k053245.h
index 9b9c47055fa..924edc2a37f 100644
--- a/src/mame/video/k053244_k053245.h
+++ b/src/mame/video/k053244_k053245.h
@@ -64,8 +64,8 @@ protected:
private:
// internal state
- UINT16 *m_ram;
- UINT16 *m_buffer;
+ std::unique_ptr<UINT16[]> m_ram;
+ std::unique_ptr<UINT16[]> m_buffer;
UINT8 *m_sprite_rom;
UINT32 m_sprite_size;
diff --git a/src/mame/video/k053246_k053247_k055673.cpp b/src/mame/video/k053246_k053247_k055673.cpp
index b97fc461e63..fc9bc1581eb 100644
--- a/src/mame/video/k053246_k053247_k055673.cpp
+++ b/src/mame/video/k053246_k053247_k055673.cpp
@@ -66,7 +66,7 @@ void k053247_device::clear_all()
void k053247_device::k053247_get_ram( UINT16 **ram )
{
- *ram = m_ram;
+ *ram = m_ram.get();
}
int k053247_device::k053247_get_dx( void )
@@ -102,7 +102,7 @@ READ16_MEMBER( k053247_device::k053247_word_r )
WRITE16_MEMBER( k053247_device::k053247_word_w )
{
- COMBINE_DATA(m_ram + offset);
+ COMBINE_DATA(m_ram.get() + offset);
}
READ8_MEMBER( k053247_device::k053247_r )
@@ -401,7 +401,7 @@ void k053247_device::k053247_sprites_draw_common( _BitmapClass &bitmap, const re
k053247_draw_single_sprite_gxcore( bitmap, cliprect,
nullptr, nullptr,
- code, m_ram, offs,
+ code, m_ram.get(), offs,
color,
/* gx only */
0, 0, 0, 0,
@@ -1023,13 +1023,13 @@ void k055673_device::device_start()
m_z_rejection = -1;
m_gfx = m_gfxdecode->gfx(gfx_index);
m_objcha_line = CLEAR_LINE;
- m_ram = auto_alloc_array(machine(), UINT16, 0x1000/2);
+ m_ram = std::make_unique<UINT16[]>(0x1000/2);
- memset(m_ram, 0, 0x1000);
+ memset(m_ram.get(), 0, 0x1000);
memset(m_kx46_regs, 0, 8);
memset(m_kx47_regs, 0, 32);
- machine().save().save_pointer(NAME(m_ram), 0x800);
+ machine().save().save_pointer(NAME(m_ram.get()), 0x800);
machine().save().save_item(NAME(m_kx46_regs));
machine().save().save_item(NAME(m_kx47_regs));
machine().save().save_item(NAME(m_objcha_line));
@@ -1087,10 +1087,6 @@ void k053247_device::static_set_palette_tag(device_t &device, const char *tag)
void k053247_device::device_start()
{
-// bitmap_rgb32* blah;
-// if (0)
-// k053247_draw_single_sprite_gxcore(blah,
-
UINT32 total;
static const gfx_layout spritelayout =
{
@@ -1133,9 +1129,9 @@ void k053247_device::device_start()
m_gfx = m_gfxdecode->gfx(m_gfx_num);
- m_ram = auto_alloc_array_clear(machine(), UINT16, 0x1000 / 2);
+ m_ram = make_unique_clear<UINT16[]>(0x1000 / 2);
- save_pointer(NAME(m_ram), 0x1000 / 2);
+ save_pointer(NAME(m_ram.get()), 0x1000 / 2);
save_item(NAME(m_kx46_regs));
save_item(NAME(m_kx47_regs));
save_item(NAME(m_objcha_line));
diff --git a/src/mame/video/k053246_k053247_k055673.h b/src/mame/video/k053246_k053247_k055673.h
index 98e132c8db3..96e41f00893 100644
--- a/src/mame/video/k053246_k053247_k055673.h
+++ b/src/mame/video/k053246_k053247_k055673.h
@@ -110,7 +110,7 @@ public:
DECLARE_READ16_MEMBER( k053246_reg_word_r ); // OBJSET1
- UINT16 *m_ram;
+ std::unique_ptr<UINT16[]> m_ram;
gfx_element *m_gfx;
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 f29039970dc..8798921d73e 100644
--- a/src/mame/video/k053936.cpp
+++ b/src/mame/video/k053936.cpp
@@ -114,6 +114,7 @@ static void K053936_zoom_draw(int chip,UINT16 *ctrl,UINT16 *linectrl, screen_dev
maxy = ctrl[0x0b] + K053936_offset[chip][1]-2 - 1;
if (maxy > cliprect.max_y)
maxy = cliprect.max_y;
+
}
else
{
@@ -129,8 +130,6 @@ static void K053936_zoom_draw(int chip,UINT16 *ctrl,UINT16 *linectrl, screen_dev
UINT16 *lineaddr = linectrl + 4*((y - K053936_offset[chip][1]) & 0x1ff);
my_clip.min_y = my_clip.max_y = y;
-
-
startx = 256 * (INT16)(lineaddr[0] + ctrl[0x00]);
starty = 256 * (INT16)(lineaddr[1] + ctrl[0x01]);
incxx = (INT16)(lineaddr[2]);
@@ -246,11 +245,11 @@ k053936_device::k053936_device(const machine_config &mconfig, const char *tag, d
void k053936_device::device_start()
{
- m_ctrl = auto_alloc_array_clear(machine(), UINT16, 0x20);
- m_linectrl = auto_alloc_array_clear(machine(), UINT16, 0x4000);
+ m_ctrl = make_unique_clear<UINT16[]>(0x20);
+ m_linectrl = make_unique_clear<UINT16[]>(0x4000);
- save_pointer(NAME(m_ctrl), 0x20);
- save_pointer(NAME(m_linectrl), 0x4000);
+ save_pointer(NAME(m_ctrl.get()), 0x20);
+ save_pointer(NAME(m_linectrl.get()), 0x4000);
}
//-------------------------------------------------
@@ -259,7 +258,7 @@ void k053936_device::device_start()
void k053936_device::device_reset()
{
- memset(m_ctrl, 0, 0x20);
+ memset(m_ctrl.get(), 0, 0x20);
}
@@ -336,7 +335,7 @@ void k053936_device::zoom_draw( screen_device &screen, bitmap_ind16 &bitmap, con
while (y <= maxy)
{
- UINT16 *lineaddr = m_linectrl + 4 * ((y - m_yoff) & 0x1ff);
+ UINT16 *lineaddr = m_linectrl.get() + 4 * ((y - m_yoff) & 0x1ff);
my_clip.min_y = my_clip.max_y = y;
@@ -437,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;
@@ -485,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();
@@ -591,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;
@@ -659,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 6b266d97a3c..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
@@ -46,8 +46,8 @@ protected:
private:
// internal state
- UINT16 *m_ctrl;
- UINT16 *m_linectrl;
+ std::unique_ptr<UINT16[]> m_ctrl;
+ std::unique_ptr<UINT16[]> m_linectrl;
int m_wrap, m_xoff, m_yoff;
};
diff --git a/src/mame/video/k054156_k054157_k056832.cpp b/src/mame/video/k054156_k054157_k056832.cpp
index 3a52d677ff7..9167a3e571a 100644
--- a/src/mame/video/k054156_k054157_k056832.cpp
+++ b/src/mame/video/k054156_k054157_k056832.cpp
@@ -1063,10 +1063,12 @@ WRITE16_MEMBER( k056832_device::word_w )
{
switch(offset)
{
- /* -x-- ---- dotclock select: 0=8Mhz, 1=6Mhz (not used by GX)
- * --x- ---- screen flip y
- * ---x ---- screen flip x
- * ---- --x- external linescroll RAM page enable
+ /* -x-- ---- ---- hardcodes 8bpp when enabled (ignores next field)
+ * --xx ---- ---- gfx bpp select: n + 4 (1 << n), i.e. from 7bpp to 4bpp
+ * ---- -x-- ---- dotclock select: 0=8Mhz, 1=6Mhz (not used by GX)
+ * ---- --x- ---- screen flip y
+ * ---- ---x ---- screen flip x
+ * ---- ---- --x- external linescroll RAM page enable
*/
case 0x00/2:
if ((new_data & 0x30) != (old_data & 0x30))
@@ -2025,16 +2027,7 @@ void k056832_device::create_gfx(const char *gfx_memory_region, int bpp, int big)
int gfx_index;
int i;
UINT32 total;
- static const gfx_layout charlayout8_tasman =
- {
- 8,8,
- RGN_FRAC(1,1),
- 8,
- { 0,8,16,24,32,40,48,56 },
- { 0,1,2,3,4,5,6,7 },
- { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64},
- 8*64
- };
+
static const gfx_layout charlayout8 =
{
8, 8,
@@ -2139,7 +2132,7 @@ void k056832_device::create_gfx(const char *gfx_memory_region, int bpp, int big)
case K056832_BPP_8TASMAN:
total = machine().root_device().memregion(gfx_memory_region)->bytes() / (i*8);
- konami_decode_gfx(machine(), m_gfxdecode, m_palette, gfx_index, machine().root_device().memregion(gfx_memory_region)->base(), total, &charlayout8_tasman, 8);
+ konami_decode_gfx(machine(), m_gfxdecode, m_palette, gfx_index, machine().root_device().memregion(gfx_memory_region)->base(), total, &charlayout8, 8);
break;
case K056832_BPP_4dj:
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/k055555.cpp b/src/mame/video/k055555.cpp
index c556c54a02b..adebdf0fe10 100644
--- a/src/mame/video/k055555.cpp
+++ b/src/mame/video/k055555.cpp
@@ -93,26 +93,21 @@ WRITE32_MEMBER( k055555_device::K055555_long_w )
{
UINT8 regnum, regdat;
+ // le2 accesses this area with a dword write ...
if (ACCESSING_BITS_24_31)
{
regnum = offset<<1;
regdat = data>>24;
+ K055555_write_reg(regnum, regdat);
}
- else
+
+ if (ACCESSING_BITS_8_15)
{
- if (ACCESSING_BITS_8_15)
- {
- regnum = (offset<<1)+1;
- regdat = data>>8;
- }
- else
- {
-// logerror("5^5: unknown mem_mask %08x\n", mem_mask);
- return;
- }
+ regnum = (offset<<1)+1;
+ regdat = data>>8;
+ K055555_write_reg(regnum, regdat);
}
- K055555_write_reg(regnum, regdat);
}
WRITE16_MEMBER( k055555_device::K055555_word_w )
diff --git a/src/mame/video/k057714.cpp b/src/mame/video/k057714.cpp
index 405f0e722c2..8676e3a5a37 100644
--- a/src/mame/video/k057714.cpp
+++ b/src/mame/video/k057714.cpp
@@ -23,8 +23,8 @@ void k057714_device::device_start()
{
m_irq.resolve_safe();
- m_vram = auto_alloc_array(machine(), UINT32, 0x2000000/4);
- memset(m_vram, 0, 0x2000000);
+ m_vram = std::make_unique<UINT32[]>(0x2000000/4);
+ memset(m_vram.get(), 0, 0x2000000);
}
void k057714_device::device_reset()
@@ -306,7 +306,7 @@ WRITE32_MEMBER(k057714_device::fifo_w)
int k057714_device::draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT16 *vram16 = (UINT16*)m_vram;
+ UINT16 *vram16 = (UINT16*)m_vram.get();
int x = 0;
int y = 0;
@@ -408,7 +408,7 @@ void k057714_device::draw_object(UINT32 *cmd)
y += m_fb_origin_y;
}
- UINT16 *vram16 = (UINT16*)m_vram;
+ UINT16 *vram16 = (UINT16*)m_vram.get();
if (xscale == 0 || yscale == 0)
{
@@ -543,7 +543,7 @@ void k057714_device::fill_rect(UINT32 *cmd)
int y1 = y;
int y2 = y + height;
- UINT16 *vram16 = (UINT16*)m_vram;
+ UINT16 *vram16 = (UINT16*)m_vram.get();
int fb_pitch = 1024;
@@ -598,7 +598,7 @@ void k057714_device::draw_character(UINT32 *cmd)
printf("%s Draw Char %08X, x %d, y %d\n", basetag(), address, x, y);
#endif
- UINT16 *vram16 = (UINT16*)m_vram;
+ UINT16 *vram16 = (UINT16*)m_vram.get();
int fb_pitch = 1024;
int height = double_height ? 16 : 8;
diff --git a/src/mame/video/k057714.h b/src/mame/video/k057714.h
index 8447454a18a..a0ca6007385 100644
--- a/src/mame/video/k057714.h
+++ b/src/mame/video/k057714.h
@@ -37,7 +37,7 @@ private:
void draw_character(UINT32 *cmd);
void fb_config(UINT32 *cmd);
- UINT32 *m_vram;
+ std::unique_ptr<UINT32[]> m_vram;
UINT32 m_vram_read_addr;
UINT32 m_vram_fifo0_addr;
UINT32 m_vram_fifo1_addr;
diff --git a/src/mame/video/k1ge.cpp b/src/mame/video/k1ge.cpp
index 94e0398fd1a..a32e760b385 100644
--- a/src/mame/video/k1ge.cpp
+++ b/src/mame/video/k1ge.cpp
@@ -802,10 +802,10 @@ void k1ge_device::device_start()
m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(k1ge_device::timer_callback), this));
m_hblank_on_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(k1ge_device::hblank_on_timer_callback), this));
- m_vram = auto_alloc_array_clear(machine(), UINT8, 0x4000);
- m_bitmap = auto_bitmap_ind16_alloc( machine(), m_screen->width(), m_screen->height() );
+ m_vram = make_unique_clear<UINT8[]>(0x4000);
+ m_bitmap = std::make_unique<bitmap_ind16>(m_screen->width(), m_screen->height() );
- save_pointer(NAME(m_vram), 0x4000);
+ save_pointer(NAME(m_vram.get()), 0x4000);
save_item(NAME(m_wba_h));
save_item(NAME(m_wba_v));
save_item(NAME(m_wsi_h));
diff --git a/src/mame/video/k1ge.h b/src/mame/video/k1ge.h
index 73fd8ed39fe..81f79d9eb3c 100644
--- a/src/mame/video/k1ge.h
+++ b/src/mame/video/k1ge.h
@@ -50,12 +50,12 @@ protected:
devcb_write_line m_vblank_pin_w;
devcb_write_line m_hblank_pin_w;
- UINT8 *m_vram;
+ std::unique_ptr<UINT8[]> m_vram;
UINT8 m_wba_h, m_wba_v, m_wsi_h, m_wsi_v;
emu_timer *m_timer;
emu_timer *m_hblank_on_timer;
- bitmap_ind16 *m_bitmap;
+ std::unique_ptr<bitmap_ind16> m_bitmap;
virtual void draw(int line);
diff --git a/src/mame/video/kan_pand.cpp b/src/mame/video/kan_pand.cpp
index ad8777a2ff7..181de04020d 100644
--- a/src/mame/video/kan_pand.cpp
+++ b/src/mame/video/kan_pand.cpp
@@ -93,13 +93,13 @@ void kaneko_pandora_device::device_start()
{
m_bg_pen = 0;
- m_spriteram = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_spriteram = std::make_unique<UINT8[]>(0x1000);
- m_sprites_bitmap = auto_bitmap_ind16_alloc(machine(), m_screen->width(), m_screen->height());
+ m_sprites_bitmap = std::make_unique<bitmap_ind16>(m_screen->width(), m_screen->height());
save_item(NAME(m_clear_bitmap));
save_item(NAME(m_bg_pen));
- save_pointer(NAME(m_spriteram), 0x1000);
+ save_pointer(NAME(m_spriteram.get()), 0x1000);
save_item(NAME(*m_sprites_bitmap));
}
@@ -109,7 +109,7 @@ void kaneko_pandora_device::device_start()
void kaneko_pandora_device::device_reset()
{
- memset(m_spriteram, 0x00, 0x1000);
+ memset(m_spriteram.get(), 0x00, 0x1000);
m_clear_bitmap = 1;
}
diff --git a/src/mame/video/kan_pand.h b/src/mame/video/kan_pand.h
index 29c8383194d..f29c5ef3605 100644
--- a/src/mame/video/kan_pand.h
+++ b/src/mame/video/kan_pand.h
@@ -51,8 +51,8 @@ protected:
private:
// internal state
- UINT8 * m_spriteram;
- bitmap_ind16 *m_sprites_bitmap; /* bitmap to render sprites to, Pandora seems to be frame'buffered' */
+ std::unique_ptr<UINT8[]> m_spriteram;
+ std::unique_ptr<bitmap_ind16> m_sprites_bitmap; /* bitmap to render sprites to, Pandora seems to be frame'buffered' */
int m_clear_bitmap;
int m_bg_pen; // might work some other way..
UINT8 m_gfx_region;
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_grap2.cpp b/src/mame/video/kaneko_grap2.cpp
index 11bbf227408..7a5bd2de907 100644
--- a/src/mame/video/kaneko_grap2.cpp
+++ b/src/mame/video/kaneko_grap2.cpp
@@ -43,15 +43,15 @@ void kaneko_grap2_device::static_set_palette_tag(device_t &device, const char *t
void kaneko_grap2_device::device_start()
{
- m_framebuffer = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x80000/2);
- m_framebuffer_palette = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x200/2);
- m_framebuffer_unk1 = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x400/2);
- m_framebuffer_unk2 = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x400/2);
+ m_framebuffer = make_unique_clear<UINT16[]>(0x80000/2);
+ m_framebuffer_palette = make_unique_clear<UINT16[]>(0x200/2);
+ m_framebuffer_unk1 = make_unique_clear<UINT16[]>(0x400/2);
+ m_framebuffer_unk2 = make_unique_clear<UINT16[]>(0x400/2);
- save_pointer(NAME(m_framebuffer), 0x80000/2);
- save_pointer(NAME(m_framebuffer_palette), 0x200/2);
- save_pointer(NAME(m_framebuffer_unk1), 0x400/2);
- save_pointer(NAME(m_framebuffer_unk2), 0x400/2);
+ save_pointer(NAME(m_framebuffer.get()), 0x80000/2);
+ save_pointer(NAME(m_framebuffer_palette.get()), 0x200/2);
+ save_pointer(NAME(m_framebuffer_unk1.get()), 0x400/2);
+ save_pointer(NAME(m_framebuffer_unk2.get()), 0x400/2);
save_item(NAME(m_framebuffer_bgcol));
save_item(NAME(m_framebuffer_scrolly));
@@ -160,7 +160,7 @@ WRITE16_MEMBER(kaneko_grap2_device::galpani3_regs1_go_w)
UINT8* rledata = memregion(":gfx2")->base();
// printf("galpani3_regs1_go_w? %08x\n",address );
- if ((data==0x2000) || (data==0x3000)) gp3_do_rle(address, m_framebuffer, rledata);
+ if ((data==0x2000) || (data==0x3000)) gp3_do_rle(address, m_framebuffer.get(), rledata);
}
diff --git a/src/mame/video/kaneko_grap2.h b/src/mame/video/kaneko_grap2.h
index cc94af5b97b..cd801ad3b45 100644
--- a/src/mame/video/kaneko_grap2.h
+++ b/src/mame/video/kaneko_grap2.h
@@ -74,10 +74,10 @@ public:
DECLARE_READ16_MEMBER( unk2_r ) { return m_framebuffer_unk2[offset]; }
DECLARE_WRITE16_MEMBER( unk2_w ) { COMBINE_DATA(&m_framebuffer_unk2[offset]); }
- UINT16* m_framebuffer;
- UINT16* m_framebuffer_palette;
- UINT16* m_framebuffer_unk1;
- UINT16* m_framebuffer_unk2;
+ std::unique_ptr<UINT16[]> m_framebuffer;
+ std::unique_ptr<UINT16[]> m_framebuffer_palette;
+ std::unique_ptr<UINT16[]> m_framebuffer_unk1;
+ std::unique_ptr<UINT16[]> m_framebuffer_unk2;
diff --git a/src/mame/video/kaneko_spr.cpp b/src/mame/video/kaneko_spr.cpp
index 403af035443..c9c1ac9eb8d 100644
--- a/src/mame/video/kaneko_spr.cpp
+++ b/src/mame/video/kaneko_spr.cpp
@@ -70,13 +70,13 @@ void kaneko16_sprite_device::static_set_gfxdecode_tag(device_t &device, const ch
void kaneko16_sprite_device::device_start()
{
- m_first_sprite = auto_alloc_array(machine(), struct kan_tempsprite, 0x400);
- m_sprites_regs = auto_alloc_array_clear(machine(), UINT16, 0x20/2);
+ m_first_sprite = std::make_unique<struct kan_tempsprite[]>(0x400);
+ m_sprites_regs = make_unique_clear<UINT16[]>(0x20/2);
m_screen->register_screen_bitmap(m_sprites_bitmap);
save_item(NAME(m_sprite_flipx));
save_item(NAME(m_sprite_flipy));
- save_pointer(NAME(m_sprites_regs), 0x20/2);
+ save_pointer(NAME(m_sprites_regs.get()), 0x20/2);
save_item(NAME(m_keep_sprites));
save_item(NAME(m_sprites_bitmap));
}
@@ -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++)
{
@@ -326,9 +326,8 @@ void kaneko16_sprite_device::kaneko16_draw_sprites_custom(_BitmapClass &dest_bmp
{
if (!rgb) dest[x] = pen_base + c;
else dest[x] = pal[pen_base + c];
-
- pri[x] = 0xff; // mark it "already drawn"
}
+ pri[x] = 0xff; // mark it "already drawn"
}
x_index += dx;
}
@@ -358,7 +357,7 @@ void kaneko16_sprite_device::kaneko16_draw_sprites(_BitmapClass &bitmap, const r
int max = (m_screen->width() > 0x100) ? (0x200<<6) : (0x100<<6);
int i = 0;
- struct kan_tempsprite *s = m_first_sprite;
+ struct kan_tempsprite *s = m_first_sprite.get();
/* These values are latched from the last sprite. */
int x = 0;
@@ -451,7 +450,7 @@ void kaneko16_sprite_device::kaneko16_draw_sprites(_BitmapClass &bitmap, const r
/* Let's finally draw the sprites we buffered, in reverse order
(for pdrawgfx) */
- for (s--; s >= m_first_sprite; s--)
+ for (s--; s >= m_first_sprite.get(); s--)
{
int curr_pri = s->priority;
@@ -576,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/kaneko_spr.h b/src/mame/video/kaneko_spr.h
index 1afd5fd2ce4..44639a2351c 100644
--- a/src/mame/video/kaneko_spr.h
+++ b/src/mame/video/kaneko_spr.h
@@ -79,9 +79,9 @@ private:
// registers
UINT16 m_sprite_flipx;
UINT16 m_sprite_flipy;
- UINT16* m_sprites_regs;
+ std::unique_ptr<UINT16[]> m_sprites_regs;
- struct kan_tempsprite *m_first_sprite;
+ std::unique_ptr<struct kan_tempsprite[]> m_first_sprite;
int m_keep_sprites;
bitmap_ind16 m_sprites_bitmap;
diff --git a/src/mame/video/kaneko_tmap.cpp b/src/mame/video/kaneko_tmap.cpp
index d74b87f52d5..634753975c0 100644
--- a/src/mame/video/kaneko_tmap.cpp
+++ b/src/mame/video/kaneko_tmap.cpp
@@ -151,11 +151,11 @@ void kaneko_view2_tilemap_device::device_start()
if(!m_gfxdecode->started())
throw device_missing_dependencies();
- m_vram[0] = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x1000/2);
- m_vram[1] = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x1000/2);
- m_vscroll[0] = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x1000/2);
- m_vscroll[1] = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x1000/2);
- m_regs = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x20/2);
+ m_vram[0] = make_unique_clear<UINT16[]>(0x1000/2);
+ m_vram[1] = make_unique_clear<UINT16[]>(0x1000/2);
+ m_vscroll[0] = make_unique_clear<UINT16[]>(0x1000/2);
+ m_vscroll[1] = make_unique_clear<UINT16[]>(0x1000/2);
+ m_regs = make_unique_clear<UINT16[]>(0x20/2);
m_tmap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(kaneko_view2_tilemap_device::get_tile_info_0),this), TILEMAP_SCAN_ROWS,
16,16, 0x20,0x20 );
@@ -175,11 +175,11 @@ void kaneko_view2_tilemap_device::device_start()
m_tmap[0]->set_scrolldy(-m_dy, m_ydim + m_dy -1 );
m_tmap[1]->set_scrolldy(-m_dy, m_ydim + m_dy -1 );
- save_pointer(NAME(m_vram[0]), 0x1000/2);
- save_pointer(NAME(m_vram[1]), 0x1000/2);
- save_pointer(NAME(m_vscroll[0]), 0x1000/2);
- save_pointer(NAME(m_vscroll[1]), 0x1000/2);
- save_pointer(NAME(m_regs), 0x20/2);
+ save_pointer(NAME(m_vram[0].get()), 0x1000/2);
+ save_pointer(NAME(m_vram[1].get()), 0x1000/2);
+ save_pointer(NAME(m_vscroll[0].get()), 0x1000/2);
+ save_pointer(NAME(m_vscroll[1].get()), 0x1000/2);
+ save_pointer(NAME(m_regs.get()), 0x20/2);
save_item(NAME(m_vram_tile_addition[0]));
save_item(NAME(m_vram_tile_addition[1]));
}
diff --git a/src/mame/video/kaneko_tmap.h b/src/mame/video/kaneko_tmap.h
index e689df23d1d..75a05e3039d 100644
--- a/src/mame/video/kaneko_tmap.h
+++ b/src/mame/video/kaneko_tmap.h
@@ -18,9 +18,9 @@ public:
int m_dx, m_dy, m_xdim, m_ydim;
int m_invert_flip;
- UINT16* m_vram[2];
- UINT16* m_vscroll[2];
- UINT16* m_regs;
+ std::unique_ptr<UINT16[]> m_vram[2];
+ std::unique_ptr<UINT16[]> m_vscroll[2];
+ std::unique_ptr<UINT16[]> m_regs;
tilemap_t* m_tmap[2];
UINT16 m_vram_tile_addition[2]; // galsnew
diff --git a/src/mame/video/kangaroo.cpp b/src/mame/video/kangaroo.cpp
index 4949a13ebe4..78bedef66f8 100644
--- a/src/mame/video/kangaroo.cpp
+++ b/src/mame/video/kangaroo.cpp
@@ -18,8 +18,8 @@
void kangaroo_state::video_start()
{
/* video RAM is accessed 32 bits at a time (two planes, 4bpp each, 4 pixels) */
- m_videoram = auto_alloc_array(machine(), UINT32, 256 * 64);
- save_pointer(NAME(m_videoram), 256 * 64);
+ m_videoram = std::make_unique<UINT32[]>(256 * 64);
+ save_pointer(NAME(m_videoram.get()), 256 * 64);
}
diff --git a/src/mame/video/karnov.cpp b/src/mame/video/karnov.cpp
index 50adb033a8f..69d48a46a77 100644
--- a/src/mame/video/karnov.cpp
+++ b/src/mame/video/karnov.cpp
@@ -160,7 +160,7 @@ WRITE16_MEMBER(karnov_state::karnov_playfield_swap_w)
VIDEO_START_MEMBER(karnov_state,karnov)
{
/* Allocate bitmap & tilemap */
- m_bitmap_f = auto_bitmap_ind16_alloc(machine(), 512, 512);
+ m_bitmap_f = std::make_unique<bitmap_ind16>(512, 512);
m_fix_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(karnov_state::get_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
save_item(NAME(*m_bitmap_f));
@@ -171,7 +171,7 @@ VIDEO_START_MEMBER(karnov_state,karnov)
VIDEO_START_MEMBER(karnov_state,wndrplnt)
{
/* Allocate bitmap & tilemap */
- m_bitmap_f = auto_bitmap_ind16_alloc(machine(), 512, 512);
+ m_bitmap_f = std::make_unique<bitmap_ind16>(512, 512);
m_fix_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(karnov_state::get_fix_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32);
save_item(NAME(*m_bitmap_f));
diff --git a/src/mame/video/kncljoe.cpp b/src/mame/video/kncljoe.cpp
index 9a3b8d74933..db6d953aa12 100644
--- a/src/mame/video/kncljoe.cpp
+++ b/src/mame/video/kncljoe.cpp
@@ -136,8 +136,8 @@ WRITE8_MEMBER(kncljoe_state::kncljoe_control_w)
m_flipscreen = data & 0x01;
machine().tilemap().set_flip_all(m_flipscreen ? TILEMAP_FLIPX : TILEMAP_FLIPY);
- coin_counter_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
i = (data & 0x10) >> 4;
if (m_tile_bank != i)
diff --git a/src/mame/video/konami_helper.cpp b/src/mame/video/konami_helper.cpp
index be2881ad82c..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, global_alloc(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/konamigx.cpp b/src/mame/video/konamigx.cpp
index ab0b87a06fa..6bdaa0e015c 100644
--- a/src/mame/video/konamigx.cpp
+++ b/src/mame/video/konamigx.cpp
@@ -174,9 +174,9 @@ int konamigx_state::K055555GX_decode_vmixcolor(int layer, int *color) // (see p.
emx |= vmx;
pal |= vcb;
- if (m_gx_le2_textcolour_hack)
- if (layer==0)
- pal |= 0x1c0;
+ //if (m_gx_le2_textcolour_hack)
+ // if (layer==0)
+ // pal |= 0x1c0;
if (von == 3) emx = -1; // invalidate external mix code if all bits are from internal
*color = pal;
@@ -238,7 +238,7 @@ void konamigx_state::wipezbuf(int noshadow)
if (!noshadow)
{
- zptr = m_gx_shdzbuf;
+ zptr = m_gx_shdzbuf.get();
w <<= 1;
ecx = h;
do { memset(zptr, -1, w); zptr += (GX_ZBUFW<<1); } while (--ecx);
@@ -285,7 +285,7 @@ void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
m_gx_primode = 0;
m_gx_objzbuf = &screen.priority().pix8(0);
- m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
+ m_gx_shdzbuf = std::make_unique<UINT8[]>(GX_ZBUFSIZE);
gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS);
m_k054338->export_config(&m_K054338_shdRGB);
@@ -861,7 +861,7 @@ void konamigx_state::konamigx_mixer_draw(screen_device &screen, bitmap_rgb32 &bi
m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
- m_gx_objzbuf, m_gx_shdzbuf, code, m_gx_spriteram, offs,
+ m_gx_objzbuf, m_gx_shdzbuf.get(), code, m_gx_spriteram, offs,
color, alpha, drawmode, zcode, pri,
/* non-gx only */
0,0,nullptr,nullptr,0
@@ -1052,7 +1052,7 @@ K056832_CB_MEMBER(konamigx_state::alpha_tile_callback)
// Daisu-Kiss stage presentation
// Sexy Parodius level 3b
*code = (m_gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
-
+
if (VERBOSE)
popmessage("skipped alpha tile(layer=%d mix=%d)", layer, mixcode);
}
@@ -1104,7 +1104,6 @@ void konamigx_state::common_init()
m_gx_rozenable = 0;
m_gx_specialrozenable = 0;
m_gx_rushingheroes_hack = 0;
- m_gx_le2_textcolour_hack = 0;
// Documented relative offsets of non-flipped games are (-2, 0, 2, 3),(0, 0, 0, 0).
// (+ve values move layers to the right and -ve values move layers to the left)
@@ -1148,8 +1147,6 @@ VIDEO_START_MEMBER(konamigx_state, le2)
common_init();
konamigx_mixer_primode(-1); // swapped layer B and C priorities?
-
- m_gx_le2_textcolour_hack = 1; // force text layer to use the right palette
}
VIDEO_START_MEMBER(konamigx_state, konamigx_6bpp)
@@ -1163,8 +1160,8 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type3)
int width = m_screen->width();
int height = m_screen->height();
- m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = std::make_unique<bitmap_rgb32>( width, height);
+ m_dualscreen_right_tempbitmap = std::make_unique<bitmap_rgb32>( width, height);
common_init();
@@ -1176,7 +1173,7 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type3)
/* set up tile layers */
- m_type3_roz_temp_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_type3_roz_temp_bitmap = std::make_unique<bitmap_ind16>(width, height);
//m_gx_psac_tilemap->set_flip(TILEMAP_FLIPX| TILEMAP_FLIPY);
@@ -1199,8 +1196,8 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4)
int width = m_screen->width();
int height = m_screen->height();
- m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = std::make_unique<bitmap_rgb32>( width, height);
+ m_dualscreen_right_tempbitmap = std::make_unique<bitmap_rgb32>( width, height);
common_init();
@@ -1227,8 +1224,8 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_vsn)
int width = m_screen->width();
int height = m_screen->height();
- m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = std::make_unique<bitmap_rgb32>( width, height);
+ m_dualscreen_right_tempbitmap = std::make_unique<bitmap_rgb32>( width, height);
common_init();
@@ -1254,8 +1251,8 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
int width = m_screen->width();
int height = m_screen->height();
- m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = std::make_unique<bitmap_rgb32>( width, height);
+ m_dualscreen_right_tempbitmap = std::make_unique<bitmap_rgb32>( width, height);
common_init();
@@ -1298,8 +1295,8 @@ VIDEO_START_MEMBER(konamigx_state, opengolf)
m_gx_rozenable = 0;
m_gx_specialrozenable = 1;
- m_gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- m_gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap = std::make_unique<bitmap_ind16>(512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap2 = std::make_unique<bitmap_ind16>(512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
@@ -1318,10 +1315,10 @@ VIDEO_START_MEMBER(konamigx_state, racinfrc)
{
common_init();
- m_k056832->set_layer_offs(0, -2+1, 0);
- m_k056832->set_layer_offs(1, 0+1, 0);
- m_k056832->set_layer_offs(2, 2+1, 0);
- m_k056832->set_layer_offs(3, 3+1, 0);
+ m_k056832->set_layer_offs(0, -2+1, -16);
+ m_k056832->set_layer_offs(1, 0+1, -16);
+ m_k056832->set_layer_offs(2, 2+1, -16);
+ m_k056832->set_layer_offs(3, 3+1, -16);
m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
m_gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
@@ -1333,8 +1330,8 @@ VIDEO_START_MEMBER(konamigx_state, racinfrc)
m_gx_rozenable = 0;
m_gx_specialrozenable = 1;
- m_gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- m_gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap = std::make_unique<bitmap_ind16>(512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap2 = std::make_unique<bitmap_ind16>(512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
@@ -1405,7 +1402,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
// Type-1
if (m_gx_specialrozenable == 1)
{
- K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap, m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap, 0,0,0); // height data
+ //K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap, m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap, 0,0,0); // height data
K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap2,m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap2,0,0,0); // colour data (+ some voxel height data?)
}
@@ -1415,7 +1412,6 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
{
konamigx_mixer(screen, bitmap, cliprect, m_gx_psac_tilemap, GXSUB_8BPP,nullptr,0, 0, nullptr, m_gx_rushingheroes_hack);
}
- // hack, draw the roz tilemap if W is held
// todo: fix so that it works with the mixer without crashing(!)
else if (m_gx_specialrozenable == 2)
{
@@ -1428,7 +1424,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield
- konamigx_mixer(screen, bitmap, cliprect, nullptr, 0, nullptr, 0, 0, m_type3_roz_temp_bitmap, m_gx_rushingheroes_hack);
+ konamigx_mixer(screen, bitmap, cliprect, nullptr, 0, nullptr, 0, 0, m_type3_roz_temp_bitmap.get(), m_gx_rushingheroes_hack);
}
else
{
@@ -1442,6 +1438,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
{
const pen_t *paldata = m_palette->pens();
+ // hack, draw the roz tilemap if W is held
if ( machine().input().code_pressed(KEYCODE_W) )
{
int y,x;
@@ -1451,13 +1448,13 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
{
for (y=0;y<256;y++)
{
- //UINT16* src = &m_gxtype1_roz_dstbitmap->pix16(y);
-
//UINT32* dst = &bitmap.pix32(y);
// ths K053936 rendering should probably just be flipped
// this is just kludged to align the racing force 2d logo
- UINT16* src = &m_gxtype1_roz_dstbitmap2->pix16(y+30);
- UINT32* dst = &bitmap.pix32(256-y);
+ UINT16* src = &m_gxtype1_roz_dstbitmap2->pix16(y);
+ //UINT16* src = &m_gxtype1_roz_dstbitmap->pix16(y);
+
+ UINT32* dst = &bitmap.pix32((256+16)-y);
for (x=0;x<512;x++)
{
diff --git a/src/mame/video/ladyfrog.cpp b/src/mame/video/ladyfrog.cpp
index 8079d0a9fc0..44cd01d9f7f 100644
--- a/src/mame/video/ladyfrog.cpp
+++ b/src/mame/video/ladyfrog.cpp
@@ -126,7 +126,7 @@ void ladyfrog_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
VIDEO_START_MEMBER(ladyfrog_state,ladyfrog_common)
{
- m_spriteram = auto_alloc_array(machine(), UINT8, 160);
+ m_spriteram = std::make_unique<UINT8[]>(160);
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(ladyfrog_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_paletteram.resize(0x200);
@@ -137,7 +137,7 @@ VIDEO_START_MEMBER(ladyfrog_state,ladyfrog_common)
m_bg_tilemap->set_scroll_cols(32);
m_bg_tilemap->set_scrolldy(15, 15);
- save_pointer(NAME(m_spriteram), 160);
+ save_pointer(NAME(m_spriteram.get()), 160);
save_item(NAME(m_paletteram));
save_item(NAME(m_paletteram_ext));
}
diff --git a/src/mame/video/laserbat.cpp b/src/mame/video/laserbat.cpp
new file mode 100644
index 00000000000..fca20043f37
--- /dev/null
+++ b/src/mame/video/laserbat.cpp
@@ -0,0 +1,377 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+/*
+ Laser Battle / Lazarian (c) 1981 Zaccaria
+ Cat and Mouse (c) 1982 Zaccaria
+
+ video emulation by Vas Crabb
+
+ This is an absolutely insane arrangement of three Signetics S2623
+ PVIs and custom TTL logic. The PVIs can each render up to four
+ (potentially duplicated) sprites. The TTL logic renders a single
+ 32x32 pixel 4-colour sprite and an 8-colour background tilemap.
+ There are also two symmetrical area effects where the game only
+ needs to program the horizontal distance from the screen edge for
+ each line, and a per-line single-pixel shell effect. The shell
+ effect replaces one of the area effects if used.
+
+ In order to get 30% more horizontal resolution than Signetics
+ intended, this board divides the master clock by 4 to drive the
+ S2621 sync generator, but has a separate set of filp-flops to do
+ a symmetric divide by 3 to drive the rest of the video hardware.
+ There's some extra logic to align the first pixel to the end of the
+ horizontal blanking period period because the line isn't a whole
+ number of pixels. The visible portion isn't a whole number of
+ pixels for that matter, either.
+
+ There's some fancy logic to stretch the vertical blanking period for
+ eight additional lines after the USG deasserts VRST and then to
+ start the next vertical blanking period after 247 visible lines.
+
+ The first visible line is line 8 from the point of view of the PVIs,
+ background generator and sprite generator.
+
+ The first visible column of the display is pixel 8 from the point of
+ of view of the sprite and background generation hardware, but it's
+ pixel 0 from the point of view of the PVIs.
+
+ The hardware has 8-bit RRRGGGBBB output converted to analog levels
+ with a simple resistor network driven by open-collector gates.
+ However video is actually generated in a 16-bit internal colour
+ space and mapped onto the 8-bit output colour space using a PLA.
+
+ The equations in the PLA for Laser Battle/Lazarian give the
+ following graphics priorities, from highest to lowest:
+ * TTL-generated sprite
+ * PVIs (colours ORed, object/score output ignored)
+ * Shell/area effect 2
+ * Background tilemap
+ * Area effect 1
+
+ The Cat and Mouse PLA program gives completely different priorities,
+ once again from highest to lowest:
+ * Background tilemap
+ * PVIs (colours ORed, object/score output ignored)
+ * TTL-generated sprite
+ * Shell
+
+ Cat and Mouse uses some signals completely differently. LUM affects
+ the background palette rather than the sprite palette, area effect 1
+ affects the background palette, and area effect 2 is completely
+ unused.
+
+ The game board has no logic for flipping the screen in cocktail
+ mode. It just provides an active-low open collector out with pull-
+ up indicating when player 2 is playing. In a cocktail cabinet this
+ goes to an "image commutation board". It's not connected to
+ anything in an upright cabinet. The "image commutation board" must
+ flip the image somehow, presumably by reversing the deflection coil
+ connections.
+
+ There are still issues with horizontal alignment between layers. I
+ have the schematic, yet I really can't understand where these issues
+ are coming from. I'm pretty sure alignment between TTL background
+ and sprites is right, judging from gameplay. I'm not sure about
+ alignment with the effect layers.
+
+ There are definitely alignment problems with the PVI opjects, but
+ that may be a bug in the S2636 implementation. I need to check it
+ more detail
+*/
+
+#include "includes/laserbat.h"
+
+
+PALETTE_INIT_MEMBER(laserbat_state_base, laserbat)
+{
+ /*
+ Uses GRBGRBGR pixel format. The two topmost bist are the LSBs
+ for red and green. LSB for blue is always effectively 1. The
+ middle group is the MSB. Yet another crazy thing they did.
+
+ Each colour channel has an emitter follower buffer amlpifier
+ biased with a 1k resistor to +5V and a 3k3 resistor to ground.
+ Output is adjusted by connecting additional resistors across the
+ leg to ground using an open collector buffer - 270R, 820R and
+ 1k0 for unset MSB to LSB, respectively (blue has no LSB so it
+ has no 1k0 resistor).
+
+ Assuming 0.7V drop across the emitter follower and no drop
+ across the open collector buffer, these are the approximate
+ output voltages:
+
+ 0.0000, 0.1031, 0.1324, 0.2987 , 0.7194, 1.2821, 1.4711, 3.1372
+
+ The game never sets the colour to any value above 4, effectively
+ treating it as 5-level red and green, and 3-level blue, for a
+ total of 75 usable colours.
+
+ From the fact that there's no DC offset on red and green, and
+ the highest value used is just over 0.7V, I'm guessing the game
+ expects to drive a standard 0.7V RGB monitor, and higher colour
+ values would simply saturate the input. To make it not look
+ like the inside of a coal mine, I've applied gamma decoding at
+ 2.2
+
+ However there's that nasty DC offset on the blue caused by the
+ fact that it has no LSB, but it's eliminated at the AC-coupling
+ of the input and output of the buffer amplifier on the monitor
+ interface board. I'm treating it as though it has the same gain
+ as the other channels. After gamma adjustment, medium red and
+ medium blue as used by the game have almost the same intensity.
+ */
+
+ int const weights[] = { 0, 107, 120, 173, 255, 255, 255, 255 };
+ int const blue_weights[] = { 0, 0, 60, 121, 241, 255, 255, 255, 255 };
+ for (int entry = 0; palette.entries() > entry; entry++)
+ {
+ UINT8 const bits(entry & 0xff);
+ UINT8 const r(((bits & 0x01) << 1) | ((bits & 0x08) >> 1) | ((bits & 0x40) >> 6));
+ UINT8 const g(((bits & 0x02) >> 0) | ((bits & 0x10) >> 2) | ((bits & 0x80) >> 7));
+ UINT8 const b(((bits & 0x04) >> 1) | ((bits & 0x20) >> 3) | 0x01);
+ palette.set_pen_color(entry, rgb_t(weights[r], weights[g], blue_weights[b]));
+ }
+}
+
+
+WRITE8_MEMBER(laserbat_state_base::videoram_w)
+{
+ if (!m_mpx_bkeff)
+ m_bg_ram[offset] = data;
+ else
+ m_eff_ram[offset & 0x1ff] = data; // A9 is not connected, only half the chip is used
+}
+
+WRITE8_MEMBER(laserbat_state_base::wcoh_w)
+{
+ // sprite horizontal offset
+ m_wcoh = data;
+}
+
+WRITE8_MEMBER(laserbat_state_base::wcov_w)
+{
+ // sprite vertical offset
+ m_wcov = data;
+}
+
+WRITE8_MEMBER(laserbat_state_base::cnt_eff_w)
+{
+ /*
+ +-----+-------------+-----------------------------------------------+
+ | bit | name | description |
+ +-----+-------------+-----------------------------------------------+
+ | 0 | /ABEFF1 | effect 1 enable |
+ | 1 | /ABEFF2 | effect 2/shell enable |
+ | 2 | MPX EFF2 SH | select SHELL point or EFF2 area for effect 2 |
+ | 3 | COLEFF 0 | area effect colour bit 0 |
+ | 4 | COLEFF 1 | area effect colour bit 1 |
+ | 5 | /NEG 1 | select inside/outside area for effect 1 |
+ | 6 | /NEG 2 | select inside/outside area for effect 2 |
+ | 7 | MPX P_1/2 | selects input row 2 |
+ +-----+-------------+-----------------------------------------------+
+ */
+
+ m_abeff1 = !bool(data & 0x01);
+ m_abeff2 = !bool(data & 0x02);
+ m_mpx_eff2_sh = bool(data & 0x04);
+ m_coleff = (data >> 3) & 0x03;
+ m_neg1 = !bool(data & 0x20);
+ m_neg2 = !bool(data & 0x40);
+ m_mpx_p_1_2 = bool(data & 0x80);
+
+// popmessage("effect: 0x%02X", data);
+}
+
+WRITE8_MEMBER(laserbat_state_base::cnt_nav_w)
+{
+ /*
+ +-----+-----------+--------------------------------------+
+ | bit | name | description |
+ +-----+-----------+--------------------------------------+
+ | 0 | /NAVE | sprite enable |
+ | 1 | CLR0 | sprite colour bit 0 |
+ | 2 | CLR1 | sprite colour bit 1 |
+ | 3 | LUM | sprite luminance |
+ | 4 | MPX BKEFF | access background RAM or effect RAM |
+ | 5 | SHPA | sprite select bit 0 |
+ | 6 | SHPB | sprite select bit 1 |
+ | 7 | SHPC | sprite select bit 2 |
+ +-----+-----------+--------------------------------------+
+ */
+
+ m_nave = !bool(data & 0x01);
+ m_clr_lum = (data >> 1) & 0x07;
+ m_mpx_bkeff = bool(data & 0x10);
+ m_shp = (data >> 5) & 0x07;
+
+// popmessage("nav: 0x%02X", data);
+}
+
+
+void laserbat_state_base::video_start()
+{
+ // we render straight from ROM
+ m_gfx1 = memregion("gfx1")->base();
+ m_gfx2 = memregion("gfx2")->base();
+
+ // start rendering scanlines
+ machine().first_screen()->register_screen_bitmap(m_bitmap);
+ m_scanline_timer->adjust(machine().first_screen()->time_until_pos(1, 0));
+}
+
+
+UINT32 laserbat_state_base::screen_update_laserbat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ bool const flip_y = flip_screen_y(), flip_x = flip_screen_x();
+ int const offs_y = m_screen->visible_area().max_y + m_screen->visible_area().min_y;
+ int const offs_x = m_screen->visible_area().max_x + m_screen->visible_area().min_x;
+
+ for (int y = cliprect.min_y; cliprect.max_y >= y; y++)
+ {
+ UINT16 const *const src = &m_bitmap.pix16(flip_y ? (offs_y - y) : y);
+ UINT16 *dst = &bitmap.pix16(y);
+ for (int x = cliprect.min_x; cliprect.max_x >= x; x++)
+ {
+ dst[x] = UINT16(m_gfxmix->read(src[flip_x ? (offs_x - x) : x]));
+ }
+ }
+
+ return 0;
+}
+
+
+TIMER_CALLBACK_MEMBER(laserbat_state_base::video_line)
+{
+ /*
+ +-----+---------+----------------------------------+-------------------------------------+
+ | bit | name | laserbat/lazarian | catnmous |
+ +-----+---------+----------------------------------+-------------------------------------+
+ | 0 | NAV0 | sprite bit 0 | sprite bit 0 |
+ | 1 | NAV1 | sprite bit 1 | sprite bit 1 |
+ | 2 | CLR0 | sprite palette bit 0 | sprite palette bit 0 |
+ | 3 | CLR1 | sprite palette bit 1 | sprite palette bit 1 |
+ | 4 | LUM | sprite luminance | background tilemap palette control |
+ | 5 | C1* | combined PVI red (active low) | combined PVI red (active low) |
+ | 6 | C2* | combined PVI green (active low) | combined PVI green (active low) |
+ | 7 | C3* | combined PVI blue (active low) | combined PVI blue (active low) |
+ | 8 | BKR | background tilemap red | background tilemap bit 0 |
+ | 9 | BKG | background tilemap green | background tilemap bit 1 |
+ | 10 | BKB | background tilemap blue | background tilemap bit 2 |
+ | 11 | SHELL | shell point | shell point |
+ | 12 | EFF1 | effect 1 area | background tilemap palette control |
+ | 13 | EFF2 | effect 2 area | unused |
+ | 14 | COLEFF0 | area effect colour bit 0 | background tilemap palette control |
+ | 15 | COLEFF1 | area effect colour bit 1 | background tilemap palette control |
+ +-----+---------+----------------------------------+-------------------------------------+
+ */
+
+ assert(m_bitmap.width() > m_screen->visible_area().max_x);
+ assert(m_bitmap.height() > m_screen->visible_area().max_y);
+
+ // prep some useful values
+ int const y = m_screen->vpos();
+ int const min_x = m_screen->visible_area().min_x;
+ int const max_x = m_screen->visible_area().max_x;
+ int const x_offset = min_x - (8 * 3);
+ int const y_offset = m_screen->visible_area().min_y - 8;
+ UINT16 *const row = &m_bitmap.pix16(y);
+
+ // wait for next scanline
+ m_scanline_timer->adjust(machine().first_screen()->time_until_pos(y + 1, 0));
+
+ // update the PVIs
+ if (!y)
+ {
+ m_pvi1->render_first_line();
+ m_pvi2->render_first_line();
+ m_pvi3->render_first_line();
+ }
+ else
+ {
+ m_pvi1->render_next_line();
+ m_pvi2->render_next_line();
+ m_pvi3->render_next_line();
+ }
+ UINT16 const *const pvi1_row = &m_pvi1->bitmap().pix16(y);
+ UINT16 const *const pvi2_row = &m_pvi2->bitmap().pix16(y);
+ UINT16 const *const pvi3_row = &m_pvi3->bitmap().pix16(y);
+
+ // don't draw outside the visible area
+ m_bitmap.plot_box(0, y, m_bitmap.width(), 1, 0);
+ if ((m_screen->visible_area().min_y > y) || (m_screen->visible_area().max_y < y))
+ return;
+
+ // render static effect bits
+ UINT16 const static_bits = ((UINT16(m_coleff) << 14) & 0xc000) | ((UINT16(m_clr_lum) << 2) & 0x001c);
+ m_bitmap.plot_box(min_x, y, max_x - min_x + 1, 1, static_bits);
+
+ // render the TTL-generated background tilemap
+ unsigned const bg_row = (y - y_offset) & 0x07;
+ UINT8 const *const bg_src = &m_bg_ram[((y - y_offset) << 2) & 0x3e0];
+ for (unsigned byte = 0, px = x_offset + (9 * 3); max_x >= px; byte++)
+ {
+ UINT16 const tile = (UINT16(bg_src[byte & 0x1f]) << 3) & 0x7f8;
+ UINT8 red = m_gfx1[0x0000 | tile | bg_row];
+ UINT8 green = m_gfx1[0x0800 | tile | bg_row];
+ UINT8 blue = m_gfx1[0x1000 | tile | bg_row];
+ for (unsigned pixel = 0; 8 > pixel; pixel++, red <<= 1, green <<= 1, blue <<= 1)
+ {
+ UINT16 const bg = ((red & 0x80) ? 0x0100 : 0x0000) | ((green & 0x80) ? 0x0200 : 0x0000) | ((blue & 0x80) ? 0x0400 : 0x0000);
+ if ((min_x <= px) && (max_x >= px)) row[px] |= bg;
+ px++;
+ if ((min_x <= px) && (max_x >= px)) row[px] |= bg;
+ px++;
+ if ((min_x <= px) && (max_x >= px)) row[px] |= bg;
+ px++;
+ }
+ }
+
+ // render shell/effect graphics
+ UINT8 const eff1_val = m_eff_ram[((y - y_offset) & 0xff) | 0x100];
+ UINT8 const eff2_val = m_eff_ram[((y - y_offset) & 0xff) | 0x000];
+ for (int x = 0, px = x_offset; max_x >= px; x++)
+ {
+ // calculate area effects
+ // I have no idea where the magical x offset comes from but it's necessary
+ bool const right_half = bool((x + 0) & 0x80);
+ bool const eff1_cmp = right_half ? (UINT8((x + 0) & 0x7f) < (eff1_val & 0x7f)) : (UINT8((x + 0) & 0x7f) > (~eff1_val & 0x7f));
+ bool const eff2_cmp = right_half ? (UINT8((x + 0) & 0x7f) < (eff2_val & 0x7f)) : (UINT8((x + 0) & 0x7f) > (~eff2_val & 0x7f));
+ bool const eff1 = m_abeff1 && (m_neg1 ? !eff1_cmp : eff1_cmp);
+ bool const eff2 = m_abeff2 && (m_neg2 ? !eff2_cmp : eff2_cmp) && m_mpx_eff2_sh;
+
+ // calculate shell point effect
+ // using the same magical offset as the area effects
+ bool const shell = m_abeff2 && (UINT8((x + 0) & 0xff) == (eff2_val & 0xff)) && !m_mpx_eff2_sh;
+
+ // set effect bits, and mix in PVI graphics while we're here
+ UINT16 const effect_bits = (shell ? 0x0800 : 0x0000) | (eff1 ? 0x1000 : 0x0000) | (eff2 ? 0x2000 : 0x0000);
+ UINT16 pvi_bits = ~(pvi1_row[px] | pvi2_row[px] | pvi3_row[px]);
+ pvi_bits = ((pvi_bits & 0x01) << 7) | ((pvi_bits & 0x02) << 5) | ((pvi_bits & 0x04) << 3);
+ if ((min_x <= px) && (max_x >= px)) row[px] |= effect_bits | pvi_bits;
+ px++;
+ if ((min_x <= px) && (max_x >= px)) row[px] |= effect_bits | pvi_bits;
+ px++;
+ if ((min_x <= px) && (max_x >= px)) row[px] |= effect_bits | pvi_bits;
+ px++;
+ }
+
+ // render the TTL-generated sprite
+ // more magic offsets here I don't understand the source of
+ if (m_nave)
+ {
+ int const sprite_row = y + y_offset - ((256 - m_wcov) & 0x0ff);
+ if ((0 <= sprite_row) && (32 > sprite_row))
+ {
+ for (unsigned byte = 0, x = x_offset + (3 * ((256 - m_wcoh + 5) & 0x0ff)); 8 > byte; byte++)
+ {
+ UINT8 bits = m_gfx2[((m_shp << 8) & 0x700) | ((sprite_row << 3) & 0x0f8) | (byte & 0x07)];
+ for (unsigned pixel = 0; 4 > pixel; pixel++, bits <<= 2)
+ {
+ if (max_x >= x) row[x++] |= (bits >> 6) & 0x03;
+ if (max_x >= x) row[x++] |= (bits >> 6) & 0x03;
+ if (max_x >= x) row[x++] |= (bits >> 6) & 0x03;
+ }
+ }
+ }
+ }
+}
diff --git a/src/mame/video/lastduel.cpp b/src/mame/video/lastduel.cpp
index 22e74643cc4..60a3aafbf24 100644
--- a/src/mame/video/lastduel.cpp
+++ b/src/mame/video/lastduel.cpp
@@ -120,10 +120,10 @@ WRITE16_MEMBER(lastduel_state::lastduel_flip_w)
{
flip_screen_set(data & 0x01);
- coin_lockout_w(machine(), 0, ~data & 0x10);
- coin_lockout_w(machine(), 1, ~data & 0x20);
- coin_counter_w(machine(), 0, data & 0x40);
- coin_counter_w(machine(), 1, data & 0x80);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x10);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(1, data & 0x80);
}
}
diff --git a/src/mame/video/legionna.cpp b/src/mame/video/legionna.cpp
index 69b591ce001..4cecc5adb32 100644
--- a/src/mame/video/legionna.cpp
+++ b/src/mame/video/legionna.cpp
@@ -45,6 +45,21 @@ WRITE16_MEMBER(legionna_state::tile_scroll_w)
tm->set_scrollx(0, data);
}
+WRITE16_MEMBER(legionna_state::tile_vreg_1a_w)
+{
+ flip_screen_set(data & 1);
+ // TODO: other bits ...
+}
+
+WRITE16_MEMBER(legionna_state::tile_scroll_base_w)
+{
+ // TODO: specific for Godzilla, needs visible area changes.
+ if(offset == 7)
+ m_text_layer->set_scrolldy(0x1ef - data,0x1ef - data);
+
+ printf("%02x %04x\n",offset,data);
+}
+
WRITE16_MEMBER(legionna_state::heatbrl_setgfxbank)
{
m_back_gfx_bank = (data &0x4000) >> 2;
@@ -196,17 +211,17 @@ TILE_GET_INFO_MEMBER(legionna_state::get_text_tile_info)
VIDEO_START_MEMBER(legionna_state,legionna)
{
- m_back_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_fore_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_mid_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_textram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_back_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_fore_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_mid_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_textram = make_unique_clear<UINT16[]>(0x1000/2);
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info),this), TILEMAP_SCAN_ROWS,16,16,32,32);
m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32);
- m_scrollram16 = auto_alloc_array(machine(), UINT16, 0x60/2);
+ m_scrollram16 = std::make_unique<UINT16[]>(0x60/2);
m_sprite_xoffs = 0;
m_sprite_yoffs = 0;
@@ -221,17 +236,17 @@ VIDEO_START_MEMBER(legionna_state,legionna)
VIDEO_START_MEMBER(legionna_state,denjinmk)
{
- m_back_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_fore_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_mid_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_textram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_back_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_fore_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_mid_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_textram = make_unique_clear<UINT16[]>(0x1000/2);
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info_denji),this),TILEMAP_SCAN_ROWS,16,16,32,32);
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info_denji),this), TILEMAP_SCAN_ROWS,16,16,32,32);
m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32);
- m_scrollram16 = auto_alloc_array(machine(), UINT16, 0x60/2);
+ m_scrollram16 = std::make_unique<UINT16[]>(0x60/2);
m_sprite_xoffs = 0;
m_sprite_yoffs = 0;
@@ -246,17 +261,17 @@ VIDEO_START_MEMBER(legionna_state,denjinmk)
VIDEO_START_MEMBER(legionna_state,cupsoc)
{
- m_back_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_fore_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_mid_data = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_textram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_back_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_fore_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_mid_data = make_unique_clear<UINT16[]>(0x800/2);
+ m_textram = make_unique_clear<UINT16[]>(0x1000/2);
m_background_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
m_foreground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32);
m_midground_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info_cupsoc),this), TILEMAP_SCAN_ROWS,16,16,32,32);
m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32);
- m_scrollram16 = auto_alloc_array(machine(), UINT16, 0x60/2);
+ m_scrollram16 = std::make_unique<UINT16[]>(0x60/2);
m_sprite_xoffs = 0;
m_sprite_yoffs = 0;
diff --git a/src/mame/video/leland.cpp b/src/mame/video/leland.cpp
index 3938b07e4c7..928a1e9ab78 100644
--- a/src/mame/video/leland.cpp
+++ b/src/mame/video/leland.cpp
@@ -58,7 +58,7 @@ TIMER_CALLBACK_MEMBER(leland_state::scanline_callback)
VIDEO_START_MEMBER(leland_state,leland)
{
/* allocate memory */
- m_video_ram = auto_alloc_array_clear(machine(), UINT8, VRAM_SIZE);
+ m_video_ram = make_unique_clear<UINT8[]>(VRAM_SIZE);
/* scanline timer */
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(leland_state::scanline_callback),this));
@@ -68,10 +68,10 @@ VIDEO_START_MEMBER(leland_state,leland)
VIDEO_START_MEMBER(leland_state,ataxx)
{
/* first do the standard stuff */
- m_video_ram = auto_alloc_array_clear(machine(), UINT8, VRAM_SIZE);
+ m_video_ram = make_unique_clear<UINT8[]>(VRAM_SIZE);
/* allocate memory */
- m_ataxx_qram = auto_alloc_array_clear(machine(), UINT8, QRAM_SIZE);
+ m_ataxx_qram = make_unique_clear<UINT8[]>(QRAM_SIZE);
}
@@ -197,7 +197,7 @@ int leland_state::leland_vram_port_r(address_space &space, int offset, int num)
void leland_state::leland_vram_port_w(address_space &space, int offset, int data, int num)
{
- UINT8 *video_ram = m_video_ram;
+ UINT8 *video_ram = m_video_ram.get();
struct vram_state_data *state = m_vram_state + num;
int addr = state->m_addr;
int inc = (offset >> 2) & 2;
diff --git a/src/mame/video/lethalj.cpp b/src/mame/video/lethalj.cpp
index 3fdc4027ede..ae40525e276 100644
--- a/src/mame/video/lethalj.cpp
+++ b/src/mame/video/lethalj.cpp
@@ -87,7 +87,7 @@ READ16_MEMBER(lethalj_state::lethalj_gun_r)
void lethalj_state::video_start()
{
/* allocate video RAM for screen */
- m_screenram = auto_alloc_array(machine(), UINT16, BLITTER_DEST_WIDTH * BLITTER_DEST_HEIGHT);
+ m_screenram = std::make_unique<UINT16[]>(BLITTER_DEST_WIDTH * BLITTER_DEST_HEIGHT);
/* predetermine blitter info */
m_blitter_base = (UINT16 *)memregion("gfx1")->base();
@@ -136,7 +136,7 @@ void lethalj_state::do_blit()
if (dsty >= 0 && dsty < BLITTER_DEST_HEIGHT/2)
{
UINT16 *source = m_blitter_base + (srcy % m_blitter_rows) * BLITTER_SOURCE_WIDTH;
- UINT16 *dest = m_screenram + (dsty + (m_vispage ^ 1) * 256) * BLITTER_DEST_WIDTH;
+ UINT16 *dest = m_screenram.get() + (dsty + (m_vispage ^ 1) * 256) * BLITTER_DEST_WIDTH;
int sx = srcx;
int dx = dstx;
int x;
diff --git a/src/mame/video/liberate.cpp b/src/mame/video/liberate.cpp
index 55011e47c58..b53c767f042 100644
--- a/src/mame/video/liberate.cpp
+++ b/src/mame/video/liberate.cpp
@@ -210,9 +210,9 @@ VIDEO_START_MEMBER(liberate_state,prosoccr)
m_fix_tilemap->set_transparent_pen(0);
m_fg_gfx = memregion("fg_gfx")->base();
- m_charram = auto_alloc_array(machine(), UINT8, 0x1800 * 2);
+ m_charram = std::make_unique<UINT8[]>(0x1800 * 2);
- save_pointer(NAME(m_charram), 0x1800 * 2);
+ save_pointer(NAME(m_charram.get()), 0x1800 * 2);
save_pointer(NAME(m_fg_gfx), 0x6000);
}
diff --git a/src/mame/video/liberatr.cpp b/src/mame/video/liberatr.cpp
index 74c349924bf..f0791196198 100644
--- a/src/mame/video/liberatr.cpp
+++ b/src/mame/video/liberatr.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/lockon.cpp b/src/mame/video/lockon.cpp
index 4bb6e2e59a0..6e2bcb9cc7f 100644
--- a/src/mame/video/lockon.cpp
+++ b/src/mame/video/lockon.cpp
@@ -891,11 +891,11 @@ void lockon_state::video_start()
m_tilemap->set_transparent_pen(0);
/* Allocate the two frame buffers for rotation */
- m_back_buffer = auto_bitmap_ind16_alloc(machine(), 512, 512);
- m_front_buffer = auto_bitmap_ind16_alloc(machine(), 512, 512);
+ m_back_buffer = std::make_unique<bitmap_ind16>(512, 512);
+ m_front_buffer = std::make_unique<bitmap_ind16>(512, 512);
/* 2kB of object ASIC palette RAM */
- m_obj_pal_ram = auto_alloc_array(machine(), UINT8, 2048);
+ m_obj_pal_ram = std::make_unique<UINT8[]>(2048);
/* Timer for ground display list callback */
m_bufend_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(lockon_state::bufend_callback),this));
@@ -906,7 +906,7 @@ void lockon_state::video_start()
save_item(NAME(*m_back_buffer));
save_item(NAME(*m_front_buffer));
- save_pointer(NAME(m_obj_pal_ram), 2048);
+ save_pointer(NAME(m_obj_pal_ram.get()), 2048);
}
UINT32 lockon_state::screen_update_lockon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -936,9 +936,7 @@ void lockon_state::screen_eof_lockon(screen_device &screen, bool state)
if (!state)
{
/* Swap the frame buffers */
- bitmap_ind16 *tmp = m_front_buffer;
- m_front_buffer = m_back_buffer;
- m_back_buffer = tmp;
+ m_front_buffer.swap(m_back_buffer);
/* Draw the frame buffer layers */
scene_draw();
diff --git a/src/mame/video/lordgun.cpp b/src/mame/video/lordgun.cpp
index fb314c7c8be..f9d5790b6f0 100644
--- a/src/mame/video/lordgun.cpp
+++ b/src/mame/video/lordgun.cpp
@@ -131,7 +131,7 @@ void lordgun_state::video_start()
// Buffer bitmaps for 4 tilemaps (0-3) + sprites (4)
for (i = 0; i < 5; i++)
- m_bitmaps[i] = auto_bitmap_ind16_alloc(machine(), w, h);
+ m_bitmaps[i] = std::make_unique<bitmap_ind16>(w, h);
}
/***************************************************************************
diff --git a/src/mame/video/lwings.cpp b/src/mame/video/lwings.cpp
index 8ecd4464152..0a06822b9f9 100644
--- a/src/mame/video/lwings.cpp
+++ b/src/mame/video/lwings.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
diff --git a/src/mame/video/m10.cpp b/src/mame/video/m10.cpp
index 1d5b029c3c6..91d70b63c78 100644
--- a/src/mame/video/m10.cpp
+++ b/src/mame/video/m10.cpp
@@ -100,15 +100,14 @@ VIDEO_START_MEMBER(m10_state,m10)
m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m10_state::get_tile_info),this), tilemap_mapper_delegate(FUNC(m10_state::tilemap_scan),this), 8, 8, 32, 32);
m_tx_tilemap->set_transparent_pen(0);
- m_back_gfx = global_alloc(gfx_element(m_palette, backlayout, m_chargen, 0, 8, 0));
-
- m_gfxdecode->set_gfx(1, m_back_gfx);
+ m_gfxdecode->set_gfx(1, std::make_unique<gfx_element>(m_palette, backlayout, m_chargen, 0, 8, 0));
+ m_back_gfx = m_gfxdecode->gfx(1);
return ;
}
VIDEO_START_MEMBER(m10_state,m15)
{
- m_gfxdecode->set_gfx(0,global_alloc(gfx_element(m_palette, charlayout, m_chargen, 0, 8, 0)));
+ m_gfxdecode->set_gfx(0,std::make_unique<gfx_element>(m_palette, charlayout, m_chargen, 0, 8, 0));
m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m10_state::get_tile_info),this),tilemap_mapper_delegate(FUNC(m10_state::tilemap_scan),this), 8, 8, 32, 32);
diff --git a/src/mame/video/m107.cpp b/src/mame/video/m107.cpp
index d08d17845b9..8b7ebcad955 100644
--- a/src/mame/video/m107.cpp
+++ b/src/mame/video/m107.cpp
@@ -142,12 +142,12 @@ void m107_state::video_start()
layer->tmap->set_transparent_pen(0);
}
- m_buffered_spriteram = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_buffered_spriteram = make_unique_clear<UINT16[]>(0x1000/2);
save_item(NAME(m_sprite_display));
save_item(NAME(m_raster_irq_position));
save_item(NAME(m_control));
- save_pointer(NAME(m_buffered_spriteram), 0x1000/2);
+ save_pointer(NAME(m_buffered_spriteram.get()), 0x1000/2);
for (int i = 0; i < 4; i++)
{
@@ -159,9 +159,9 @@ void m107_state::video_start()
void m107_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT16 *spriteram = m_buffered_spriteram;
+ 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 */
@@ -381,7 +384,7 @@ WRITE16_MEMBER(m107_state::spritebuffer_w)
// logerror("%04x: buffered spriteram\n",space.device().safe_pc());
m_sprite_display = (!(data & 0x1000));
- memcpy(m_buffered_spriteram, m_spriteram, 0x1000);
+ memcpy(m_buffered_spriteram.get(), m_spriteram, 0x1000);
}
}
diff --git a/src/mame/video/m52.cpp b/src/mame/video/m52.cpp
index 6a30dac2809..aa4b6590828 100644
--- a/src/mame/video/m52.cpp
+++ b/src/mame/video/m52.cpp
@@ -273,8 +273,8 @@ WRITE8_MEMBER(m52_state::m52_flipscreen_w)
/* screen flip is handled both by software and hardware */
flip_screen_set((data & 0x01) ^ (~ioport("DSW2")->read() & 0x01));
- coin_counter_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
}
WRITE8_MEMBER(m52_state::alpha1v_flipscreen_w)
diff --git a/src/mame/video/m57.cpp b/src/mame/video/m57.cpp
index 60826394ff0..b75fdc9d8a5 100644
--- a/src/mame/video/m57.cpp
+++ b/src/mame/video/m57.cpp
@@ -159,8 +159,8 @@ WRITE8_MEMBER(m57_state::m57_flipscreen_w)
m_flipscreen = (data & 0x01) ^ (~ioport("DSW2")->read() & 0x01);
m_bg_tilemap->set_flip(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
- coin_counter_w(machine(), 0,data & 0x02);
- coin_counter_w(machine(), 1,data & 0x20);
+ machine().bookkeeping().coin_counter_w(0,data & 0x02);
+ machine().bookkeeping().coin_counter_w(1,data & 0x20);
}
diff --git a/src/mame/video/m58.cpp b/src/mame/video/m58.cpp
index 5a2fc6f4232..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 = auto_bitmap_ind16_alloc(machine(), SCROLL_PANEL_WIDTH, height);
m_screen->register_screen_bitmap(m_scroll_panel_bitmap);
save_item(NAME(m_scroll_panel_bitmap));
}
@@ -200,8 +194,8 @@ WRITE8_MEMBER(m58_state::flipscreen_w)
/* screen flip is handled both by software and hardware */
flip_screen_set((data & 0x01) ^ (~ioport("DSW2")->read() & 0x01));
- coin_counter_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
}
@@ -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/m62.cpp b/src/mame/video/m62.cpp
index 50c8cd2356a..c9ca0846c43 100644
--- a/src/mame/video/m62.cpp
+++ b/src/mame/video/m62.cpp
@@ -300,8 +300,8 @@ WRITE8_MEMBER(m62_state::m62_flipscreen_w)
else
machine().tilemap().set_flip_all(0);
- coin_counter_w(machine(), 0, data & 2);
- coin_counter_w(machine(), 1, data & 4);
+ machine().bookkeeping().coin_counter_w(0, data & 2);
+ machine().bookkeeping().coin_counter_w(1, data & 4);
/* Sound inhibit ... connected to D6 which is not present on any board */
if (m_audio->m_audio_SINH != NULL)
diff --git a/src/mame/video/m72.cpp b/src/mame/video/m72.cpp
index 61d03d3857c..c06403c8ee4 100644
--- a/src/mame/video/m72.cpp
+++ b/src/mame/video/m72.cpp
@@ -105,7 +105,7 @@ void m72_state::register_savestate()
save_item(NAME(m_scrolly1));
save_item(NAME(m_scrollx2));
save_item(NAME(m_scrolly2));
- save_pointer(NAME(m_buffered_spriteram), m_spriteram.bytes()/2);
+ save_pointer(NAME(m_buffered_spriteram.get()), m_spriteram.bytes()/2);
}
@@ -114,7 +114,7 @@ VIDEO_START_MEMBER(m72_state,m72)
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
- m_buffered_spriteram = auto_alloc_array(machine(), UINT16, m_spriteram.bytes()/2);
+ m_buffered_spriteram = std::make_unique<UINT16[]>(m_spriteram.bytes()/2);
m_fg_tilemap->set_transmask(0,0xffff,0x0001);
m_fg_tilemap->set_transmask(1,0x00ff,0xff01);
@@ -128,7 +128,7 @@ VIDEO_START_MEMBER(m72_state,m72)
//m_bg_tilemap->set_transmask(2,0x001f,0xffe0); // needed for nspiritj japan warning to look correct
// not sure what is needed to be able to see the imgfghto warning message
- memset(m_buffered_spriteram,0,m_spriteram.bytes());
+ memset(m_buffered_spriteram.get(),0,m_spriteram.bytes());
m_fg_tilemap->set_scrolldx(0,0);
m_fg_tilemap->set_scrolldy(-128,-128);
@@ -209,8 +209,8 @@ VIDEO_START_MEMBER(m72_state,m82)
m_bg_tilemap_large->set_scrolldx(4,0);
m_bg_tilemap_large->set_scrolldy(-128,-128);
- m_buffered_spriteram = auto_alloc_array(machine(), UINT16, m_spriteram.bytes()/2);
- memset(m_buffered_spriteram,0,m_spriteram.bytes());
+ m_buffered_spriteram = std::make_unique<UINT16[]>(m_spriteram.bytes()/2);
+ memset(m_buffered_spriteram.get(),0,m_spriteram.bytes());
register_savestate();
save_item(NAME(m_m82_rowscroll));
@@ -224,7 +224,7 @@ VIDEO_START_MEMBER(m72_state,rtype2)
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
- m_buffered_spriteram = auto_alloc_array(machine(), UINT16, m_spriteram.bytes()/2);
+ m_buffered_spriteram = std::make_unique<UINT16[]>(m_spriteram.bytes()/2);
m_fg_tilemap->set_transmask(0,0xffff,0x0001);
m_fg_tilemap->set_transmask(1,0x00ff,0xff01);
@@ -234,7 +234,7 @@ VIDEO_START_MEMBER(m72_state,rtype2)
m_bg_tilemap->set_transmask(1,0x00ff,0xff00);
m_bg_tilemap->set_transmask(2,0x0001,0xfffe);
- memset(m_buffered_spriteram,0,m_spriteram.bytes());
+ memset(m_buffered_spriteram.get(),0,m_spriteram.bytes());
m_fg_tilemap->set_scrolldx(4,0);
m_fg_tilemap->set_scrolldy(-128,16);
@@ -375,7 +375,7 @@ WRITE16_MEMBER(m72_state::scrolly2_w)
WRITE16_MEMBER(m72_state::dmaon_w)
{
if (ACCESSING_BITS_0_7)
- memcpy(m_buffered_spriteram, m_spriteram, m_spriteram.bytes());
+ memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes());
}
@@ -386,8 +386,8 @@ WRITE16_MEMBER(m72_state::port02_w)
if (data & 0xe0) logerror("write %02x to port 02\n",data);
/* bits 0/1 are coin counters */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
/* bit 2 is flip screen (handled both by software and hardware) */
flip_screen_set(((data & 0x04) >> 2) ^ ((~ioport("DSW")->read() >> 8) & 1));
@@ -412,8 +412,8 @@ WRITE16_MEMBER(m72_state::rtype2_port02_w)
if (data & 0xe0) logerror("write %02x to port 02\n",data);
/* bits 0/1 are coin counters */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
/* bit 2 is flip screen (handled both by software and hardware) */
flip_screen_set(((data & 0x04) >> 2) ^ ((~ioport("DSW")->read() >> 8) & 1));
@@ -454,7 +454,7 @@ WRITE16_MEMBER(m72_state::m82_tm_ctrl_w)
void m72_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
{
- UINT16 *spriteram = m_buffered_spriteram;
+ UINT16 *spriteram = m_buffered_spriteram.get();
int offs;
offs = 0;
diff --git a/src/mame/video/macrossp.cpp b/src/mame/video/macrossp.cpp
index 98c452d05bc..9f744b42517 100644
--- a/src/mame/video/macrossp.cpp
+++ b/src/mame/video/macrossp.cpp
@@ -165,8 +165,8 @@ TILE_GET_INFO_MEMBER(macrossp_state::get_macrossp_text_tile_info)
void macrossp_state::video_start()
{
- m_spriteram_old = auto_alloc_array_clear(machine(), UINT32, m_spriteram.bytes() / 4);
- m_spriteram_old2 = auto_alloc_array_clear(machine(), UINT32, m_spriteram.bytes() / 4);
+ m_spriteram_old = make_unique_clear<UINT32[]>(m_spriteram.bytes() / 4);
+ m_spriteram_old2 = make_unique_clear<UINT32[]>(m_spriteram.bytes() / 4);
m_text_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(macrossp_state::get_macrossp_text_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
m_scra_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(macrossp_state::get_macrossp_scra_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
@@ -183,8 +183,8 @@ void macrossp_state::video_start()
m_gfxdecode->gfx(2)->set_granularity(64);
m_gfxdecode->gfx(3)->set_granularity(64);
- save_pointer(NAME(m_spriteram_old), m_spriteram.bytes() / 4);
- save_pointer(NAME(m_spriteram_old2), m_spriteram.bytes() / 4);
+ save_pointer(NAME(m_spriteram_old.get()), m_spriteram.bytes() / 4);
+ save_pointer(NAME(m_spriteram_old2.get()), m_spriteram.bytes() / 4);
}
@@ -193,8 +193,8 @@ void macrossp_state::draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, c
{
gfx_element *gfx = m_gfxdecode->gfx(0);
// UINT32 *source = m_spriteram;
- UINT32 *source = (m_spriteram_old2 + m_spriteram.bytes() / 4) - 3; /* buffers by two frames */
- UINT32 *finish = m_spriteram_old2;
+ UINT32 *source = (m_spriteram_old2.get() + m_spriteram.bytes() / 4) - 3; /* buffers by two frames */
+ UINT32 *finish = m_spriteram_old2.get();
/* reverse order */
while (source >= finish)
@@ -463,7 +463,7 @@ void macrossp_state::screen_eof_macrossp(screen_device &screen, bool state)
if (state)
{
/* looks like sprites are *two* frames ahead, like nmk16 */
- memcpy(m_spriteram_old2, m_spriteram_old, m_spriteram.bytes());
- memcpy(m_spriteram_old, m_spriteram, m_spriteram.bytes());
+ memcpy(m_spriteram_old2.get(), m_spriteram_old.get(), m_spriteram.bytes());
+ memcpy(m_spriteram_old.get(), m_spriteram, m_spriteram.bytes());
}
}
diff --git a/src/mame/video/madalien.cpp b/src/mame/video/madalien.cpp
index cd9447a6478..73af39bb0e7 100644
--- a/src/mame/video/madalien.cpp
+++ b/src/mame/video/madalien.cpp
@@ -143,7 +143,7 @@ VIDEO_START_MEMBER(madalien_state,madalien)
m_tilemap_edge2[i] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(madalien_state::get_tile_info_BG_2),this), scan_functions[i], 16, 16, tilemap_cols[i], 8);
}
- m_headlight_bitmap = auto_bitmap_ind16_alloc(machine(), 128, 128);
+ m_headlight_bitmap = std::make_unique<bitmap_ind16>(128, 128);
m_gfxdecode->gfx(0)->set_source(m_charram);
diff --git a/src/mame/video/magmax.cpp b/src/mame/video/magmax.cpp
index f6279a137f6..4e5212303eb 100644
--- a/src/mame/video/magmax.cpp
+++ b/src/mame/video/magmax.cpp
@@ -69,7 +69,7 @@ void magmax_state::video_start()
/* Set up save state */
save_item(NAME(m_flipscreen));
- m_prom_tab = auto_alloc_array(machine(), UINT32, 256);
+ m_prom_tab = std::make_unique<UINT32[]>(256);
m_screen->register_screen_bitmap(m_bitmap);
diff --git a/src/mame/video/matmania.cpp b/src/mame/video/matmania.cpp
index 3a994d02079..d91a2c32f19 100644
--- a/src/mame/video/matmania.cpp
+++ b/src/mame/video/matmania.cpp
@@ -120,8 +120,8 @@ void matmania_state::video_start()
int height = m_screen->height();
/* Mat Mania has a virtual screen twice as large as the visible screen */
- m_tmpbitmap = auto_bitmap_ind16_alloc(machine(), width, 2 * height);
- m_tmpbitmap2 = auto_bitmap_ind16_alloc(machine(), width, 2 * height);
+ m_tmpbitmap = std::make_unique<bitmap_ind16>(width, 2 * height);
+ m_tmpbitmap2 = std::make_unique<bitmap_ind16>(width, 2 * height);
}
diff --git a/src/mame/video/mb60553.cpp b/src/mame/video/mb60553.cpp
index e3fd96d0d28..f13a8f3e26c 100644
--- a/src/mame/video/mb60553.cpp
+++ b/src/mame/video/mb60553.cpp
@@ -35,11 +35,11 @@ void mb60553_zooming_tilemap_device::device_start()
if(!m_gfxdecode->started())
throw device_missing_dependencies();
- m_lineram = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x1000/2);
- m_vram = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x4000/2);
+ m_lineram = make_unique_clear<UINT16[]>(0x1000/2);
+ m_vram = make_unique_clear<UINT16[]>(0x4000/2);
- save_pointer(NAME(m_lineram), 0x1000/2);
- save_pointer(NAME(m_vram), 0x4000/2);
+ save_pointer(NAME(m_lineram.get()), 0x1000/2);
+ save_pointer(NAME(m_vram.get()), 0x4000/2);
save_item(NAME(m_pal_base));
save_item(NAME(m_bank));
save_item(NAME(m_regs));
diff --git a/src/mame/video/mb60553.h b/src/mame/video/mb60553.h
index b207dce947c..1c9c84e725c 100644
--- a/src/mame/video/mb60553.h
+++ b/src/mame/video/mb60553.h
@@ -12,7 +12,7 @@ public:
static void set_gfx_region(device_t &device, int gfxregion);
tilemap_t* m_tmap;
- UINT16* m_vram;
+ std::unique_ptr<UINT16[]> m_vram;
UINT16 m_regs[8];
UINT8 m_bank[8];
UINT16 m_pal_base;
@@ -22,7 +22,7 @@ public:
void draw( screen_device &screen, bitmap_ind16& bitmap, const rectangle &cliprect, int priority);
tilemap_t* get_tilemap();
- UINT16* m_lineram;
+ std::unique_ptr<UINT16[]> m_lineram;
TILEMAP_MAPPER_MEMBER(twc94_scan);
diff --git a/src/mame/video/mcatadv.cpp b/src/mame/video/mcatadv.cpp
index 9e03ef904ac..fccfd6ba21a 100644
--- a/src/mame/video/mcatadv.cpp
+++ b/src/mame/video/mcatadv.cpp
@@ -52,9 +52,9 @@ WRITE16_MEMBER(mcatadv_state::mcatadv_videoram2_w)
void mcatadv_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- UINT16 *source = (m_spriteram_old + (m_spriteram.bytes() / 2) /2);
+ UINT16 *source = (m_spriteram_old.get() + (m_spriteram.bytes() / 2) /2);
source -= 4;
- UINT16 *finish = m_spriteram_old;
+ UINT16 *finish = m_spriteram_old.get();
int global_x = m_vidregs[0] - 0x184;
int global_y = m_vidregs[1] - 0x1f1;
@@ -271,14 +271,14 @@ void mcatadv_state::video_start()
m_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(mcatadv_state::get_mcatadv_tile_info2),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
m_tilemap2->set_transparent_pen(0);
- m_spriteram_old = auto_alloc_array_clear(machine(), UINT16, m_spriteram.bytes() / 2);
- m_vidregs_old = auto_alloc_array(machine(), UINT16, (0x0f + 1) / 2);
+ m_spriteram_old = make_unique_clear<UINT16[]>(m_spriteram.bytes() / 2);
+ m_vidregs_old = std::make_unique<UINT16[]>((0x0f + 1) / 2);
m_palette_bank1 = 0;
m_palette_bank2 = 0;
- save_pointer(NAME(m_spriteram_old), m_spriteram.bytes() / 2);
- save_pointer(NAME(m_vidregs_old), (0x0f + 1) / 2);
+ save_pointer(NAME(m_spriteram_old.get()), m_spriteram.bytes() / 2);
+ save_pointer(NAME(m_vidregs_old.get()), (0x0f + 1) / 2);
}
void mcatadv_state::screen_eof_mcatadv(screen_device &screen, bool state)
@@ -286,7 +286,7 @@ void mcatadv_state::screen_eof_mcatadv(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_spriteram_old, m_spriteram, m_spriteram.bytes());
- memcpy(m_vidregs_old, m_vidregs, 0xf);
+ memcpy(m_spriteram_old.get(), m_spriteram, m_spriteram.bytes());
+ memcpy(m_vidregs_old.get(), m_vidregs, 0xf);
}
}
diff --git a/src/mame/video/mcd212.cpp b/src/mame/video/mcd212.cpp
index d7912615bbf..f380914a74e 100644
--- a/src/mame/video/mcd212.cpp
+++ b/src/mame/video/mcd212.cpp
@@ -30,7 +30,7 @@ TODO:
const device_type MACHINE_MCD212 = &device_creator<mcd212_device>;
#if ENABLE_VERBOSE_LOG
-static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_level, const char *s_fmt, ...)
+static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, const char *s_fmt, ...)
{
if( VERBOSE_LEVEL >= n_level )
{
@@ -39,7 +39,7 @@ static inline void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_l
va_start( v, s_fmt );
vsprintf( buf, s_fmt, v );
va_end( v );
- logerror( "%08x: %s", machine.device("maincpu")->safe_pc(), buf );
+ device.logerror("%s: %s", device.machine().describe_context(), buf );
}
}
#else
@@ -75,6 +75,10 @@ static const UINT16 cdi220_lcd_char[20*22] =
void mcd212_device::draw_lcd(int y)
{
cdi_state *state = machine().driver_data<cdi_state>();
+ if (state->m_slave_hle == nullptr)
+ {
+ return;
+ }
bitmap_rgb32 &bitmap = state->m_lcdbitmap;
UINT32 *scanline = &bitmap.pix32(y);
int x = 0;
@@ -82,8 +86,8 @@ void mcd212_device::draw_lcd(int y)
for(lcd = 0; lcd < 8; lcd++)
{
- UINT16 data = (state->m_slave->get_lcd_state()[lcd*2] << 8) |
- state->m_slave->get_lcd_state()[lcd*2 + 1];
+ UINT16 data = (state->m_slave_hle->get_lcd_state()[lcd*2] << 8) |
+ state->m_slave_hle->get_lcd_state()[lcd*2 + 1];
for(x = 0; x < 20; x++)
{
if(data & cdi220_lcd_char[y*20 + x])
@@ -344,7 +348,7 @@ void mcd212_device::set_register(int channel, UINT8 reg, UINT32 value)
case 0xa8: case 0xa9: case 0xaa: case 0xab: case 0xac: case 0xad: case 0xae: case 0xaf:
case 0xb0: case 0xb1: case 0xb2: case 0xb3: case 0xb4: case 0xb5: case 0xb6: case 0xb7:
case 0xb8: case 0xb9: case 0xba: case 0xbb: case 0xbc: case 0xbd: case 0xbe: case 0xbf:
- verboselog(machine, 11, " %04xxxxx: %d: CLUT[%d] = %08x\n", channel * 0x20, channel, m_channel[channel].clut_bank * 0x40 + (reg - 0x80), value );
+ verboselog(*this, 11, " %04xxxxx: %d: CLUT[%d] = %08x\n", channel * 0x20, channel, m_channel[channel].clut_bank * 0x40 + (reg - 0x80), value );
m_channel[0].clut_r[m_channel[channel].clut_bank * 0x40 + (reg - 0x80)] = (UINT8)(value >> 16) & 0xfc;
m_channel[0].clut_g[m_channel[channel].clut_bank * 0x40 + (reg - 0x80)] = (UINT8)(value >> 8) & 0xfc;
m_channel[0].clut_b[m_channel[channel].clut_bank * 0x40 + (reg - 0x80)] = (UINT8)(value >> 0) & 0xfc;
@@ -352,88 +356,88 @@ void mcd212_device::set_register(int channel, UINT8 reg, UINT32 value)
case 0xc0: // Image Coding Method
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Image Coding Method = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Image Coding Method = %08x\n", channel * 0x20, channel, value );
m_channel[channel].image_coding_method = value;
}
break;
case 0xc1: // Transparency Control
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Transparency Control = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Transparency Control = %08x\n", channel * 0x20, channel, value );
m_channel[channel].transparency_control = value;
}
break;
case 0xc2: // Plane Order
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Plane Order = %08x\n", channel * 0x20, channel, value & 7);
+ verboselog(*this, 6, " %04xxxxx: %d: Plane Order = %08x\n", channel * 0x20, channel, value & 7);
m_channel[channel].plane_order = value & 0x00000007;
}
break;
case 0xc3: // CLUT Bank Register
- verboselog(machine, 6, " %04xxxxx: %d: CLUT Bank Register = %08x\n", channel * 0x20, channel, value & 3);
+ verboselog(*this, 6, " %04xxxxx: %d: CLUT Bank Register = %08x\n", channel * 0x20, channel, value & 3);
m_channel[channel].clut_bank = channel ? (2 | (value & 0x00000001)) : (value & 0x00000003);
break;
case 0xc4: // Transparent Color A
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Transparent Color A = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Transparent Color A = %08x\n", channel * 0x20, channel, value );
m_channel[channel].transparent_color_a = value & 0xfcfcfc;
}
break;
case 0xc6: // Transparent Color B
if(channel == 1)
{
- verboselog(machine, 6, " %04xxxxx: %d: Transparent Color B = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Transparent Color B = %08x\n", channel * 0x20, channel, value );
m_channel[channel].transparent_color_b = value & 0xfcfcfc;
}
break;
case 0xc7: // Mask Color A
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Mask Color A = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Mask Color A = %08x\n", channel * 0x20, channel, value );
m_channel[channel].mask_color_a = value & 0xfcfcfc;
}
break;
case 0xc9: // Mask Color B
if(channel == 1)
{
- verboselog(machine, 6, " %04xxxxx: %d: Mask Color B = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Mask Color B = %08x\n", channel * 0x20, channel, value );
m_channel[channel].mask_color_b = value & 0xfcfcfc;
}
break;
case 0xca: // Delta YUV Absolute Start Value A
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Delta YUV Absolute Start Value A = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Delta YUV Absolute Start Value A = %08x\n", channel * 0x20, channel, value );
m_channel[channel].dyuv_abs_start_a = value;
}
break;
case 0xcb: // Delta YUV Absolute Start Value B
if(channel == 1)
{
- verboselog(machine, 6, " %04xxxxx: %d: Delta YUV Absolute Start Value B = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Delta YUV Absolute Start Value B = %08x\n", channel * 0x20, channel, value );
m_channel[channel].dyuv_abs_start_b = value;
}
break;
case 0xcd: // Cursor Position
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Cursor Position = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Cursor Position = %08x\n", channel * 0x20, channel, value );
m_channel[channel].cursor_position = value;
}
break;
case 0xce: // Cursor Control
if(channel == 0)
{
- verboselog(machine, 11, " %04xxxxx: %d: Cursor Control = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 11, " %04xxxxx: %d: Cursor Control = %08x\n", channel * 0x20, channel, value );
m_channel[channel].cursor_control = value;
}
break;
case 0xcf: // Cursor Pattern
if(channel == 0)
{
- verboselog(machine, 11, " %04xxxxx: %d: Cursor Pattern[%d] = %04x\n", channel * 0x20, channel, (value >> 16) & 0x000f, value & 0x0000ffff);
+ verboselog(*this, 11, " %04xxxxx: %d: Cursor Pattern[%d] = %04x\n", channel * 0x20, channel, (value >> 16) & 0x000f, value & 0x0000ffff);
m_channel[channel].cursor_pattern[(value >> 16) & 0x000f] = value & 0x0000ffff;
}
break;
@@ -445,35 +449,35 @@ void mcd212_device::set_register(int channel, UINT8 reg, UINT32 value)
case 0xd5:
case 0xd6:
case 0xd7:
- verboselog(machine, 6, " %04xxxxx: %d: Region Control %d = %08x\n", channel * 0x20, channel, reg & 7, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Region Control %d = %08x\n", channel * 0x20, channel, reg & 7, value );
m_channel[0].region_control[reg & 7] = value;
update_region_arrays();
break;
case 0xd8: // Backdrop Color
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Backdrop Color = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Backdrop Color = %08x\n", channel * 0x20, channel, value );
m_channel[channel].backdrop_color = value;
}
break;
case 0xd9: // Mosaic Pixel Hold Factor A
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Mosaic Pixel Hold Factor A = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Mosaic Pixel Hold Factor A = %08x\n", channel * 0x20, channel, value );
m_channel[channel].mosaic_hold_a = value;
}
break;
case 0xda: // Mosaic Pixel Hold Factor B
if(channel == 1)
{
- verboselog(machine, 6, " %04xxxxx: %d: Mosaic Pixel Hold Factor B = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Mosaic Pixel Hold Factor B = %08x\n", channel * 0x20, channel, value );
m_channel[channel].mosaic_hold_b = value;
}
break;
case 0xdb: // Weight Factor A
if(channel == 0)
{
- verboselog(machine, 6, " %04xxxxx: %d: Weight Factor A = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Weight Factor A = %08x\n", channel * 0x20, channel, value );
memset(m_channel[channel].weight_factor_a, value & 0x000000ff, 768);
update_region_arrays();
}
@@ -481,7 +485,7 @@ void mcd212_device::set_register(int channel, UINT8 reg, UINT32 value)
case 0xdc: // Weight Factor B
if(channel == 1)
{
- verboselog(machine, 6, " %04xxxxx: %d: Weight Factor B = %08x\n", channel * 0x20, channel, value );
+ verboselog(*this, 6, " %04xxxxx: %d: Weight Factor B = %08x\n", channel * 0x20, channel, value );
memset(m_channel[channel].weight_factor_b, value & 0x000000ff, 768);
update_region_arrays();
}
@@ -562,38 +566,38 @@ void mcd212_device::process_ica(int channel)
{
case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: // STOP
case 0x08: case 0x09: case 0x0a: case 0x0b: case 0x0c: case 0x0d: case 0x0e: case 0x0f:
- verboselog(machine, 11, "%08x: %08x: ICA %d: STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: ICA %d: STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
stop = 1;
break;
case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: // NOP
case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: case 0x1f:
- verboselog(machine, 12, "%08x: %08x: ICA %d: NOP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 12, "%08x: %08x: ICA %d: NOP\n", addr * 2 + channel * 0x200000, cmd, channel );
break;
case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: // RELOAD DCP
case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f:
- verboselog(machine, 11, "%08x: %08x: ICA %d: RELOAD DCP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: ICA %d: RELOAD DCP\n", addr * 2 + channel * 0x200000, cmd, channel );
set_dcp(channel, cmd & 0x001fffff);
break;
case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: // RELOAD DCP and STOP
case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f:
- verboselog(machine, 11, "%08x: %08x: ICA %d: RELOAD DCP and STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: ICA %d: RELOAD DCP and STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
set_dcp(channel, cmd & 0x001fffff);
stop = 1;
break;
case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: // RELOAD ICA
case 0x48: case 0x49: case 0x4a: case 0x4b: case 0x4c: case 0x4d: case 0x4e: case 0x4f:
- verboselog(machine, 11, "%08x: %08x: ICA %d: RELOAD ICA\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: ICA %d: RELOAD ICA\n", addr * 2 + channel * 0x200000, cmd, channel );
addr = (cmd & 0x001fffff) / 2;
break;
case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x55: case 0x56: case 0x57: // RELOAD VSR and STOP
case 0x58: case 0x59: case 0x5a: case 0x5b: case 0x5c: case 0x5d: case 0x5e: case 0x5f:
- verboselog(machine, 11, "%08x: %08x: ICA %d: RELOAD VSR and STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: ICA %d: RELOAD VSR and STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
set_vsr(channel, cmd & 0x001fffff);
stop = 1;
break;
case 0x60: case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: // INTERRUPT
case 0x68: case 0x69: case 0x6a: case 0x6b: case 0x6c: case 0x6d: case 0x6e: case 0x6f:
- verboselog(machine, 11, "%08x: %08x: ICA %d: INTERRUPT\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: ICA %d: INTERRUPT\n", addr * 2 + channel * 0x200000, cmd, channel );
m_channel[1].csrr |= 1 << (2 - channel);
if(m_channel[1].csrr & (MCD212_CSR2R_IT1 | MCD212_CSR2R_IT2))
{
@@ -617,7 +621,7 @@ void mcd212_device::process_ica(int channel)
#endif
break;
case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c: case 0x7d: case 0x7e: case 0x7f: // RELOAD DISPLAY PARAMETERS
- verboselog(machine, 6, "%08x: %08x: ICA %d: RELOAD DISPLAY PARAMETERS\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 6, "%08x: %08x: ICA %d: RELOAD DISPLAY PARAMETERS\n", addr * 2 + channel * 0x200000, cmd, channel );
set_display_parameters(channel, cmd & 0x1f);
break;
default:
@@ -651,20 +655,20 @@ void mcd212_device::process_dca(int channel)
{
case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: // STOP
case 0x08: case 0x09: case 0x0a: case 0x0b: case 0x0c: case 0x0d: case 0x0e: case 0x0f:
- verboselog(machine, 11, "%08x: %08x: DCA %d: STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: DCA %d: STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
stop = 1;
break;
case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: // NOP
case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: case 0x1f:
- verboselog(machine, 12, "%08x: %08x: DCA %d: NOP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 12, "%08x: %08x: DCA %d: NOP\n", addr * 2 + channel * 0x200000, cmd, channel );
break;
case 0x20: case 0x21: case 0x22: case 0x23: case 0x24: case 0x25: case 0x26: case 0x27: // RELOAD DCP
case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f:
- verboselog(machine, 11, "%08x: %08x: DCA %d: RELOAD DCP (NOP)\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: DCA %d: RELOAD DCP (NOP)\n", addr * 2 + channel * 0x200000, cmd, channel );
break;
case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: // RELOAD DCP and STOP
case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f:
- verboselog(machine, 11, "%08x: %08x: DCA %d: RELOAD DCP and STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: DCA %d: RELOAD DCP and STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
set_dcp(channel, cmd & 0x001fffff);
addr = (cmd & 0x0007ffff) / 2;
addr_changed = 1;
@@ -672,18 +676,18 @@ void mcd212_device::process_dca(int channel)
break;
case 0x40: case 0x41: case 0x42: case 0x43: case 0x44: case 0x45: case 0x46: case 0x47: // RELOAD VSR
case 0x48: case 0x49: case 0x4a: case 0x4b: case 0x4c: case 0x4d: case 0x4e: case 0x4f:
- verboselog(machine, 11, "%08x: %08x: DCA %d: RELOAD VSR\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: DCA %d: RELOAD VSR\n", addr * 2 + channel * 0x200000, cmd, channel );
set_vsr(channel, cmd & 0x001fffff);
break;
case 0x50: case 0x51: case 0x52: case 0x53: case 0x54: case 0x55: case 0x56: case 0x57: // RELOAD VSR and STOP
case 0x58: case 0x59: case 0x5a: case 0x5b: case 0x5c: case 0x5d: case 0x5e: case 0x5f:
- verboselog(machine, 11, "%08x: %08x: DCA %d: RELOAD VSR and STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: DCA %d: RELOAD VSR and STOP\n", addr * 2 + channel * 0x200000, cmd, channel );
set_vsr(channel, cmd & 0x001fffff);
stop = 1;
break;
case 0x60: case 0x61: case 0x62: case 0x63: case 0x64: case 0x65: case 0x66: case 0x67: // INTERRUPT
case 0x68: case 0x69: case 0x6a: case 0x6b: case 0x6c: case 0x6d: case 0x6e: case 0x6f:
- verboselog(machine, 11, "%08x: %08x: DCA %d: INTERRUPT\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 11, "%08x: %08x: DCA %d: INTERRUPT\n", addr * 2 + channel * 0x200000, cmd, channel );
m_channel[1].csrr |= 1 << (2 - channel);
if(m_channel[1].csrr & (MCD212_CSR2R_IT1 | MCD212_CSR2R_IT2))
{
@@ -707,7 +711,7 @@ void mcd212_device::process_dca(int channel)
#endif
break;
case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c: case 0x7d: case 0x7e: case 0x7f: // RELOAD DISPLAY PARAMETERS
- verboselog(machine, 6, "%08x: %08x: DCA %d: RELOAD DISPLAY PARAMETERS\n", addr * 2 + channel * 0x200000, cmd, channel );
+ verboselog(*this, 6, "%08x: %08x: DCA %d: RELOAD DISPLAY PARAMETERS\n", addr * 2 + channel * 0x200000, cmd, channel );
set_display_parameters(channel, cmd & 0x1f);
break;
default:
@@ -819,7 +823,7 @@ void mcd212_device::process_vsr(int channel, UINT8 *pixels_r, UINT8 *pixels_g, U
if(m_channel[channel].dcr & MCD212_DCR_CM)
{
// 4-bit Bitmap
- verboselog(machine, 0, "%s", "Unsupported display mode: 4-bit Bitmap\n" );
+ verboselog(*this, 0, "%s", "Unsupported display mode: 4-bit Bitmap\n" );
}
else
{
@@ -1000,7 +1004,7 @@ void mcd212_device::process_vsr(int channel, UINT8 *pixels_r, UINT8 *pixels_g, U
case MCD212_DDR_FT_RLE:
if(m_channel[channel].dcr & MCD212_DCR_CM)
{
- verboselog(machine, 0, "%s", "Unsupported display mode: 4-bit RLE\n" );
+ verboselog(*this, 0, "%s", "Unsupported display mode: 4-bit RLE\n" );
done = 1;
}
else
@@ -1169,7 +1173,7 @@ void mcd212_device::mix_lines(UINT8 *plane_a_r, UINT8 *plane_a_g, UINT8 *plane_a
plane_enable_a = (plane_a_r_cur == transparent_color_a_r && plane_a_g_cur == transparent_color_a_g && plane_a_b_cur == transparent_color_a_b) || dyuv_enable_a || m_region_flag_1[x] == 1;
break;
default:
- verboselog(machine, 0, "Unhandled transparency mode for plane A: %d\n", transparency_mode_a);
+ verboselog(*this, 0, "Unhandled transparency mode for plane A: %d\n", transparency_mode_a);
plane_enable_a = 1;
break;
}
@@ -1212,7 +1216,7 @@ void mcd212_device::mix_lines(UINT8 *plane_a_r, UINT8 *plane_a_g, UINT8 *plane_a
plane_enable_b = (plane_b_r_cur == transparent_color_b_r && plane_b_g_cur == transparent_color_b_g && plane_b_b_cur == transparent_color_b_b) || dyuv_enable_b || m_region_flag_1[x] == 1;
break;
default:
- verboselog(machine, 0, "Unhandled transparency mode for plane B: %d\n", transparency_mode_b);
+ verboselog(*this, 0, "Unhandled transparency mode for plane B: %d\n", transparency_mode_b);
plane_enable_b = 1;
break;
}
@@ -1330,7 +1334,7 @@ READ16_MEMBER( mcd212_device::regs_r )
case 0x10/2:
if(ACCESSING_BITS_0_7)
{
- verboselog(machine(), 12, "mcd212_r: Status Register %d: %02x & %04x\n", channel + 1, m_channel[1 - (offset / 8)].csrr, mem_mask);
+ verboselog(*this, 12, "mcd212_r: Status Register %d: %02x & %04x\n", channel + 1, m_channel[1 - (offset / 8)].csrr, mem_mask);
if(channel == 0)
{
return m_channel[0].csrr;
@@ -1354,27 +1358,27 @@ READ16_MEMBER( mcd212_device::regs_r )
}
else
{
- verboselog(machine(), 2, "mcd212_r: Unknown Register %d: %04x\n", channel + 1, mem_mask);
+ verboselog(*this, 2, "mcd212_r: Unknown Register %d: %04x\n", channel + 1, mem_mask);
}
break;
case 0x02/2:
case 0x12/2:
- verboselog(machine(), 2, "mcd212_r: Display Command Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, m_channel[1 - (offset / 8)].dcr, mem_mask);
+ verboselog(*this, 2, "mcd212_r: Display Command Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, m_channel[1 - (offset / 8)].dcr, mem_mask);
return m_channel[1 - (offset / 8)].dcr;
case 0x04/2:
case 0x14/2:
- verboselog(machine(), 2, "mcd212_r: Video Start Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, m_channel[1 - (offset / 8)].vsr, mem_mask);
+ verboselog(*this, 2, "mcd212_r: Video Start Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, m_channel[1 - (offset / 8)].vsr, mem_mask);
return m_channel[1 - (offset / 8)].vsr;
case 0x08/2:
case 0x18/2:
- verboselog(machine(), 2, "mcd212_r: Display Decoder Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, m_channel[1 - (offset / 8)].ddr, mem_mask);
+ verboselog(*this, 2, "mcd212_r: Display Decoder Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, m_channel[1 - (offset / 8)].ddr, mem_mask);
return m_channel[1 - (offset / 8)].ddr;
case 0x0a/2:
case 0x1a/2:
- verboselog(machine(), 2, "mcd212_r: DCA Pointer Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, m_channel[1 - (offset / 8)].dcp, mem_mask);
+ verboselog(*this, 2, "mcd212_r: DCA Pointer Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, m_channel[1 - (offset / 8)].dcp, mem_mask);
return m_channel[1 - (offset / 8)].dcp;
default:
- verboselog(machine(), 2, "mcd212_r: Unknown Register %d & %04x\n", (1 - (offset / 8)) + 1, mem_mask);
+ verboselog(*this, 2, "mcd212_r: Unknown Register %d & %04x\n", (1 - (offset / 8)) + 1, mem_mask);
break;
}
@@ -1387,33 +1391,33 @@ WRITE16_MEMBER( mcd212_device::regs_w )
{
case 0x00/2:
case 0x10/2:
- verboselog(machine(), 2, "mcd212_w: Status Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
+ verboselog(*this, 2, "mcd212_w: Status Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
COMBINE_DATA(&m_channel[1 - (offset / 8)].csrw);
update_visible_area();
break;
case 0x02/2:
case 0x12/2:
- verboselog(machine(), 2, "mcd212_w: Display Command Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
+ verboselog(*this, 2, "mcd212_w: Display Command Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
COMBINE_DATA(&m_channel[1 - (offset / 8)].dcr);
update_visible_area();
break;
case 0x04/2:
case 0x14/2:
- verboselog(machine(), 2, "mcd212_w: Video Start Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
+ verboselog(*this, 2, "mcd212_w: Video Start Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
COMBINE_DATA(&m_channel[1 - (offset / 8)].vsr);
break;
case 0x08/2:
case 0x18/2:
- verboselog(machine(), 2, "mcd212_w: Display Decoder Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
+ verboselog(*this, 2, "mcd212_w: Display Decoder Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
COMBINE_DATA(&m_channel[1 - (offset / 8)].ddr);
break;
case 0x0a/2:
case 0x1a/2:
- verboselog(machine(), 2, "mcd212_w: DCA Pointer Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
+ verboselog(*this, 2, "mcd212_w: DCA Pointer Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
COMBINE_DATA(&m_channel[1 - (offset / 8)].dcp);
break;
default:
- verboselog(machine(), 2, "mcd212_w: Unknown Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
+ verboselog(*this, 2, "mcd212_w: Unknown Register %d: %04x & %04x\n", (1 - (offset / 8)) + 1, data, mem_mask);
break;
}
}
@@ -1427,7 +1431,7 @@ TIMER_CALLBACK_MEMBER( mcd212_device::perform_scan )
if(scanline == 0)
{
// Process ICA
- verboselog(machine, 6, "%s", "Frame Start\n" );
+ verboselog(*this, 6, "%s", "Frame Start\n" );
m_channel[0].csrr &= 0x7f;
for(int index = 0; index < 2; index++)
{
diff --git a/src/mame/video/mcr68.cpp b/src/mame/video/mcr68.cpp
index 7d9da3db68e..31654d27e71 100644
--- a/src/mame/video/mcr68.cpp
+++ b/src/mame/video/mcr68.cpp
@@ -71,8 +71,8 @@ VIDEO_START_MEMBER(mcr68_state,zwackery)
const UINT8 *colordatabase = (const UINT8 *)memregion("gfx3")->base();
gfx_element *gfx0 = m_gfxdecode->gfx(0);
gfx_element *gfx2 = m_gfxdecode->gfx(2);
- UINT8 *srcdata0, *dest0;
- UINT8 *srcdata2, *dest2;
+ UINT8 *dest0;
+ UINT8 *dest2;
int code, y, x;
/* initialize the background tilemap */
@@ -83,12 +83,12 @@ VIDEO_START_MEMBER(mcr68_state,zwackery)
m_fg_tilemap->set_transparent_pen(0);
/* allocate memory for the assembled gfx data */
- srcdata0 = auto_alloc_array(machine(), UINT8, gfx0->elements() * gfx0->width() * gfx0->height());
- srcdata2 = auto_alloc_array(machine(), UINT8, gfx2->elements() * gfx2->width() * gfx2->height());
+ m_srcdata0 = std::make_unique<UINT8[]>(gfx0->elements() * gfx0->width() * gfx0->height());
+ m_srcdata2 = std::make_unique<UINT8[]>(gfx2->elements() * gfx2->width() * gfx2->height());
/* "colorize" each code */
- dest0 = srcdata0;
- dest2 = srcdata2;
+ dest0 = m_srcdata0.get();
+ dest2 = m_srcdata2.get();
for (code = 0; code < gfx0->elements(); code++)
{
const UINT8 *coldata = colordatabase + code * 32;
@@ -125,8 +125,8 @@ VIDEO_START_MEMBER(mcr68_state,zwackery)
}
/* make the assembled data our new source data */
- gfx0->set_raw_layout(srcdata0, gfx0->width(), gfx0->height(), gfx0->elements(), 8 * gfx0->width(), 8 * gfx0->width() * gfx0->height());
- gfx2->set_raw_layout(srcdata2, gfx2->width(), gfx2->height(), gfx2->elements(), 8 * gfx2->width(), 8 * gfx2->width() * gfx2->height());
+ gfx0->set_raw_layout(m_srcdata0.get(), gfx0->width(), gfx0->height(), gfx0->elements(), 8 * gfx0->width(), 8 * gfx0->width() * gfx0->height());
+ gfx2->set_raw_layout(m_srcdata2.get(), gfx2->width(), gfx2->height(), gfx2->elements(), 8 * gfx2->width(), 8 * gfx2->width() * gfx2->height());
}
diff --git a/src/mame/video/megasys1.cpp b/src/mame/video/megasys1.cpp
index 3cc699c1d8e..1770c490218 100644
--- a/src/mame/video/megasys1.cpp
+++ b/src/mame/video/megasys1.cpp
@@ -143,13 +143,13 @@ No? No? c2108 Sprite Bank
-84100 44100 c2200 Sprite Control
+84100 44100 c2200 Sprite Control ( m_sprite_flag )
fedc ba9- ---- ---- ? (unused?)
---- ---8 ---- ---- Enable Sprite Splitting In 2 Groups:
Some Sprite Appear Over, Some Below The Layers
---- ---- 765- ---- ? (unused?)
- ---- ---- ---4 ---- Enable Effect (?)
+ ---- ---- ---4 ---- Enable Effect (don't clear sprite framebuffer)
---- ---- ---- 3210 Effect Number (?)
I think bit 4 enables some sort of color cycling for sprites having priority
@@ -225,10 +225,10 @@ VIDEO_START_MEMBER(megasys1_state,megasys1)
m_spriteram = &m_ram[0x8000/2];
- m_buffer_objectram = auto_alloc_array(machine(), UINT16, 0x2000);
- m_buffer_spriteram16 = auto_alloc_array(machine(), UINT16, 0x2000);
- m_buffer2_objectram = auto_alloc_array(machine(), UINT16, 0x2000);
- m_buffer2_spriteram16 = auto_alloc_array(machine(), UINT16, 0x2000);
+ m_buffer_objectram = std::make_unique<UINT16[]>(0x2000);
+ m_buffer_spriteram16 = std::make_unique<UINT16[]>(0x2000);
+ m_buffer2_objectram = std::make_unique<UINT16[]>(0x2000);
+ m_buffer2_spriteram16 = std::make_unique<UINT16[]>(0x2000);
create_tilemaps();
m_tmap[0] = m_tilemap[0][0][0];
@@ -266,7 +266,7 @@ VIDEO_START_MEMBER(megasys1_state,megasys1)
m_8x8_scroll_factor[2] = 1; m_16x16_scroll_factor[2] = 4;
if (strcmp(machine().system().name, "soldam") == 0 ||
- strcmp(machine().system().name, "soldamj") == 0)
+ strcmp(machine().system().name, "soldamj") == 0)
{
m_8x8_scroll_factor[1] = 4; m_16x16_scroll_factor[1] = 4;
}
@@ -275,6 +275,8 @@ VIDEO_START_MEMBER(megasys1_state,megasys1)
if (strcmp(machine().system().name, "lomakai") == 0 ||
strcmp(machine().system().name, "makaiden") == 0)
m_hardware_type_z = 1;
+
+ m_screen->register_screen_bitmap(m_sprite_buffer_bitmap);
}
/***************************************************************************
@@ -413,6 +415,9 @@ WRITE16_MEMBER(megasys1_state::megasys1_vregs_A_w)
{
UINT16 new_data = COMBINE_DATA(&m_vregs[offset]);
+ if(((offset*2) & 0x300) == 0)
+ m_screen->update_partial(m_screen->vpos());
+
switch (offset)
{
case 0x000/2 : m_active_layers = new_data; break;
@@ -591,7 +596,7 @@ WRITE16_MEMBER(megasys1_state::megasys1_vregs_D_w)
00-07 ?
08 fed- ---- ---- ---- ?
---c ---- ---- ---- mosaic sol.
- ---- ba98 ---- ---- mosaic
+ ---- ba98 ---- ---- mosaic
---- ---- 7--- ---- y flip
---- ---- -6-- ---- x flip
---- ---- --45 ---- ?
@@ -600,30 +605,80 @@ WRITE16_MEMBER(megasys1_state::megasys1_vregs_D_w)
0C Y position
0E Code */
-inline void megasys1_state::draw_16x16_priority_sprite(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect, INT32 code, INT32 color, INT32 sx, INT32 sy, INT32 flipx, INT32 flipy, UINT8 mosaic, UINT8 mosaicsol, INT32 priority)
+
+void megasys1_state::mix_sprite_bitmap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
+ gfx_element *decodegfx = m_gfxdecode->gfx(3);
+ UINT16 colorbase = decodegfx->colorbase();
+
+ for (int y = cliprect.min_y;y <= cliprect.max_y;y++)
+ {
+ UINT16* srcline = &m_sprite_buffer_bitmap.pix16(y);
+ UINT16* dstline = &bitmap.pix16(y);
+ UINT8 *prio = &screen.priority().pix8(y);
+
+ for (int x = cliprect.min_x;x <= cliprect.max_x;x++)
+ {
+ UINT16 pixel = srcline[x];
+
+ if ((pixel & 0xf) != 0xf)
+ {
+ int priority = (pixel & 0x4000) >> 14;
+ priority = (priority) ? 0x0c : 0x0a;
+
+ if ((priority & (1 << (prio[x] & 0x1f))) == 0)
+ {
+ UINT8 coldat = pixel & 0x3fff;
+ dstline[x] = coldat + colorbase;
+
+ }
+ }
+ }
+ }
+}
+
+void megasys1_state::partial_clear_sprite_bitmap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 param)
+{
+ for (int y = cliprect.min_y;y <= cliprect.max_y;y++)
+ {
+ UINT16* srcline = &m_sprite_buffer_bitmap.pix16(y);
+
+ for (int x = cliprect.min_x;x <= cliprect.max_x;x++)
+ {
+ UINT16 pixel = srcline[x];
+ srcline[x] = pixel & 0x7fff; // wipe our 'drawn here' marker otherwise trails will always have priority over new sprites, which is incorrect.
+
+ // guess, very unclear from the video refernece we have, used when removing p47 trails
+ if (((pixel & 0xf0) >> 4) < param)
+ srcline[x] = 0x7fff;
+ }
+ }
+}
+
-// if (sy >= nScreenHeight || sy < -15 || sx >= nScreenWidth || sx < -15) return;
+inline void megasys1_state::draw_16x16_priority_sprite(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect, INT32 code, INT32 color, INT32 sx, INT32 sy, INT32 flipx, INT32 flipy, UINT8 mosaic, UINT8 mosaicsol, INT32 priority)
+{
+// if (sy >= nScreenHeight || sy < -15 || sx >= nScreenWidth || sx < -15) return;
gfx_element *decodegfx = m_gfxdecode->gfx(3);
- sy = sy + cliprect.min_y;
+ sy = sy + 16;
const UINT8* gfx = decodegfx->get_data(code);
flipy = (flipy) ? 0x0f : 0;
flipx = (flipx) ? 0x0f : 0;
- color = (color * 16) + decodegfx->colorbase();
+ color = color * 16;
for (INT32 y = 0; y < 16; y++, sy++, sx-=16)
{
- UINT16 *dest = &bitmap.pix16(sy)+ sx;
- UINT8 *prio = &screen.priority().pix8(sy) + sx;
-
+ // UINT16 *dest = &bitmap.pix16(sy)+ sx;
+ // UINT8 *prio = &screen.priority().pix8(sy) + sx;
+ UINT16* dest = &m_sprite_buffer_bitmap.pix16(sy)+ sx;
for (INT32 x = 0; x < 16; x++, sx++)
{
- if (sx < cliprect.min_x || sy < cliprect.min_y || sx > cliprect.max_x || sy > cliprect.max_y) continue;
+ if (sx < cliprect.min_x || sy < cliprect.min_y || sx > cliprect.max_x || sy > cliprect.max_y) continue;
INT32 pxl;
@@ -634,9 +689,10 @@ inline void megasys1_state::draw_16x16_priority_sprite(screen_device &screen, bi
}
if (pxl != 0x0f) {
- if ((priority & (1 << (prio[x] & 0x1f))) == 0 && prio[x] < 0x80) {
- dest[x] = pxl + color;
- prio[x] |= 0x80;
+ if (!(dest[x] & 0x8000)) {
+ dest[x] = (pxl+color) | (priority << 14);
+
+ dest[x] |= 0x8000;
}
}
}
@@ -648,16 +704,30 @@ void megasys1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
{
int color,code,sx,sy,flipx,flipy,attr,sprite;
+
+
/* objram: 0x100*4 entries spritedata: 0x80 entries */
/* sprite order is from first in Sprite Data RAM (frontmost) to last */
if (m_hardware_type_z == 0) /* standard sprite hardware */
{
+ if (!(m_sprite_flag&0x10))
+ m_sprite_buffer_bitmap.fill(0x7fff, cliprect);
+ else
+ {
+ // P47 sprite trails effect.. not quite right tho
+ // I think the low 4 bits are used to clear specific pens?
+ // when the hardware wants to clear the trails from the screen
+ // it increases the value from 0x00 to 0x0e
+ //printf("m_sprite_flag %02x\n", m_sprite_flag);
+ partial_clear_sprite_bitmap(screen, bitmap, cliprect, m_sprite_flag&0x0f);
+ }
+
INT32 color_mask = (m_sprite_flag & 0x100) ? 0x07 : 0x0f;
- UINT16 *objectram = (UINT16*)m_buffer2_objectram;
- UINT16 *spriteram = (UINT16*)m_buffer2_spriteram16;
+ UINT16 *objectram = (UINT16*)m_buffer2_objectram.get();
+ UINT16 *spriteram = (UINT16*)m_buffer2_spriteram16.get();
for (INT32 offs = (0x800-8)/2; offs >= 0; offs -= 4)
{
@@ -680,7 +750,8 @@ void megasys1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
INT32 flipx = attr & 0x40;
INT32 flipy = attr & 0x80;
- INT32 pri = (attr & 0x08) ? 0x0c : 0x0a;
+ //INT32 pri = (attr & 0x08) ? 0x0c : 0x0a;
+ INT32 pri = (attr & 0x08)>>3;
INT32 mosaic = (attr & 0x0f00)>>8;
INT32 mossol = (attr & 0x1000)>>8;
@@ -1002,7 +1073,7 @@ PALETTE_INIT_MEMBER(megasys1_state,megasys1)
UINT32 megasys1_state::screen_update_megasys1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int i,flag,pri,primask;
+ int i, flag, pri, primask;
int active_layers;
if (m_hardware_type_z)
@@ -1029,13 +1100,13 @@ UINT32 megasys1_state::screen_update_megasys1(screen_device &screen, bitmap_ind1
/* see what layers are really active (layers 4 & f will do no harm) */
for (i = 0;i < 5;i++)
- reallyactive |= 1 << ((pri >> (4*i)) & 0x0f);
+ reallyactive |= 1 << ((pri >> (4 * i)) & 0x0f);
active_layers = m_active_layers & reallyactive;
active_layers |= 1 << ((pri & 0xf0000) >> 16); // bottom layer can't be disabled
}
- machine().tilemap().set_flip_all((m_screen_flag & 1) ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0 );
+ machine().tilemap().set_flip_all((m_screen_flag & 1) ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
for (i = 0;i < 3;i++)
{
@@ -1043,8 +1114,8 @@ UINT32 megasys1_state::screen_update_megasys1(screen_device &screen, bitmap_ind1
{
m_tmap[i]->enable(active_layers & (1 << i));
- m_tmap[i]->set_scrollx(0,m_scrollx[i]);
- m_tmap[i]->set_scrolly(0,m_scrolly[i]);
+ m_tmap[i]->set_scrollx(0, m_scrollx[i]);
+ m_tmap[i]->set_scrolly(0, m_scrolly[i]);
}
}
@@ -1060,38 +1131,45 @@ UINT32 megasys1_state::screen_update_megasys1(screen_device &screen, bitmap_ind1
switch (layer)
{
- case 0:
- case 1:
- case 2:
- if ( (m_tmap[layer]) && (active_layers & (1 << layer) ) )
- {
- m_tmap[layer]->draw(screen, bitmap, cliprect, flag,primask);
- flag = 0;
- }
- break;
- case 3:
- case 4:
- if (flag != 0)
- {
- flag = 0;
- bitmap.fill(0, cliprect);
- }
+ case 0:
+ case 1:
+ case 2:
+ if ((m_tmap[layer]) && (active_layers & (1 << layer)))
+ {
+ m_tmap[layer]->draw(screen, bitmap, cliprect, flag, primask);
+ flag = 0;
+ }
+ break;
+ case 3:
+ case 4:
+ if (flag != 0)
+ {
+ flag = 0;
+ bitmap.fill(0, cliprect);
+ }
- if (m_sprite_flag & 0x100) /* sprites are split */
- {
- /* following tilemaps will obscure this sprites layer */
- primask |= 1 << (layer-3);
- }
- else
- /* following tilemaps will obscure all sprites */
- if (layer == 3) primask |= 3;
+ if (m_sprite_flag & 0x100) /* sprites are split */
+ {
+ /* following tilemaps will obscure this sprites layer */
+ primask |= 1 << (layer - 3);
+ }
+ else
+ /* following tilemaps will obscure all sprites */
+ if (layer == 3) primask |= 3;
- break;
+ break;
}
}
if (active_layers & 0x08)
- draw_sprites(screen,bitmap,cliprect);
+ {
+ draw_sprites(screen, bitmap, cliprect);
+
+ if (m_hardware_type_z == 0)
+ mix_sprite_bitmap(screen, bitmap, cliprect);
+
+ }
+
return 0;
}
@@ -1102,11 +1180,11 @@ void megasys1_state::screen_eof_megasys1(screen_device &screen, bool state)
{
/* Sprite are TWO frames ahead, like NMK16 HW. */
//m_objectram
- memcpy(m_buffer2_objectram,m_buffer_objectram, 0x2000);
- memcpy(m_buffer_objectram, m_objectram, 0x2000);
+ memcpy(m_buffer2_objectram.get(),m_buffer_objectram.get(), 0x2000);
+ memcpy(m_buffer_objectram.get(), m_objectram, 0x2000);
//spriteram16
- memcpy(m_buffer2_spriteram16, m_buffer_spriteram16, 0x2000);
- memcpy(m_buffer_spriteram16, m_spriteram, 0x2000);
+ memcpy(m_buffer2_spriteram16.get(), m_buffer_spriteram16.get(), 0x2000);
+ memcpy(m_buffer_spriteram16.get(), m_spriteram, 0x2000);
}
}
diff --git a/src/mame/video/megazone.cpp b/src/mame/video/megazone.cpp
index 8eb713a6fe5..69e8b84f303 100644
--- a/src/mame/video/megazone.cpp
+++ b/src/mame/video/megazone.cpp
@@ -103,7 +103,7 @@ WRITE8_MEMBER(megazone_state::megazone_flipscreen_w)
void megazone_state::video_start()
{
- m_tmpbitmap = auto_bitmap_ind16_alloc(machine(), 256, 256);
+ m_tmpbitmap = std::make_unique<bitmap_ind16>(256, 256);
save_item(NAME(*m_tmpbitmap));
}
diff --git a/src/mame/video/metlclsh.cpp b/src/mame/video/metlclsh.cpp
index d7fe6f10427..2b4cd3adeb1 100644
--- a/src/mame/video/metlclsh.cpp
+++ b/src/mame/video/metlclsh.cpp
@@ -34,7 +34,7 @@ WRITE8_MEMBER(metlclsh_state::metlclsh_rambank_w)
else
{
m_write_mask = 1 << (data >> 1);
- membank("bank1")->set_base(m_otherram);
+ membank("bank1")->set_base(m_otherram.get());
}
}
@@ -133,7 +133,7 @@ WRITE8_MEMBER(metlclsh_state::metlclsh_fgram_w)
void metlclsh_state::video_start()
{
- m_otherram = auto_alloc_array(machine(), UINT8, 0x800); // banked ram
+ m_otherram = std::make_unique<UINT8[]>(0x800); // banked ram
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(metlclsh_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(metlclsh_state::metlclsh_bgtilemap_scan),this), 16, 16, 32, 16);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(metlclsh_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
@@ -141,7 +141,7 @@ void metlclsh_state::video_start()
m_bg_tilemap->set_transparent_pen(0);
m_fg_tilemap->set_transparent_pen(0);
- save_pointer(NAME(m_otherram), 0x800);
+ save_pointer(NAME(m_otherram.get()), 0x800);
}
diff --git a/src/mame/video/metro.cpp b/src/mame/video/metro.cpp
index 12127cce1a3..004452cefe5 100644
--- a/src/mame/video/metro.cpp
+++ b/src/mame/video/metro.cpp
@@ -258,7 +258,7 @@ void metro_state::expand_gfx1()
UINT8 *base_gfx = memregion("gfx1")->base();
UINT32 length = memregion("gfx1")->bytes() * 2;
- m_expanded_gfx1 = auto_alloc_array(machine(), UINT8, length);
+ m_expanded_gfx1 = std::make_unique<UINT8[]>(length);
for (int i = 0; i < length; i += 2)
{
@@ -401,7 +401,7 @@ VIDEO_START_MEMBER(metro_state,gstrik2)
void metro_state::metro_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- UINT8 *base_gfx4 = m_expanded_gfx1;
+ UINT8 *base_gfx4 = m_expanded_gfx1.get();
UINT8 *base_gfx8 = memregion("gfx1")->base();
UINT32 gfx_size = memregion("gfx1")->bytes();
diff --git a/src/mame/video/micro3d.cpp b/src/mame/video/micro3d.cpp
index e34a29897a7..2c51c32f928 100644
--- a/src/mame/video/micro3d.cpp
+++ b/src/mame/video/micro3d.cpp
@@ -40,9 +40,9 @@ enum
void micro3d_state::video_start()
{
/* Allocate 512x12 x 2 3D frame buffers */
- m_frame_buffers[0] = auto_alloc_array(machine(), UINT16, 1024 * 512);
- m_frame_buffers[1] = auto_alloc_array(machine(), UINT16, 1024 * 512);
- m_tmp_buffer = auto_alloc_array(machine(), UINT16, 1024 * 512);
+ m_frame_buffers[0] = std::make_unique<UINT16[]>(1024 * 512);
+ m_frame_buffers[1] = std::make_unique<UINT16[]>(1024 * 512);
+ m_tmp_buffer = std::make_unique<UINT16[]>(1024 * 512);
}
@@ -73,7 +73,7 @@ TMS340X0_SCANLINE_IND16_CB_MEMBER(micro3d_state::scanline_update)
UINT16 *frame_src;
scanline = MAX((scanline - params->veblnk), 0);
- frame_src = m_frame_buffers[m_display_buffer] + (scanline << 10);
+ frame_src = m_frame_buffers[m_display_buffer].get() + (scanline << 10);
/* TODO: XFER3DK - X/Y offsets for 3D */
@@ -672,7 +672,7 @@ WRITE32_MEMBER(micro3d_state::micro3d_fifo_w)
case 0xd8:
{
/* TODO: We shouldn't need this extra buffer - is there some sort of sync missing? */
- memcpy(m_frame_buffers[m_drawing_buffer], m_tmp_buffer, 512*1024*2);
+ memcpy(m_frame_buffers[m_drawing_buffer].get(), m_tmp_buffer.get(), 512*1024*2);
m_drawing_buffer ^= 1;
m_vgb->set_input_line(0, ASSERT_LINE);
break;
diff --git a/src/mame/video/microtan.cpp b/src/mame/video/microtan.cpp
index b6973e40fac..5bf71726278 100644
--- a/src/mame/video/microtan.cpp
+++ b/src/mame/video/microtan.cpp
@@ -45,8 +45,8 @@ void microtan_state::video_start()
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(microtan_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS,
8, 16, 32, 16);
- m_chunky_buffer = auto_alloc_array(machine(), UINT8, 0x200);
- memset(m_chunky_buffer, 0, 0x200);
+ m_chunky_buffer = std::make_unique<UINT8[]>(0x200);
+ memset(m_chunky_buffer.get(), 0, 0x200);
m_chunky_graphics = 0;
}
diff --git a/src/mame/video/midtunit.cpp b/src/mame/video/midtunit.cpp
index 4b091991125..e4c48c8c1b2 100644
--- a/src/mame/video/midtunit.cpp
+++ b/src/mame/video/midtunit.cpp
@@ -48,7 +48,7 @@ static UINT16 midtunit_control;
/* videoram-related variables */
static UINT32 gfxbank_offset[2];
-static UINT16 * local_videoram;
+static std::unique_ptr<UINT16[]> local_videoram;
static UINT8 videobank_select;
/* DMA-related variables */
@@ -91,7 +91,7 @@ static struct
VIDEO_START_MEMBER(midtunit_state,midtunit)
{
/* allocate memory */
- local_videoram = auto_alloc_array(machine(), UINT16, 0x100000/2);
+ local_videoram = std::make_unique<UINT16[]>(0x100000/2);
/* reset all the globals */
gfxbank_offset[0] = 0x000000;
@@ -104,7 +104,7 @@ VIDEO_START_MEMBER(midtunit_state,midtunit)
/* register for state saving */
save_item(NAME(midtunit_control));
save_item(NAME(gfxbank_offset));
- save_pointer(NAME(local_videoram), 0x100000/sizeof(local_videoram[0]));
+ save_pointer(NAME(local_videoram.get()), 0x100000/sizeof(local_videoram[0]));
save_item(NAME(videobank_select));
save_item(NAME(dma_register));
}
diff --git a/src/mame/video/midvunit.cpp b/src/mame/video/midvunit.cpp
index 489ae0d52ae..fdba2b581d1 100644
--- a/src/mame/video/midvunit.cpp
+++ b/src/mame/video/midvunit.cpp
@@ -70,7 +70,7 @@ void midvunit_state::video_start()
{
m_scanline_timer = timer_alloc(TIMER_SCANLINE);
- m_poly = auto_alloc(machine(), midvunit_renderer(*this));
+ m_poly = std::make_unique<midvunit_renderer>(*this);
save_item(NAME(m_video_regs));
save_item(NAME(m_dma_data));
diff --git a/src/mame/video/midyunit.cpp b/src/mame/video/midyunit.cpp
index eab824b3418..38c40b88ebf 100644
--- a/src/mame/video/midyunit.cpp
+++ b/src/mame/video/midyunit.cpp
@@ -42,11 +42,11 @@ enum
VIDEO_START_MEMBER(midyunit_state,common)
{
/* allocate memory */
- m_cmos_ram = auto_alloc_array(machine(), UINT16, (0x2000 * 4)/2);
- m_local_videoram = auto_alloc_array_clear(machine(), UINT16, 0x80000/2);
- m_pen_map = auto_alloc_array(machine(), pen_t, 65536);
+ m_cmos_ram = std::make_unique<UINT16[]>((0x2000 * 4)/2);
+ m_local_videoram = make_unique_clear<UINT16[]>(0x80000/2);
+ m_pen_map = std::make_unique<pen_t[]>(65536);
- machine().device<nvram_device>("nvram")->set_base(m_cmos_ram, 0x2000 * 4);
+ machine().device<nvram_device>("nvram")->set_base(m_cmos_ram.get(), 0x2000 * 4);
/* reset all the globals */
m_cmos_page = 0;
@@ -59,8 +59,8 @@ VIDEO_START_MEMBER(midyunit_state,common)
/* register for state saving */
save_item(NAME(m_autoerase_enable));
- save_pointer(NAME(m_local_videoram), 0x80000/2);
- save_pointer(NAME(m_cmos_ram), (0x2000 * 4)/2);
+ save_pointer(NAME(m_local_videoram.get()), 0x80000/2);
+ save_pointer(NAME(m_cmos_ram.get()), (0x2000 * 4)/2);
save_item(NAME(m_videobank_select));
save_item(NAME(m_dma_register));
}
diff --git a/src/mame/video/mitchell.cpp b/src/mame/video/mitchell.cpp
index 0498f1bda1f..c2f049c7a62 100644
--- a/src/mame/video/mitchell.cpp
+++ b/src/mame/video/mitchell.cpp
@@ -145,7 +145,7 @@ logerror("PC %04x: pang_gfxctrl_w %02x\n",space.device().safe_pc(),data);
/* bit 0 is unknown (used, maybe back color enable?) */
/* bit 1 is coin counter */
- coin_counter_w(space.machine(), 0, data & 2);
+ space.machine().bookkeeping().coin_counter_w(0, data & 2);
/* bit 2 is flip screen */
if (m_flipscreen != (data & 0x04))
@@ -183,7 +183,7 @@ logerror("PC %04x: pang_gfxctrl_w %02x\n",space.device().safe_pc(),data);
/* bit 0 is unknown (used, maybe back color enable?) */
/* bit 1 is coin counter */
- coin_counter_w(machine(), 0, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 2);
/* bit 2 is flip screen */
if (m_flipscreen != (data & 0x04))
@@ -217,7 +217,7 @@ logerror("PC %04x: pang_gfxctrl_w %02x\n",space.device().safe_pc(),data);
/* bit 0 is unknown (used, maybe back color enable?) */
/* bit 1 is coin counter */
- coin_counter_w(machine(), 0, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 2);
/* bit 2 is flip screen */
if (m_flipscreen != (data & 0x04))
diff --git a/src/mame/video/mjkjidai.cpp b/src/mame/video/mjkjidai.cpp
index 995da96bf1a..eda3d248e74 100644
--- a/src/mame/video/mjkjidai.cpp
+++ b/src/mame/video/mjkjidai.cpp
@@ -59,7 +59,7 @@ WRITE8_MEMBER(mjkjidai_state::mjkjidai_ctrl_w)
m_display_enable = data & 0x04;
/* bit 5 = coin counter */
- coin_counter_w(machine(), 0,data & 0x20);
+ machine().bookkeeping().coin_counter_w(0,data & 0x20);
/* bits 6-7 select ROM bank */
membank("bank1")->set_entry(data >> 6);
diff --git a/src/mame/video/model1.cpp b/src/mame/video/model1.cpp
index 65d0b2846cc..f8f7244cf30 100644
--- a/src/mame/video/model1.cpp
+++ b/src/mame/video/model1.cpp
@@ -742,7 +742,7 @@ void model1_state::push_object(UINT32 tex_adr, UINT32 poly_adr, UINT32 size)
float *poly_data;
if(poly_adr & 0x800000)
- poly_data=(float *) m_poly_ram;
+ poly_data=(float *) m_poly_ram.get();
else
poly_data=(float *) m_poly_rom;
@@ -1442,11 +1442,11 @@ void model1_state::tgp_scan()
VIDEO_START_MEMBER(model1_state,model1)
{
- m_view = auto_alloc_clear(machine(), struct view);
+ m_view = auto_alloc_clear(machine(), <struct view>());
m_poly_rom = (UINT32 *)memregion("user1")->base();
- m_poly_ram = auto_alloc_array_clear(machine(), UINT32, 0x400000);
- m_tgp_ram = auto_alloc_array_clear(machine(), UINT16, 0x100000-0x40000);
+ m_poly_ram = make_unique_clear<UINT32[]>(0x400000);
+ m_tgp_ram = make_unique_clear<UINT16[]>(0x100000-0x40000);
m_pointdb = auto_alloc_array_clear(machine(), struct m1_point, 1000000*2);
m_quaddb = auto_alloc_array_clear(machine(), struct quad_m1, 1000000);
m_quadind = auto_alloc_array_clear(machine(), struct quad_m1 *, 1000000);
@@ -1455,8 +1455,8 @@ VIDEO_START_MEMBER(model1_state,model1)
m_quadpt = m_quaddb;
m_listctl[0] = m_listctl[1] = 0;
- save_pointer(NAME(m_tgp_ram), 0x100000-0x40000);
- save_pointer(NAME(m_poly_ram), 0x40000);
+ save_pointer(NAME(m_tgp_ram.get()), 0x100000-0x40000);
+ save_pointer(NAME(m_poly_ram.get()), 0x40000);
save_item(NAME(m_listctl));
}
diff --git a/src/mame/video/model2.cpp b/src/mame/video/model2.cpp
index 8915d2ee5c1..5e4e70e5bc7 100644
--- a/src/mame/video/model2.cpp
+++ b/src/mame/video/model2.cpp
@@ -279,7 +279,7 @@ static void model2_3d_init( running_machine &machine, UINT16 *texture_rom )
{
model2_state *state = machine.driver_data<model2_state>();
- state->m_raster = auto_alloc_clear( machine, raster_state );
+ state->m_raster = auto_alloc_clear( machine, <raster_state>() );
state->m_raster->texture_rom = texture_rom;
}
@@ -1197,7 +1197,7 @@ struct geo_state
static void geo_init( running_machine &machine, UINT32 *polygon_rom )
{
model2_state *state = machine.driver_data<model2_state>();
- state->m_geo = auto_alloc_clear(machine, geo_state);
+ state->m_geo = auto_alloc_clear(machine, <geo_state>());
state->m_geo->state = state;
state->m_geo->raster = state->m_raster;
@@ -2601,7 +2601,7 @@ VIDEO_START_MEMBER(model2_state,model2)
geo_init( machine(), (UINT32*)memregion("user2")->base() );
/* init various video-related pointers */
- m_palram = auto_alloc_array_clear(machine(), UINT16, 0x2000);
+ m_palram = make_unique_clear<UINT16[]>(0x2000);
}
UINT32 model2_state::screen_update_model2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/model3.cpp b/src/mame/video/model3.cpp
index 9e1e60be5d8..e8af9da7c44 100644
--- a/src/mame/video/model3.cpp
+++ b/src/mame/video/model3.cpp
@@ -43,8 +43,8 @@ public:
model3_renderer(model3_state &state, int width, int height)
: poly_manager<float, model3_polydata, 6, 50000>(state.machine())
{
- m_fb = auto_bitmap_rgb32_alloc(state.machine(), width, height);
- m_zb = auto_bitmap_ind32_alloc(state.machine(), width, height);
+ m_fb = std::make_unique<bitmap_rgb32>(width, height);
+ m_zb = std::make_unique<bitmap_ind32>(width, height);
}
void draw(bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -62,8 +62,8 @@ public:
void wait_for_polys();
private:
- bitmap_rgb32 *m_fb;
- bitmap_ind32 *m_zb;
+ std::unique_ptr<bitmap_rgb32> m_fb;
+ std::unique_ptr<bitmap_ind32> m_zb;
};
@@ -179,21 +179,21 @@ void model3_state::video_start()
machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(model3_state::model3_exit), this));
- m_m3_char_ram = auto_alloc_array_clear(machine(), UINT64, 0x100000/8);
- m_m3_tile_ram = auto_alloc_array_clear(machine(), UINT64, 0x8000/8);
+ m_m3_char_ram = make_unique_clear<UINT64[]>(0x100000/8);
+ m_m3_tile_ram = make_unique_clear<UINT64[]>(0x8000/8);
- m_texture_fifo = auto_alloc_array_clear(machine(), UINT32, 0x100000/4);
+ m_texture_fifo = make_unique_clear<UINT32[]>(0x100000/4);
/* 2x 4MB texture sheets */
- m_texture_ram[0] = auto_alloc_array(machine(), UINT16, 0x400000/2);
- m_texture_ram[1] = auto_alloc_array(machine(), UINT16, 0x400000/2);
+ m_texture_ram[0] = std::make_unique<UINT16[]>(0x400000/2);
+ m_texture_ram[1] = std::make_unique<UINT16[]>(0x400000/2);
/* 1MB Display List RAM */
- m_display_list_ram = auto_alloc_array_clear(machine(), UINT32, 0x100000/4);
+ m_display_list_ram = make_unique_clear<UINT32[]>(0x100000/4);
/* 4MB for nodes (< Step 2.0 have only 2MB) */
- m_culling_ram = auto_alloc_array_clear(machine(), UINT32, 0x400000/4);
+ m_culling_ram = make_unique_clear<UINT32[]>(0x400000/4);
/* 4MB Polygon RAM */
- m_polygon_ram = auto_alloc_array_clear(machine(), UINT32, 0x400000/4);
+ m_polygon_ram = make_unique_clear<UINT32[]>(0x400000/4);
m_vid_reg0 = 0;
@@ -207,10 +207,10 @@ void model3_state::video_start()
m_layer8[3] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer3_8bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
// 4-bit tiles
- m_gfxdecode->set_gfx(0, global_alloc(gfx_element(m_palette, char4_layout, (UINT8*)m_m3_char_ram, 0, m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, char4_layout, (UINT8*)m_m3_char_ram.get(), 0, m_palette->entries() / 16, 0));
// 8-bit tiles
- m_gfxdecode->set_gfx(1, global_alloc(gfx_element(m_palette, char8_layout, (UINT8*)m_m3_char_ram, 0, m_palette->entries() / 256, 0)));
+ m_gfxdecode->set_gfx(1, std::make_unique<gfx_element>(m_palette, char8_layout, (UINT8*)m_m3_char_ram.get(), 0, m_palette->entries() / 256, 0));
init_matrix_stack();
}
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/munchmo.cpp b/src/mame/video/munchmo.cpp
index 86febc95642..c95dc5a232b 100644
--- a/src/mame/video/munchmo.cpp
+++ b/src/mame/video/munchmo.cpp
@@ -45,7 +45,7 @@ WRITE8_MEMBER(munchmo_state::mnchmobl_flipscreen_w)
void munchmo_state::video_start()
{
- m_tmpbitmap = auto_bitmap_ind16_alloc(machine(), 512, 512);
+ m_tmpbitmap = std::make_unique<bitmap_ind16>(512, 512);
}
void munchmo_state::draw_status( bitmap_ind16 &bitmap, const rectangle &cliprect )
diff --git a/src/mame/video/mystston.cpp b/src/mame/video/mystston.cpp
index 8a72fc1f416..57b6d1e069b 100644
--- a/src/mame/video/mystston.cpp
+++ b/src/mame/video/mystston.cpp
@@ -133,8 +133,8 @@ WRITE8_MEMBER(mystston_state::mystston_video_control_w)
/* D3 - unused */
/* D4-D5 - coin counters in flipped order */
- coin_counter_w(machine(), 0, data & 0x20);
- coin_counter_w(machine(), 1, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x20);
+ machine().bookkeeping().coin_counter_w(1, data & 0x10);
/* D6 - unused */
/* D7 - screen flip */
diff --git a/src/mame/video/mystwarr.cpp b/src/mame/video/mystwarr.cpp
index fee3daa0801..537cd1e8157 100644
--- a/src/mame/video/mystwarr.cpp
+++ b/src/mame/video/mystwarr.cpp
@@ -19,12 +19,12 @@ void mystwarr_state::decode_tiles()
UINT8 *s = memregion("gfx1")->base();
int len = memregion("gfx1")->bytes();
UINT8 *pFinish = s+len-3;
- UINT8 *d, *decoded;
+ UINT8 *d;
int gfxnum = m_k056832->get_gfx_num();
- decoded = auto_alloc_array(machine(), UINT8, len);
- d = decoded;
+ m_decoded = std::make_unique<UINT8[]>(len);
+ d = m_decoded.get();
// now convert the data into a drawable format so we can decode it
while (s < pFinish)
@@ -52,7 +52,7 @@ void mystwarr_state::decode_tiles()
d += 5;
}
- m_gfxdecode->gfx(gfxnum)->set_source(decoded);
+ m_gfxdecode->gfx(gfxnum)->set_source(m_decoded.get());
}
diff --git a/src/mame/video/n64.cpp b/src/mame/video/n64.cpp
index bba19f6aa56..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();
@@ -101,7 +101,7 @@ void n64_state::video_start()
m_rdp->m_tex_pipe.set_machine(machine());
- m_rdp->m_aux_buf = auto_alloc_array_clear(machine(), UINT8, EXTENT_AUX_COUNT);
+ m_rdp->m_aux_buf = make_unique_clear<UINT8[]>(EXTENT_AUX_COUNT);
if (LOG_RDP_EXECUTION)
{
@@ -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)];
}
}
@@ -2106,11 +2106,11 @@ void n64_rdp::draw_triangle(bool shade, bool texture, bool zbuffer, bool rect)
if(new_object)
{
object = &object_data_alloc();
- memcpy(object->m_tmem, m_tmem, 0x1000);
+ memcpy(object->m_tmem, m_tmem.get(), 0x1000);
new_object = false;
}
- spans[spanidx].userdata = (void*)((UINT8*)m_aux_buf + m_aux_buf_ptr);
+ spans[spanidx].userdata = (void*)((UINT8*)m_aux_buf.get() + m_aux_buf_ptr);
valid = true;
m_aux_buf_ptr += sizeof(rdp_span_aux);
@@ -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;
@@ -3806,8 +3812,6 @@ void n64_rdp::span_draw_2cycle(INT32 scanline, const extent_t &extent, const rdp
INT32 sb = b.w >> 14;
INT32 sa = a.w >> 14;
INT32 sz = (z.w >> 10) & 0x3fffff;
- color_t c1;
- color_t c2;
const bool valid_x = (flip) ? (x >= xend_scissored) : (x <= xend_scissored);
diff --git a/src/mame/video/n64.h b/src/mame/video/n64.h
index 8f9bb174633..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,14 +133,14 @@ 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; }
void init_internal_state()
{
- m_tmem = auto_alloc_array(machine(), UINT8, 0x1000);
- memset(m_tmem, 0, 0x1000);
+ m_tmem = std::make_unique<UINT8[]>(0x1000);
+ memset(m_tmem.get(), 0, 0x1000);
UINT8* normpoint = machine().root_device().memregion("normpoint")->base();
UINT8* normslope = machine().root_device().memregion("normslope")->base();
@@ -192,8 +192,8 @@ public:
void set_mul_input_alpha(color_t** input, INT32 code, rdp_span_aux* userdata);
// Texture memory
- UINT8* get_tmem8() { return m_tmem; }
- UINT16* get_tmem16() { return (UINT16*)m_tmem; }
+ UINT8* get_tmem8() { return m_tmem.get(); }
+ UINT16* get_tmem16() { return (UINT16*)m_tmem.get(); }
// YUV Factors
void set_yuv_factors(color_t k023, color_t k1, color_t k4, color_t k5) { m_k023 = k023; m_k1 = k1; m_k4 = k4; m_k5 = k5; }
@@ -307,7 +307,7 @@ public:
void draw_triangle(bool shade, bool texture, bool zbuffer, bool rect);
- void* m_aux_buf;
+ std::unique_ptr<UINT8[]> m_aux_buf;
UINT32 m_aux_buf_ptr;
UINT32 m_aux_buf_index;
@@ -327,13 +327,12 @@ private:
void precalc_cvmask_derivatives(void);
void z_build_com_table(void);
- void video_update16(n64_periphs* n64, bitmap_rgb32 &bitmap);
- void video_update32(n64_periphs* n64, bitmap_rgb32 &bitmap);
-
typedef void (n64_rdp::*compute_cvg_t) (extent_t* spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base);
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;
@@ -356,7 +355,7 @@ private:
UINT32 m_current;
UINT32 m_status;
- UINT8* m_tmem;
+ std::unique_ptr<UINT8[]> m_tmem;
// YUV factors
color_t m_k023;
diff --git a/src/mame/video/namcos21.cpp b/src/mame/video/namcos21.cpp
index 2baae7d69c3..0c91a8b0fe7 100644
--- a/src/mame/video/namcos21.cpp
+++ b/src/mame/video/namcos21.cpp
@@ -36,7 +36,7 @@ WRITE16_MEMBER(namcos21_state::winrun_gpu_register_w)
WRITE16_MEMBER(namcos21_state::winrun_gpu_videoram_w)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
int color = data>>8;
int mask = data&0xff;
int i;
@@ -51,17 +51,17 @@ WRITE16_MEMBER(namcos21_state::winrun_gpu_videoram_w)
READ16_MEMBER(namcos21_state::winrun_gpu_videoram_r)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
return videoram[offset]<<8;
}
void namcos21_state::allocate_poly_framebuffer()
{
- m_mpPolyFrameBufferZ = auto_alloc_array(machine(), UINT16, FRAMEBUFFER_SIZE_IN_BYTES/2 );
- m_mpPolyFrameBufferPens = auto_alloc_array(machine(), UINT16, FRAMEBUFFER_SIZE_IN_BYTES/2 );
+ m_mpPolyFrameBufferZ = std::make_unique<UINT16[]>(FRAMEBUFFER_SIZE_IN_BYTES/2 );
+ m_mpPolyFrameBufferPens = std::make_unique<UINT16[]>(FRAMEBUFFER_SIZE_IN_BYTES/2 );
- m_mpPolyFrameBufferZ2 = auto_alloc_array(machine(), UINT16, FRAMEBUFFER_SIZE_IN_BYTES/2 );
- m_mpPolyFrameBufferPens2 = auto_alloc_array(machine(), UINT16, FRAMEBUFFER_SIZE_IN_BYTES/2 );
+ m_mpPolyFrameBufferZ2 = std::make_unique<UINT16[]>(FRAMEBUFFER_SIZE_IN_BYTES/2 );
+ m_mpPolyFrameBufferPens2 = std::make_unique<UINT16[]>(FRAMEBUFFER_SIZE_IN_BYTES/2 );
clear_poly_framebuffer();
clear_poly_framebuffer();
@@ -69,16 +69,10 @@ void namcos21_state::allocate_poly_framebuffer()
void namcos21_state::clear_poly_framebuffer()
{
- UINT16 *temp2;
-
/* swap work and visible framebuffers */
- temp2 = m_mpPolyFrameBufferZ;
- m_mpPolyFrameBufferZ = m_mpPolyFrameBufferZ2;
- m_mpPolyFrameBufferZ2 = temp2;
+ m_mpPolyFrameBufferZ.swap(m_mpPolyFrameBufferZ2);
- temp2 = m_mpPolyFrameBufferPens;
- m_mpPolyFrameBufferPens = m_mpPolyFrameBufferPens2;
- m_mpPolyFrameBufferPens2 = temp2;
+ m_mpPolyFrameBufferPens.swap(m_mpPolyFrameBufferPens2);
/* wipe work zbuffer */
for( int i = 0; i < NAMCOS21_POLY_FRAME_WIDTH*NAMCOS21_POLY_FRAME_HEIGHT; i++ )
@@ -94,8 +88,8 @@ void namcos21_state::copy_visible_poly_framebuffer(bitmap_ind16 &bitmap, const r
for( sy=clip.min_y; sy<=clip.max_y; sy++ )
{
UINT16 *dest = &bitmap.pix16(sy);
- const UINT16 *pPen = m_mpPolyFrameBufferPens2+NAMCOS21_POLY_FRAME_WIDTH*sy;
- const UINT16 *pZ = m_mpPolyFrameBufferZ2+NAMCOS21_POLY_FRAME_WIDTH*sy;
+ const UINT16 *pPen = m_mpPolyFrameBufferPens2.get()+NAMCOS21_POLY_FRAME_WIDTH*sy;
+ const UINT16 *pZ = m_mpPolyFrameBufferZ2.get()+NAMCOS21_POLY_FRAME_WIDTH*sy;
int sx;
for( sx=clip.min_x; sx<=clip.max_x; sx++ )
{
@@ -113,7 +107,7 @@ VIDEO_START_MEMBER(namcos21_state,namcos21)
{
if( m_gametype == NAMCOS21_WINRUN91 )
{
- m_videoram = auto_alloc_array(machine(), UINT8, 0x80000);
+ m_videoram = std::make_unique<UINT8[]>(0x80000);
}
allocate_poly_framebuffer();
c355_obj_init(
@@ -143,7 +137,7 @@ VIDEO_START_MEMBER(namcos21_state,namcos21)
UINT32 namcos21_state::screen_update_namcos21(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
int pivot = 3;
int pri;
bitmap.fill(0xff, cliprect );
@@ -217,8 +211,8 @@ void namcos21_state::renderscanline_flat(const edge *e1, const edge *e2, int sy,
}
{
- UINT16 *pDest = m_mpPolyFrameBufferPens + sy*NAMCOS21_POLY_FRAME_WIDTH;
- UINT16 *pZBuf = m_mpPolyFrameBufferZ + sy*NAMCOS21_POLY_FRAME_WIDTH;
+ UINT16 *pDest = m_mpPolyFrameBufferPens.get() + sy*NAMCOS21_POLY_FRAME_WIDTH;
+ UINT16 *pZBuf = m_mpPolyFrameBufferZ.get() + sy*NAMCOS21_POLY_FRAME_WIDTH;
int x0 = (int)e1->x;
int x1 = (int)e2->x;
int w = x1-x0;
diff --git a/src/mame/video/namcos22.cpp b/src/mame/video/namcos22.cpp
index aa59865c2aa..317b78cc12a 100644
--- a/src/mame/video/namcos22.cpp
+++ b/src/mame/video/namcos22.cpp
@@ -93,9 +93,9 @@ void namcos22_renderer::renderscanline_uvi_full(INT32 scanline, const extent_t &
UINT32 *dest = &extra.destbase->pix32(scanline);
UINT8 *primap = &extra.primap->pix8(scanline);
UINT16 *ttmap = m_state.m_texture_tilemap;
- UINT8 *ttattr = m_state.m_texture_tileattr;
+ UINT8 *ttattr = m_state.m_texture_tileattr.get();
UINT8 *ttdata = m_state.m_texture_tiledata;
- UINT8 *tt_ayx_to_pixel = m_state.m_texture_ayx_to_pixel;
+ UINT8 *tt_ayx_to_pixel = m_state.m_texture_ayx_to_pixel.get();
if (extra.cmode & 4)
{
@@ -459,7 +459,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
{
extra.zfog_enabled = 1;
extra.cz_sdelta = delta;
- extra.czram = m_state.m_recalc_czram[cztype];
+ extra.czram = m_state.m_recalc_czram[cztype].get();
}
}
}
@@ -2361,23 +2361,23 @@ UINT32 namcos22_state::screen_update_namcos22(screen_device &screen, bitmap_rgb3
void namcos22_state::init_tables()
{
- m_dirtypal = auto_alloc_array(machine(), UINT8, 0x8000/4);
- memset(m_dirtypal, 1, 0x8000/4);
+ m_dirtypal = std::make_unique<UINT8[]>(0x8000/4);
+ memset(m_dirtypal.get(), 1, 0x8000/4);
memset(m_paletteram, 0, 0x8000);
memset(m_polygonram, 0xcc, m_polygonram.bytes());
// init spotram (super22 only)
if (m_is_ss22)
- m_spotram = auto_alloc_array_clear(machine(), UINT16, SPOTRAM_SIZE);
+ m_spotram = make_unique_clear<UINT16[]>(SPOTRAM_SIZE);
// init czram tables (super22 only)
if (m_is_ss22)
{
for (int table = 0; table < 4; table++)
{
- m_banked_czram[table] = auto_alloc_array_clear(machine(), UINT16, 0x100);
- m_recalc_czram[table] = auto_alloc_array_clear(machine(), UINT8, 0x2000);
+ m_banked_czram[table] = make_unique_clear<UINT16[]>(0x100);
+ m_recalc_czram[table] = make_unique_clear<UINT8[]>(0x2000);
m_cz_was_written[table] = 1;
}
}
@@ -2393,7 +2393,7 @@ void namcos22_state::init_tables()
m_pointrom[i] = signed24(pointrom_high[i] << 16 | pointrom_mid[i] << 8 | pointrom_low[i]);
}
- m_pointram = auto_alloc_array_clear(machine(), UINT32, 0x20000);
+ m_pointram = make_unique_clear<UINT32[]>(0x20000);
// force all texture tiles to be decoded now
for (int i = 0; i < m_gfxdecode->gfx(1)->elements(); i++)
@@ -2401,11 +2401,11 @@ void namcos22_state::init_tables()
m_texture_tilemap = (UINT16 *)memregion("textilemap")->base();
m_texture_tiledata = (UINT8 *)m_gfxdecode->gfx(1)->get_data(0);
- m_texture_tileattr = auto_alloc_array(machine(), UINT8, 0x080000*2);
+ m_texture_tileattr = std::make_unique<UINT8[]>(0x080000*2);
// unpack textures
UINT8 *packed_tileattr = 0x200000 + (UINT8 *)memregion("textilemap")->base();
- UINT8 *unpacked_tileattr = m_texture_tileattr;
+ UINT8 *unpacked_tileattr = m_texture_tileattr.get();
for (int i = 0; i < 0x80000; i++)
{
*unpacked_tileattr++ = (*packed_tileattr) >> 4;
@@ -2414,7 +2414,7 @@ void namcos22_state::init_tables()
}
// make attr/y/x lookup table
- m_texture_ayx_to_pixel = auto_alloc_array(machine(), UINT8, 16*16*16);
+ m_texture_ayx_to_pixel = std::make_unique<UINT8[]>(16*16*16);
for (int attr = 0; attr < 16; attr++)
{
for (int y = 0; y < 16; y++)
@@ -2473,7 +2473,7 @@ void namcos22_state::video_start()
m_is_ss22 = (m_iomcu == nullptr);
init_tables();
- m_mix_bitmap = auto_bitmap_ind16_alloc(machine(), 640, 480);
+ m_mix_bitmap = std::make_unique<bitmap_ind16>(640, 480);
m_bgtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos22_state::get_text_tile_info), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
m_bgtilemap->set_transparent_pen(0xf);
diff --git a/src/mame/video/nbmj8688.cpp b/src/mame/video/nbmj8688.cpp
index 911315c907a..d418c6d698c 100644
--- a/src/mame/video/nbmj8688.cpp
+++ b/src/mame/video/nbmj8688.cpp
@@ -550,15 +550,15 @@ void nbmj8688_state::common_video_start()
{
m_blitter_timer = timer_alloc(TIMER_BLITTER);
- m_tmpbitmap = auto_bitmap_ind16_alloc(machine(), 512, 256);
- m_videoram = auto_alloc_array_clear(machine(), UINT16, 512 * 256);
- m_clut = auto_alloc_array(machine(), UINT8, 0x20);
+ m_tmpbitmap = std::make_unique<bitmap_ind16>(512, 256);
+ m_videoram = make_unique_clear<UINT16[]>(512 * 256);
+ m_clut = std::make_unique<UINT8[]>(0x20);
m_scrolly = 0; // reset because crystalg/crystal2 don't write to this register
m_screen_refresh = 1;
- save_pointer(NAME(m_videoram), 512 * 256);
- save_pointer(NAME(m_clut), 0x20);
+ save_pointer(NAME(m_videoram.get()), 512 * 256);
+ save_pointer(NAME(m_clut.get()), 0x20);
save_item(NAME(m_scrolly));
save_item(NAME(m_blitter_destx));
save_item(NAME(m_blitter_desty));
diff --git a/src/mame/video/nbmj8891.cpp b/src/mame/video/nbmj8891.cpp
index 56d40311475..875829e5a3b 100644
--- a/src/mame/video/nbmj8891.cpp
+++ b/src/mame/video/nbmj8891.cpp
@@ -275,7 +275,7 @@ void nbmj8891_state::vramflip(int vram)
if (m_flipscreen == m_flipscreen_old) return;
- vidram = vram ? m_videoram1 : m_videoram0;
+ vidram = vram ? m_videoram1.get() : m_videoram0.get();
for (y = 0; y < (height / 2); y++)
{
@@ -480,24 +480,29 @@ 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();
m_blitter_timer = timer_alloc(TIMER_BLITTER);
m_screen->register_screen_bitmap(m_tmpbitmap0);
- m_videoram0 = auto_alloc_array(machine(), UINT8, width * height);
- m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200);
- m_clut = auto_alloc_array(machine(), UINT8, 0x800);
- memset(m_videoram0, 0xff, (width * height * sizeof(char)));
+ m_videoram0 = std::make_unique<UINT8[]>(width * height);
+ m_palette_ptr = std::make_unique<UINT8[]>(0x200);
+ m_clut = std::make_unique<UINT8[]>(0x800);
+ memset(m_videoram0.get(), 0xff, (width * height * sizeof(char)));
m_gfxdraw_mode = 0;
m_screen_refresh = 1;
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));
}
@@ -513,17 +518,17 @@ void nbmj8891_state::video_start()
m_blitter_timer = timer_alloc(TIMER_BLITTER);
m_screen->register_screen_bitmap(m_tmpbitmap0);
m_screen->register_screen_bitmap(m_tmpbitmap1);
- m_videoram0 = auto_alloc_array(machine(), UINT8, width * height);
- m_videoram1 = auto_alloc_array(machine(), UINT8, width * height);
- m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200);
- m_clut = auto_alloc_array(machine(), UINT8, 0x800);
- memset(m_videoram0, 0xff, (width * height * sizeof(UINT8)));
- memset(m_videoram1, 0xff, (width * height * sizeof(UINT8)));
+ m_videoram0 = std::make_unique<UINT8[]>(width * height);
+ m_videoram1 = std::make_unique<UINT8[]>(width * height);
+ m_palette_ptr = std::make_unique<UINT8[]>(0x200);
+ m_clut = std::make_unique<UINT8[]>(0x800);
+ memset(m_videoram0.get(), 0xff, (width * height * sizeof(UINT8)));
+ memset(m_videoram1.get(), 0xff, (width * height * sizeof(UINT8)));
m_gfxdraw_mode = 1;
m_screen_refresh = 1;
common_save_state();
- save_pointer(NAME(m_videoram1), width * height);
+ save_pointer(NAME(m_videoram1.get()), width * height);
}
void nbmj8891_state::common_save_state()
@@ -542,9 +547,9 @@ void nbmj8891_state::common_save_state()
save_item(NAME(m_flipscreen));
save_item(NAME(m_clutsel));
save_item(NAME(m_gfxdraw_mode));
- save_pointer(NAME(m_videoram0), m_screen->width() * m_screen->height());
- save_pointer(NAME(m_palette_ptr), 0x200);
- save_pointer(NAME(m_clut), 0x800);
+ save_pointer(NAME(m_videoram0.get()), m_screen->width() * m_screen->height());
+ save_pointer(NAME(m_palette_ptr.get()), 0x200);
+ save_pointer(NAME(m_clut.get()), 0x800);
save_item(NAME(m_flipscreen_old));
machine().save().register_postload(save_prepost_delegate(FUNC(nbmj8891_state::postload), this));
diff --git a/src/mame/video/nbmj8900.cpp b/src/mame/video/nbmj8900.cpp
index 503b209249c..ad910679752 100644
--- a/src/mame/video/nbmj8900.cpp
+++ b/src/mame/video/nbmj8900.cpp
@@ -167,7 +167,7 @@ void nbmj8900_state::vramflip(int vram)
if (m_flipscreen == m_flipscreen_old) return;
- vidram = vram ? m_videoram1 : m_videoram0;
+ vidram = vram ? m_videoram1.get() : m_videoram0.get();
for (y = 0; y < (height / 2); y++)
{
@@ -373,12 +373,12 @@ void nbmj8900_state::video_start()
m_screen->register_screen_bitmap(m_tmpbitmap0);
m_screen->register_screen_bitmap(m_tmpbitmap1);
- m_videoram0 = auto_alloc_array(machine(), UINT8, m_screen_width * m_screen_height);
- m_videoram1 = auto_alloc_array(machine(), UINT8, m_screen_width * m_screen_height);
- m_palette_ptr = auto_alloc_array(machine(), UINT8, 0x200);
- m_clut = auto_alloc_array(machine(), UINT8, 0x800);
- memset(m_videoram0, 0xff, (m_screen_width * m_screen_height * sizeof(UINT8)));
- memset(m_videoram1, 0xff, (m_screen_width * m_screen_height * sizeof(UINT8)));
+ m_videoram0 = std::make_unique<UINT8[]>(m_screen_width * m_screen_height);
+ m_videoram1 = std::make_unique<UINT8[]>(m_screen_width * m_screen_height);
+ m_palette_ptr = std::make_unique<UINT8[]>(0x200);
+ m_clut = std::make_unique<UINT8[]>(0x800);
+ memset(m_videoram0.get(), 0xff, (m_screen_width * m_screen_height * sizeof(UINT8)));
+ memset(m_videoram1.get(), 0xff, (m_screen_width * m_screen_height * sizeof(UINT8)));
// m_palette->pen(0x07f) = 0xff; /* palette_transparent_pen */
m_gfxdraw_mode = 1;
m_screen_refresh = 1;
@@ -397,10 +397,10 @@ void nbmj8900_state::video_start()
save_item(NAME(m_flipscreen));
save_item(NAME(m_clutsel));
//save_item(NAME(m_gfxdraw_mode)); //always 1?
- save_pointer(NAME(m_videoram0), m_screen_width * m_screen_height);
- save_pointer(NAME(m_videoram1), m_screen_width * m_screen_height);
- save_pointer(NAME(m_palette_ptr), 0x200);
- save_pointer(NAME(m_clut), 0x800);
+ save_pointer(NAME(m_videoram0.get()), m_screen_width * m_screen_height);
+ save_pointer(NAME(m_videoram1.get()), m_screen_width * m_screen_height);
+ save_pointer(NAME(m_palette_ptr.get()), 0x200);
+ save_pointer(NAME(m_clut.get()), 0x800);
save_item(NAME(m_flipscreen_old));
}
diff --git a/src/mame/video/nbmj8991.cpp b/src/mame/video/nbmj8991.cpp
index cc688e9d1ab..95a449e03fa 100644
--- a/src/mame/video/nbmj8991.cpp
+++ b/src/mame/video/nbmj8991.cpp
@@ -294,9 +294,9 @@ void nbmj8991_state::video_start()
int height = m_screen->height();
m_screen->register_screen_bitmap(m_tmpbitmap);
- m_videoram = auto_alloc_array(machine(), UINT8, width * height);
- m_clut = auto_alloc_array(machine(), UINT8, 0x800);
- memset(m_videoram, 0x00, (width * height * sizeof(UINT8)));
+ m_videoram = std::make_unique<UINT8[]>(width * height);
+ m_clut = std::make_unique<UINT8[]>(0x800);
+ memset(m_videoram.get(), 0x00, (width * height * sizeof(UINT8)));
m_screen_refresh = 1;
@@ -313,8 +313,8 @@ void nbmj8991_state::video_start()
save_item(NAME(m_dispflag));
save_item(NAME(m_flipscreen));
save_item(NAME(m_clutsel));
- save_pointer(NAME(m_videoram), width * height);
- save_pointer(NAME(m_clut), 0x800);
+ save_pointer(NAME(m_videoram.get()), width * height);
+ save_pointer(NAME(m_clut.get()), 0x800);
save_item(NAME(m_flipscreen_old));
machine().save().register_postload(save_prepost_delegate(FUNC(nbmj8991_state::postload), this));
diff --git a/src/mame/video/nbmj9195.cpp b/src/mame/video/nbmj9195.cpp
index 0632e64ddd4..fc165da4898 100644
--- a/src/mame/video/nbmj9195.cpp
+++ b/src/mame/video/nbmj9195.cpp
@@ -376,8 +376,8 @@ VIDEO_START_MEMBER(nbmj9195_state,_1layer)
m_blitter_timer = timer_alloc(TIMER_BLITTER);
m_screen->register_screen_bitmap(m_tmpbitmap[0]);
- m_videoram[0] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_clut[0] = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_videoram[0] = make_unique_clear<UINT16[]>(width * height);
+ m_clut[0] = std::make_unique<UINT8[]>(0x1000);
m_scanline[0] = m_scanline[1] = SCANLINE_MIN;
m_nb19010_busyflag = 1;
m_gfxdraw_mode = 0;
@@ -401,8 +401,8 @@ VIDEO_START_MEMBER(nbmj9195_state,_1layer)
save_item(NAME(m_gfxdraw_mode));
save_item(NAME(m_nb19010_busyctr));
save_item(NAME(m_nb19010_busyflag));
- save_pointer(NAME(m_videoram[0]), width * height);
- save_pointer(NAME(m_clut[0]), 0x1000);
+ save_pointer(NAME(m_videoram[0].get()), width * height);
+ save_pointer(NAME(m_clut[0].get()), 0x1000);
save_item(NAME(m_flipscreen_old));
machine().save().register_postload(save_prepost_delegate(FUNC(nbmj9195_state::postload), this));
}
@@ -416,10 +416,10 @@ void nbmj9195_state::video_start()
m_screen->register_screen_bitmap(m_tmpbitmap[0]);
m_screen->register_screen_bitmap(m_tmpbitmap[1]);
- m_videoram[0] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_videoram[1] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_clut[0] = auto_alloc_array(machine(), UINT8, 0x1000);
- m_clut[1] = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_videoram[0] = make_unique_clear<UINT16[]>(width * height);
+ m_videoram[1] = make_unique_clear<UINT16[]>(width * height);
+ m_clut[0] = std::make_unique<UINT8[]>(0x1000);
+ m_clut[1] = std::make_unique<UINT8[]>(0x1000);
m_scanline[0] = m_scanline[1] = SCANLINE_MIN;
m_nb19010_busyflag = 1;
m_gfxdraw_mode = 1;
@@ -444,10 +444,10 @@ void nbmj9195_state::video_start()
save_item(NAME(m_gfxdraw_mode));
save_item(NAME(m_nb19010_busyctr));
save_item(NAME(m_nb19010_busyflag));
- save_pointer(NAME(m_videoram[0]), width * height);
- save_pointer(NAME(m_videoram[1]), width * height);
- save_pointer(NAME(m_clut[0]), 0x1000);
- save_pointer(NAME(m_clut[1]), 0x1000);
+ save_pointer(NAME(m_videoram[0].get()), width * height);
+ save_pointer(NAME(m_videoram[1].get()), width * height);
+ save_pointer(NAME(m_clut[0].get()), 0x1000);
+ save_pointer(NAME(m_clut[1].get()), 0x1000);
save_item(NAME(m_flipscreen_old));
machine().save().register_postload(save_prepost_delegate(FUNC(nbmj9195_state::postload), this));
}
@@ -464,11 +464,11 @@ VIDEO_START_MEMBER(nbmj9195_state,nb22090)
int width = m_screen->width();
int height = m_screen->height();
- m_videoworkram[0] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_videoworkram[1] = auto_alloc_array_clear(machine(), UINT16, width * height);
+ m_videoworkram[0] = make_unique_clear<UINT16[]>(width * height);
+ m_videoworkram[1] = make_unique_clear<UINT16[]>(width * height);
- save_pointer(NAME(m_videoworkram[0]), width * height);
- save_pointer(NAME(m_videoworkram[1]), width * height);
+ save_pointer(NAME(m_videoworkram[0].get()), width * height);
+ save_pointer(NAME(m_videoworkram[1].get()), width * height);
m_gfxdraw_mode = 2;
}
diff --git a/src/mame/video/nemesis.cpp b/src/mame/video/nemesis.cpp
index 191f5e20d59..7e99b6d4407 100644
--- a/src/mame/video/nemesis.cpp
+++ b/src/mame/video/nemesis.cpp
@@ -158,8 +158,8 @@ WRITE16_MEMBER(nemesis_state::salamand_control_port_word_w)
if (ACCESSING_BITS_8_15)
{
- coin_lockout_w(machine(), 0, data & 0x0200);
- coin_lockout_w(machine(), 1, data & 0x0400);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x0200);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x0400);
if (data & 0x0800)
m_audiocpu->set_input_line(0, HOLD_LINE);
diff --git a/src/mame/video/neogeo_spr.cpp b/src/mame/video/neogeo_spr.cpp
index 947090e7de7..7f075b28797 100644
--- a/src/mame/video/neogeo_spr.cpp
+++ b/src/mame/video/neogeo_spr.cpp
@@ -27,11 +27,11 @@ neosprite_base_device::neosprite_base_device(const machine_config &mconfig, cons
void neosprite_base_device::device_start()
{
- m_videoram = auto_alloc_array(machine(), UINT16, 0x8000 + 0x800);
- m_videoram_drawsource = m_videoram;
+ m_videoram = std::make_unique<UINT16[]>(0x8000 + 0x800);
+ m_videoram_drawsource = m_videoram.get();
/* clear allocated memory */
- memset(m_videoram, 0x00, (0x8000 + 0x800) * sizeof(UINT16));
+ memset(m_videoram.get(), 0x00, (0x8000 + 0x800) * sizeof(UINT16));
create_sprite_line_timer();
create_auto_animation_timer();
@@ -48,7 +48,7 @@ void neosprite_base_device::device_start()
m_auto_animation_frame_counter = 0;
/* register for state saving */
- save_pointer(NAME(m_videoram), 0x8000 + 0x800);
+ save_pointer(NAME(m_videoram.get()), 0x8000 + 0x800);
save_item(NAME(m_vram_offset));
save_item(NAME(m_vram_read_buffer));
save_item(NAME(m_vram_modulo));
@@ -772,16 +772,16 @@ void neosprite_midas_device::device_start()
{
neosprite_base_device::device_start();
- m_videoram_buffer = auto_alloc_array(machine(), UINT16, 0x8000 + 0x800);
- m_videoram_drawsource = m_videoram_buffer;
+ m_videoram_buffer = std::make_unique<UINT16[]>(0x8000 + 0x800);
+ m_videoram_drawsource = m_videoram_buffer.get();
- memset(m_videoram_buffer, 0x00, (0x8000 + 0x800) * sizeof(UINT16));
+ memset(m_videoram_buffer.get(), 0x00, (0x8000 + 0x800) * sizeof(UINT16));
}
void neosprite_midas_device::buffer_vram()
{
- memcpy(m_videoram_buffer, m_videoram, (0x8000 + 0x800) * sizeof(UINT16));
+ memcpy(m_videoram_buffer.get(), m_videoram.get(), (0x8000 + 0x800) * sizeof(UINT16));
}
inline void neosprite_midas_device::draw_fixed_layer_2pixels(UINT32*&pixel_addr, int offset, UINT8* gfx_base, const pen_t* char_pens)
diff --git a/src/mame/video/neogeo_spr.h b/src/mame/video/neogeo_spr.h
index b1f08bfd8e4..6c2f525544f 100644
--- a/src/mame/video/neogeo_spr.h
+++ b/src/mame/video/neogeo_spr.h
@@ -51,7 +51,7 @@ public:
void set_screen(screen_device* screen);
void set_pens(const pen_t* pens);
- UINT16 *m_videoram;
+ std::unique_ptr<UINT16[]> m_videoram;
UINT16 *m_videoram_drawsource;
UINT16 m_vram_offset;
@@ -133,7 +133,7 @@ public:
virtual void draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) override;
- UINT16* m_videoram_buffer;
+ std::unique_ptr<UINT16[]> m_videoram_buffer;
void buffer_vram();
virtual void draw_fixed_layer_2pixels(UINT32*&pixel_addr, int offset, UINT8* gfx_base, const pen_t* char_pens) override;
virtual void set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size) override;
diff --git a/src/mame/video/newport.cpp b/src/mame/video/newport.cpp
index 52aff54c3ce..51604b79326 100644
--- a/src/mame/video/newport.cpp
+++ b/src/mame/video/newport.cpp
@@ -105,9 +105,9 @@ void newport_video_device::device_config_complete()
void newport_video_device::device_start()
{
- m_base = auto_alloc_array_clear(machine(), UINT32, (1280+64) * (1024+64));
+ m_base = make_unique_clear<UINT32[]>((1280+64) * (1024+64));
- save_pointer(NAME(m_base), (1280+64) * (1024+64));
+ save_pointer(NAME(m_base.get()), (1280+64) * (1024+64));
save_item(NAME(m_VC2.nRegister));
save_item(NAME(m_VC2.nRAM));
save_item(NAME(m_VC2.nRegIdx));
diff --git a/src/mame/video/newport.h b/src/mame/video/newport.h
index 180aaf70bb6..1764913a85d 100644
--- a/src/mame/video/newport.h
+++ b/src/mame/video/newport.h
@@ -146,7 +146,7 @@ private:
XMAP_t m_XMAP0;
XMAP_t m_XMAP1;
REX3_t m_REX3;
- UINT32 *m_base;
+ std::unique_ptr<UINT32[]> m_base;
UINT8 m_nDrawGreen;
CMAP_t m_CMAP0;
};
diff --git a/src/mame/video/nick.cpp b/src/mame/video/nick.cpp
index 0da67848e5e..68b9011d31c 100644
--- a/src/mame/video/nick.cpp
+++ b/src/mame/video/nick.cpp
@@ -107,7 +107,6 @@ nick_device::nick_device(const machine_config &mconfig, const char *tag, device_
device_video_interface(mconfig, *this),
m_space_config("vram", ENDIANNESS_LITTLE, 8, 16, 0, *ADDRESS_MAP_NAME(nick_map)),
m_write_virq(*this),
- horizontal_clock(0),
m_scanline_count(0),
m_FIXBIAS(0),
m_BORDER(0),
diff --git a/src/mame/video/nick.h b/src/mame/video/nick.h
index dafcde9ccdf..ba701283cd9 100644
--- a/src/mame/video/nick.h
+++ b/src/mame/video/nick.h
@@ -108,7 +108,6 @@ private:
void write_pixel(int ci);
void calc_visible_clocks(int width);
- void init();
void write_border(int clocks);
void do_left_margin();
void do_right_margin();
@@ -130,8 +129,6 @@ private:
void reload_lpt();
void do_line();
- /* horizontal position */
- UINT8 horizontal_clock;
/* current scanline within LPT */
UINT8 m_scanline_count;
diff --git a/src/mame/video/ninjakd2.cpp b/src/mame/video/ninjakd2.cpp
index 9ff710e57e4..9756e956e0f 100644
--- a/src/mame/video/ninjakd2.cpp
+++ b/src/mame/video/ninjakd2.cpp
@@ -87,17 +87,17 @@ void ninjakd2_state::robokid_get_bg_tile_info( tile_data& tileinfo, tilemap_memo
TILE_GET_INFO_MEMBER(ninjakd2_state::robokid_get_bg0_tile_info)
{
- robokid_get_bg_tile_info(tileinfo, tile_index, 2, m_robokid_bg0_videoram);
+ robokid_get_bg_tile_info(tileinfo, tile_index, 2, m_robokid_bg0_videoram.get());
}
TILE_GET_INFO_MEMBER(ninjakd2_state::robokid_get_bg1_tile_info)
{
- robokid_get_bg_tile_info(tileinfo, tile_index, 3, m_robokid_bg1_videoram);
+ robokid_get_bg_tile_info(tileinfo, tile_index, 3, m_robokid_bg1_videoram.get());
}
TILE_GET_INFO_MEMBER(ninjakd2_state::robokid_get_bg2_tile_info)
{
- robokid_get_bg_tile_info(tileinfo, tile_index, 4, m_robokid_bg2_videoram);
+ robokid_get_bg_tile_info(tileinfo, tile_index, 4, m_robokid_bg2_videoram.get());
}
@@ -113,13 +113,13 @@ void ninjakd2_state::video_init_common(UINT32 vram_alloc_size)
// create video ram
if (vram_alloc_size)
{
- m_robokid_bg0_videoram = auto_alloc_array_clear(machine(), UINT8, vram_alloc_size);
- m_robokid_bg1_videoram = auto_alloc_array_clear(machine(), UINT8, vram_alloc_size);
- m_robokid_bg2_videoram = auto_alloc_array_clear(machine(), UINT8, vram_alloc_size);
+ m_robokid_bg0_videoram = make_unique_clear<UINT8[]>(vram_alloc_size);
+ m_robokid_bg1_videoram = make_unique_clear<UINT8[]>(vram_alloc_size);
+ m_robokid_bg2_videoram = make_unique_clear<UINT8[]>(vram_alloc_size);
- save_pointer(NAME(m_robokid_bg0_videoram), vram_alloc_size);
- save_pointer(NAME(m_robokid_bg1_videoram), vram_alloc_size);
- save_pointer(NAME(m_robokid_bg2_videoram), vram_alloc_size);
+ save_pointer(NAME(m_robokid_bg0_videoram.get()), vram_alloc_size);
+ save_pointer(NAME(m_robokid_bg1_videoram.get()), vram_alloc_size);
+ save_pointer(NAME(m_robokid_bg2_videoram.get()), vram_alloc_size);
}
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(ninjakd2_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
diff --git a/src/mame/video/niyanpai.cpp b/src/mame/video/niyanpai.cpp
index a84f1c40f80..132570aa5dc 100644
--- a/src/mame/video/niyanpai.cpp
+++ b/src/mame/video/niyanpai.cpp
@@ -361,16 +361,16 @@ void niyanpai_state::video_start()
m_screen->register_screen_bitmap(m_tmpbitmap[0]);
m_screen->register_screen_bitmap(m_tmpbitmap[1]);
m_screen->register_screen_bitmap(m_tmpbitmap[2]);
- m_videoram[0] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_videoram[1] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_videoram[2] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_videoworkram[0] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_videoworkram[1] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_videoworkram[2] = auto_alloc_array_clear(machine(), UINT16, width * height);
- m_palette_ptr = auto_alloc_array(machine(), UINT16, 0x480);
- m_clut[0] = auto_alloc_array(machine(), UINT8, 0x1000);
- m_clut[1] = auto_alloc_array(machine(), UINT8, 0x1000);
- m_clut[2] = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_videoram[0] = make_unique_clear<UINT16[]>(width * height);
+ m_videoram[1] = make_unique_clear<UINT16[]>(width * height);
+ m_videoram[2] = make_unique_clear<UINT16[]>(width * height);
+ m_videoworkram[0] = make_unique_clear<UINT16[]>(width * height);
+ m_videoworkram[1] = make_unique_clear<UINT16[]>(width * height);
+ m_videoworkram[2] = make_unique_clear<UINT16[]>(width * height);
+ m_palette_ptr = std::make_unique<UINT16[]>(0x480);
+ m_clut[0] = std::make_unique<UINT8[]>(0x1000);
+ m_clut[1] = std::make_unique<UINT8[]>(0x1000);
+ m_clut[2] = std::make_unique<UINT8[]>(0x1000);
m_nb19010_busyflag = 1;
m_blitter_timer = timer_alloc(TIMER_BLITTER);
@@ -392,16 +392,16 @@ void niyanpai_state::video_start()
save_item(NAME(m_nb19010_busyctr));
save_item(NAME(m_nb19010_busyflag));
save_item(NAME(m_flipscreen_old));
- save_pointer(NAME(m_palette_ptr), 0x480);
- save_pointer(NAME(m_videoram[0]), width * height);
- save_pointer(NAME(m_videoram[1]), width * height);
- save_pointer(NAME(m_videoram[2]), width * height);
- save_pointer(NAME(m_videoworkram[0]), width * height);
- save_pointer(NAME(m_videoworkram[1]), width * height);
- save_pointer(NAME(m_videoworkram[2]), width * height);
- save_pointer(NAME(m_clut[0]), 0x1000);
- save_pointer(NAME(m_clut[1]), 0x1000);
- save_pointer(NAME(m_clut[2]), 0x1000);
+ save_pointer(NAME(m_palette_ptr.get()), 0x480);
+ save_pointer(NAME(m_videoram[0].get()), width * height);
+ save_pointer(NAME(m_videoram[1].get()), width * height);
+ save_pointer(NAME(m_videoram[2].get()), width * height);
+ save_pointer(NAME(m_videoworkram[0].get()), width * height);
+ save_pointer(NAME(m_videoworkram[1].get()), width * height);
+ save_pointer(NAME(m_videoworkram[2].get()), width * height);
+ save_pointer(NAME(m_clut[0].get()), 0x1000);
+ save_pointer(NAME(m_clut[1].get()), 0x1000);
+ save_pointer(NAME(m_clut[2].get()), 0x1000);
save_item(NAME(m_tmpbitmap[0]));
save_item(NAME(m_tmpbitmap[1]));
save_item(NAME(m_tmpbitmap[2]));
diff --git a/src/mame/video/nmk16.cpp b/src/mame/video/nmk16.cpp
index 41fd7cf1e09..8e9adb08aa0 100644
--- a/src/mame/video/nmk16.cpp
+++ b/src/mame/video/nmk16.cpp
@@ -109,8 +109,8 @@ TILE_GET_INFO_MEMBER(nmk16_state::get_tile_info_0_8bit)
void nmk16_state::nmk16_video_init()
{
- m_spriteram_old = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
- m_spriteram_old2 = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_spriteram_old = make_unique_clear<UINT16[]>(0x1000/2);
+ m_spriteram_old2 = make_unique_clear<UINT16[]>(0x1000/2);
m_videoshift = 0; /* 256x224 screen, no shift */
m_background_bitmap = nullptr;
@@ -127,7 +127,7 @@ VIDEO_START_MEMBER(nmk16_state,bioship)
m_tx_tilemap->set_transparent_pen(15);
nmk16_video_init();
- m_background_bitmap = auto_bitmap_ind16_alloc(machine(),8192,512);
+ m_background_bitmap = std::make_unique<bitmap_ind16>(8192,512);
m_bioship_background_bank=0;
m_redraw_bitmap = 1;
@@ -487,7 +487,7 @@ void nmk16_state::nmk16_draw_sprites_swap(bitmap_ind16 &bitmap, const rectangle
for (i = 0; i < 0x100; i++)
{
int spr = BITSWAP8(i, bittbl[0], bittbl[1], bittbl[2], bittbl[3], bittbl[4], bittbl[5], bittbl[6], bittbl[7]);
- nmk16_draw_sprite(bitmap, cliprect, m_spriteram_old2 + (spr * 16/2));
+ nmk16_draw_sprite(bitmap, cliprect, m_spriteram_old2.get() + (spr * 16/2));
}
}
@@ -498,7 +498,7 @@ void nmk16_state::nmk16_draw_sprites_swap_flipsupported(bitmap_ind16 &bitmap, co
for ( i = 0; i < 0x100; i++ )
{
int spr = BITSWAP8(i, bittbl[0], bittbl[1], bittbl[2], bittbl[3], bittbl[4], bittbl[5], bittbl[6], bittbl[7]);
- nmk16_draw_sprite_flipsupported(bitmap, cliprect, m_spriteram_old2 + (spr * 16/2));
+ nmk16_draw_sprite_flipsupported(bitmap, cliprect, m_spriteram_old2.get() + (spr * 16/2));
}
}
@@ -508,7 +508,7 @@ void nmk16_state::nmk16_draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip
for (offs = 0; offs < 0x1000/2; offs += 8)
{
- nmk16_draw_sprite(bitmap, cliprect, m_spriteram_old2 + offs);
+ nmk16_draw_sprite(bitmap, cliprect, m_spriteram_old2.get() + offs);
}
}
@@ -518,7 +518,7 @@ void nmk16_state::nmk16_draw_sprites_flipsupported(bitmap_ind16 &bitmap, const r
for (offs = 0; offs < 0x1000/2; offs += 8)
{
- nmk16_draw_sprite_flipsupported(bitmap, cliprect, m_spriteram_old2 + offs);
+ nmk16_draw_sprite_flipsupported(bitmap, cliprect, m_spriteram_old2.get() + offs);
}
}
@@ -796,8 +796,8 @@ UINT32 nmk16_state::screen_update_bjtwin(screen_device &screen, bitmap_ind16 &bi
VIDEO_START_MEMBER(nmk16_state,afega)
{
- m_spriteram_old = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
- m_spriteram_old2 = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_spriteram_old = make_unique_clear<UINT16[]>(0x1000/2);
+ m_spriteram_old2 = make_unique_clear<UINT16[]>(0x1000/2);
m_bg_tilemap0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::macross_get_bg0_tile_info),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),
16,16,
@@ -813,8 +813,8 @@ VIDEO_START_MEMBER(nmk16_state,afega)
VIDEO_START_MEMBER(nmk16_state,grdnstrm)
{
- m_spriteram_old = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
- m_spriteram_old2 = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_spriteram_old = make_unique_clear<UINT16[]>(0x1000/2);
+ m_spriteram_old2 = make_unique_clear<UINT16[]>(0x1000/2);
m_bg_tilemap0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::get_tile_info_0_8bit),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),
@@ -831,8 +831,8 @@ VIDEO_START_MEMBER(nmk16_state,grdnstrm)
VIDEO_START_MEMBER(nmk16_state,firehawk)
{
- m_spriteram_old = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
- m_spriteram_old2 = auto_alloc_array_clear(machine(), UINT16, 0x1000/2);
+ m_spriteram_old = make_unique_clear<UINT16[]>(0x1000/2);
+ m_spriteram_old2 = make_unique_clear<UINT16[]>(0x1000/2);
m_bg_tilemap0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::get_tile_info_0_8bit),this), tilemap_mapper_delegate(FUNC(nmk16_state::afega_tilemap_scan_pages),this),
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/ojankohs.cpp b/src/mame/video/ojankohs.cpp
index af39290097e..f4fd3af9fe6 100644
--- a/src/mame/video/ojankohs.cpp
+++ b/src/mame/video/ojankohs.cpp
@@ -258,16 +258,16 @@ WRITE8_MEMBER(ojankohs_state::ojankoc_videoram_w)
VIDEO_START_MEMBER(ojankohs_state,ojankohs)
{
m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(ojankohs_state::ojankohs_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 4, 64, 64);
-// m_videoram = auto_alloc_array(machine(), UINT8, 0x1000);
-// m_colorram = auto_alloc_array(machine(), UINT8, 0x1000);
-// m_paletteram = auto_alloc_array(machine(), UINT8, 0x800);
+// m_videoram = std::make_unique<UINT8[]>(0x1000);
+// m_colorram = std::make_unique<UINT8[]>(0x1000);
+// m_paletteram = std::make_unique<UINT8[]>(0x800);
}
VIDEO_START_MEMBER(ojankohs_state,ojankoy)
{
m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(ojankohs_state::ojankoy_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 4, 64, 64);
-// m_videoram = auto_alloc_array(machine(), UINT8, 0x2000);
-// m_colorram = auto_alloc_array(machine(), UINT8, 0x1000);
+// m_videoram = std::make_unique<UINT8[]>(0x2000);
+// m_colorram = std::make_unique<UINT8[]>(0x1000);
}
VIDEO_START_MEMBER(ojankohs_state,ojankoc)
diff --git a/src/mame/video/opwolf.cpp b/src/mame/video/opwolf.cpp
index e71c1608c70..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:
@@ -24,11 +24,11 @@ WRITE16_MEMBER(opwolf_state::opwolf_spritectrl_w)
/* If data = 4, the Piston Motor is off, otherwise it's on. */
if (data == 4)
{
- output_set_value("Player1_Recoil_Piston", 0);
+ output().set_value("Player1_Recoil_Piston", 0);
}
else
{
- output_set_value("Player1_Recoil_Piston", 1);
+ output().set_value("Player1_Recoil_Piston", 1);
}
}
}
diff --git a/src/mame/video/orbit.cpp b/src/mame/video/orbit.cpp
index 5a12222aafd..d144edc0eb6 100644
--- a/src/mame/video/orbit.cpp
+++ b/src/mame/video/orbit.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/othunder.cpp b/src/mame/video/othunder.cpp
index 7afd22b5c5f..f5ea75dc1c8 100644
--- a/src/mame/video/othunder.cpp
+++ b/src/mame/video/othunder.cpp
@@ -9,7 +9,7 @@ void othunder_state::video_start()
/* Up to $800/8 big sprites, requires 0x100 * sizeof(*spritelist)
Multiply this by 32 to give room for the number of small sprites,
which are what actually get put in the structure. */
- m_spritelist = auto_alloc_array(machine(), struct othunder_tempsprite, 0x2000);
+ m_spritelist = std::make_unique<othunder_tempsprite[]>(0x2000);
}
@@ -77,7 +77,7 @@ void othunder_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
while processing sprite ram and then draw them all at the end */
- struct othunder_tempsprite *sprite_ptr = m_spritelist;
+ struct othunder_tempsprite *sprite_ptr = m_spritelist.get();
for (offs = (m_spriteram.bytes() / 2) - 4; offs >= 0; offs -= 4)
{
@@ -180,7 +180,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
}
/* this happens only if primsks != NULL */
- while (sprite_ptr != m_spritelist)
+ while (sprite_ptr != m_spritelist.get())
{
sprite_ptr--;
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/pacland.cpp b/src/mame/video/pacland.cpp
index 1dfdaa798fe..9199462f4ff 100644
--- a/src/mame/video/pacland.cpp
+++ b/src/mame/video/pacland.cpp
@@ -114,9 +114,9 @@ PALETTE_INIT_MEMBER(pacland_state, pacland)
switch_palette();
/* precalculate transparency masks for sprites */
- m_transmask[0] = auto_alloc_array(machine(), UINT32, 64);
- m_transmask[1] = auto_alloc_array(machine(), UINT32, 64);
- m_transmask[2] = auto_alloc_array(machine(), UINT32, 64);
+ m_transmask[0] = std::make_unique<UINT32[]>(64);
+ m_transmask[1] = std::make_unique<UINT32[]>(64);
+ m_transmask[2] = std::make_unique<UINT32[]>(64);
for (i = 0; i < 64; i++)
{
int palentry;
diff --git a/src/mame/video/pastelg.cpp b/src/mame/video/pastelg.cpp
index a783696bdce..e76239e9fd4 100644
--- a/src/mame/video/pastelg.cpp
+++ b/src/mame/video/pastelg.cpp
@@ -284,7 +284,7 @@ void pastelg_state::video_start()
int width = m_screen->width();
int height = m_screen->height();
- m_videoram = auto_alloc_array_clear(machine(), UINT8, width * height);
+ m_videoram = make_unique_clear<UINT8[]>(width * height);
save_item(NAME(m_blitter_desty));
save_item(NAME(m_blitter_sizex));
@@ -296,7 +296,7 @@ void pastelg_state::video_start()
save_item(NAME(m_blitter_direction_x));
save_item(NAME(m_blitter_direction_y));
save_item(NAME(m_palbank));
- save_pointer(NAME(m_videoram), width*height);
+ save_pointer(NAME(m_videoram.get()), width*height);
save_item(NAME(m_flipscreen_old));
}
diff --git a/src/mame/video/pc080sn.cpp b/src/mame/video/pc080sn.cpp
index 55c67ed2bfa..62736eecae8 100644
--- a/src/mame/video/pc080sn.cpp
+++ b/src/mame/video/pc080sn.cpp
@@ -128,14 +128,14 @@ void pc080sn_device::device_start()
m_tilemap[1]->set_scroll_rows(512);
}
- m_ram = auto_alloc_array_clear(machine(), UINT16, PC080SN_RAM_SIZE / 2);
+ m_ram = make_unique_clear<UINT16[]>(PC080SN_RAM_SIZE / 2);
- m_bg_ram[0] = m_ram + 0x0000 /2;
- m_bg_ram[1] = m_ram + 0x8000 /2;
- m_bgscroll_ram[0] = m_ram + 0x4000 /2;
- m_bgscroll_ram[1] = m_ram + 0xc000 /2;
+ m_bg_ram[0] = m_ram.get() + 0x0000 /2;
+ m_bg_ram[1] = m_ram.get() + 0x8000 /2;
+ m_bgscroll_ram[0] = m_ram.get() + 0x4000 /2;
+ m_bgscroll_ram[1] = m_ram.get() + 0xc000 /2;
- save_pointer(NAME(m_ram), PC080SN_RAM_SIZE / 2);
+ save_pointer(NAME(m_ram.get()), PC080SN_RAM_SIZE / 2);
save_item(NAME(m_ctrl));
machine().save().register_postload(save_prepost_delegate(FUNC(pc080sn_device::restore_scroll), this));
diff --git a/src/mame/video/pc080sn.h b/src/mame/video/pc080sn.h
index 56f67504a8f..b181fbd134e 100644
--- a/src/mame/video/pc080sn.h
+++ b/src/mame/video/pc080sn.h
@@ -27,7 +27,6 @@ public:
DECLARE_WRITE16_MEMBER( xscroll_word_w );
DECLARE_WRITE16_MEMBER( yscroll_word_w );
DECLARE_WRITE16_MEMBER( ctrl_word_w );
- DECLARE_WRITE16_MEMBER( scrollram_w );
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
@@ -55,7 +54,7 @@ public:
// internal state
UINT16 m_ctrl[8];
- UINT16 *m_ram;
+ std::unique_ptr<UINT16[]> m_ram;
UINT16 *m_bg_ram[2];
UINT16 *m_bgscroll_ram[2];
diff --git a/src/mame/video/pc090oj.cpp b/src/mame/video/pc090oj.cpp
index 0aa609d093e..d7dc21c19c7 100644
--- a/src/mame/video/pc090oj.cpp
+++ b/src/mame/video/pc090oj.cpp
@@ -115,11 +115,11 @@ void pc090oj_device::static_set_palette_tag(device_t &device, const char *tag)
void pc090oj_device::device_start()
{
- m_ram = auto_alloc_array_clear(machine(), UINT16, PC090OJ_RAM_SIZE / 2);
- m_ram_buffered = auto_alloc_array_clear(machine(), UINT16, PC090OJ_RAM_SIZE / 2);
+ m_ram = make_unique_clear<UINT16[]>(PC090OJ_RAM_SIZE / 2);
+ m_ram_buffered = make_unique_clear<UINT16[]>(PC090OJ_RAM_SIZE / 2);
- save_pointer(NAME(m_ram), PC090OJ_RAM_SIZE / 2);
- save_pointer(NAME(m_ram_buffered), PC090OJ_RAM_SIZE / 2);
+ save_pointer(NAME(m_ram.get()), PC090OJ_RAM_SIZE / 2);
+ save_pointer(NAME(m_ram_buffered.get()), PC090OJ_RAM_SIZE / 2);
save_item(NAME(m_ctrl));
save_item(NAME(m_sprite_ctrl)); // should this be set in intf?!?
}
diff --git a/src/mame/video/pc090oj.h b/src/mame/video/pc090oj.h
index 6f3d9447edf..d1b63b1c7ea 100644
--- a/src/mame/video/pc090oj.h
+++ b/src/mame/video/pc090oj.h
@@ -47,8 +47,8 @@ private:
UINT16 m_ctrl;
UINT16 m_sprite_ctrl;
- UINT16 * m_ram;
- UINT16 * m_ram_buffered;
+ std::unique_ptr<UINT16[]> m_ram;
+ std::unique_ptr<UINT16[]> m_ram_buffered;
int m_gfxnum;
int m_x_offset, m_y_offset;
diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp
index a5d55a21c99..d8c6d2b95e5 100644
--- a/src/mame/video/pcd.cpp
+++ b/src/mame/video/pcd.cpp
@@ -410,7 +410,7 @@ void pcd_video_device::device_start()
{
m_maincpu->space(AS_IO).install_readwrite_handler(0xfb00, 0xfb01, 0, 0, read8_delegate(FUNC(pcdx_video_device::detect_r), this), write8_delegate(FUNC(pcdx_video_device::detect_w), this), 0xff00);
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0000, 0xf7fff, 0, 0, read8_delegate(FUNC(pcd_video_device::vram_r), this), write8_delegate(FUNC(pcd_video_device::vram_w), this), 0xffff);
- m_gfxdecode->set_gfx(0, global_alloc(gfx_element(m_palette, pcd_charlayout, &m_charram[0], 0, 1, 0)));
+ m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, pcd_charlayout, &m_charram[0], 0, 1, 0));
}
void pcd_video_device::device_reset()
diff --git a/src/mame/video/pcw.cpp b/src/mame/video/pcw.cpp
index d24c870081e..6a700784d4e 100644
--- a/src/mame/video/pcw.cpp
+++ b/src/mame/video/pcw.cpp
@@ -25,7 +25,7 @@ void pcw_state::video_start()
{
rectangle rect(0, PCW_PRINTER_WIDTH - 1, 0, PCW_PRINTER_HEIGHT - 1);
- m_prn_output = auto_bitmap_ind16_alloc(machine(),PCW_PRINTER_WIDTH,PCW_PRINTER_HEIGHT);
+ m_prn_output = std::make_unique<bitmap_ind16>(PCW_PRINTER_WIDTH,PCW_PRINTER_HEIGHT);
m_prn_output->fill(1, rect);
}
diff --git a/src/mame/video/pecom.cpp b/src/mame/video/pecom.cpp
index 795e97f8ef4..ff55a1726ef 100644
--- a/src/mame/video/pecom.cpp
+++ b/src/mame/video/pecom.cpp
@@ -81,12 +81,12 @@ WRITE_LINE_MEMBER(pecom_state::pecom_prd_w)
VIDEO_START_MEMBER(pecom_state,pecom)
{
/* allocate memory */
- m_charram = auto_alloc_array(machine(), UINT8, PECOM_CHAR_RAM_SIZE);
+ m_charram = std::make_unique<UINT8[]>(PECOM_CHAR_RAM_SIZE);
/* register for state saving */
save_item(NAME(m_reset));
save_item(NAME(m_dma));
- save_pointer(NAME(m_charram), PECOM_CHAR_RAM_SIZE);
+ save_pointer(NAME(m_charram.get()), PECOM_CHAR_RAM_SIZE);
}
MACHINE_CONFIG_FRAGMENT( pecom_video )
diff --git a/src/mame/video/pgm.cpp b/src/mame/video/pgm.cpp
index f4d923075ae..7fb395fed0d 100644
--- a/src/mame/video/pgm.cpp
+++ b/src/mame/video/pgm.cpp
@@ -80,7 +80,7 @@ void pgm_state::draw_sprite_line( int wide, UINT16* dest, UINT8* destpri, int xz
int xoffset = 0;
int xdrawpos = 0;
- UINT8 *adata = m_sprite_a_region;
+ UINT8 *adata = m_sprite_a_region.get();
size_t adatasize = m_sprite_a_region_size - 1;
UINT16 msk;
@@ -328,7 +328,7 @@ void pgm_state::draw_sprite_line_basic( int wide, UINT16* dest, UINT8* destpri,
int xcnt,xcntdraw;
int xoffset = 0;
int xdrawpos = 0;
- UINT8 *adata = m_sprite_a_region;
+ UINT8 *adata = m_sprite_a_region.get();
size_t adatasize = m_sprite_a_region_size - 1;
UINT16 msk;
@@ -493,7 +493,7 @@ void pgm_state::draw_sprites( bitmap_ind16& spritebitmap, UINT16 *sprite_source,
wwww wwwh hhhh hhhh
*/
- const UINT16 *finish = m_spritebufferram + (0xa00 / 2);
+ const UINT16 *finish = m_spritebufferram.get() + (0xa00 / 2);
UINT16* start = sprite_source;
@@ -629,9 +629,9 @@ VIDEO_START_MEMBER(pgm_state,pgm)
for (i = 0; i < 0x1200 / 2; i++)
m_palette->set_pen_color(i, rgb_t(0, 0, 0));
- m_spritebufferram = auto_alloc_array_clear(machine(), UINT16, 0xa00/2);
+ m_spritebufferram = make_unique_clear<UINT16[]>(0xa00/2);
- save_pointer(NAME(m_spritebufferram), 0xa00/2);
+ save_pointer(NAME(m_spritebufferram.get()), 0xa00/2);
}
UINT32 pgm_state::screen_update_pgm(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -650,7 +650,7 @@ UINT32 pgm_state::screen_update_pgm(screen_device &screen, bitmap_ind16 &bitmap,
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 2);
- draw_sprites(bitmap, m_spritebufferram, screen.priority());
+ draw_sprites(bitmap, m_spritebufferram.get(), screen.priority());
m_tx_tilemap->set_scrolly(0, m_videoregs[0x5000/2]);
m_tx_tilemap->set_scrollx(0, m_videoregs[0x6000/2]); // Check
@@ -669,6 +669,6 @@ void pgm_state::screen_eof_pgm(screen_device &screen, bool state)
if (state)
{
/* first 0xa00 of main ram = sprites, seems to be buffered, DMA? */
- memcpy(m_spritebufferram, m_mainram, 0xa00);
+ memcpy(m_spritebufferram.get(), m_mainram, 0xa00);
}
}
diff --git a/src/mame/video/phoenix.cpp b/src/mame/video/phoenix.cpp
index 60dfdedfab2..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
/***************************************************************************
@@ -168,13 +168,13 @@ TILE_GET_INFO_MEMBER(phoenix_state::get_bg_tile_info)
VIDEO_START_MEMBER(phoenix_state,phoenix)
{
- m_videoram_pg[0] = auto_alloc_array(machine(), UINT8, 0x1000);
- memset(m_videoram_pg[0], 0x00, 0x1000 * sizeof(UINT8));
- m_videoram_pg[1] = auto_alloc_array(machine(), UINT8, 0x1000);
- memset(m_videoram_pg[1], 0x00, 0x1000 * sizeof(UINT8));
+ m_videoram_pg[0] = std::make_unique<UINT8[]>(0x1000);
+ memset(m_videoram_pg[0].get(), 0x00, 0x1000 * sizeof(UINT8));
+ m_videoram_pg[1] = std::make_unique<UINT8[]>(0x1000);
+ memset(m_videoram_pg[1].get(), 0x00, 0x1000 * sizeof(UINT8));
- membank("bank1")->configure_entry(0, m_videoram_pg[0]);
- membank("bank1")->configure_entry(1, m_videoram_pg[1]);
+ membank("bank1")->configure_entry(0, m_videoram_pg[0].get());
+ membank("bank1")->configure_entry(1, m_videoram_pg[1].get());
membank("bank1")->set_entry(0);
m_videoram_pg_index = 0;
@@ -191,8 +191,8 @@ VIDEO_START_MEMBER(phoenix_state,phoenix)
m_fg_tilemap->set_scrolldy(0, (VTOTAL - VBSTART));
m_bg_tilemap->set_scrolldy(0, (VTOTAL - VBSTART));
- save_pointer(NAME(m_videoram_pg[0]), 0x1000);
- save_pointer(NAME(m_videoram_pg[1]), 0x1000);
+ save_pointer(NAME(m_videoram_pg[0].get()), 0x1000);
+ save_pointer(NAME(m_videoram_pg[1].get()), 0x1000);
save_item(NAME(m_videoram_pg_index));
save_item(NAME(m_palette_bank));
save_item(NAME(m_cocktail_mode));
diff --git a/src/mame/video/pitnrun.cpp b/src/mame/video/pitnrun.cpp
index 3a0b8732c6a..d1a969f64a4 100644
--- a/src/mame/video/pitnrun.cpp
+++ b/src/mame/video/pitnrun.cpp
@@ -160,10 +160,10 @@ void pitnrun_state::video_start()
m_fg = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(pitnrun_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,32,32 );
m_bg = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(pitnrun_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,32*4,32 );
m_fg->set_transparent_pen(0 );
- m_tmp_bitmap[0] = auto_bitmap_ind16_alloc(machine(),128,128);
- m_tmp_bitmap[1] = auto_bitmap_ind16_alloc(machine(),128,128);
- m_tmp_bitmap[2] = auto_bitmap_ind16_alloc(machine(),128,128);
- m_tmp_bitmap[3] = auto_bitmap_ind16_alloc(machine(),128,128);
+ m_tmp_bitmap[0] = std::make_unique<bitmap_ind16>(128,128);
+ m_tmp_bitmap[1] = std::make_unique<bitmap_ind16>(128,128);
+ m_tmp_bitmap[2] = std::make_unique<bitmap_ind16>(128,128);
+ m_tmp_bitmap[3] = std::make_unique<bitmap_ind16>(128,128);
spotlights();
save_item(NAME(m_h_heed));
diff --git a/src/mame/video/plygonet.cpp b/src/mame/video/plygonet.cpp
index 8fc07010a8e..9cd2cf0baf0 100644
--- a/src/mame/video/plygonet.cpp
+++ b/src/mame/video/plygonet.cpp
@@ -101,7 +101,7 @@ void polygonet_state::video_start()
assert(m_ttl_gfx_index != MAX_GFX_ELEMENTS);
/* decode the ttl layer's gfx */
- m_gfxdecode->set_gfx(m_ttl_gfx_index, global_alloc(gfx_element(m_palette, charlayout, memregion("gfx1")->base(), 0, m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(m_ttl_gfx_index, std::make_unique<gfx_element>(m_palette, charlayout, memregion("gfx1")->base(), 0, m_palette->entries() / 16, 0));
/* create the tilemap */
m_ttl_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(polygonet_state::ttl_get_tile_info),this), tilemap_mapper_delegate(FUNC(polygonet_state::plygonet_scan),this), 8, 8, 64, 32);
diff --git a/src/mame/video/poisk1.cpp b/src/mame/video/poisk1.cpp
index 99532e31fed..6f2a102bde4 100644
--- a/src/mame/video/poisk1.cpp
+++ b/src/mame/video/poisk1.cpp
@@ -95,7 +95,6 @@ WRITE8_MEMBER(p1_state::p1_vram_w)
WRITE8_MEMBER(p1_state::p1_ppi2_porta_w)
{
address_space &space_prg = m_maincpu->space(AS_PROGRAM);
- rectangle visarea;
DBG_LOG(1,"color_select_68",("W $%02x\n", data));
@@ -111,9 +110,9 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w)
// DISPLAY BANK
if (BIT(data, 6) != BIT(m_video.color_select_68, 6)) {
if (BIT(data, 6))
- m_video.videoram = m_video.videoram_base + 0x4000;
+ m_video.videoram = m_video.videoram_base.get() + 0x4000;
else
- m_video.videoram = m_video.videoram_base;
+ m_video.videoram = m_video.videoram_base.get();
}
// HIRES -- XXX
if (BIT(data, 7) != BIT(m_video.color_select_68, 7)) {
@@ -290,7 +289,8 @@ void p1_state::video_start()
DBG_LOG(0,"init",("video_start()\n"));
memset(&m_video, 0, sizeof(m_video));
- m_video.videoram = m_video.videoram_base = auto_alloc_array(machine(), UINT8, 0x8000);
+ m_video.videoram_base = std::make_unique<UINT8[]>(0x8000);
+ m_video.videoram = m_video.videoram_base.get();
m_video.stride = 80;
space.install_readwrite_bank(0xb8000, 0xbffff, "bank11" );
diff --git a/src/mame/video/policetr.cpp b/src/mame/video/policetr.cpp
index ddcccad3933..c2345439837 100644
--- a/src/mame/video/policetr.cpp
+++ b/src/mame/video/policetr.cpp
@@ -33,7 +33,7 @@ void policetr_state::video_start()
m_srcbitmap_height_mask = (memregion("gfx1")->bytes() / SRCBITMAP_WIDTH) - 1;
/* the destination bitmap is not directly accessible to the CPU */
- m_dstbitmap = auto_alloc_array(machine(), UINT8, DSTBITMAP_WIDTH * DSTBITMAP_HEIGHT);
+ m_dstbitmap = std::make_unique<UINT8[]>(DSTBITMAP_WIDTH * DSTBITMAP_HEIGHT);
}
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/poolshrk.cpp b/src/mame/video/poolshrk.cpp
index fe5169bcf27..378a1eea288 100644
--- a/src/mame/video/poolshrk.cpp
+++ b/src/mame/video/poolshrk.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/popeye.cpp b/src/mame/video/popeye.cpp
index 920a1f1b20b..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
@@ -337,8 +338,8 @@ TILE_GET_INFO_MEMBER(popeye_state::get_fg_tile_info)
void popeye_state::video_start()
{
- m_bitmapram = auto_alloc_array(machine(), UINT8, popeye_bitmapram_size);
- m_tmpbitmap2 = auto_bitmap_ind16_alloc(machine(),1024,1024); /* actually 1024x512 but not rolling over vertically? */
+ m_bitmapram = std::make_unique<UINT8[]>(popeye_bitmapram_size);
+ m_tmpbitmap2 = std::make_unique<bitmap_ind16>(1024,1024); /* actually 1024x512 but not rolling over vertically? */
m_bitmap_type = TYPE_SKYSKIPR;
@@ -351,13 +352,13 @@ void popeye_state::video_start()
save_item(NAME(m_field));
save_item(NAME(m_lastflip));
save_item(NAME(*m_tmpbitmap2));
- save_pointer(NAME(m_bitmapram), popeye_bitmapram_size);
+ save_pointer(NAME(m_bitmapram.get()), popeye_bitmapram_size);
}
VIDEO_START_MEMBER(popeye_state,popeye)
{
- m_bitmapram = auto_alloc_array(machine(), UINT8, popeye_bitmapram_size);
- m_tmpbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512);
+ m_bitmapram = std::make_unique<UINT8[]>(popeye_bitmapram_size);
+ m_tmpbitmap2 = std::make_unique<bitmap_ind16>(512,512);
m_bitmap_type = TYPE_POPEYE;
@@ -370,7 +371,7 @@ VIDEO_START_MEMBER(popeye_state,popeye)
save_item(NAME(m_field));
save_item(NAME(m_lastflip));
save_item(NAME(*m_tmpbitmap2));
- save_pointer(NAME(m_bitmapram), popeye_bitmapram_size);
+ save_pointer(NAME(m_bitmapram.get()), popeye_bitmapram_size);
}
void popeye_state::draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/powervr2.cpp b/src/mame/video/powervr2.cpp
index a0db91d6b62..4907b985f86 100644
--- a/src/mame/video/powervr2.cpp
+++ b/src/mame/video/powervr2.cpp
@@ -3625,7 +3625,7 @@ void powervr2_device::device_start()
endofrender_timer_tsp = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(powervr2_device::endofrender_tsp),this));
endofrender_timer_video = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(powervr2_device::endofrender_video),this));
- fake_accumulationbuffer_bitmap = auto_bitmap_rgb32_alloc(machine(),2048,2048);
+ fake_accumulationbuffer_bitmap = std::make_unique<bitmap_rgb32>(2048,2048);
softreset = 0;
param_base = 0;
diff --git a/src/mame/video/powervr2.h b/src/mame/video/powervr2.h
index 8983f88336f..fede10e2061 100644
--- a/src/mame/video/powervr2.h
+++ b/src/mame/video/powervr2.h
@@ -55,7 +55,7 @@ public:
// the real accumulation buffer is a 32x32x8bpp buffer into which tiles get rendered before they get copied to the framebuffer
// our implementation is not currently tile based, and thus the accumulation buffer is screen sized
- bitmap_rgb32 *fake_accumulationbuffer_bitmap;
+ std::unique_ptr<bitmap_rgb32> fake_accumulationbuffer_bitmap;
struct texinfo {
UINT32 address, vqbase;
@@ -220,7 +220,6 @@ public:
DECLARE_WRITE32_MEMBER( ta_yuv_tex_ctrl_w );
DECLARE_READ32_MEMBER( ta_yuv_tex_cnt_r );
DECLARE_WRITE32_MEMBER( ta_yuv_tex_cnt_w );
- DECLARE_READ32_MEMBER( ta_list_cont_r );
DECLARE_WRITE32_MEMBER( ta_list_cont_w );
DECLARE_READ32_MEMBER( ta_next_opb_init_r );
DECLARE_WRITE32_MEMBER( ta_next_opb_init_w );
@@ -248,11 +247,8 @@ public:
DECLARE_READ32_MEMBER( sb_pdapro_r );
DECLARE_WRITE32_MEMBER( sb_pdapro_w );
- DECLARE_READ32_MEMBER( pvr_ta_r );
- DECLARE_WRITE32_MEMBER( pvr_ta_w );
DECLARE_READ32_MEMBER( pvr2_ta_r );
DECLARE_WRITE32_MEMBER( pvr2_ta_w );
- DECLARE_READ32_MEMBER( pvrs_ta_r );
DECLARE_WRITE32_MEMBER( pvrs_ta_w );
DECLARE_READ32_MEMBER( elan_regs_r );
DECLARE_WRITE32_MEMBER( elan_regs_w );
@@ -452,7 +448,6 @@ private:
void computedilated();
void pvr_build_parameterconfig();
void process_ta_fifo();
- void debug_paletteram();
void update_screen_format();
void fb_convert_0555krgb_to_555rgb(address_space &space, int x, int y);
diff --git a/src/mame/video/ppu2c0x.cpp b/src/mame/video/ppu2c0x.cpp
index d6511dbb245..0c15efb3c70 100644
--- a/src/mame/video/ppu2c0x.cpp
+++ b/src/mame/video/ppu2c0x.cpp
@@ -222,10 +222,10 @@ void ppu2c0x_device::device_start()
m_nmi_timer->adjust(attotime::never);
/* allocate a screen bitmap, videomem and spriteram, a dirtychar array and the monochromatic colortable */
- m_bitmap = auto_bitmap_ind16_alloc(machine(), VISIBLE_SCREEN_WIDTH, VISIBLE_SCREEN_HEIGHT);
- m_spriteram = auto_alloc_array_clear(machine(), UINT8, SPRITERAM_SIZE);
- m_colortable = auto_alloc_array(machine(), pen_t, ARRAY_LENGTH(default_colortable));
- m_colortable_mono = auto_alloc_array(machine(), pen_t, ARRAY_LENGTH(default_colortable_mono));
+ m_bitmap = std::make_unique<bitmap_ind16>(VISIBLE_SCREEN_WIDTH, VISIBLE_SCREEN_HEIGHT);
+ m_spriteram = make_unique_clear<UINT8[]>(SPRITERAM_SIZE);
+ m_colortable = std::make_unique<pen_t[]>(ARRAY_LENGTH(default_colortable));
+ m_colortable_mono = std::make_unique<pen_t[]>(ARRAY_LENGTH(default_colortable_mono));
/* initialize the color tables */
for (int i = 0; i < ARRAY_LENGTH(default_colortable_mono); i++)
@@ -256,9 +256,9 @@ void ppu2c0x_device::device_start()
save_item(NAME(m_palette_ram));
save_item(NAME(m_draw_phase));
save_item(NAME(m_tilecount));
- save_pointer(NAME(m_spriteram), SPRITERAM_SIZE);
- save_pointer(NAME(m_colortable), ARRAY_LENGTH(default_colortable));
- save_pointer(NAME(m_colortable_mono), ARRAY_LENGTH(default_colortable_mono));
+ save_pointer(NAME(m_spriteram.get()), SPRITERAM_SIZE);
+ save_pointer(NAME(m_colortable.get()), ARRAY_LENGTH(default_colortable));
+ save_pointer(NAME(m_colortable_mono.get()), ARRAY_LENGTH(default_colortable_mono));
save_item(NAME(*m_bitmap));
}
@@ -571,12 +571,12 @@ void ppu2c0x_device::draw_background( UINT8 *line_priority )
if (m_regs[PPU_CONTROL1] & PPU_CONTROL1_DISPLAY_MONO)
{
color_mask = 0xf0;
- color_table = m_colortable_mono;
+ color_table = m_colortable_mono.get();
}
else
{
color_mask = 0xff;
- color_table = m_colortable;
+ color_table = m_colortable.get();
}
/* cache the background pen */
diff --git a/src/mame/video/ppu2c0x.h b/src/mame/video/ppu2c0x.h
index ad9daadebf7..8a21d51f0b8 100644
--- a/src/mame/video/ppu2c0x.h
+++ b/src/mame/video/ppu2c0x.h
@@ -188,10 +188,10 @@ public:
required_device<cpu_device> m_cpu;
- bitmap_ind16 *m_bitmap; /* target bitmap */
- UINT8 *m_spriteram; /* sprite ram */
- pen_t *m_colortable; /* color table modified at run time */
- pen_t *m_colortable_mono; /* monochromatic color table modified at run time */
+ std::unique_ptr<bitmap_ind16> m_bitmap; /* target bitmap */
+ std::unique_ptr<UINT8[]> m_spriteram; /* sprite ram */
+ std::unique_ptr<pen_t[]> m_colortable; /* color table modified at run time */
+ std::unique_ptr<pen_t[]> m_colortable_mono; /* monochromatic color table modified at run time */
int m_scanline; /* scanline count */
ppu2c0x_scanline_delegate m_scanline_callback_proc; /* optional scanline callback */
ppu2c0x_hblank_delegate m_hblank_callback_proc; /* optional hblank callback */
diff --git a/src/mame/video/prehisle.cpp b/src/mame/video/prehisle.cpp
index d0214607a6f..56f97d0516c 100644
--- a/src/mame/video/prehisle.cpp
+++ b/src/mame/video/prehisle.cpp
@@ -50,8 +50,8 @@ WRITE16_MEMBER(prehisle_state::control_w)
case 0x10: m_bg_tilemap->set_scrolly(0, scroll); break;
case 0x18: m_bg_tilemap->set_scrollx(0, scroll); break;
case 0x23: m_invert_controls = data ? 0x00ff : 0x0000; break;
- case 0x28: coin_counter_w(machine(), 0, data & 1); break;
- case 0x29: coin_counter_w(machine(), 1, data & 1); break;
+ case 0x28: machine().bookkeeping().coin_counter_w(0, data & 1); break;
+ case 0x29: machine().bookkeeping().coin_counter_w(1, data & 1); break;
case 0x30: flip_screen_set(data & 0x01); break;
}
}
diff --git a/src/mame/video/psikyo.cpp b/src/mame/video/psikyo.cpp
index bbbfef1faa1..766d5c279f5 100644
--- a/src/mame/video/psikyo.cpp
+++ b/src/mame/video/psikyo.cpp
@@ -168,8 +168,8 @@ VIDEO_START_MEMBER(psikyo_state,psikyo)
m_tilemap_1_size2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psikyo_state::get_tile_info_1),this), TILEMAP_SCAN_ROWS, 16, 16, 0x80, 0x20);
m_tilemap_1_size3 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psikyo_state::get_tile_info_1),this), TILEMAP_SCAN_ROWS, 16, 16, 0x100, 0x10);
- m_spritebuf1 = auto_alloc_array(machine(), UINT32, 0x2000 / 4);
- m_spritebuf2 = auto_alloc_array(machine(), UINT32, 0x2000 / 4);
+ m_spritebuf1 = std::make_unique<UINT32[]>(0x2000 / 4);
+ m_spritebuf2 = std::make_unique<UINT32[]>(0x2000 / 4);
m_tilemap_0_size0->set_scroll_rows(0x80 * 16); // line scrolling
m_tilemap_0_size0->set_scroll_cols(1);
@@ -195,8 +195,8 @@ VIDEO_START_MEMBER(psikyo_state,psikyo)
m_tilemap_1_size3->set_scroll_rows(0x10 * 16); // line scrolling
m_tilemap_1_size3->set_scroll_cols(1);
- save_pointer(NAME(m_spritebuf1), 0x2000 / 4);
- save_pointer(NAME(m_spritebuf2), 0x2000 / 4);
+ save_pointer(NAME(m_spritebuf1.get()), 0x2000 / 4);
+ save_pointer(NAME(m_spritebuf2.get()), 0x2000 / 4);
}
VIDEO_START_MEMBER(psikyo_state,sngkace)
@@ -258,7 +258,7 @@ void psikyo_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, co
/* tile layers 0 & 1 have priorities 1 & 2 */
static const int pri[] = { 0, 0xfc, 0xff, 0xff };
int offs;
- UINT16 *spritelist = (UINT16 *)(m_spritebuf2 + 0x1800 / 4);
+ UINT16 *spritelist = (UINT16 *)(m_spritebuf2.get() + 0x1800 / 4);
UINT8 *TILES = memregion("spritelut")->base(); // Sprites LUT
int TILES_LEN = memregion("spritelut")->bytes();
@@ -375,7 +375,7 @@ void psikyo_state::draw_sprites_bootleg( screen_device &screen, bitmap_ind16 &bi
/* tile layers 0 & 1 have priorities 1 & 2 */
static const int pri[] = { 0, 0xfc, 0xff, 0xff };
int offs;
- UINT16 *spritelist = (UINT16 *)(m_spritebuf2 + 0x1800 / 4);
+ UINT16 *spritelist = (UINT16 *)(m_spritebuf2.get()+ 0x1800 / 4);
UINT8 *TILES = memregion("spritelut")->base(); // Sprites LUT
int TILES_LEN = memregion("spritelut")->bytes();
@@ -850,7 +850,7 @@ void psikyo_state::screen_eof_psikyo(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_spritebuf2, m_spritebuf1, 0x2000);
- memcpy(m_spritebuf1, m_spriteram, 0x2000);
+ memcpy(m_spritebuf2.get(), m_spritebuf1.get(), 0x2000);
+ memcpy(m_spritebuf1.get(), m_spriteram, 0x2000);
}
}
diff --git a/src/mame/video/psikyosh.cpp b/src/mame/video/psikyosh.cpp
index 24b51d9e375..2c40e75aa44 100644
--- a/src/mame/video/psikyosh.cpp
+++ b/src/mame/video/psikyosh.cpp
@@ -1093,7 +1093,7 @@ void psikyosh_state::video_start()
m_screen->register_screen_bitmap(m_z_bitmap); /* z-buffer */
m_zoom_bitmap.allocate(16*16, 16*16); /* temp buffer for assembling sprites */
m_bg_bitmap.allocate(32*16, 32*16); /* temp buffer for assembling tilemaps */
- m_bg_zoom = auto_alloc_array(machine(), UINT16, 256);
+ m_bg_zoom = std::make_unique<UINT16[]>(256);
m_gfxdecode->gfx(1)->set_granularity(16); /* 256 colour sprites with palette selectable on 16 colour boundaries */
@@ -1117,7 +1117,7 @@ void psikyosh_state::video_start()
save_item(NAME(m_z_bitmap));
save_item(NAME(m_zoom_bitmap));
save_item(NAME(m_bg_bitmap));
- save_pointer(NAME(m_bg_zoom), 256);
+ save_pointer(NAME(m_bg_zoom.get()), 256);
}
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/quasar.cpp b/src/mame/video/quasar.cpp
index cc89578a4b3..75bdd0f0593 100644
--- a/src/mame/video/quasar.cpp
+++ b/src/mame/video/quasar.cpp
@@ -91,14 +91,14 @@ PALETTE_INIT_MEMBER(quasar_state,quasar)
VIDEO_START_MEMBER(quasar_state,quasar)
{
- m_effectram = auto_alloc_array(machine(), UINT8, 0x400);
+ m_effectram = std::make_unique<UINT8[]>(0x400);
/* create helper bitmap */
m_screen->register_screen_bitmap(m_collision_background);
/* register save */
save_item(NAME(m_collision_background));
- save_pointer(NAME(m_effectram), 0x400);
+ save_pointer(NAME(m_effectram.get()), 0x400);
}
UINT32 quasar_state::screen_update_quasar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/quizdna.cpp b/src/mame/video/quizdna.cpp
index 0a9378abc32..02542d42985 100644
--- a/src/mame/video/quizdna.cpp
+++ b/src/mame/video/quizdna.cpp
@@ -53,16 +53,16 @@ void quizdna_state::video_start()
m_bg_xscroll[0] = 0;
m_bg_xscroll[1] = 0;
- m_bg_ram = auto_alloc_array(machine(), UINT8, 0x2000);
- m_fg_ram = auto_alloc_array(machine(), UINT8, 0x1000);
+ m_bg_ram = std::make_unique<UINT8[]>(0x2000);
+ m_fg_ram = std::make_unique<UINT8[]>(0x1000);
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(quizdna_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32 );
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(quizdna_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,16,8,32,32 );
m_fg_tilemap->set_transparent_pen(0 );
- save_pointer(NAME(m_bg_ram), 0x2000);
- save_pointer(NAME(m_fg_ram), 0x1000);
+ save_pointer(NAME(m_bg_ram.get()), 0x2000);
+ save_pointer(NAME(m_fg_ram.get()), 0x1000);
save_item(NAME(m_bg_xscroll));
save_item(NAME(m_flipscreen));
save_item(NAME(m_video_enable));
@@ -110,7 +110,7 @@ WRITE8_MEMBER(quizdna_state::screen_ctrl_w)
int tmp = (data & 0x10) >> 4;
m_video_enable = data & 0x20;
- coin_counter_w(machine(), 0, data & 1);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
if (m_flipscreen == tmp)
return;
diff --git a/src/mame/video/raiden.cpp b/src/mame/video/raiden.cpp
index 728e0e3df48..363c4e492de 100644
--- a/src/mame/video/raiden.cpp
+++ b/src/mame/video/raiden.cpp
@@ -1,5 +1,5 @@
-// license:???
-// copyright-holders:Oliver Bergmann, Bryan McPhail, Randy Mongenel
+// license:BSD-3-Clause
+// copyright-holders:Bryan McPhail
/*******************************************************************************
Seibu Raiden hardware
diff --git a/src/mame/video/rastan.cpp b/src/mame/video/rastan.cpp
index 3c9ef293e31..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:
@@ -20,12 +20,12 @@ WRITE16_MEMBER(rastan_state::rastan_spritectrl_w)
/* bit 4 unused */
/* bits 0 and 1 are coin lockout */
- coin_lockout_w(machine(), 1, ~data & 0x01);
- coin_lockout_w(machine(), 0, ~data & 0x02);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x02);
/* bits 2 and 3 are the coin counters */
- coin_counter_w(machine(), 1, data & 0x04);
- coin_counter_w(machine(), 0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(1, data & 0x04);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
}
/***************************************************************************/
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/realbrk.cpp b/src/mame/video/realbrk.cpp
index c6326d68daa..fb04194780f 100644
--- a/src/mame/video/realbrk.cpp
+++ b/src/mame/video/realbrk.cpp
@@ -29,8 +29,8 @@ WRITE16_MEMBER(realbrk_state::realbrk_flipscreen_w)
{
if (ACCESSING_BITS_0_7)
{
- coin_counter_w(machine(), 0, data & 0x0001);
- coin_counter_w(machine(), 1, data & 0x0004);
+ machine().bookkeeping().coin_counter_w(0, data & 0x0001);
+ machine().bookkeeping().coin_counter_w(1, data & 0x0004);
flip_screen_set( data & 0x0080);
}
@@ -154,8 +154,8 @@ void realbrk_state::video_start()
m_tilemap_1->set_transparent_pen(0);
m_tilemap_2->set_transparent_pen(0);
- m_tmpbitmap0 = auto_bitmap_ind16_alloc(machine(),32,32);
- m_tmpbitmap1 = auto_bitmap_ind16_alloc(machine(),32,32);
+ m_tmpbitmap0 = std::make_unique<bitmap_ind16>(32,32);
+ m_tmpbitmap1 = std::make_unique<bitmap_ind16>(32,32);
save_item(NAME(m_disable_video));
}
diff --git a/src/mame/video/redalert.cpp b/src/mame/video/redalert.cpp
index 288e92198bd..f1a4d14d6f8 100644
--- a/src/mame/video/redalert.cpp
+++ b/src/mame/video/redalert.cpp
@@ -164,9 +164,9 @@ void redalert_state::get_panther_pens(pen_t *pens)
VIDEO_START_MEMBER(redalert_state,redalert)
{
- m_bitmap_colorram = auto_alloc_array(machine(), UINT8, 0x0400);
+ m_bitmap_colorram = std::make_unique<UINT8[]>(0x0400);
- save_pointer(NAME(m_bitmap_colorram), 0x0400);
+ save_pointer(NAME(m_bitmap_colorram.get()), 0x0400);
m_control_xor = 0x00;
}
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/rltennis.cpp b/src/mame/video/rltennis.cpp
index 0600a31899f..1388940d24e 100644
--- a/src/mame/video/rltennis.cpp
+++ b/src/mame/video/rltennis.cpp
@@ -222,10 +222,10 @@ WRITE16_MEMBER(rltennis_state::blitter_w)
void rltennis_state::video_start()
{
- m_tmp_bitmap[BITMAP_BG] = auto_bitmap_ind16_alloc(machine(), 512, 256);
- m_tmp_bitmap[BITMAP_FG_1] = auto_bitmap_ind16_alloc(machine(), 512, 256);
- m_tmp_bitmap[BITMAP_FG_2] = auto_bitmap_ind16_alloc(machine(), 512, 256);
- m_tmp_bitmap[BITMAP_FG_DISPLAY] = auto_bitmap_ind16_alloc(machine(), 512, 256);
+ m_tmp_bitmap[BITMAP_BG] = std::make_unique<bitmap_ind16>(512, 256);
+ m_tmp_bitmap[BITMAP_FG_1] = std::make_unique<bitmap_ind16>(512, 256);
+ m_tmp_bitmap[BITMAP_FG_2] = std::make_unique<bitmap_ind16>(512, 256);
+ m_tmp_bitmap[BITMAP_FG_DISPLAY] = std::make_unique<bitmap_ind16>(512, 256);
save_item(NAME(m_blitter));
}
diff --git a/src/mame/video/route16.cpp b/src/mame/video/route16.cpp
index 42f19659281..76727e98c3b 100644
--- a/src/mame/video/route16.cpp
+++ b/src/mame/video/route16.cpp
@@ -28,7 +28,7 @@ WRITE8_MEMBER(route16_state::out0_w)
{
m_palette_1 = data & 0x1f;
- coin_counter_w(machine(), 0, (data >> 5) & 0x01);
+ machine().bookkeeping().coin_counter_w(0, (data >> 5) & 0x01);
}
diff --git a/src/mame/video/rungun.cpp b/src/mame/video/rungun.cpp
index c3a8869fa09..f91da2df5f3 100644
--- a/src/mame/video/rungun.cpp
+++ b/src/mame/video/rungun.cpp
@@ -19,9 +19,9 @@
TILE_GET_INFO_MEMBER(rungun_state::ttl_get_tile_info)
{
UINT32 base_addr = (FPTR)tilemap.user_data();
- UINT8 *lvram = (UINT8 *)m_ttl_vram + base_addr;
+ UINT8 *lvram = (UINT8 *)m_ttl_vram.get() + base_addr;
int attr, code;
-
+
attr = (lvram[BYTE_XOR_LE(tile_index<<2)] & 0xf0) >> 4;
code = ((lvram[BYTE_XOR_LE(tile_index<<2)] & 0x0f) << 8) | (lvram[BYTE_XOR_LE((tile_index<<2)+2)]);
@@ -60,7 +60,7 @@ TILE_GET_INFO_MEMBER(rungun_state::get_rng_936_tile_info)
{
UINT32 base_addr = (FPTR)tilemap.user_data();
int tileno, colour, flipx;
-
+
tileno = m_psac2_vram[tile_index * 2 + 1 + base_addr] & 0x3fff;
flipx = (m_psac2_vram[tile_index * 2 + 1 + base_addr] & 0xc000) >> 14;
colour = 0x10 + (m_psac2_vram[tile_index * 2 + base_addr] & 0x000f);
@@ -84,8 +84,8 @@ void rungun_state::video_start()
int gfx_index;
- m_ttl_vram = auto_alloc_array(machine(), UINT16, 0x1000*2);
- m_psac2_vram = auto_alloc_array(machine(), UINT16, 0x80000*2);
+ m_ttl_vram = std::make_unique<UINT16[]>(0x1000*2);
+ m_psac2_vram = std::make_unique<UINT16[]>(0x80000*2);
/* find first empty slot to decode gfx */
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
@@ -95,7 +95,7 @@ void rungun_state::video_start()
assert(gfx_index != MAX_GFX_ELEMENTS);
// decode the ttl layer's gfx
- m_gfxdecode->set_gfx(gfx_index, global_alloc(gfx_element(m_palette, charlayout, memregion("gfx3")->base(), 0, m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(m_palette, charlayout, memregion("gfx3")->base(), 0, m_palette->entries() / 16, 0));
m_ttl_gfx_index = gfx_index;
// create the tilemaps
@@ -108,7 +108,7 @@ void rungun_state::video_start()
m_936_tilemap[screen_num] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(rungun_state::get_rng_936_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128);
m_936_tilemap[screen_num]->set_user_data((void *)(FPTR)(screen_num * 0x80000));
m_936_tilemap[screen_num]->set_transparent_pen(0);
-
+
}
m_sprite_colorbase = 0x20;
@@ -123,7 +123,7 @@ UINT32 rungun_state::screen_update_rng(screen_device &screen, bitmap_ind16 &bitm
m_current_display_bank = machine().first_screen()->frame_number() & 1;
if(m_single_screen_mode == true)
m_current_display_bank = 0;
-
+
if(m_video_priority_mode == false)
{
m_k053936->zoom_draw(screen, bitmap, cliprect, m_936_tilemap[m_current_display_bank], 0, 0, 1);
@@ -134,7 +134,7 @@ UINT32 rungun_state::screen_update_rng(screen_device &screen, bitmap_ind16 &bitm
m_k055673->k053247_sprites_draw(bitmap, cliprect);
m_k053936->zoom_draw(screen, bitmap, cliprect, m_936_tilemap[m_current_display_bank], 0, 0, 1);
}
-
+
m_ttl_tilemap[m_current_display_bank]->draw(screen, bitmap, cliprect, 0, 0);
return 0;
@@ -174,5 +174,5 @@ void rungun_state::sprite_dma_trigger(void)
// TODO: size could be programmable somehow.
for(int i=0;i<0x1000;i+=2)
- m_k055673->k053247_word_w(space,i/2,m_banked_ram[(i + src_address) /2],0xffff);
+ m_k055673->k053247_word_w(space,i/2,m_banked_ram[(i + src_address) /2],0xffff);
}
diff --git a/src/mame/video/scotrsht.cpp b/src/mame/video/scotrsht.cpp
index 686b676e53b..fbf294c654b 100644
--- a/src/mame/video/scotrsht.cpp
+++ b/src/mame/video/scotrsht.cpp
@@ -67,8 +67,8 @@ WRITE8_MEMBER(scotrsht_state::palettebank_w)
m_bg_tilemap->mark_all_dirty();
}
- coin_counter_w(machine(), 0, data & 1);
- coin_counter_w(machine(), 1, data & 2);
+ machine().bookkeeping().coin_counter_w(0, data & 1);
+ machine().bookkeeping().coin_counter_w(1, data & 2);
// data & 4 unknown
}
diff --git a/src/mame/video/sega16sp.cpp b/src/mame/video/sega16sp.cpp
index cb92a10a212..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)
{
@@ -1281,7 +1282,7 @@ void sega_yboard_sprite_device::draw(bitmap_ind16 &bitmap, const rectangle &clip
set_origin(m_xoffs, m_yoffs);
// clear out any scanlines we might be using
- const UINT16 *rotatebase = m_segaic16_rotate[0].buffer ? m_segaic16_rotate[0].buffer : m_segaic16_rotate[0].rotateram;
+ const UINT16 *rotatebase = m_segaic16_rotate[0].buffer ? m_segaic16_rotate[0].buffer.get() : m_segaic16_rotate[0].rotateram;
rotatebase -= yorigin();
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
if (!(rotatebase[y & ~1] & 0xc000))
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/segaic16.cpp b/src/mame/video/segaic16.cpp
index f76ec9bebfc..b551707645e 100644
--- a/src/mame/video/segaic16.cpp
+++ b/src/mame/video/segaic16.cpp
@@ -1359,10 +1359,10 @@ void segaic16_video_device::rotate_init(int which, int type, int colorbase)
}
/* allocate a buffer for swapping */
- info->buffer = auto_alloc_array(machine(), UINT16, info->ramsize/2);
+ info->buffer = std::make_unique<UINT16[]>(info->ramsize/2);
save_item(NAME(info->colorbase), which);
- save_pointer(NAME((UINT8 *) info->buffer), info->ramsize, which);
+ save_pointer(NAME((UINT8 *) info->buffer.get()), info->ramsize, which);
}
@@ -1443,7 +1443,7 @@ READ16_MEMBER( segaic16_video_device::rotate_control_r )
if (info->buffer)
{
UINT32 *src = (UINT32 *)info->rotateram;
- UINT32 *dst = (UINT32 *)info->buffer;
+ UINT32 *dst = (UINT32 *)info->buffer.get();
int i;
/* swap the halves of the rotation RAM */
diff --git a/src/mame/video/segaic16.h b/src/mame/video/segaic16.h
index 4564f547d43..ff0c4f754e1 100644
--- a/src/mame/video/segaic16.h
+++ b/src/mame/video/segaic16.h
@@ -81,7 +81,7 @@ struct rotate_info
UINT16 colorbase; /* base color index */
INT32 ramsize; /* size of rotate RAM */
UINT16 * rotateram; /* pointer to rotateram pointer */
- UINT16 * buffer; /* buffered data */
+ std::unique_ptr<UINT16[]> buffer; /* buffered data */
};
diff --git a/src/mame/video/segaic16_road.cpp b/src/mame/video/segaic16_road.cpp
index 85bce272f65..699370ac0c6 100644
--- a/src/mame/video/segaic16_road.cpp
+++ b/src/mame/video/segaic16_road.cpp
@@ -80,13 +80,13 @@ void segaic16_road_device::segaic16_road_hangon_decode(running_machine &machine,
int len = memregion("^gfx3")->bytes();
/* allocate memory for the unpacked road data */
- info->gfx = auto_alloc_array(machine, UINT8, 256 * 512);
+ info->gfx = std::make_unique<UINT8[]>(256 * 512);
/* loop over rows */
for (y = 0; y < 256; y++)
{
const UINT8 *src = gfx + ((y & 0xff) * 0x40) % len;
- UINT8 *dst = info->gfx + y * 512;
+ UINT8 *dst = info->gfx.get() + y * 512;
/* loop over columns */
for (x = 0; x < 512; x++)
@@ -120,7 +120,7 @@ static void segaic16_road_hangon_draw(struct road_info *info, bitmap_ind16 &bitm
continue;
/* compute the offset of the road graphics for this line */
- src = info->gfx + (0x000 + (control & 0xff)) * 512;
+ src = info->gfx.get() + (0x000 + (control & 0xff)) * 512;
/* initialize the 4-bit counter at 9M, which counts bits within each road byte */
ctr9m = hpos & 7;
@@ -341,13 +341,13 @@ void segaic16_road_device::segaic16_road_outrun_decode(running_machine &machine,
int len = memregion("^gfx3")->bytes();
/* allocate memory for the unpacked road data */
- info->gfx = auto_alloc_array(machine, UINT8, (256 * 2 + 1) * 512);
+ info->gfx = std::make_unique<UINT8[]>((256 * 2 + 1) * 512);
/* loop over rows */
for (y = 0; y < 256 * 2; y++)
{
const UINT8 *src = gfx + ((y & 0xff) * 0x40 + (y >> 8) * 0x8000) % len;
- UINT8 *dst = info->gfx + y * 512;
+ UINT8 *dst = info->gfx.get() + y * 512;
/* loop over columns */
for (x = 0; x < 512; x++)
@@ -361,13 +361,13 @@ void segaic16_road_device::segaic16_road_outrun_decode(running_machine &machine,
}
/* set up a dummy road in the last entry */
- memset(info->gfx + 256 * 2 * 512, 3, 512);
+ memset(info->gfx.get() + 256 * 2 * 512, 3, 512);
}
static void segaic16_road_outrun_draw(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
- UINT16 *roadram = info->buffer;
+ UINT16 *roadram = info->buffer.get();
int x, y;
/* loop over scanlines */
@@ -442,12 +442,12 @@ static void segaic16_road_outrun_draw(struct road_info *info, bitmap_ind16 &bitm
continue;
/* get road 0 data */
- src0 = (data0 & 0x800) ? info->gfx + 256 * 2 * 512 : (info->gfx + (0x000 + ((data0 >> 1) & 0xff)) * 512);
+ src0 = (data0 & 0x800) ? info->gfx.get() + 256 * 2 * 512 : (info->gfx.get() + (0x000 + ((data0 >> 1) & 0xff)) * 512);
hpos0 = (roadram[0x200 + ((info->control & 4) ? y : (data0 & 0x1ff))]) & 0xfff;
color0 = roadram[0x600 + ((info->control & 4) ? y : (data0 & 0x1ff))];
/* get road 1 data */
- src1 = (data1 & 0x800) ? info->gfx + 256 * 2 * 512 : (info->gfx + (0x100 + ((data1 >> 1) & 0xff)) * 512);
+ src1 = (data1 & 0x800) ? info->gfx.get() + 256 * 2 * 512 : (info->gfx.get() + (0x100 + ((data1 >> 1) & 0xff)) * 512);
hpos1 = (roadram[0x400 + ((info->control & 4) ? (0x100 + y) : (data1 & 0x1ff))]) & 0xfff;
color1 = roadram[0x600 + ((info->control & 4) ? (0x100 + y) : (data1 & 0x1ff))];
@@ -573,7 +573,7 @@ void segaic16_road_device::segaic16_road_init(running_machine &machine, int whic
case SEGAIC16_ROAD_OUTRUN:
case SEGAIC16_ROAD_XBOARD:
- info->buffer = auto_alloc_array(machine, UINT16, 0x1000/2);
+ info->buffer = std::make_unique<UINT16[]>(0x1000/2);
info->draw = segaic16_road_outrun_draw;
segaic16_road_outrun_decode(machine, info);
break;
@@ -612,7 +612,7 @@ READ16_MEMBER( segaic16_road_device::segaic16_road_control_0_r )
if (info->buffer)
{
UINT32 *src = (UINT32 *)info->roadram;
- UINT32 *dst = (UINT32 *)info->buffer;
+ UINT32 *dst = (UINT32 *)info->buffer.get();
int i;
/* swap the halves of the road RAM */
diff --git a/src/mame/video/segaic16_road.h b/src/mame/video/segaic16_road.h
index a124c210928..c37bb5ef279 100644
--- a/src/mame/video/segaic16_road.h
+++ b/src/mame/video/segaic16_road.h
@@ -32,8 +32,8 @@ struct road_info
INT32 xoffs; /* X scroll offset */
void (*draw)(struct road_info *info, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority);
UINT16 * roadram; /* pointer to roadram pointer */
- UINT16 * buffer; /* buffered roadram pointer */
- UINT8 * gfx; /* expanded road graphics */
+ std::unique_ptr<UINT16[]> buffer; /* buffered roadram pointer */
+ std::unique_ptr<UINT8[]> gfx; /* expanded road graphics */
};
diff --git a/src/mame/video/segaic24.cpp b/src/mame/video/segaic24.cpp
index 27be4638793..57c848287dc 100644
--- a/src/mame/video/segaic24.cpp
+++ b/src/mame/video/segaic24.cpp
@@ -104,8 +104,8 @@ void segas24_tile::device_start()
break;
assert(char_gfx_index != MAX_GFX_ELEMENTS);
- char_ram = auto_alloc_array(machine(), UINT16, 0x80000/2);
- tile_ram = auto_alloc_array(machine(), UINT16, 0x10000/2);
+ char_ram = std::make_unique<UINT16[]>(0x80000/2);
+ tile_ram = std::make_unique<UINT16[]>(0x10000/2);
tile_layer[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(segas24_tile::tile_info_0s),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
tile_layer[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(segas24_tile::tile_info_0w),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
@@ -117,13 +117,13 @@ void segas24_tile::device_start()
tile_layer[2]->set_transparent_pen(0);
tile_layer[3]->set_transparent_pen(0);
- memset(char_ram, 0, 0x80000);
- memset(tile_ram, 0, 0x10000);
+ memset(char_ram.get(), 0, 0x80000);
+ memset(tile_ram.get(), 0, 0x10000);
- m_gfxdecode->set_gfx(char_gfx_index, global_alloc(gfx_element(m_palette, char_layout, (UINT8 *)char_ram, NATIVE_ENDIAN_VALUE_LE_BE(8,0), m_palette->entries() / 16, 0)));
+ m_gfxdecode->set_gfx(char_gfx_index, std::make_unique<gfx_element>(m_palette, char_layout, (UINT8 *)char_ram.get(), NATIVE_ENDIAN_VALUE_LE_BE(8,0), m_palette->entries() / 16, 0));
- save_pointer(NAME(tile_ram), 0x10000/2);
- save_pointer(NAME(char_ram), 0x80000/2);
+ save_pointer(NAME(tile_ram.get()), 0x10000/2);
+ save_pointer(NAME(char_ram.get()), 0x80000/2);
}
void segas24_tile::draw_rect(screen_device &screen, bitmap_ind16 &bm, bitmap_ind8 &tm, bitmap_ind16 &dm, const UINT16 *mask,
@@ -378,7 +378,7 @@ void segas24_tile::draw_common(screen_device &screen, _BitmapClass &bitmap, cons
UINT16 hscr = tile_ram[0x5000+(layer >> 1)];
UINT16 vscr = tile_ram[0x5004+(layer >> 1)];
UINT16 ctrl = tile_ram[0x5004+((layer >> 1) & 2)];
- UINT16 *mask = tile_ram + (layer & 4 ? 0x6800 : 0x6000);
+ UINT16 *mask = tile_ram.get() + (layer & 4 ? 0x6800 : 0x6000);
UINT16 tpri = layer & 1;
lpri = 1 << lpri;
@@ -397,7 +397,7 @@ void segas24_tile::draw_common(screen_device &screen, _BitmapClass &bitmap, cons
tile_layer[layer|1]->set_scrolly(0, vscr & 0x1ff);
if(hscr & 0x8000) {
- UINT16 *hscrtb = tile_ram + 0x4000 + 0x200*layer;
+ UINT16 *hscrtb = tile_ram.get() + 0x4000 + 0x200*layer;
switch((ctrl & 0x6000) >> 13) {
case 1: {
@@ -500,7 +500,7 @@ void segas24_tile::draw_common(screen_device &screen, _BitmapClass &bitmap, cons
if(hscr & 0x8000) {
int y;
- UINT16 *hscrtb = tile_ram + 0x4000 + 0x200*layer;
+ UINT16 *hscrtb = tile_ram.get() + 0x4000 + 0x200*layer;
vscr &= 0x1ff;
for(y=0; y<384; y++) {
@@ -566,7 +566,7 @@ READ16_MEMBER(segas24_tile::char_r)
WRITE16_MEMBER(segas24_tile::tile_w)
{
- COMBINE_DATA(tile_ram + offset);
+ COMBINE_DATA(tile_ram.get() + offset);
if(offset < 0x4000)
tile_layer[offset >> 12]->mark_tile_dirty(offset & 0xfff);
}
@@ -574,7 +574,7 @@ WRITE16_MEMBER(segas24_tile::tile_w)
WRITE16_MEMBER(segas24_tile::char_w)
{
UINT16 old = char_ram[offset];
- COMBINE_DATA(char_ram + offset);
+ COMBINE_DATA(char_ram.get() + offset);
if(old != char_ram[offset])
m_gfxdecode->gfx(char_gfx_index)->mark_dirty(offset / 16);
}
@@ -609,9 +609,9 @@ segas24_sprite::segas24_sprite(const machine_config &mconfig, const char *tag, d
void segas24_sprite::device_start()
{
- sprite_ram = auto_alloc_array(machine(), UINT16, 0x40000/2);
+ sprite_ram = std::make_unique<UINT16[]>(0x40000/2);
- save_pointer(NAME(sprite_ram), 0x40000/2);
+ save_pointer(NAME(sprite_ram.get()), 0x40000/2);
}
/* System24 sprites
@@ -655,7 +655,7 @@ void segas24_sprite::draw(bitmap_ind16 &bitmap, const rectangle &cliprect, bitma
UINT16 *source;
UINT16 type;
- source = sprite_ram + (curspr << 3);
+ source = sprite_ram.get() + (curspr << 3);
if(curspr == 0 && source[0] == 0)
break;
@@ -838,7 +838,7 @@ void segas24_sprite::draw(bitmap_ind16 &bitmap, const rectangle &cliprect, bitma
WRITE16_MEMBER(segas24_sprite::write)
{
- COMBINE_DATA(sprite_ram + offset);
+ COMBINE_DATA(sprite_ram.get() + offset);
}
READ16_MEMBER(segas24_sprite::read)
diff --git a/src/mame/video/segaic24.h b/src/mame/video/segaic24.h
index b311ec55506..51165e32ac1 100644
--- a/src/mame/video/segaic24.h
+++ b/src/mame/video/segaic24.h
@@ -58,7 +58,8 @@ private:
SYS24_TILES = 0x4000
};
- UINT16 *char_ram, *tile_ram;
+ std::unique_ptr<UINT16[]> char_ram;
+ std::unique_ptr<UINT16[]> tile_ram;
int char_gfx_index;
tilemap_t *tile_layer[4];
UINT16 tile_mask;
@@ -98,7 +99,7 @@ protected:
virtual void device_start() override;
private:
- UINT16 *sprite_ram;
+ std::unique_ptr<UINT16[]> sprite_ram;
};
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/segas32.cpp b/src/mame/video/segas32.cpp
index ed05f3df3c6..9466a0bb2d4 100644
--- a/src/mame/video/segas32.cpp
+++ b/src/mame/video/segas32.cpp
@@ -219,7 +219,7 @@ void segas32_state::common_start(int multi32)
m_is_multi32 = multi32;
/* allocate a copy of spriteram in 32-bit format */
- m_spriteram_32bit = auto_alloc_array(machine(), UINT32, 0x20000/4);
+ m_spriteram_32bit = std::make_unique<UINT32[]>(0x20000/4);
/* allocate the tilemap cache */
m_cache_head = nullptr;
@@ -239,15 +239,13 @@ void segas32_state::common_start(int multi32)
/* allocate the bitmaps (a few extra for multi32) */
for (tmap = 0; tmap < 9 + 2 * multi32; tmap++)
{
- m_layer_data[tmap].bitmap = auto_bitmap_ind16_alloc(machine(), 416, 224);
+ m_layer_data[tmap].bitmap = auto_alloc(machine(), bitmap_ind16(416, 224));
m_layer_data[tmap].transparent = auto_alloc_array_clear(machine(), UINT8, 256);
}
/* allocate pre-rendered solid lines of 0's and ffff's */
- m_solid_0000 = auto_alloc_array(machine(), UINT16, 512);
- memset(m_solid_0000, 0x00, sizeof(m_solid_0000[0]) * 512);
- m_solid_ffff = auto_alloc_array(machine(), UINT16, 512);
- memset(m_solid_ffff, 0xff, sizeof(m_solid_ffff[0]) * 512);
+ m_solid_0000 = make_unique_clear<UINT16[]>(512);
+ m_solid_ffff = make_unique_clear<UINT16[],0xff>(512);
memset(m_system32_videoram, 0x00, 0x20000);
@@ -1703,7 +1701,7 @@ int segas32_state::draw_one_sprite(UINT16 *data, int xoffs, int yoffs, const rec
/* clamp to within the memory region size */
if (fromram)
{
- spritedata = m_spriteram_32bit;
+ spritedata = m_spriteram_32bit.get();
addrmask = (0x20000 / 4) - 1;
}
else
@@ -1974,7 +1972,7 @@ inline UINT16 segas32_state::compute_sprite_blend(UINT8 encoding)
inline UINT16 *segas32_state::get_layer_scanline(int layer, int scanline)
{
if (m_layer_data[layer].transparent[scanline])
- return (layer == MIXER_LAYER_SPRITES) ? m_solid_ffff : m_solid_0000;
+ return (layer == MIXER_LAYER_SPRITES) ? m_solid_ffff.get() : m_solid_0000.get();
return &m_layer_data[layer].bitmap->pix16(scanline);
}
diff --git a/src/mame/video/segaybd.cpp b/src/mame/video/segaybd.cpp
index 2ea2a5c2531..fb649463333 100644
--- a/src/mame/video/segaybd.cpp
+++ b/src/mame/video/segaybd.cpp
@@ -55,7 +55,7 @@ UINT32 segaybd_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
UINT16 *src = &sprites.pix(y);
UINT8 *pri = &screen.priority().pix(y);
-
+
for (int x = rect->min_x; x <= rect->max_x; x++)
{
@@ -67,7 +67,7 @@ UINT32 segaybd_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
// int colpri = ((data[4] & 0xff) << 4) | (((data[1] >> 9) & 0xf) << 12);
// so PPPPppppppppcccc (P = priority p = palette c = colour data)
// for Y board the (((data[1] >> 9) & 0xf) << 12) bit is the part we care about
-
+
// the format of the screen.priority() buffer (populated in rotate_draw) is
// ccc----- Sprite color
diff --git a/src/mame/video/seibu_crtc.cpp b/src/mame/video/seibu_crtc.cpp
index 413fb5468d7..c0a4bdc3872 100644
--- a/src/mame/video/seibu_crtc.cpp
+++ b/src/mame/video/seibu_crtc.cpp
@@ -30,7 +30,8 @@ preliminary memory map:
(screen 3 -> Text layer)
[0x00]: Total number of visible cells?
[0x02]: Single cell H size +1?
-[0x1a]: Layer Dynamic Paging?
+[0x1a]: --x- Layer Dynamic Size?
+ ---x Flip Screen
[0x1c]: Layer Enable
---x ---- sprite enable
---- x--- tilemap screen 3 enable
@@ -151,6 +152,8 @@ List of default vregs (title screen):
100620: 0000 0000 0000 0000 0000 0000 01D8 01FF
100630: 01DA 01FF 01D9 01FF 01D8 01FF 0034 003F
100640: 0000 A8A8 0004 1830 0009 0000 0000 FFFF
+*Godzilla, 320 x 224 (455 x 258 hvtotal)
+100600: 000f 0013 00a0 00d7 00fa 000f 00fa 00ff
*Seibu SPI is a newer CRTC?
00000400: 013F007F - hblank start(-1), hblank length(-1)
@@ -179,7 +182,9 @@ const device_type SEIBU_CRTC = &device_creator<seibu_crtc_device>;
static ADDRESS_MAP_START( seibu_crtc_vregs, AS_0, 16, seibu_crtc_device )
AM_RANGE(0x001c, 0x001d) AM_WRITE(layer_en_w)
+ AM_RANGE(0x001a, 0x001b) AM_WRITE(reg_1a_w)
AM_RANGE(0x0020, 0x002b) AM_WRITE(layer_scroll_w)
+ AM_RANGE(0x002c, 0x003b) AM_WRITE(layer_scroll_base_w)
AM_RANGE(0x0000, 0x004f) AM_RAM // debug
ADDRESS_MAP_END
@@ -195,6 +200,18 @@ WRITE16_MEMBER( seibu_crtc_device::layer_scroll_w)
m_layer_scroll_cb(offset,data,mem_mask);
}
+WRITE16_MEMBER( seibu_crtc_device::reg_1a_w)
+{
+ if (!m_reg_1a_cb.isnull())
+ m_reg_1a_cb(offset,data,mem_mask);
+}
+
+WRITE16_MEMBER( seibu_crtc_device::layer_scroll_base_w)
+{
+ if (!m_layer_scroll_base_cb.isnull())
+ m_layer_scroll_base_cb(offset,data,mem_mask);
+}
+
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -209,6 +226,8 @@ seibu_crtc_device::seibu_crtc_device(const machine_config &mconfig, const char *
device_video_interface(mconfig, *this),
m_layer_en_cb(*this),
m_layer_scroll_cb(*this),
+ m_reg_1a_cb(*this),
+ m_layer_scroll_base_cb(*this),
m_space_config("vregs", ENDIANNESS_LITTLE, 16, 7, 0, nullptr, *ADDRESS_MAP_NAME(seibu_crtc_vregs))
{
}
@@ -231,6 +250,8 @@ void seibu_crtc_device::device_start()
{
m_layer_en_cb.resolve();
m_layer_scroll_cb.resolve();
+ m_reg_1a_cb.resolve();
+ m_layer_scroll_base_cb.resolve();
}
diff --git a/src/mame/video/seibu_crtc.h b/src/mame/video/seibu_crtc.h
index abae5ae686d..37f04e31177 100644
--- a/src/mame/video/seibu_crtc.h
+++ b/src/mame/video/seibu_crtc.h
@@ -22,6 +22,12 @@
#define MCFG_SEIBU_CRTC_LAYER_SCROLL_CB(_devcb) \
devcb = &seibu_crtc_device::set_layer_scroll_callback(*device, DEVCB_##_devcb);
+#define MCFG_SEIBU_CRTC_LAYER_SCROLL_BASE_CB(_devcb) \
+ devcb = &seibu_crtc_device::set_layer_scroll_base_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_SEIBU_CRTC_REG_1A_CB(_devcb) \
+ devcb = &seibu_crtc_device::set_reg_1a_callback(*device, DEVCB_##_devcb);
+
//**************************************************************************
// TYPE DEFINITIONS
@@ -39,6 +45,8 @@ public:
template<class _Object> static devcb_base &set_layer_en_callback(device_t &device, _Object object) { return downcast<seibu_crtc_device &>(device).m_layer_en_cb.set_callback(object); }
template<class _Object> static devcb_base &set_layer_scroll_callback(device_t &device, _Object object) { return downcast<seibu_crtc_device &>(device).m_layer_scroll_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_reg_1a_callback(device_t &device, _Object object) { return downcast<seibu_crtc_device &>(device).m_reg_1a_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_layer_scroll_base_callback(device_t &device, _Object object) { return downcast<seibu_crtc_device &>(device).m_layer_scroll_base_cb.set_callback(object); }
// I/O operations
DECLARE_WRITE16_MEMBER( write );
@@ -48,7 +56,9 @@ public:
DECLARE_READ16_MEMBER( read_alt );
DECLARE_READ16_MEMBER( read_xor );
DECLARE_WRITE16_MEMBER(layer_en_w);
+ DECLARE_WRITE16_MEMBER(reg_1a_w);
DECLARE_WRITE16_MEMBER(layer_scroll_w);
+ DECLARE_WRITE16_MEMBER(layer_scroll_base_w);
protected:
// device-level overrides
@@ -60,6 +70,8 @@ protected:
private:
devcb_write16 m_layer_en_cb;
devcb_write16 m_layer_scroll_cb;
+ devcb_write16 m_reg_1a_cb;
+ devcb_write16 m_layer_scroll_base_cb;
const address_space_config m_space_config;
inline UINT16 read_word(offs_t address);
inline void write_word(offs_t address, UINT16 data);
diff --git a/src/mame/video/seibuspi.cpp b/src/mame/video/seibuspi.cpp
index c89a5505f9d..cb267167789 100644
--- a/src/mame/video/seibuspi.cpp
+++ b/src/mame/video/seibuspi.cpp
@@ -224,7 +224,7 @@ WRITE16_MEMBER(seibuspi_state::sprite_dma_start_w)
if (m_video_dma_address < 0x800)
logerror("sprite_dma_start_w in I/O area: %X\n", m_video_dma_address);
- memcpy(m_sprite_ram, &m_mainram[m_video_dma_address / 4], m_sprite_ram_size);
+ memcpy(m_sprite_ram.get(), &m_mainram[m_video_dma_address / 4], m_sprite_ram_size);
}
@@ -603,9 +603,9 @@ void seibuspi_state::video_start()
m_sprite_ram_size = 0x1000;
m_sprite_bpp = 6;
- m_tilemap_ram = auto_alloc_array_clear(machine(), UINT32, m_tilemap_ram_size/4);
- m_palette_ram = auto_alloc_array_clear(machine(), UINT32, m_palette_ram_size/4);
- m_sprite_ram = auto_alloc_array_clear(machine(), UINT32, m_sprite_ram_size/4);
+ m_tilemap_ram = make_unique_clear<UINT32[]>(m_tilemap_ram_size/4);
+ m_palette_ram = make_unique_clear<UINT32[]>(m_palette_ram_size/4);
+ m_sprite_ram = make_unique_clear<UINT32[]>(m_sprite_ram_size/4);
m_text_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(seibuspi_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64,32);
m_back_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(seibuspi_state::get_back_tile_info),this), TILEMAP_SCAN_COLS, 16,16,32,32);
@@ -666,8 +666,8 @@ VIDEO_START_MEMBER(seibuspi_state,sys386f)
m_sprite_bpp = 8;
m_tilemap_ram = nullptr;
- m_palette_ram = auto_alloc_array_clear(machine(), UINT32, m_palette_ram_size/4);
- m_sprite_ram = auto_alloc_array_clear(machine(), UINT32, m_sprite_ram_size/4);
+ m_palette_ram = make_unique_clear<UINT32[]>(m_palette_ram_size/4);
+ m_sprite_ram = make_unique_clear<UINT32[]>(m_sprite_ram_size/4);
memset(m_alpha_table, 0, 0x2000); // no alpha blending
@@ -691,7 +691,7 @@ void seibuspi_state::register_video_state()
save_item(NAME(m_midl_layer_d14));
save_item(NAME(m_fore_layer_d14));
- if (m_tilemap_ram != nullptr) save_pointer(NAME(m_tilemap_ram), m_tilemap_ram_size/4);
- save_pointer(NAME(m_palette_ram), m_palette_ram_size/4);
- save_pointer(NAME(m_sprite_ram), m_sprite_ram_size/4);
+ if (m_tilemap_ram != nullptr) save_pointer(NAME(m_tilemap_ram.get()), m_tilemap_ram_size/4);
+ save_pointer(NAME(m_palette_ram.get()), m_palette_ram_size/4);
+ save_pointer(NAME(m_sprite_ram.get()), m_sprite_ram_size/4);
}
diff --git a/src/mame/video/seta.cpp b/src/mame/video/seta.cpp
index 349fc743f99..8fd54378c0f 100644
--- a/src/mame/video/seta.cpp
+++ b/src/mame/video/seta.cpp
@@ -241,14 +241,14 @@ void seta_state::seta_coin_lockout_w(int data)
}
}
- coin_counter_w (machine(), 0, (( data) >> 0) & 1 );
- coin_counter_w (machine(), 1, (( data) >> 1) & 1 );
+ machine().bookkeeping().coin_counter_w(0, (( data) >> 0) & 1 );
+ machine().bookkeeping().coin_counter_w(1, (( data) >> 1) & 1 );
/* some games haven't the coin lockout device */
if ( !m_coin_lockout )
return;
- coin_lockout_w (machine(), 0, ((~data) >> 2) & 1 );
- coin_lockout_w (machine(), 1, ((~data) >> 3) & 1 );
+ machine().bookkeeping().coin_lockout_w(0, ((~data) >> 2) & 1 );
+ machine().bookkeeping().coin_lockout_w(1, ((~data) >> 3) & 1 );
}
@@ -272,8 +272,8 @@ WRITE16_MEMBER(seta_state::seta_vregs_w)
seta_coin_lockout_w (data & 0x0f);
if (m_x1 != nullptr)
m_x1->enable_w (data & 0x20);
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
}
break;
@@ -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/seta2.cpp b/src/mame/video/seta2.cpp
index d67bb9c12fe..ab279aa5958 100644
--- a/src/mame/video/seta2.cpp
+++ b/src/mame/video/seta2.cpp
@@ -218,7 +218,7 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
// Sprites list
// When debugging, use m_spriteram here, and run mame -update_in_pause
- UINT16 *buffered_spriteram16 = m_buffered_spriteram;
+ UINT16 *buffered_spriteram16 = m_buffered_spriteram.get();
UINT16 *s1 = buffered_spriteram16 + 0x3000/2;
UINT16 *end = &buffered_spriteram16[m_spriteram.bytes()/2];
@@ -450,7 +450,7 @@ void seta2_state::video_start()
m_gfxdecode->gfx(4)->set_granularity(16);
m_gfxdecode->gfx(5)->set_granularity(16);
- m_buffered_spriteram = auto_alloc_array(machine(), UINT16, m_spriteram.bytes()/2);
+ m_buffered_spriteram = std::make_unique<UINT16[]>(m_spriteram.bytes()/2);
m_xoffset = 0;
m_yoffset = 0;
@@ -487,6 +487,6 @@ void seta2_state::screen_eof(screen_device &screen, bool state)
if (state)
{
// Buffer sprites by 1 frame
- memcpy(m_buffered_spriteram, m_spriteram, m_spriteram.bytes());
+ memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes());
}
}
diff --git a/src/mame/video/shadfrce.cpp b/src/mame/video/shadfrce.cpp
index 8b68a623b61..e2359506202 100644
--- a/src/mame/video/shadfrce.cpp
+++ b/src/mame/video/shadfrce.cpp
@@ -68,7 +68,7 @@ void shadfrce_state::video_start()
m_bg1tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_bg1tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32);
- m_spvideoram_old = auto_alloc_array(machine(), UINT16, m_spvideoram.bytes()/2);
+ m_spvideoram_old = std::make_unique<UINT16[]>(m_spvideoram.bytes()/2);
save_item(NAME(m_video_enable));
save_item(NAME(m_irqs_enable));
@@ -118,7 +118,7 @@ void shadfrce_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
*/
gfx_element *gfx = m_gfxdecode->gfx(1);
- UINT16 *finish = m_spvideoram_old;
+ UINT16 *finish = m_spvideoram_old.get();
UINT16 *source = finish + 0x2000/2 - 8;
int hcount;
while( source>=finish )
@@ -173,6 +173,6 @@ void shadfrce_state::screen_eof(screen_device &screen, bool state)
if (state)
{
/* looks like sprites are *two* frames ahead */
- memcpy(m_spvideoram_old, m_spvideoram, m_spvideoram.bytes());
+ memcpy(m_spvideoram_old.get(), m_spvideoram, m_spvideoram.bytes());
}
}
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/sidearms.cpp b/src/mame/video/sidearms.cpp
index ece733b23f2..8b2834d4a87 100644
--- a/src/mame/video/sidearms.cpp
+++ b/src/mame/video/sidearms.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman, Curt Coder
/***************************************************************************
@@ -26,19 +26,19 @@ WRITE8_MEMBER(sidearms_state::colorram_w)
WRITE8_MEMBER(sidearms_state::c804_w)
{
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 and 3 lock the coin chutes */
if (!m_gameid || m_gameid==3)
{
- coin_lockout_w(machine(), 0, !(data & 0x04));
- coin_lockout_w(machine(), 1, !(data & 0x08));
+ machine().bookkeeping().coin_lockout_w(0, !(data & 0x04));
+ machine().bookkeeping().coin_lockout_w(1, !(data & 0x08));
}
else
{
- coin_lockout_w(machine(), 0, data & 0x04);
- coin_lockout_w(machine(), 1, data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, data & 0x04);
+ machine().bookkeeping().coin_lockout_w(1, data & 0x08);
}
/* bit 4 resets the sound CPU */
diff --git a/src/mame/video/simpl156.cpp b/src/mame/video/simpl156.cpp
index 3eff8431aa8..dc79657a1c3 100644
--- a/src/mame/video/simpl156.cpp
+++ b/src/mame/video/simpl156.cpp
@@ -12,23 +12,23 @@
void simpl156_state::video_start()
{
/* allocate the ram as 16-bit (we do it here because the CPU is 32-bit) */
- m_pf1_rowscroll = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_pf2_rowscroll = auto_alloc_array_clear(machine(), UINT16, 0x800/2);
- m_spriteram = auto_alloc_array_clear(machine(), UINT16, 0x2000/2);
+ m_pf1_rowscroll = make_unique_clear<UINT16[]>(0x800/2);
+ m_pf2_rowscroll = make_unique_clear<UINT16[]>(0x800/2);
+ m_spriteram = make_unique_clear<UINT16[]>(0x2000/2);
- memset(m_spriteram, 0xff, 0x2000);
+ memset(m_spriteram.get(), 0xff, 0x2000);
/* and register the allocated ram so that save states still work */
- save_pointer(NAME(m_pf1_rowscroll), 0x800/2);
- save_pointer(NAME(m_pf2_rowscroll), 0x800/2);
- save_pointer(NAME(m_spriteram), 0x2000/2);
+ save_pointer(NAME(m_pf1_rowscroll.get()), 0x800/2);
+ save_pointer(NAME(m_pf2_rowscroll.get()), 0x800/2);
+ save_pointer(NAME(m_spriteram.get()), 0x2000/2);
}
UINT32 simpl156_state::screen_update_simpl156(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
screen.priority().fill(0);
- m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll);
+ m_deco_tilegen1->pf_update(m_pf1_rowscroll.get(), m_pf2_rowscroll.get());
bitmap.fill(256, cliprect);
@@ -38,6 +38,6 @@ UINT32 simpl156_state::screen_update_simpl156(screen_device &screen, bitmap_ind1
//FIXME: flip_screen_x should not be written!
flip_screen_set_no_update(1);
- m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, 0x1400/4); // 0x1400/4 seems right for charlien (doesn't initialize any more RAM, so will draw a garbage 0 with more)
+ m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram.get(), 0x1400/4); // 0x1400/4 seems right for charlien (doesn't initialize any more RAM, so will draw a garbage 0 with more)
return 0;
}
diff --git a/src/mame/video/skydiver.cpp b/src/mame/video/skydiver.cpp
index 435753450c1..c529c2d299f 100644
--- a/src/mame/video/skydiver.cpp
+++ b/src/mame/video/skydiver.cpp
@@ -22,10 +22,10 @@ void skydiver_state::machine_reset()
lamp_k_w(space, 0, 0);
lamp_y_w(space, 0, 0);
lamp_d_w(space, 0, 0);
- output_set_value("lampi", 0);
- output_set_value("lampv", 0);
- output_set_value("lampe", 0);
- output_set_value("lampr", 0);
+ output().set_value("lampi", 0);
+ output().set_value("lampv", 0);
+ output().set_value("lampe", 0);
+ output().set_value("lampr", 0);
width_w(space, 0, 0);
coin_lockout_w(space, 0, 0);
}
@@ -92,39 +92,39 @@ WRITE8_MEMBER(skydiver_state::width_w)
WRITE8_MEMBER(skydiver_state::coin_lockout_w)
{
- coin_lockout_global_w(machine(), !offset);
+ machine().bookkeeping().coin_lockout_global_w(!offset);
}
WRITE8_MEMBER(skydiver_state::start_lamp_1_w)
{
- set_led_status(machine(), 0, offset);
+ output().set_led_value(0, offset);
}
WRITE8_MEMBER(skydiver_state::start_lamp_2_w)
{
- set_led_status(machine(), 1, offset);
+ output().set_led_value(1, offset);
}
WRITE8_MEMBER(skydiver_state::lamp_s_w)
{
- output_set_value("lamps", offset);
+ output().set_value("lamps", offset);
}
WRITE8_MEMBER(skydiver_state::lamp_k_w)
{
- output_set_value("lampk", offset);
+ output().set_value("lampk", offset);
}
WRITE8_MEMBER(skydiver_state::lamp_y_w)
{
- output_set_value("lampy", offset);
+ output().set_value("lampy", offset);
}
WRITE8_MEMBER(skydiver_state::lamp_d_w)
{
- output_set_value("lampd", offset);
+ output().set_value("lampd", offset);
}
WRITE8_MEMBER(skydiver_state::_2000_201F_w)
@@ -136,16 +136,16 @@ WRITE8_MEMBER(skydiver_state::_2000_201F_w)
switch (offset & 0x0e)
{
case (0x02):
- output_set_value("lampi", bit);
+ output().set_value("lampi", bit);
break;
case (0x04):
- output_set_value("lampv", bit);
+ output().set_value("lampv", bit);
break;
case (0x06):
- output_set_value("lampe", bit);
+ output().set_value("lampe", bit);
break;
case (0x08):
- output_set_value("lampr", bit);
+ output().set_value("lampr", bit);
break;
case (0x0a):
m_discrete->write(space, SKYDIVER_OCT1_EN, bit);
diff --git a/src/mame/video/skyraid.cpp b/src/mame/video/skyraid.cpp
index 849f175a8fb..d82515f8b31 100644
--- a/src/mame/video/skyraid.cpp
+++ b/src/mame/video/skyraid.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/slapshot.cpp b/src/mame/video/slapshot.cpp
index f470e3d606b..f6c0220986c 100644
--- a/src/mame/video/slapshot.cpp
+++ b/src/mame/video/slapshot.cpp
@@ -7,8 +7,8 @@
void slapshot_state::video_start()
{
- m_spriteram_delayed = auto_alloc_array(machine(), UINT16, m_spriteram.bytes() / 2);
- m_spriteram_buffered = auto_alloc_array(machine(), UINT16, m_spriteram.bytes() / 2);
+ m_spriteram_delayed = std::make_unique<UINT16[]>(m_spriteram.bytes() / 2);
+ m_spriteram_buffered = std::make_unique<UINT16[]>(m_spriteram.bytes() / 2);
m_spritelist = auto_alloc_array(machine(), struct slapshot_tempsprite, 0x400);
m_sprites_disabled = 1;
@@ -20,8 +20,8 @@ void slapshot_state::video_start()
save_item(NAME(m_sprites_master_scrolly));
save_item(NAME(m_sprites_flipscreen));
save_item(NAME(m_prepare_sprites));
- save_pointer(NAME(m_spriteram_delayed), m_spriteram.bytes() / 2);
- save_pointer(NAME(m_spriteram_buffered), m_spriteram.bytes() / 2);
+ save_pointer(NAME(m_spriteram_delayed.get()), m_spriteram.bytes() / 2);
+ save_pointer(NAME(m_spriteram_buffered.get()), m_spriteram.bytes() / 2);
}
/************************************************************
@@ -374,7 +374,7 @@ void slapshot_state::taito_handle_sprite_buffering( )
{
if (m_prepare_sprites) /* no buffering */
{
- memcpy(m_spriteram_buffered, m_spriteram, m_spriteram.bytes());
+ memcpy(m_spriteram_buffered.get(), m_spriteram, m_spriteram.bytes());
m_prepare_sprites = 0;
}
}
diff --git a/src/mame/video/spacefb.cpp b/src/mame/video/spacefb.cpp
index 154ba917172..bd777efb31d 100644
--- a/src/mame/video/spacefb.cpp
+++ b/src/mame/video/spacefb.cpp
@@ -84,14 +84,14 @@ void spacefb_state::video_start()
width = m_screen->width();
height = m_screen->height();
- m_object_present_map = auto_alloc_array(machine(), UINT8, width * height);
+ m_object_present_map = std::make_unique<UINT8[]>(width * height);
/* this start value positions the stars to match the flyer screen shot,
but most likely, the actual star position is random as the hardware
uses whatever value is on the shift register on power-up */
m_star_shift_reg = 0x18f89;
- save_pointer(NAME(m_object_present_map), width * height);
+ save_pointer(NAME(m_object_present_map.get()), width * height);
save_item(NAME(m_port_0));
save_item(NAME(m_port_2));
save_item(NAME(m_star_shift_reg));
@@ -373,7 +373,7 @@ void spacefb_state::draw_objects(bitmap_rgb32 &bitmap, const rectangle &cliprect
get_sprite_pens(sprite_pens);
- memset(m_object_present_map, 0, bitmap.width() * bitmap.height());
+ memset(m_object_present_map.get(), 0, bitmap.width() * bitmap.height());
while (1)
{
diff --git a/src/mame/video/special.cpp b/src/mame/video/special.cpp
index d868c9efded..f527fbdd2a4 100644
--- a/src/mame/video/special.cpp
+++ b/src/mame/video/special.cpp
@@ -83,7 +83,7 @@ PALETTE_INIT_MEMBER(special_state,specimx)
VIDEO_START_MEMBER(special_state,specimx)
{
- m_specimx_colorram = auto_alloc_array(machine(), UINT8, 0x3000);
+ m_specimx_colorram = std::make_unique<UINT8[]>(0x3000);
}
UINT32 special_state::screen_update_specimx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/sprint4.cpp b/src/mame/video/sprint4.cpp
index c0e0745662c..b32a2479d70 100644
--- a/src/mame/video/sprint4.cpp
+++ b/src/mame/video/sprint4.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/sprint8.cpp b/src/mame/video/sprint8.cpp
index fdbf0b89a4e..e3f7297025a 100644
--- a/src/mame/video/sprint8.cpp
+++ b/src/mame/video/sprint8.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/srumbler.cpp b/src/mame/video/srumbler.cpp
index 540979757e1..2da11d38d41 100644
--- a/src/mame/video/srumbler.cpp
+++ b/src/mame/video/srumbler.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
@@ -87,8 +87,8 @@ WRITE8_MEMBER(srumbler_state::_4009_w)
/* bits 4-5 used during attract mode, unknown */
/* bits 6-7 coin counters */
- coin_counter_w(machine(), 0,data & 0x40);
- coin_counter_w(machine(), 1,data & 0x80);
+ machine().bookkeeping().coin_counter_w(0,data & 0x40);
+ machine().bookkeeping().coin_counter_w(1,data & 0x80);
}
diff --git a/src/mame/video/sspeedr.cpp b/src/mame/video/sspeedr.cpp
index b715da2834b..b73df3b11db 100644
--- a/src/mame/video/sspeedr.cpp
+++ b/src/mame/video/sspeedr.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/ssrj.cpp b/src/mame/video/ssrj.cpp
index e33d7098cbb..3d7e71729a3 100644
--- a/src/mame/video/ssrj.cpp
+++ b/src/mame/video/ssrj.cpp
@@ -226,7 +226,7 @@ void ssrj_state::video_start()
m_tilemap2->set_transparent_pen(0);
m_tilemap4->set_transparent_pen(0);
- m_buffer_spriteram = auto_alloc_array(machine(), UINT8, 0x0800);
+ m_buffer_spriteram = std::make_unique<UINT8[]>(0x0800);
}
@@ -289,6 +289,6 @@ void ssrj_state::screen_eof(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_buffer_spriteram, m_scrollram, 0x800);
+ memcpy(m_buffer_spriteram.get(), m_scrollram, 0x800);
}
}
diff --git a/src/mame/video/ssv.cpp b/src/mame/video/ssv.cpp
index 775697804d1..d9ceb4a71c9 100644
--- a/src/mame/video/ssv.cpp
+++ b/src/mame/video/ssv.cpp
@@ -207,12 +207,12 @@ VIDEO_START_MEMBER(ssv_state,eaglshot)
{
ssv_state::video_start();
- m_eaglshot_gfxram = auto_alloc_array(machine(), UINT16, 16 * 0x40000 / 2);
+ m_eaglshot_gfxram = std::make_unique<UINT16[]>(16 * 0x40000 / 2);
- m_gfxdecode->gfx(0)->set_source((UINT8 *)m_eaglshot_gfxram);
- m_gfxdecode->gfx(1)->set_source((UINT8 *)m_eaglshot_gfxram);
+ m_gfxdecode->gfx(0)->set_source((UINT8 *)m_eaglshot_gfxram.get());
+ m_gfxdecode->gfx(1)->set_source((UINT8 *)m_eaglshot_gfxram.get());
- save_pointer(NAME(m_eaglshot_gfxram), 16 * 0x40000 / 2);
+ save_pointer(NAME(m_eaglshot_gfxram.get()), 16 * 0x40000 / 2);
}
TILE_GET_INFO_MEMBER(ssv_state::get_tile_info_0)
diff --git a/src/mame/video/ssystem3.cpp b/src/mame/video/ssystem3.cpp
index a755dff5a4b..34af1e027ae 100644
--- a/src/mame/video/ssystem3.cpp
+++ b/src/mame/video/ssystem3.cpp
@@ -49,7 +49,7 @@ PALETTE_INIT_MEMBER(ssystem3_state, ssystem3)
void ssystem3_state::video_start()
{
// artwork seams to need this
- m_videoram = auto_alloc_array(machine(), UINT8, 6 * 2 + 24);
+ m_videoram = std::make_unique<UINT8[]>(6 * 2 + 24);
}
diff --git a/src/mame/video/st0020.cpp b/src/mame/video/st0020.cpp
index 29bcee1e161..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,21 +73,34 @@ static const gfx_layout layout_16x8x8_2 =
void st0020_device::device_start()
{
- m_st0020_gfxram = auto_alloc_array_clear(machine(), UINT16, 4 * 0x100000 / 2);
- m_st0020_spriteram = auto_alloc_array_clear(machine(), UINT16, 0x80000 / 2);
- m_st0020_blitram = auto_alloc_array_clear(machine(), UINT16, 0x100 / 2);
+ 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);
for (m_gfx_index = 0; m_gfx_index < MAX_GFX_ELEMENTS; m_gfx_index++)
if (m_gfxdecode->gfx(m_gfx_index) == nullptr)
break;
- m_gfxdecode->set_gfx(m_gfx_index, global_alloc(gfx_element(m_palette, layout_16x8x8_2, (UINT8 *)m_st0020_gfxram, 0, m_palette->entries() / 64, 0)));
+ m_gfxdecode->set_gfx(m_gfx_index, std::make_unique<gfx_element>(m_palette, layout_16x8x8_2, (UINT8 *)m_st0020_gfxram.get(), 0, m_palette->entries() / 64, 0));
m_gfxdecode->gfx(m_gfx_index)->set_granularity(64); /* 256 colour sprites with palette selectable on 64 colour boundaries */
- save_pointer(NAME(m_st0020_gfxram), 4 * 0x100000/2);
- save_pointer(NAME(m_st0020_spriteram), 0x80000/2);
- save_pointer(NAME(m_st0020_blitram), 0x100/2);
+ save_pointer(NAME(m_st0020_gfxram.get()), 4 * 0x100000/2);
+ save_pointer(NAME(m_st0020_spriteram.get()), 0x80000/2);
+ save_pointer(NAME(m_st0020_blitram.get()), 0x100/2);
save_item(NAME(m_st0020_gfxram_bank));
}
@@ -154,7 +167,7 @@ READ16_MEMBER(st0020_device::st0020_blitram_r)
WRITE16_MEMBER(st0020_device::st0020_blit_w)
{
- UINT16 *st0020_blitram = m_st0020_blitram;
+ UINT16 *st0020_blitram = m_st0020_blitram.get();
COMBINE_DATA(&st0020_blitram[offset]);
@@ -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);
@@ -283,7 +293,7 @@ WRITE16_MEMBER(st0020_device::st0020_blitram_w)
void st0020_device::st0020_draw_zooming_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority)
{
/* Sprites list */
- UINT16 *spriteram16_2 = m_st0020_spriteram;
+ UINT16 *spriteram16_2 = m_st0020_spriteram.get();
UINT16 *s1 = spriteram16_2;
UINT16 *end1 = spriteram16_2 + 0x02000/2;
diff --git a/src/mame/video/st0020.h b/src/mame/video/st0020.h
index cff7f8f1f99..33390a8bddc 100644
--- a/src/mame/video/st0020.h
+++ b/src/mame/video/st0020.h
@@ -39,14 +39,16 @@ protected:
private:
int m_st0020_gfxram_bank;
- UINT16* m_st0020_gfxram;
- UINT16* m_st0020_spriteram;
- UINT16* m_st0020_blitram;
+ std::unique_ptr<UINT16[]> m_st0020_gfxram;
+ std::unique_ptr<UINT16[]> m_st0020_spriteram;
+ std::unique_ptr<UINT16[]> m_st0020_blitram;
void st0020_draw_zooming_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority);
DECLARE_READ16_MEMBER(st0020_blit_r);
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/stactics.cpp b/src/mame/video/stactics.cpp
index bd130040de6..4a9cfc89ef0 100644
--- a/src/mame/video/stactics.cpp
+++ b/src/mame/video/stactics.cpp
@@ -291,10 +291,10 @@ void stactics_state::set_indicator_leds(int data, const char *output_name, int b
data = to_7seg[~data & 0x0f];
/* set the 4 LEDs */
- output_set_indexed_value(output_name, base_index + 0, (data >> 2) & 0x01);
- output_set_indexed_value(output_name, base_index + 1, (data >> 6) & 0x01);
- output_set_indexed_value(output_name, base_index + 2, (data >> 5) & 0x01);
- output_set_indexed_value(output_name, base_index + 3, (data >> 4) & 0x01);
+ output().set_indexed_value(output_name, base_index + 0, (data >> 2) & 0x01);
+ output().set_indexed_value(output_name, base_index + 1, (data >> 6) & 0x01);
+ output().set_indexed_value(output_name, base_index + 2, (data >> 5) & 0x01);
+ output().set_indexed_value(output_name, base_index + 3, (data >> 4) & 0x01);
}
@@ -304,13 +304,13 @@ void stactics_state::update_artwork()
UINT8 *beam_region = memregion("user1")->base();
/* set the lamps first */
- output_set_indexed_value("base_lamp", 4, m_lamps[0] & 0x01);
- output_set_indexed_value("base_lamp", 3, m_lamps[1] & 0x01);
- output_set_indexed_value("base_lamp", 2, m_lamps[2] & 0x01);
- output_set_indexed_value("base_lamp", 1, m_lamps[3] & 0x01);
- output_set_indexed_value("base_lamp", 0, m_lamps[4] & 0x01);
- output_set_value("start_lamp", m_lamps[5] & 0x01);
- output_set_value("barrier_lamp", m_lamps[6] & 0x01); /* this needs to flash on/off, not implemented */
+ output().set_indexed_value("base_lamp", 4, m_lamps[0] & 0x01);
+ output().set_indexed_value("base_lamp", 3, m_lamps[1] & 0x01);
+ output().set_indexed_value("base_lamp", 2, m_lamps[2] & 0x01);
+ output().set_indexed_value("base_lamp", 1, m_lamps[3] & 0x01);
+ output().set_indexed_value("base_lamp", 0, m_lamps[4] & 0x01);
+ output().set_value("start_lamp", m_lamps[5] & 0x01);
+ output().set_value("barrier_lamp", m_lamps[6] & 0x01); /* this needs to flash on/off, not implemented */
/* laser beam - loop for each LED */
for (i = 0; i < 0x40; i++)
@@ -319,16 +319,16 @@ void stactics_state::update_artwork()
UINT8 beam_data = beam_region[beam_data_offs];
int on = (beam_data >> (i & 0x07)) & 0x01;
- output_set_indexed_value("beam_led_left", i, on);
- output_set_indexed_value("beam_led_right", i, on);
+ output().set_indexed_value("beam_led_left", i, on);
+ output().set_indexed_value("beam_led_right", i, on);
}
/* sight LED */
- output_set_value("sight_led", *m_motor_on & 0x01);
+ output().set_value("sight_led", *m_motor_on & 0x01);
/* score display */
for (i = 0x01; i < 0x07; i++)
- output_set_digit_value(i - 1, to_7seg[~m_display_buffer[i] & 0x0f]);
+ output().set_digit_value(i - 1, to_7seg[~m_display_buffer[i] & 0x0f]);
/* credits indicator */
set_indicator_leds(m_display_buffer[0x07], "credit_led", 0x00);
diff --git a/src/mame/video/starcrus.cpp b/src/mame/video/starcrus.cpp
index 776632ac165..30505fba694 100644
--- a/src/mame/video/starcrus.cpp
+++ b/src/mame/video/starcrus.cpp
@@ -21,11 +21,11 @@ WRITE8_MEMBER(starcrus_state::p2_y_w){ m_p2_y = data^0xff; }
void starcrus_state::video_start()
{
- m_ship1_vid = auto_bitmap_ind16_alloc(machine(), 16, 16);
- m_ship2_vid = auto_bitmap_ind16_alloc(machine(), 16, 16);
+ m_ship1_vid = std::make_unique<bitmap_ind16>(16, 16);
+ m_ship2_vid = std::make_unique<bitmap_ind16>(16, 16);
- m_proj1_vid = auto_bitmap_ind16_alloc(machine(), 16, 16);
- m_proj2_vid = auto_bitmap_ind16_alloc(machine(), 16, 16);
+ m_proj1_vid = std::make_unique<bitmap_ind16>(16, 16);
+ m_proj2_vid = std::make_unique<bitmap_ind16>(16, 16);
save_item(NAME(m_s1_x));
save_item(NAME(m_s1_y));
@@ -78,8 +78,8 @@ WRITE8_MEMBER(starcrus_state::ship_parm_1_w)
WRITE8_MEMBER(starcrus_state::ship_parm_2_w)
{
m_s2_sprite = data&0x1f;
- set_led_status(machine(), 2,~data & 0x80); /* game over lamp */
- coin_counter_w(machine(), 0, ((data&0x40)>>6)^0x01); /* coin counter */
+ output().set_led_value(2,~data & 0x80); /* game over lamp */
+ machine().bookkeeping().coin_counter_w(0, ((data&0x40)>>6)^0x01); /* coin counter */
m_engine2_on = ((data&0x20)>>5)^0x01;
if (m_engine1_on || m_engine2_on)
diff --git a/src/mame/video/starshp1.cpp b/src/mame/video/starshp1.cpp
index 62065fcb200..dcd9dd4166d 100644
--- a/src/mame/video/starshp1.cpp
+++ b/src/mame/video/starshp1.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Frank Palazzolo, Stefan Jokisch
/***************************************************************************
@@ -64,7 +64,7 @@ void starshp1_state::video_start()
m_bg_tilemap->set_scrollx(0, -8);
- m_LSFR = auto_alloc_array(machine(), UINT16, 0x10000);
+ m_LSFR = std::make_unique<UINT16[]>(0x10000);
for (i = 0; i < 0x10000; i++)
{
@@ -153,7 +153,7 @@ void starshp1_state::draw_starfield(bitmap_ind16 &bitmap)
for (y = 0; y < bitmap.height(); y++)
{
- const UINT16* p = m_LSFR + (UINT16) (512 * y);
+ const UINT16* p = m_LSFR.get() + (UINT16) (512 * y);
UINT16* pLine = &bitmap.pix16(y);
@@ -250,7 +250,7 @@ void starshp1_state::draw_circle_line(bitmap_ind16 &bitmap, int x, int y, int l)
{
if (y >= 0 && y <= bitmap.height() - 1)
{
- const UINT16* p = m_LSFR + (UINT16) (512 * y);
+ const UINT16* p = m_LSFR.get() + (UINT16) (512 * y);
UINT16* pLine = &bitmap.pix16(y);
diff --git a/src/mame/video/suna16.cpp b/src/mame/video/suna16.cpp
index 9698134ad97..6707da55344 100644
--- a/src/mame/video/suna16.cpp
+++ b/src/mame/video/suna16.cpp
@@ -93,7 +93,7 @@ WRITE16_MEMBER(suna16_state::bestbest_flipscreen_w)
void suna16_state::video_start()
{
- m_paletteram = auto_alloc_array(machine(), UINT16, m_palette->entries());
+ m_paletteram = std::make_unique<UINT16[]>(m_palette->entries());
save_item(NAME(m_color_bank));
}
diff --git a/src/mame/video/super80.cpp b/src/mame/video/super80.cpp
index 5adb90c170c..fc209ddaeb8 100644
--- a/src/mame/video/super80.cpp
+++ b/src/mame/video/super80.cpp
@@ -69,7 +69,7 @@ UINT32 super80_state::screen_update_super80(screen_device &screen, bitmap_ind16
UINT8 y,ra,chr=32,gfx,screen_on=0;
UINT16 sy=0,ma=m_vidpg,x;
- output_set_value("cass_led",BIT(m_portf0, 5));
+ output().set_value("cass_led",BIT(m_portf0, 5));
if ((BIT(m_portf0, 2)) | (!BIT(m_io_config->read(), 2))) /* bit 2 of port F0 is high, OR user turned on config switch */
screen_on++;
@@ -109,7 +109,7 @@ UINT32 super80_state::screen_update_super80d(screen_device &screen, bitmap_ind16
UINT8 y,ra,chr=32,gfx,screen_on=0;
UINT16 sy=0,ma=m_vidpg,x;
- output_set_value("cass_led",BIT(m_portf0, 5));
+ output().set_value("cass_led",BIT(m_portf0, 5));
if ((BIT(m_portf0, 2)) | (!BIT(m_io_config->read(), 2))) /* bit 2 of port F0 is high, OR user turned on config switch */
screen_on++;
@@ -149,7 +149,7 @@ UINT32 super80_state::screen_update_super80e(screen_device &screen, bitmap_ind16
UINT8 y,ra,chr=32,gfx,screen_on=0;
UINT16 sy=0,ma=m_vidpg,x;
- output_set_value("cass_led",BIT(m_portf0, 5));
+ output().set_value("cass_led",BIT(m_portf0, 5));
if ((BIT(m_portf0, 2)) | (!BIT(m_io_config->read(), 2))) /* bit 2 of port F0 is high, OR user turned on config switch */
screen_on++;
@@ -193,7 +193,7 @@ UINT32 super80_state::screen_update_super80m(screen_device &screen, bitmap_ind16
/* get selected character generator */
UINT8 cgen = m_current_charset ^ ((options & 0x10)>>4); /* bit 0 of port F1 and cgen config switch */
- output_set_value("cass_led",BIT(m_portf0, 5));
+ output().set_value("cass_led",BIT(m_portf0, 5));
if ((BIT(m_portf0, 2)) | (!BIT(options, 2))) /* bit 2 of port F0 is high, OR user turned on config switch */
screen_on++;
@@ -354,7 +354,7 @@ VIDEO_START_MEMBER(super80_state,super80v)
UINT32 super80_state::screen_update_super80v(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_s_options=m_io_config->read();
- output_set_value("cass_led",BIT(m_portf0, 5));
+ output().set_value("cass_led",BIT(m_portf0, 5));
m_crtc->screen_update(screen, bitmap, cliprect);
return 0;
}
diff --git a/src/mame/video/superchs.cpp b/src/mame/video/superchs.cpp
index fe42cfbdd9b..b7a76d89aff 100644
--- a/src/mame/video/superchs.cpp
+++ b/src/mame/video/superchs.cpp
@@ -5,7 +5,7 @@
void superchs_state::video_start()
{
- m_spritelist = auto_alloc_array(machine(), struct schs_tempsprite, 0x4000);
+ m_spritelist = std::make_unique<schs_tempsprite[]>(0x4000);
}
/************************************************************
@@ -67,7 +67,7 @@ void superchs_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
while processing sprite ram and then draw them all at the end */
- struct schs_tempsprite *sprite_ptr = m_spritelist;
+ struct schs_tempsprite *sprite_ptr = m_spritelist.get();
for (offs = (m_spriteram.bytes()/4-4);offs >= 0;offs -= 4)
{
@@ -179,7 +179,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
}
/* this happens only if primsks != NULL */
- while (sprite_ptr != m_spritelist)
+ while (sprite_ptr != m_spritelist.get())
{
sprite_ptr--;
diff --git a/src/mame/video/superqix.cpp b/src/mame/video/superqix.cpp
index d2c08c13d96..042d1f77536 100644
--- a/src/mame/video/superqix.cpp
+++ b/src/mame/video/superqix.cpp
@@ -56,8 +56,8 @@ VIDEO_START_MEMBER(superqix_state,pbillian)
VIDEO_START_MEMBER(superqix_state,superqix)
{
- m_fg_bitmap[0] = auto_bitmap_ind16_alloc(machine(), 256, 256);
- m_fg_bitmap[1] = auto_bitmap_ind16_alloc(machine(), 256, 256);
+ m_fg_bitmap[0] = std::make_unique<bitmap_ind16>(256, 256);
+ m_fg_bitmap[1] = std::make_unique<bitmap_ind16>(256, 256);
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(superqix_state::sqix_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_bg_tilemap->set_transmask(0,0xffff,0x0000); /* split type 0 is totally transparent in front half */
@@ -131,8 +131,8 @@ WRITE8_MEMBER(superqix_state::pbillian_0410_w)
--5----- flip screen
*/
- coin_counter_w(machine(), 0,data & 0x02);
- coin_counter_w(machine(), 1,data & 0x04);
+ machine().bookkeeping().coin_counter_w(0,data & 0x02);
+ machine().bookkeeping().coin_counter_w(1,data & 0x04);
membank("bank1")->set_entry((data & 0x08) >> 3);
diff --git a/src/mame/video/suprloco.cpp b/src/mame/video/suprloco.cpp
index bb6496f07d8..e2614c70cc2 100644
--- a/src/mame/video/suprloco.cpp
+++ b/src/mame/video/suprloco.cpp
@@ -143,8 +143,8 @@ WRITE8_MEMBER(suprloco_state::control_w)
/*logerror("Bit 4 = %d\n", (data >> 4) & 1); */
}
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
flip_screen_set(data & 0x80);
diff --git a/src/mame/video/system1.cpp b/src/mame/video/system1.cpp
index 85dd664f3b9..28b772beafc 100644
--- a/src/mame/video/system1.cpp
+++ b/src/mame/video/system1.cpp
@@ -121,19 +121,19 @@ void system1_state::video_start_common(int pagecount)
int pagenum;
/* allocate memory for the collision arrays */
- m_mix_collide = auto_alloc_array_clear(machine(), UINT8, 64);
- m_sprite_collide = auto_alloc_array_clear(machine(), UINT8, 1024);
+ m_mix_collide = make_unique_clear<UINT8[]>(64);
+ m_sprite_collide = make_unique_clear<UINT8[]>(1024);
/* allocate memory for videoram */
m_tilemap_pages = pagecount;
- m_videoram = auto_alloc_array_clear(machine(), UINT8, 0x800 * pagecount);
+ m_videoram = make_unique_clear<UINT8[]>(0x800 * pagecount);
/* create the tilemap pages */
for (pagenum = 0; pagenum < pagecount; pagenum++)
{
m_tilemap_page[pagenum] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(system1_state::tile_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32);
m_tilemap_page[pagenum]->set_transparent_pen(0);
- m_tilemap_page[pagenum]->set_user_data(m_videoram + 0x800 * pagenum);
+ m_tilemap_page[pagenum]->set_user_data(m_videoram.get() + 0x800 * pagenum);
}
/* allocate a temporary bitmap for sprite rendering */
@@ -144,9 +144,9 @@ void system1_state::video_start_common(int pagecount)
save_item(NAME(m_mix_collide_summary));
save_item(NAME(m_sprite_collide_summary));
save_item(NAME(m_videoram_bank));
- save_pointer(NAME(m_videoram), 0x800 * pagecount);
- save_pointer(NAME(m_mix_collide), 64);
- save_pointer(NAME(m_sprite_collide), 1024);
+ save_pointer(NAME(m_videoram.get()), 0x800 * pagecount);
+ save_pointer(NAME(m_mix_collide.get()), 64);
+ save_pointer(NAME(m_sprite_collide.get()), 1024);
}
@@ -263,7 +263,7 @@ inline void system1_state::videoram_wait_states(cpu_device *cpu)
READ8_MEMBER(system1_state::system1_videoram_r)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
videoram_wait_states(m_maincpu);
offset |= 0x1000 * ((m_videoram_bank >> 1) % (m_tilemap_pages / 2));
return videoram[offset];
@@ -271,7 +271,7 @@ READ8_MEMBER(system1_state::system1_videoram_r)
WRITE8_MEMBER(system1_state::system1_videoram_w)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
videoram_wait_states(m_maincpu);
offset |= 0x1000 * ((m_videoram_bank >> 1) % (m_tilemap_pages / 2));
videoram[offset] = data;
@@ -550,7 +550,7 @@ void system1_state::video_update_common(screen_device &screen, bitmap_ind16 &bit
UINT32 system1_state::screen_update_system1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
bitmap_ind16 *bgpixmaps[4];
int bgrowscroll[32];
int xscroll, yscroll;
@@ -585,7 +585,7 @@ UINT32 system1_state::screen_update_system1(screen_device &screen, bitmap_ind16
UINT32 system1_state::screen_update_system2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
bitmap_ind16 *bgpixmaps[4];
int rowscroll[32];
int xscroll, yscroll;
@@ -627,7 +627,7 @@ UINT32 system1_state::screen_update_system2(screen_device &screen, bitmap_ind16
UINT32 system1_state::screen_update_system2_rowscroll(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
bitmap_ind16 *bgpixmaps[4];
int rowscroll[32];
int yscroll;
diff --git a/src/mame/video/tagteam.cpp b/src/mame/video/tagteam.cpp
index 6a6f7358d9a..d49788328fb 100644
--- a/src/mame/video/tagteam.cpp
+++ b/src/mame/video/tagteam.cpp
@@ -123,8 +123,8 @@ WRITE8_MEMBER(tagteam_state::flipscreen_w)
}
// d6/7: coin counters
- coin_counter_w(machine(), 0, data & 0x80);
- coin_counter_w(machine(), 1, data & 0x40);
+ machine().bookkeeping().coin_counter_w(0, data & 0x80);
+ machine().bookkeeping().coin_counter_w(1, data & 0x40);
}
TILE_GET_INFO_MEMBER(tagteam_state::get_bg_tile_info)
diff --git a/src/mame/video/taito_b.cpp b/src/mame/video/taito_b.cpp
index 0583938da2f..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"
@@ -39,8 +39,8 @@ WRITE16_MEMBER(taitob_state::realpunc_video_ctrl_w)
VIDEO_START_MEMBER(taitob_state,taitob_core)
{
- m_framebuffer[0] = auto_bitmap_ind16_alloc(machine(), 512, 256);
- m_framebuffer[1] = auto_bitmap_ind16_alloc(machine(), 512, 256);
+ m_framebuffer[0] = std::make_unique<bitmap_ind16>(512, 256);
+ m_framebuffer[1] = std::make_unique<bitmap_ind16>(512, 256);
m_pixel_bitmap = nullptr; /* only hitice needs this */
save_item(NAME(m_pixel_scroll));
@@ -86,7 +86,7 @@ VIDEO_START_MEMBER(taitob_state,hitice)
m_b_fg_color_base = 0x80; /* hitice also uses this for the pixel_bitmap */
- m_pixel_bitmap = auto_bitmap_ind16_alloc(machine(), 1024, 512);
+ m_pixel_bitmap = std::make_unique<bitmap_ind16>(1024, 512);
save_item(NAME(*m_pixel_bitmap));
}
@@ -100,7 +100,7 @@ VIDEO_RESET_MEMBER(taitob_state,hitice)
VIDEO_START_MEMBER(taitob_state,realpunc)
{
- m_realpunc_bitmap = auto_bitmap_ind16_alloc(machine(), m_screen->width(), m_screen->height());
+ m_realpunc_bitmap = std::make_unique<bitmap_ind16>(m_screen->width(), m_screen->height());
VIDEO_START_CALL_MEMBER(taitob_color_order0);
}
diff --git a/src/mame/video/taito_f2.cpp b/src/mame/video/taito_f2.cpp
index 76672f2e0c5..85aa44d8839 100644
--- a/src/mame/video/taito_f2.cpp
+++ b/src/mame/video/taito_f2.cpp
@@ -34,9 +34,9 @@ void taitof2_state::taitof2_core_vh_start (int sprite_type, int hide, int flip_h
m_hide_pixels = hide;
m_flip_hide_pixels = flip_hide;
- m_spriteram_delayed = auto_alloc_array_clear(machine(), UINT16, m_spriteram.bytes() / 2);
- m_spriteram_buffered = auto_alloc_array_clear(machine(), UINT16, m_spriteram.bytes() / 2);
- m_spritelist = auto_alloc_array_clear(machine(), struct f2_tempsprite, 0x400);
+ m_spriteram_delayed = make_unique_clear<UINT16[]>(m_spriteram.bytes() / 2);
+ m_spriteram_buffered = make_unique_clear<UINT16[]>(m_spriteram.bytes() / 2);
+ m_spritelist = make_unique_clear<struct f2_tempsprite[]>(0x400);
for (i = 0; i < 8; i ++)
{
@@ -67,8 +67,8 @@ void taitof2_state::taitof2_core_vh_start (int sprite_type, int hide, int flip_h
save_item(NAME(m_spritepri));
save_item(NAME(m_spriteblendmode));
save_item(NAME(m_prepare_sprites));
- save_pointer(NAME(m_spriteram_delayed), m_spriteram.bytes() / 2);
- save_pointer(NAME(m_spriteram_buffered), m_spriteram.bytes() / 2);
+ save_pointer(NAME(m_spriteram_delayed.get()), m_spriteram.bytes() / 2);
+ save_pointer(NAME(m_spriteram_buffered.get()), m_spriteram.bytes() / 2);
}
/**************************************************************************************/
@@ -487,7 +487,7 @@ void taitof2_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
while processing sprite ram and then draw them all at the end */
- struct f2_tempsprite *sprite_ptr = m_spritelist;
+ struct f2_tempsprite *sprite_ptr = m_spritelist.get();
/* must remember enable status from last frame because driftout fails to
reactivate them from a certain point onwards. */
@@ -775,7 +775,7 @@ void taitof2_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, c
/* this happens only if primsks != NULL */
- while (sprite_ptr != m_spritelist)
+ while (sprite_ptr != m_spritelist.get())
{
sprite_ptr--;
@@ -820,7 +820,7 @@ void taitof2_state::taitof2_handle_sprite_buffering( )
{
if (m_prepare_sprites) /* no buffering */
{
- memcpy(m_spriteram_buffered, m_spriteram, m_spriteram.bytes());
+ memcpy(m_spriteram_buffered.get(), m_spriteram, m_spriteram.bytes());
m_prepare_sprites = 0;
}
}
@@ -892,10 +892,10 @@ void taitof2_state::screen_eof_taitof2_full_buffer_delayed(screen_device &screen
taitof2_update_sprites_active_area();
m_prepare_sprites = 0;
- memcpy(m_spriteram_buffered, m_spriteram_delayed, m_spriteram.bytes());
+ memcpy(m_spriteram_buffered.get(), m_spriteram_delayed.get(), m_spriteram.bytes());
for (i = 0; i < m_spriteram.bytes() / 2; i++)
m_spriteram_buffered[i] = spriteram[i];
- memcpy(m_spriteram_delayed, spriteram, m_spriteram.bytes());
+ memcpy(m_spriteram_delayed.get(), spriteram, m_spriteram.bytes());
}
}
@@ -910,10 +910,10 @@ void taitof2_state::screen_eof_taitof2_partial_buffer_delayed(screen_device &scr
taitof2_update_sprites_active_area();
m_prepare_sprites = 0;
- memcpy(m_spriteram_buffered, m_spriteram_delayed, m_spriteram.bytes());
+ memcpy(m_spriteram_buffered.get(), m_spriteram_delayed.get(), m_spriteram.bytes());
for (i = 0;i < m_spriteram.bytes() / 2; i += 4)
m_spriteram_buffered[i] = spriteram[i];
- memcpy(m_spriteram_delayed, spriteram, m_spriteram.bytes());
+ memcpy(m_spriteram_delayed.get(), spriteram, m_spriteram.bytes());
}
}
@@ -928,14 +928,14 @@ void taitof2_state::screen_eof_taitof2_partial_buffer_delayed_thundfox(screen_de
taitof2_update_sprites_active_area();
m_prepare_sprites = 0;
- memcpy(m_spriteram_buffered, m_spriteram_delayed, m_spriteram.bytes());
+ memcpy(m_spriteram_buffered.get(), m_spriteram_delayed.get(), m_spriteram.bytes());
for (i = 0; i < m_spriteram.bytes() / 2; i += 8)
{
m_spriteram_buffered[i] = spriteram[i];
m_spriteram_buffered[i + 1] = spriteram[i + 1];
m_spriteram_buffered[i + 4] = spriteram[i + 4];
}
- memcpy(m_spriteram_delayed, spriteram, m_spriteram.bytes());
+ memcpy(m_spriteram_delayed.get(), spriteram, m_spriteram.bytes());
}
}
@@ -953,7 +953,7 @@ void taitof2_state::screen_eof_taitof2_partial_buffer_delayed_qzchikyu(screen_de
taitof2_update_sprites_active_area();
m_prepare_sprites = 0;
- memcpy(m_spriteram_buffered, m_spriteram_delayed, m_spriteram.bytes());
+ memcpy(m_spriteram_buffered.get(), m_spriteram_delayed.get(), m_spriteram.bytes());
for (i = 0; i < m_spriteram.bytes() / 2; i += 8)
{
m_spriteram_buffered[i] = spriteram[i];
@@ -963,7 +963,7 @@ void taitof2_state::screen_eof_taitof2_partial_buffer_delayed_qzchikyu(screen_de
m_spriteram_buffered[i + 6] = spriteram[i + 6]; // not needed?
m_spriteram_buffered[i + 7] = spriteram[i + 7]; // not needed?
}
- memcpy(m_spriteram_delayed, spriteram, m_spriteram.bytes());
+ memcpy(m_spriteram_delayed.get(), spriteram, m_spriteram.bytes());
}
}
diff --git a/src/mame/video/taito_f3.cpp b/src/mame/video/taito_f3.cpp
index 973e6b364cc..97b93fafdab 100644
--- a/src/mame/video/taito_f3.cpp
+++ b/src/mame/video/taito_f3.cpp
@@ -327,7 +327,7 @@ pri_alp_bitmap
void taito_f3_state::print_debug_info(bitmap_rgb32 &bitmap)
{
- UINT16 *f3_line_ram = m_f3_line_ram;
+ UINT16 *f3_line_ram = m_f3_line_ram.get();
int l[16];
char buf[64*16];
char *bufptr = buf;
@@ -509,15 +509,15 @@ void taito_f3_state::screen_eof_f3(screen_device &screen, bool state)
{
if (machine().video().skip_this_frame() == 0)
{
- get_sprite_info(m_spriteram16_buffered);
+ get_sprite_info(m_spriteram16_buffered.get());
}
- memcpy(m_spriteram16_buffered,m_spriteram,0x10000);
+ memcpy(m_spriteram16_buffered.get(),m_spriteram.get(),0x10000);
}
else if (m_sprite_lag==1)
{
if (machine().video().skip_this_frame() == 0)
{
- get_sprite_info(m_spriteram);
+ get_sprite_info(m_spriteram.get());
}
}
}
@@ -563,12 +563,12 @@ VIDEO_START_MEMBER(taito_f3_state,f3)
m_f3_game_config=pCFG;
- m_f3_vram = auto_alloc_array_clear(machine(), UINT16, 0x2000/2);
- m_f3_pf_data = auto_alloc_array_clear(machine(), UINT16, 0xc000/2);
- m_videoram = auto_alloc_array_clear(machine(), UINT16, 0x2000/2);
- m_f3_line_ram = auto_alloc_array_clear(machine(), UINT16, 0x10000/2);
- m_f3_pivot_ram = auto_alloc_array_clear(machine(), UINT16, 0x10000/2);
- m_spriteram = auto_alloc_array_clear(machine(), UINT16, 0x10000/2);
+ m_f3_vram = make_unique_clear<UINT16[]>(0x2000/2);
+ m_f3_pf_data = make_unique_clear<UINT16[]>(0xc000/2);
+ m_videoram = make_unique_clear<UINT16[]>(0x2000/2);
+ m_f3_line_ram = make_unique_clear<UINT16[]>(0x10000/2);
+ m_f3_pivot_ram = make_unique_clear<UINT16[]>(0x10000/2);
+ m_spriteram = make_unique_clear<UINT16[]>(0x10000/2);
if (m_f3_game_config->extend) {
m_pf1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,16,16,64,32);
@@ -576,10 +576,10 @@ VIDEO_START_MEMBER(taito_f3_state,f3)
m_pf3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,16,16,64,32);
m_pf4_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info4),this),TILEMAP_SCAN_ROWS,16,16,64,32);
- m_f3_pf_data_1=m_f3_pf_data+(0x0000/2);
- m_f3_pf_data_2=m_f3_pf_data+(0x2000/2);
- m_f3_pf_data_3=m_f3_pf_data+(0x4000/2);
- m_f3_pf_data_4=m_f3_pf_data+(0x6000/2);
+ m_f3_pf_data_1=m_f3_pf_data.get()+(0x0000/2);
+ m_f3_pf_data_2=m_f3_pf_data.get()+(0x2000/2);
+ m_f3_pf_data_3=m_f3_pf_data.get()+(0x4000/2);
+ m_f3_pf_data_4=m_f3_pf_data.get()+(0x6000/2);
m_width_mask=0x3ff;
m_twidth_mask=0x7f;
@@ -601,14 +601,14 @@ VIDEO_START_MEMBER(taito_f3_state,f3)
m_pf7_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info7),this),TILEMAP_SCAN_ROWS,16,16,32,32);
m_pf8_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info8),this),TILEMAP_SCAN_ROWS,16,16,32,32);
- m_f3_pf_data_1=m_f3_pf_data+(0x0000/2);
- m_f3_pf_data_2=m_f3_pf_data+(0x1000/2);
- m_f3_pf_data_3=m_f3_pf_data+(0x2000/2);
- m_f3_pf_data_4=m_f3_pf_data+(0x3000/2);
- m_f3_pf_data_5=m_f3_pf_data+(0x4000/2);
- m_f3_pf_data_6=m_f3_pf_data+(0x5000/2);
- m_f3_pf_data_7=m_f3_pf_data+(0x6000/2);
- m_f3_pf_data_8=m_f3_pf_data+(0x7000/2);
+ m_f3_pf_data_1=m_f3_pf_data.get()+(0x0000/2);
+ m_f3_pf_data_2=m_f3_pf_data.get()+(0x1000/2);
+ m_f3_pf_data_3=m_f3_pf_data.get()+(0x2000/2);
+ m_f3_pf_data_4=m_f3_pf_data.get()+(0x3000/2);
+ m_f3_pf_data_5=m_f3_pf_data.get()+(0x4000/2);
+ m_f3_pf_data_6=m_f3_pf_data.get()+(0x5000/2);
+ m_f3_pf_data_7=m_f3_pf_data.get()+(0x6000/2);
+ m_f3_pf_data_8=m_f3_pf_data.get()+(0x7000/2);
m_width_mask=0x1ff;
m_twidth_mask=0x3f;
@@ -624,7 +624,7 @@ VIDEO_START_MEMBER(taito_f3_state,f3)
m_pf8_tilemap->set_transparent_pen(0);
}
- m_spriteram16_buffered = auto_alloc_array(machine(), UINT16, 0x10000/2);
+ m_spriteram16_buffered = std::make_unique<UINT16[]>(0x10000/2);
m_spritelist = auto_alloc_array(machine(), struct tempsprite, 0x400);
m_sprite_end = m_spritelist;
m_vram_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info_vram),this),TILEMAP_SCAN_ROWS,8,8,64,64);
@@ -632,9 +632,9 @@ VIDEO_START_MEMBER(taito_f3_state,f3)
m_pf_line_inf = auto_alloc_array(machine(), struct f3_playfield_line_inf, 5);
m_sa_line_inf = auto_alloc_array(machine(), struct f3_spritealpha_line_inf, 1);
m_screen->register_screen_bitmap(m_pri_alp_bitmap);
- m_tile_opaque_sp = auto_alloc_array(machine(), UINT8, m_gfxdecode->gfx(2)->elements());
+ m_tile_opaque_sp = std::make_unique<UINT8[]>(m_gfxdecode->gfx(2)->elements());
for (i=0; i<8; i++)
- m_tile_opaque_pf[i] = auto_alloc_array(machine(), UINT8, m_gfxdecode->gfx(1)->elements());
+ m_tile_opaque_pf[i] = std::make_unique<UINT8[]>(m_gfxdecode->gfx(1)->elements());
m_vram_layer->set_transparent_pen(0);
@@ -646,14 +646,14 @@ VIDEO_START_MEMBER(taito_f3_state,f3)
m_gfxdecode->gfx(2)->set_granularity(16);
m_flipscreen = 0;
- memset(m_spriteram16_buffered,0,0x10000);
- memset(m_spriteram,0,0x10000);
+ memset(m_spriteram16_buffered.get(),0,0x10000);
+ memset(m_spriteram.get(),0,0x10000);
save_item(NAME(m_f3_control_0));
save_item(NAME(m_f3_control_1));
- m_gfxdecode->gfx(0)->set_source((UINT8 *)m_f3_vram);
- m_gfxdecode->gfx(3)->set_source((UINT8 *)m_f3_pivot_ram);
+ m_gfxdecode->gfx(0)->set_source((UINT8 *)m_f3_vram.get());
+ m_gfxdecode->gfx(3)->set_source((UINT8 *)m_f3_pivot_ram.get());
m_f3_skip_this_frame=0;
@@ -3172,7 +3172,7 @@ UINT32 taito_f3_state::screen_update_f3(screen_device &screen, bitmap_rgb32 &bit
/* sprites */
if (m_sprite_lag==0)
- get_sprite_info(m_spriteram);
+ get_sprite_info(m_spriteram.get());
/* Update sprite buffer */
draw_sprites(bitmap,cliprect);
diff --git a/src/mame/video/taitoair.cpp b/src/mame/video/taitoair.cpp
index 65b70726f44..9f9aed421a8 100644
--- a/src/mame/video/taitoair.cpp
+++ b/src/mame/video/taitoair.cpp
@@ -502,9 +502,9 @@ void taitoair_state::video_start()
width = m_screen->width();
height = m_screen->height();
- m_framebuffer[0] = auto_bitmap_ind16_alloc(machine(), width, height);
- m_framebuffer[1] = auto_bitmap_ind16_alloc(machine(), width, height);
- //m_buffer3d = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_framebuffer[0] = std::make_unique<bitmap_ind16>(width, height);
+ m_framebuffer[1] = std::make_unique<bitmap_ind16>(width, height);
+ //m_buffer3d = std::make_unique<bitmap_ind16>(width, height);
}
UINT32 taitoair_state::screen_update_taitoair(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/taitojc.cpp b/src/mame/video/taitojc.cpp
index ecca7b3ff0e..4b08a7493c6 100644
--- a/src/mame/video/taitojc.cpp
+++ b/src/mame/video/taitojc.cpp
@@ -63,13 +63,13 @@ READ32_MEMBER(taitojc_state::taitojc_char_r)
WRITE32_MEMBER(taitojc_state::taitojc_tile_w)
{
- COMBINE_DATA(m_tile_ram + offset);
+ COMBINE_DATA(m_tile_ram.get() + offset);
m_tilemap->mark_tile_dirty(offset);
}
WRITE32_MEMBER(taitojc_state::taitojc_char_w)
{
- COMBINE_DATA(m_char_ram + offset);
+ COMBINE_DATA(m_char_ram.get() + offset);
m_gfxdecode->gfx(m_gfx_index)->mark_dirty(offset/32);
}
@@ -313,19 +313,11 @@ void taitojc_state::video_start()
m_tilemap->set_transparent_pen(0);
- m_char_ram = auto_alloc_array_clear(machine(), UINT32, 0x4000/4);
- m_tile_ram = auto_alloc_array_clear(machine(), UINT32, 0x4000/4);
+ m_char_ram = make_unique_clear<UINT32[]>(0x4000/4);
+ m_tile_ram = make_unique_clear<UINT32[]>(0x4000/4);
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_gfx_index, global_alloc(gfx_element(m_palette, taitojc_char_layout, (UINT8 *)m_char_ram, 0, m_palette->entries() / 16, 0)));
-
- m_texture = auto_alloc_array(machine(), UINT8, 0x400000);
-
- m_screen->register_screen_bitmap(m_framebuffer);
- m_screen->register_screen_bitmap(m_zbuffer);
-
- /* create renderer */
- m_renderer = auto_alloc(machine(), taitojc_renderer(machine(), &m_framebuffer, &m_zbuffer, m_texture));
+ m_gfxdecode->set_gfx(m_gfx_index, std::make_unique<gfx_element>(m_palette, taitojc_char_layout, (UINT8 *)m_char_ram.get(), 0, m_palette->entries() / 16, 0));
}
UINT32 taitojc_state::screen_update_taitojc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -338,7 +330,7 @@ UINT32 taitojc_state::screen_update_taitojc(screen_device &screen, bitmap_ind16
draw_object_bank(bitmap, cliprect, 2, 0);
// 3D layer
- copybitmap_trans(bitmap, m_framebuffer, 0, 0, 0, 0, cliprect, 0);
+ m_tc0780fpa->draw(bitmap, cliprect);
// high priority objects
draw_object_bank(bitmap, cliprect, 0, 1);
@@ -363,408 +355,15 @@ UINT32 taitojc_state::screen_update_dendego(screen_device &screen, bitmap_ind16
for (level = 5; level > 0; level--)
if (btn == dendego_mascon_table[level]) break;
- if (level != output_get_value("counter0"))
- output_set_value("counter0", level);
+ if (level != output().get_value("counter0"))
+ output().set_value("counter0", level);
btn = m_analog_ports[0]->read() & 0xff;
for (level = 10; level > 0; level--)
if (btn >= dendego_brake_table[level]) break;
- if (level != output_get_value("counter1"))
- output_set_value("counter1", level);
+ if (level != output().get_value("counter1"))
+ output().set_value("counter1", level);
return screen_update_taitojc(screen, bitmap, cliprect);
}
-
-
-
-void taitojc_renderer::render_solid_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid)
-{
- float z = extent.param[0].start;
- int color = extent.param[1].start;
- float dz = extent.param[0].dpdx;
- UINT16 *fb = &m_framebuffer->pix16(scanline);
- UINT16 *zb = &m_zbuffer->pix16(scanline);
-
- for (int x = extent.startx; x < extent.stopx; x++)
- {
- int iz = (int)z & 0xffff;
-
- if (iz <= zb[x])
- {
- fb[x] = color;
- zb[x] = iz;
- }
-
- z += dz;
- }
-}
-
-void taitojc_renderer::render_shade_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid)
-{
- float z = extent.param[0].start;
- float color = extent.param[1].start;
- float dz = extent.param[0].dpdx;
- float dcolor = extent.param[1].dpdx;
- UINT16 *fb = &m_framebuffer->pix16(scanline);
- UINT16 *zb = &m_zbuffer->pix16(scanline);
-
- for (int x = extent.startx; x < extent.stopx; x++)
- {
- int ic = (int)color & 0xffff;
- int iz = (int)z & 0xffff;
-
- if (iz <= zb[x])
- {
- fb[x] = ic;
- zb[x] = iz;
- }
-
- color += dcolor;
- z += dz;
- }
-}
-
-void taitojc_renderer::render_texture_scan(INT32 scanline, const extent_t &extent, const taitojc_polydata &extradata, int threadid)
-{
- float z = extent.param[0].start;
- float u = extent.param[1].start;
- float v = extent.param[2].start;
- float color = extent.param[3].start;
- float dz = extent.param[0].dpdx;
- float du = extent.param[1].dpdx;
- float dv = extent.param[2].dpdx;
- float dcolor = extent.param[3].dpdx;
- UINT16 *fb = &m_framebuffer->pix16(scanline);
- UINT16 *zb = &m_zbuffer->pix16(scanline);
- int tex_wrap_x = extradata.tex_wrap_x;
- int tex_wrap_y = extradata.tex_wrap_y;
- int tex_base_x = extradata.tex_base_x;
- int tex_base_y = extradata.tex_base_y;
-
- for (int x = extent.startx; x < extent.stopx; x++)
- {
- int iu, iv;
- UINT8 texel;
- int palette = ((int)color & 0x7f) << 8;
- int iz = (int)z & 0xffff;
-
- if (!tex_wrap_x)
- {
- iu = ((int)u >> 4) & 0x7ff;
- }
- else
- {
- iu = (tex_base_x + (((int)u >> 4) & 0x3f)) & 0x7ff;
- }
-
- if (!tex_wrap_y)
- {
- iv = ((int)v >> 4) & 0x7ff;
- }
- else
- {
- iv = (tex_base_y + (((int)v >> 4) & 0x3f)) & 0x7ff;
- }
-
- texel = m_texture[(iv * 2048) + iu];
-
- if (iz <= zb[x] && texel != 0)
- {
- fb[x] = palette | texel;
- zb[x] = iz;
- }
-
- u += du;
- v += dv;
- color += dcolor;
- z += dz;
- }
-}
-
-void taitojc_renderer::render_polygons(UINT16 *polygon_fifo, int length)
-{
- const rectangle visarea = machine().first_screen()->visible_area();
- vertex_t vert[4];
- int i;
- int ptr;
-
- ptr = 0;
- while (ptr < length)
- {
- UINT16 cmd = polygon_fifo[ptr++];
-
- switch (cmd & 0x7)
- {
- // screen global clipping for 3d(?)
- case 0x00:
- {
- UINT16 min_x,min_y,min_z,max_x,max_y,max_z;
-
- min_x = polygon_fifo[ptr+1];
- min_y = polygon_fifo[ptr+0];
- min_z = polygon_fifo[ptr+2];
- max_x = polygon_fifo[ptr+4];
- max_y = polygon_fifo[ptr+3];
- max_z = polygon_fifo[ptr+5];
-
- /* let's check if we need to implement this ... */
- if(min_x != 0 || min_y != 0 || min_z != 0 || max_x != 512 || max_y != 400 || max_z != 0x7fff)
- {
- printf("CMD %04x\n",cmd);
- printf("MIN Y %04x\n",polygon_fifo[ptr+0]);
- printf("MIN X %04x\n",polygon_fifo[ptr+1]);
- printf("MIN Z %04x\n",polygon_fifo[ptr+2]);
- printf("MAX Y %04x\n",polygon_fifo[ptr+3]);
- printf("MAX X %04x\n",polygon_fifo[ptr+4]);
- printf("MAX Z %04x\n",polygon_fifo[ptr+5]);
- }
- ptr += 6;
- break;
- }
-
- // Gouraud Shaded Triangle (Landing Gear)
- case 0x01:
- {
- // 0x00: Command ID (0x0001)
- // 0x01: Vertex 1 color
- // 0x02: Vertex 1 Y
- // 0x03: Vertex 1 X
- // 0x04: Vertex 1 Z
- // 0x05: Vertex 2 color
- // 0x06: Vertex 2 Y
- // 0x07: Vertex 2 X
- // 0x08: Vertex 2 Z
- // 0x09: Vertex 3 color
- // 0x0a: Vertex 3 Y
- // 0x0b: Vertex 3 X
- // 0x0c: Vertex 3 Z
-
-#if 0
- printf("CMD1: ");
- for (i=0; i < 0x0c; i++)
- {
- printf("%04X ", polygon_fifo[ptr+i]);
- }
- printf("\n");
-#endif
-
- for (i=0; i < 3; i++)
- {
- vert[i].p[1] = polygon_fifo[ptr++];
- vert[i].y = (INT16)(polygon_fifo[ptr++]);
- vert[i].x = (INT16)(polygon_fifo[ptr++]);
- vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
- }
-
- if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
- {
- if (vert[0].p[1] == vert[1].p[1] &&
- vert[1].p[1] == vert[2].p[1])
- {
- // optimization: all colours the same -> render solid
- render_triangle(visarea, render_delegate(FUNC(taitojc_renderer::render_solid_scan), this), 2, vert[0], vert[1], vert[2]);
- }
- else
- {
- render_triangle(visarea, render_delegate(FUNC(taitojc_renderer::render_shade_scan), this), 2, vert[0], vert[1], vert[2]);
- }
- }
- break;
- }
-
- // Textured Triangle
- case 0x03:
- {
- // 0x00: Command ID (0x0003)
- // 0x01: Texture base
- // 0x02: Vertex 1 Palette
- // 0x03: Vertex 1 V
- // 0x04: Vertex 1 U
- // 0x05: Vertex 1 Y
- // 0x06: Vertex 1 X
- // 0x07: Vertex 1 Z
- // 0x08: Vertex 2 Palette
- // 0x09: Vertex 2 V
- // 0x0a: Vertex 2 U
- // 0x0b: Vertex 2 Y
- // 0x0c: Vertex 2 X
- // 0x0d: Vertex 2 Z
- // 0x0e: Vertex 3 Palette
- // 0x0f: Vertex 3 V
- // 0x10: Vertex 3 U
- // 0x11: Vertex 3 Y
- // 0x12: Vertex 3 X
- // 0x13: Vertex 3 Z
-
-#if 0
- printf("CMD3: ");
- for (i=0; i < 0x13; i++)
- {
- printf("%04X ", polygon_fifo[ptr+i]);
- }
- printf("\n");
-#endif
-
- taitojc_polydata &extra = object_data_alloc();
- UINT16 texbase = polygon_fifo[ptr++];
-
- extra.tex_base_x = ((texbase >> 0) & 0xff) << 4;
- extra.tex_base_y = ((texbase >> 8) & 0xff) << 4;
-
- extra.tex_wrap_x = (cmd & 0xc0) ? 1 : 0;
- extra.tex_wrap_y = (cmd & 0x30) ? 1 : 0;
-
- for (i=0; i < 3; i++)
- {
- vert[i].p[3] = polygon_fifo[ptr++] + 0.5; // palette
- vert[i].p[2] = (UINT16)(polygon_fifo[ptr++]);
- vert[i].p[1] = (UINT16)(polygon_fifo[ptr++]);
- vert[i].y = (INT16)(polygon_fifo[ptr++]);
- vert[i].x = (INT16)(polygon_fifo[ptr++]);
- vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
- }
-
- if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
- {
- render_triangle(visarea, render_delegate(FUNC(taitojc_renderer::render_texture_scan), this), 4, vert[0], vert[1], vert[2]);
- }
- break;
- }
-
- // Gouraud shaded Quad
- case 0x04:
- {
- // 0x00: Command ID (0x0004)
- // 0x01: Vertex 1 color
- // 0x02: Vertex 1 Y
- // 0x03: Vertex 1 X
- // 0x04: Vertex 1 Z
- // 0x05: Vertex 2 color
- // 0x06: Vertex 2 Y
- // 0x07: Vertex 2 X
- // 0x08: Vertex 2 Z
- // 0x09: Vertex 3 color
- // 0x0a: Vertex 3 Y
- // 0x0b: Vertex 3 X
- // 0x0c: Vertex 3 Z
- // 0x0d: Vertex 4 color
- // 0x0e: Vertex 4 Y
- // 0x0f: Vertex 4 X
- // 0x10: Vertex 4 Z
-
-#if 0
- printf("CMD4: ");
- for (i=0; i < 0x10; i++)
- {
- printf("%04X ", polygon_fifo[ptr+i]);
- }
- printf("\n");
-#endif
-
- for (i=0; i < 4; i++)
- {
- vert[i].p[1] = polygon_fifo[ptr++];
- vert[i].y = (INT16)(polygon_fifo[ptr++]);
- vert[i].x = (INT16)(polygon_fifo[ptr++]);
- vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
- }
-
- if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000 && vert[3].p[0] < 0x8000)
- {
- if (vert[0].p[1] == vert[1].p[1] &&
- vert[1].p[1] == vert[2].p[1] &&
- vert[2].p[1] == vert[3].p[1])
- {
- // optimization: all colours the same -> render solid
- render_polygon<4>(visarea, render_delegate(FUNC(taitojc_renderer::render_solid_scan), this), 2, vert);
- }
- else
- {
- render_polygon<4>(visarea, render_delegate(FUNC(taitojc_renderer::render_shade_scan), this), 2, vert);
- }
- }
- break;
- }
-
- // Textured Quad
- case 0x06:
- {
- // 0x00: Command ID (0x0006)
- // 0x01: Texture base
- // 0x02: Vertex 1 Palette
- // 0x03: Vertex 1 V
- // 0x04: Vertex 1 U
- // 0x05: Vertex 1 Y
- // 0x06: Vertex 1 X
- // 0x07: Vertex 1 Z
- // 0x08: Vertex 2 Palette
- // 0x09: Vertex 2 V
- // 0x0a: Vertex 2 U
- // 0x0b: Vertex 2 Y
- // 0x0c: Vertex 2 X
- // 0x0d: Vertex 2 Z
- // 0x0e: Vertex 3 Palette
- // 0x0f: Vertex 3 V
- // 0x10: Vertex 3 U
- // 0x11: Vertex 3 Y
- // 0x12: Vertex 3 X
- // 0x13: Vertex 3 Z
- // 0x14: Vertex 4 Palette
- // 0x15: Vertex 4 V
- // 0x16: Vertex 4 U
- // 0x17: Vertex 4 Y
- // 0x18: Vertex 4 X
- // 0x19: Vertex 4 Z
-
-#if 0
- printf("CMD6: ");
- for (i=0; i < 0x19; i++)
- {
- printf("%04X ", polygon_fifo[ptr+i]);
- }
- printf("\n");
-#endif
-
- taitojc_polydata &extra = object_data_alloc();
- UINT16 texbase = polygon_fifo[ptr++];
-
- extra.tex_base_x = ((texbase >> 0) & 0xff) << 4;
- extra.tex_base_y = ((texbase >> 8) & 0xff) << 4;
-
- extra.tex_wrap_x = (cmd & 0xc0) ? 1 : 0;
- extra.tex_wrap_y = (cmd & 0x30) ? 1 : 0;
-
- for (i=0; i < 4; i++)
- {
- vert[i].p[3] = polygon_fifo[ptr++] + 0.5; // palette
- vert[i].p[2] = (UINT16)(polygon_fifo[ptr++]);
- vert[i].p[1] = (UINT16)(polygon_fifo[ptr++]);
- vert[i].y = (INT16)(polygon_fifo[ptr++]);
- vert[i].x = (INT16)(polygon_fifo[ptr++]);
- vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
- }
-
- if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000 && vert[3].p[0] < 0x8000)
- {
- render_polygon<4>(visarea, render_delegate(FUNC(taitojc_renderer::render_texture_scan), this), 4, vert);
- }
- break;
- }
-
- default:
- {
- printf("render_polygons: unknown command %04X %d\n", cmd,ptr);
- break;
- }
- }
- }
-
- wait("Finished render");
-}
-
-void taitojc_state::taitojc_clear_frame()
-{
- m_framebuffer.fill(0, m_screen->visible_area());
- m_zbuffer.fill(0xffff, m_screen->visible_area());
-}
diff --git a/src/mame/video/tank8.cpp b/src/mame/video/tank8.cpp
index 52af82e0724..62736fbac84 100644
--- a/src/mame/video/tank8.cpp
+++ b/src/mame/video/tank8.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
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/taotaido.cpp b/src/mame/video/taotaido.cpp
index 994174bdbb2..21eaa685afc 100644
--- a/src/mame/video/taotaido.cpp
+++ b/src/mame/video/taotaido.cpp
@@ -100,11 +100,11 @@ void taotaido_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(taotaido_state::bg_tile_info),this),tilemap_mapper_delegate(FUNC(taotaido_state::tilemap_scan_rows),this),16,16,128,64);
- m_spriteram_old = auto_alloc_array(machine(), UINT16, 0x2000/2);
- m_spriteram_older = auto_alloc_array(machine(), UINT16, 0x2000/2);
+ m_spriteram_old = std::make_unique<UINT16[]>(0x2000/2);
+ m_spriteram_older = std::make_unique<UINT16[]>(0x2000/2);
- m_spriteram2_old = auto_alloc_array(machine(), UINT16, 0x10000/2);
- m_spriteram2_older = auto_alloc_array(machine(), UINT16, 0x10000/2);
+ m_spriteram2_old = std::make_unique<UINT16[]>(0x10000/2);
+ m_spriteram2_older = std::make_unique<UINT16[]>(0x10000/2);
save_item(NAME(m_sprite_character_bank_select));
save_item(NAME(m_video_bank_select));
@@ -133,7 +133,7 @@ UINT32 taotaido_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
m_bg_tilemap->draw(screen, bitmap, clip, 0,0);
}
- m_spr->draw_sprites(m_spriteram_older, m_spriteram.bytes(), screen, bitmap,cliprect);
+ m_spr->draw_sprites(m_spriteram_older.get(), m_spriteram.bytes(), screen, bitmap,cliprect);
return 0;
}
@@ -144,10 +144,10 @@ void taotaido_state::screen_eof(screen_device &screen, bool state)
{
/* sprites need to be delayed by 2 frames? */
- memcpy(m_spriteram2_older,m_spriteram2_old,0x10000);
- memcpy(m_spriteram2_old,m_spriteram2,0x10000);
+ memcpy(m_spriteram2_older.get(),m_spriteram2_old.get(),0x10000);
+ memcpy(m_spriteram2_old.get(),m_spriteram2,0x10000);
- memcpy(m_spriteram_older,m_spriteram_old,0x2000);
- memcpy(m_spriteram_old,m_spriteram,0x2000);
+ memcpy(m_spriteram_older.get(),m_spriteram_old.get(),0x2000);
+ memcpy(m_spriteram_old.get(),m_spriteram,0x2000);
}
}
diff --git a/src/mame/video/tatsumi.cpp b/src/mame/video/tatsumi.cpp
index 3e150303609..9790b4d3278 100644
--- a/src/mame/video/tatsumi.cpp
+++ b/src/mame/video/tatsumi.cpp
@@ -127,9 +127,9 @@ TILE_GET_INFO_MEMBER(tatsumi_state::get_tile_info_bigfight_1)
VIDEO_START_MEMBER(tatsumi_state,apache3)
{
m_tx_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tatsumi_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
- m_shadow_pen_array = auto_alloc_array_clear(machine(), UINT8, 8192);
+ m_shadow_pen_array = make_unique_clear<UINT8[]>(8192);
m_temp_bitmap.allocate(512, 512);
- m_apache3_road_x_ram = auto_alloc_array(machine(), UINT8, 512);
+ m_apache3_road_x_ram = std::make_unique<UINT8[]>(512);
m_tx_layer->set_transparent_pen(0);
}
@@ -137,12 +137,12 @@ VIDEO_START_MEMBER(tatsumi_state,apache3)
VIDEO_START_MEMBER(tatsumi_state,roundup5)
{
m_tx_layer = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tatsumi_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS,8,8,128,64);
- m_shadow_pen_array = auto_alloc_array_clear(machine(), UINT8, 8192);
- m_roundup5_vram = auto_alloc_array(machine(), UINT16, (0x48000 * 4)/2);
+ m_shadow_pen_array = make_unique_clear<UINT8[]>(8192);
+ m_roundup5_vram = std::make_unique<UINT16[]>((0x48000 * 4)/2);
m_tx_layer->set_transparent_pen(0);
- m_gfxdecode->gfx(1)->set_source((UINT8 *)m_roundup5_vram);
+ m_gfxdecode->gfx(1)->set_source((UINT8 *)m_roundup5_vram.get());
}
VIDEO_START_MEMBER(tatsumi_state,cyclwarr)
@@ -153,7 +153,7 @@ VIDEO_START_MEMBER(tatsumi_state,cyclwarr)
m_layer2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tatsumi_state::get_tile_info_bigfight_1),this),TILEMAP_SCAN_ROWS,8,8,64,512);
m_layer3 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tatsumi_state::get_tile_info_bigfight_1),this),TILEMAP_SCAN_ROWS,8,8,64,512);
- m_shadow_pen_array = auto_alloc_array_clear(machine(), UINT8, 8192);
+ m_shadow_pen_array = make_unique_clear<UINT8[]>(8192);
}
VIDEO_START_MEMBER(tatsumi_state,bigfight)
@@ -163,7 +163,7 @@ VIDEO_START_MEMBER(tatsumi_state,bigfight)
m_layer2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tatsumi_state::get_tile_info_bigfight_1),this),TILEMAP_SCAN_ROWS,8,8,128,256);
m_layer3 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tatsumi_state::get_tile_info_bigfight_1),this),TILEMAP_SCAN_ROWS,8,8,128,256);
- m_shadow_pen_array = auto_alloc_array_clear(machine(), UINT8, 8192);
+ m_shadow_pen_array = make_unique_clear<UINT8[]>(8192);
}
/********************************************************************/
@@ -193,7 +193,7 @@ static inline void roundupt_drawgfxzoomrotate(tatsumi_state *state,
if( gfx )
{
const pen_t *pal = &state->m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
- const UINT8 *shadow_pens = state->m_shadow_pen_array + (gfx->granularity() * (color % gfx->colors()));
+ const UINT8 *shadow_pens = state->m_shadow_pen_array.get() + (gfx->granularity() * (color % gfx->colors()));
const UINT8 *code_base = gfx->get_data(code % gfx->elements());
int block_size = 8 * scalex;
diff --git a/src/mame/video/tc0080vco.cpp b/src/mame/video/tc0080vco.cpp
index 40e7bd34f41..0bf5aec9b62 100644
--- a/src/mame/video/tc0080vco.cpp
+++ b/src/mame/video/tc0080vco.cpp
@@ -174,28 +174,28 @@ void tc0080vco_device::device_start()
m_tilemap[2]->set_transparent_pen(0);
- m_ram = auto_alloc_array_clear(machine(), UINT16, TC0080VCO_RAM_SIZE / 2);
+ m_ram = make_unique_clear<UINT16[]>(TC0080VCO_RAM_SIZE / 2);
- m_char_ram = m_ram + 0x00000 / 2; /* continues at +0x10000 */
- m_tx_ram_0 = m_ram + 0x01000 / 2;
- m_chain_ram_0 = m_ram + 0x00000 / 2; /* only used from +0x2000 */
+ m_char_ram = m_ram.get() + 0x00000 / 2; /* continues at +0x10000 */
+ m_tx_ram_0 = m_ram.get() + 0x01000 / 2;
+ m_chain_ram_0 = m_ram.get() + 0x00000 / 2; /* only used from +0x2000 */
- m_bg0_ram_0 = m_ram + 0x0c000 / 2;
- m_bg1_ram_0 = m_ram + 0x0e000 / 2;
+ m_bg0_ram_0 = m_ram.get() + 0x0c000 / 2;
+ m_bg1_ram_0 = m_ram.get() + 0x0e000 / 2;
- m_tx_ram_1 = m_ram + 0x11000 / 2;
- m_chain_ram_1 = m_ram + 0x10000 / 2; /* only used from +0x12000 */
+ m_tx_ram_1 = m_ram.get() + 0x11000 / 2;
+ m_chain_ram_1 = m_ram.get() + 0x10000 / 2; /* only used from +0x12000 */
- m_bg0_ram_1 = m_ram + 0x1c000 / 2;
- m_bg1_ram_1 = m_ram + 0x1e000 / 2;
- m_bgscroll_ram = m_ram + 0x20000 / 2;
- m_spriteram = m_ram + 0x20400 / 2;
- m_scroll_ram = m_ram + 0x20800 / 2;
+ m_bg0_ram_1 = m_ram.get() + 0x1c000 / 2;
+ m_bg1_ram_1 = m_ram.get() + 0x1e000 / 2;
+ m_bgscroll_ram = m_ram.get() + 0x20000 / 2;
+ m_spriteram = m_ram.get() + 0x20400 / 2;
+ m_scroll_ram = m_ram.get() + 0x20800 / 2;
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_txnum, global_alloc(gfx_element(m_palette, charlayout, (UINT8 *)m_char_ram, 0, 1, 512)));
+ m_gfxdecode->set_gfx(m_txnum, std::make_unique<gfx_element>(m_palette, charlayout, (UINT8 *)m_char_ram, 0, 1, 512));
- save_pointer(NAME(m_ram), TC0080VCO_RAM_SIZE / 2);
+ save_pointer(NAME(m_ram.get()), TC0080VCO_RAM_SIZE / 2);
machine().save().register_postload(save_prepost_delegate(FUNC(tc0080vco_device::postload), this));
}
diff --git a/src/mame/video/tc0080vco.h b/src/mame/video/tc0080vco.h
index 43a259ae483..c842e3a57b5 100644
--- a/src/mame/video/tc0080vco.h
+++ b/src/mame/video/tc0080vco.h
@@ -43,7 +43,7 @@ protected:
private:
// internal state
- UINT16 * m_ram;
+ std::unique_ptr<UINT16[]> m_ram;
UINT16 * m_bg0_ram_0;
UINT16 * m_bg0_ram_1;
UINT16 * m_bg1_ram_0;
diff --git a/src/mame/video/tc0100scn.cpp b/src/mame/video/tc0100scn.cpp
index e63bd9b0c25..eeaf74a7dd4 100644
--- a/src/mame/video/tc0100scn.cpp
+++ b/src/mame/video/tc0100scn.cpp
@@ -284,12 +284,12 @@ void tc0100scn_device::device_start()
m_bg_tilemask = 0xffff; /* Mjnquest has 0x7fff tilemask */
- m_ram = auto_alloc_array_clear(machine(), UINT16, TC0100SCN_RAM_SIZE / 2);
+ m_ram = make_unique_clear<UINT16[]>(TC0100SCN_RAM_SIZE / 2);
set_layer_ptrs();
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_txnum, global_alloc(gfx_element(m_palette, tc0100scn_charlayout, (UINT8 *)m_char_ram, NATIVE_ENDIAN_VALUE_LE_BE(8,0), 256, 0)));
+ m_gfxdecode->set_gfx(m_txnum, std::make_unique<gfx_element>(m_palette, tc0100scn_charlayout, (UINT8 *)m_char_ram, NATIVE_ENDIAN_VALUE_LE_BE(8,0), 256, 0));
gfx_element *gfx = m_gfxdecode->gfx(m_gfxnum);
gfx_element *txt = m_gfxdecode->gfx(m_txnum);
@@ -302,7 +302,7 @@ void tc0100scn_device::device_start()
set_colbanks(0, 0, 0); /* standard values, only Wgp & multiscreen games change them */
/* we call this here, so that they can be modified at video_start*/
- save_pointer(NAME(m_ram), TC0100SCN_RAM_SIZE / 2);
+ save_pointer(NAME(m_ram.get()), TC0100SCN_RAM_SIZE / 2);
save_item(NAME(m_ctrl));
save_item(NAME(m_dblwidth));
save_item(NAME(m_gfxbank));
@@ -390,23 +390,23 @@ void tc0100scn_device::set_layer_ptrs()
{
if (!m_dblwidth)
{
- m_bg_ram = m_ram + 0x0;
- m_tx_ram = m_ram + 0x4000 /2;
- m_char_ram = m_ram + 0x6000 /2;
- m_fg_ram = m_ram + 0x8000 /2;
- m_bgscroll_ram = m_ram + 0xc000 /2;
- m_fgscroll_ram = m_ram + 0xc400 /2;
- m_colscroll_ram = m_ram + 0xe000 /2;
+ m_bg_ram = m_ram.get() + 0x0;
+ m_tx_ram = m_ram.get() + 0x4000 /2;
+ m_char_ram = m_ram.get() + 0x6000 /2;
+ m_fg_ram = m_ram.get() + 0x8000 /2;
+ m_bgscroll_ram = m_ram.get() + 0xc000 /2;
+ m_fgscroll_ram = m_ram.get() + 0xc400 /2;
+ m_colscroll_ram = m_ram.get() + 0xe000 /2;
}
else
{
- m_bg_ram = m_ram + 0x0;
- m_fg_ram = m_ram + 0x08000 /2;
- m_bgscroll_ram = m_ram + 0x10000 /2;
- m_fgscroll_ram = m_ram + 0x10400 /2;
- m_colscroll_ram = m_ram + 0x10800 /2;
- m_char_ram = m_ram + 0x11000 /2;
- m_tx_ram = m_ram + 0x12000 /2;
+ m_bg_ram = m_ram.get() + 0x0;
+ m_fg_ram = m_ram.get() + 0x08000 /2;
+ m_bgscroll_ram = m_ram.get() + 0x10000 /2;
+ m_fgscroll_ram = m_ram.get() + 0x10400 /2;
+ m_colscroll_ram = m_ram.get() + 0x10800 /2;
+ m_char_ram = m_ram.get() + 0x11000 /2;
+ m_tx_ram = m_ram.get() + 0x12000 /2;
}
}
diff --git a/src/mame/video/tc0100scn.h b/src/mame/video/tc0100scn.h
index 3727ca49327..5f07bbee7f2 100644
--- a/src/mame/video/tc0100scn.h
+++ b/src/mame/video/tc0100scn.h
@@ -76,7 +76,7 @@ private:
// internal state
UINT16 m_ctrl[8];
- UINT16 * m_ram;
+ std::unique_ptr<UINT16[]> m_ram;
UINT16 * m_bg_ram;
UINT16 * m_fg_ram;
UINT16 * m_tx_ram;
diff --git a/src/mame/video/tc0110pcr.cpp b/src/mame/video/tc0110pcr.cpp
index 8c3fdf99d51..19eb43d7938 100644
--- a/src/mame/video/tc0110pcr.cpp
+++ b/src/mame/video/tc0110pcr.cpp
@@ -45,9 +45,9 @@ void tc0110pcr_device::static_set_palette_tag(device_t &device, const char *tag)
void tc0110pcr_device::device_start()
{
- m_ram = auto_alloc_array_clear(machine(), UINT16, TC0110PCR_RAM_SIZE);
+ m_ram = make_unique_clear<UINT16[]>(TC0110PCR_RAM_SIZE);
- save_pointer(NAME(m_ram), TC0110PCR_RAM_SIZE);
+ save_pointer(NAME(m_ram.get()), TC0110PCR_RAM_SIZE);
save_item(NAME(m_type));
save_item(NAME(m_addr));
machine().save().register_postload(save_prepost_delegate(FUNC(tc0110pcr_device::restore_colors), this));
diff --git a/src/mame/video/tc0110pcr.h b/src/mame/video/tc0110pcr.h
index 982cf49f8c4..1e8df12c79f 100644
--- a/src/mame/video/tc0110pcr.h
+++ b/src/mame/video/tc0110pcr.h
@@ -26,7 +26,7 @@ protected:
virtual void device_reset() override;
private:
- UINT16 * m_ram;
+ std::unique_ptr<UINT16[]> m_ram;
int m_type;
int m_addr;
required_device<palette_device> m_palette;
diff --git a/src/mame/video/tc0180vcu.cpp b/src/mame/video/tc0180vcu.cpp
index ff7a1df5ed7..9420114b3d9 100644
--- a/src/mame/video/tc0180vcu.cpp
+++ b/src/mame/video/tc0180vcu.cpp
@@ -53,11 +53,11 @@ void tc0180vcu_device::device_start()
m_tilemap[1]->set_transparent_pen(0);
m_tilemap[2]->set_transparent_pen(0);
- m_ram = auto_alloc_array_clear(machine(), UINT16, TC0180VCU_RAM_SIZE / 2);
- m_scrollram = auto_alloc_array_clear(machine(), UINT16, TC0180VCU_SCROLLRAM_SIZE / 2);
+ m_ram = make_unique_clear<UINT16[]>(TC0180VCU_RAM_SIZE / 2);
+ m_scrollram = make_unique_clear<UINT16[]>(TC0180VCU_SCROLLRAM_SIZE / 2);
- save_pointer(NAME(m_ram), TC0180VCU_RAM_SIZE / 2);
- save_pointer(NAME(m_scrollram), TC0180VCU_SCROLLRAM_SIZE / 2);
+ save_pointer(NAME(m_ram.get()), TC0180VCU_RAM_SIZE / 2);
+ save_pointer(NAME(m_scrollram.get()), TC0180VCU_SCROLLRAM_SIZE / 2);
save_item(NAME(m_bg_rambank));
save_item(NAME(m_fg_rambank));
diff --git a/src/mame/video/tc0180vcu.h b/src/mame/video/tc0180vcu.h
index 72436d0b68a..ddd7fbe92b4 100644
--- a/src/mame/video/tc0180vcu.h
+++ b/src/mame/video/tc0180vcu.h
@@ -35,8 +35,8 @@ private:
// internal state
UINT16 m_ctrl[0x10];
- UINT16 * m_ram;
- UINT16 * m_scrollram;
+ std::unique_ptr<UINT16[]> m_ram;
+ std::unique_ptr<UINT16[]> m_scrollram;
tilemap_t *m_tilemap[3];
diff --git a/src/mame/video/tc0280grd.cpp b/src/mame/video/tc0280grd.cpp
index 8034de45c6f..d021893c1a7 100644
--- a/src/mame/video/tc0280grd.cpp
+++ b/src/mame/video/tc0280grd.cpp
@@ -59,9 +59,9 @@ void tc0280grd_device::device_start()
m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tc0280grd_device::tc0280grd_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemap->set_transparent_pen(0);
- m_ram = auto_alloc_array_clear(machine(), UINT16, TC0280GRD_RAM_SIZE / 2);
+ m_ram = make_unique_clear<UINT16[]>(TC0280GRD_RAM_SIZE / 2);
- save_pointer(NAME(m_ram), TC0280GRD_RAM_SIZE / 2);
+ save_pointer(NAME(m_ram.get()), TC0280GRD_RAM_SIZE / 2);
save_item(NAME(m_ctrl));
}
diff --git a/src/mame/video/tc0280grd.h b/src/mame/video/tc0280grd.h
index 679a45ef886..d9f8ffc2ee4 100644
--- a/src/mame/video/tc0280grd.h
+++ b/src/mame/video/tc0280grd.h
@@ -32,7 +32,7 @@ protected:
private:
// internal state
- UINT16 * m_ram;
+ std::unique_ptr<UINT16[]> m_ram;
tilemap_t *m_tilemap;
diff --git a/src/mame/video/tc0480scp.cpp b/src/mame/video/tc0480scp.cpp
index df66f8afb3b..83b0ede8c18 100644
--- a/src/mame/video/tc0480scp.cpp
+++ b/src/mame/video/tc0480scp.cpp
@@ -297,7 +297,7 @@ void tc0480scp_device::device_start()
set_layer_ptrs();
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_txnum, global_alloc(gfx_element(m_palette, tc0480scp_charlayout, (UINT8 *)m_char_ram, NATIVE_ENDIAN_VALUE_LE_BE(8,0), 64, m_col_base)));
+ m_gfxdecode->set_gfx(m_txnum, std::make_unique<gfx_element>(m_palette, tc0480scp_charlayout, (UINT8 *)m_char_ram, NATIVE_ENDIAN_VALUE_LE_BE(8,0), 64, m_col_base));
m_gfxdecode->gfx(m_gfxnum)->set_colorbase(m_col_base);
save_item(NAME(m_ram));
diff --git a/src/mame/video/tc0780fpa.cpp b/src/mame/video/tc0780fpa.cpp
new file mode 100644
index 00000000000..9f9dab9b92f
--- /dev/null
+++ b/src/mame/video/tc0780fpa.cpp
@@ -0,0 +1,502 @@
+// license:LGPL-2.1+
+// copyright-holders:Ville Linde, Angelo Salese, hap
+
+// Taito TC0780FPA Polygon Renderer
+
+#include "emu.h"
+#include "tc0780fpa.h"
+
+
+#define POLY_FIFO_SIZE 32
+
+
+tc0780fpa_renderer::tc0780fpa_renderer(device_t &parent, screen_device &screen, const UINT8 *texture_ram)
+ : poly_manager<float, tc0780fpa_polydata, 6, 10000>(screen)
+{
+ int width = screen.width();
+ int height = screen.height();
+
+ m_fb[0] = std::make_unique<bitmap_ind16>(width, height);
+ m_fb[1] = std::make_unique<bitmap_ind16>(width, height);
+ m_zb = std::make_unique<bitmap_ind16>(width, height);
+
+ m_texture = texture_ram;
+
+ m_cliprect = screen.cliprect();
+
+ m_current_fb = 0;
+
+ // save state
+ parent.save_item(NAME(*m_fb[0]));
+ parent.save_item(NAME(*m_fb[1]));
+ parent.save_item(NAME(*m_zb));
+}
+
+void tc0780fpa_renderer::swap_buffers()
+{
+ wait("Finished render");
+
+ m_current_fb ^= 1;
+
+ m_fb[m_current_fb]->fill(0, m_cliprect);
+ m_zb->fill(0xffff, m_cliprect);
+}
+
+void tc0780fpa_renderer::draw(bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ copybitmap_trans(bitmap, *m_fb[m_current_fb^1], 0, 0, 0, 0, cliprect, 0);
+}
+
+void tc0780fpa_renderer::render_solid_scan(INT32 scanline, const extent_t &extent, const tc0780fpa_polydata &extradata, int threadid)
+{
+ float z = extent.param[0].start;
+ int color = extent.param[1].start;
+ float dz = extent.param[0].dpdx;
+ UINT16 *fb = &m_fb[m_current_fb]->pix16(scanline);
+ UINT16 *zb = &m_zb->pix16(scanline);
+
+ for (int x = extent.startx; x < extent.stopx; x++)
+ {
+ int iz = (int)z & 0xffff;
+
+ if (iz <= zb[x])
+ {
+ fb[x] = color;
+ zb[x] = iz;
+ }
+
+ z += dz;
+ }
+}
+
+void tc0780fpa_renderer::render_shade_scan(INT32 scanline, const extent_t &extent, const tc0780fpa_polydata &extradata, int threadid)
+{
+ float z = extent.param[0].start;
+ float color = extent.param[1].start;
+ float dz = extent.param[0].dpdx;
+ float dcolor = extent.param[1].dpdx;
+ UINT16 *fb = &m_fb[m_current_fb]->pix16(scanline);
+ UINT16 *zb = &m_zb->pix16(scanline);
+
+ for (int x = extent.startx; x < extent.stopx; x++)
+ {
+ int ic = (int)color & 0xffff;
+ int iz = (int)z & 0xffff;
+
+ if (iz <= zb[x])
+ {
+ fb[x] = ic;
+ zb[x] = iz;
+ }
+
+ color += dcolor;
+ z += dz;
+ }
+}
+
+void tc0780fpa_renderer::render_texture_scan(INT32 scanline, const extent_t &extent, const tc0780fpa_polydata &extradata, int threadid)
+{
+ float z = extent.param[0].start;
+ float u = extent.param[1].start;
+ float v = extent.param[2].start;
+ float color = extent.param[3].start;
+ float dz = extent.param[0].dpdx;
+ float du = extent.param[1].dpdx;
+ float dv = extent.param[2].dpdx;
+ float dcolor = extent.param[3].dpdx;
+ UINT16 *fb = &m_fb[m_current_fb]->pix16(scanline);
+ UINT16 *zb = &m_zb->pix16(scanline);
+ int tex_wrap_x = extradata.tex_wrap_x;
+ int tex_wrap_y = extradata.tex_wrap_y;
+ int tex_base_x = extradata.tex_base_x;
+ int tex_base_y = extradata.tex_base_y;
+
+ for (int x = extent.startx; x < extent.stopx; x++)
+ {
+ int iu, iv;
+ UINT8 texel;
+ int palette = ((int)color & 0x7f) << 8;
+ int iz = (int)z & 0xffff;
+
+ if (!tex_wrap_x)
+ {
+ iu = ((int)u >> 4) & 0x7ff;
+ }
+ else
+ {
+ iu = (tex_base_x + (((int)u >> 4) & 0x3f)) & 0x7ff;
+ }
+
+ if (!tex_wrap_y)
+ {
+ iv = ((int)v >> 4) & 0x7ff;
+ }
+ else
+ {
+ iv = (tex_base_y + (((int)v >> 4) & 0x3f)) & 0x7ff;
+ }
+
+ texel = m_texture[(iv * 2048) + iu];
+
+ if (iz <= zb[x] && texel != 0)
+ {
+ fb[x] = palette | texel;
+ zb[x] = iz;
+ }
+
+ u += du;
+ v += dv;
+ color += dcolor;
+ z += dz;
+ }
+}
+
+
+void tc0780fpa_renderer::render(UINT16 *polygon_fifo, int length)
+{
+ vertex_t vert[4];
+ int i;
+
+ UINT16 cmd = polygon_fifo[0];
+
+ int ptr = 1;
+ switch (cmd & 0x7)
+ {
+ // screen global clipping for 3d(?)
+ case 0x00:
+ {
+ UINT16 min_x,min_y,min_z,max_x,max_y,max_z;
+
+ min_x = polygon_fifo[ptr+1];
+ min_y = polygon_fifo[ptr+0];
+ min_z = polygon_fifo[ptr+2];
+ max_x = polygon_fifo[ptr+4];
+ max_y = polygon_fifo[ptr+3];
+ max_z = polygon_fifo[ptr+5];
+
+ if(min_x != 0 || min_y != 0 || min_z != 0 || max_x != 512 || max_y != 400 || max_z != 0x7fff)
+ {
+ printf("CMD %04x\n",cmd);
+ printf("MIN Y %04x\n",polygon_fifo[ptr+0]);
+ printf("MIN X %04x\n",polygon_fifo[ptr+1]);
+ printf("MIN Z %04x\n",polygon_fifo[ptr+2]);
+ printf("MAX Y %04x\n",polygon_fifo[ptr+3]);
+ printf("MAX X %04x\n",polygon_fifo[ptr+4]);
+ printf("MAX Z %04x\n",polygon_fifo[ptr+5]);
+ }
+
+ swap_buffers();
+ break;
+ }
+
+ // Gouraud Shaded Triangle (Landing Gear)
+ case 0x01:
+ {
+ // 0x00: Command ID (0x0001)
+ // 0x01: Vertex 1 color
+ // 0x02: Vertex 1 Y
+ // 0x03: Vertex 1 X
+ // 0x04: Vertex 1 Z
+ // 0x05: Vertex 2 color
+ // 0x06: Vertex 2 Y
+ // 0x07: Vertex 2 X
+ // 0x08: Vertex 2 Z
+ // 0x09: Vertex 3 color
+ // 0x0a: Vertex 3 Y
+ // 0x0b: Vertex 3 X
+ // 0x0c: Vertex 3 Z
+
+ for (i=0; i < 3; i++)
+ {
+ vert[i].p[1] = polygon_fifo[ptr++];
+ vert[i].y = (INT16)(polygon_fifo[ptr++]);
+ vert[i].x = (INT16)(polygon_fifo[ptr++]);
+ vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
+ }
+
+ if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
+ {
+ if (vert[0].p[1] == vert[1].p[1] &&
+ vert[1].p[1] == vert[2].p[1])
+ {
+ // optimization: all colours the same -> render solid
+ render_triangle(m_cliprect, render_delegate(FUNC(tc0780fpa_renderer::render_solid_scan), this), 2, vert[0], vert[1], vert[2]);
+ }
+ else
+ {
+ render_triangle(m_cliprect, render_delegate(FUNC(tc0780fpa_renderer::render_shade_scan), this), 2, vert[0], vert[1], vert[2]);
+ }
+ }
+ break;
+ }
+
+ // Textured Triangle
+ case 0x03:
+ {
+ // 0x00: Command ID (0x0003)
+ // 0x01: Texture base
+ // 0x02: Vertex 1 Palette
+ // 0x03: Vertex 1 V
+ // 0x04: Vertex 1 U
+ // 0x05: Vertex 1 Y
+ // 0x06: Vertex 1 X
+ // 0x07: Vertex 1 Z
+ // 0x08: Vertex 2 Palette
+ // 0x09: Vertex 2 V
+ // 0x0a: Vertex 2 U
+ // 0x0b: Vertex 2 Y
+ // 0x0c: Vertex 2 X
+ // 0x0d: Vertex 2 Z
+ // 0x0e: Vertex 3 Palette
+ // 0x0f: Vertex 3 V
+ // 0x10: Vertex 3 U
+ // 0x11: Vertex 3 Y
+ // 0x12: Vertex 3 X
+ // 0x13: Vertex 3 Z
+
+ tc0780fpa_polydata &extra = object_data_alloc();
+ UINT16 texbase = polygon_fifo[ptr++];
+
+ extra.tex_base_x = ((texbase >> 0) & 0xff) << 4;
+ extra.tex_base_y = ((texbase >> 8) & 0xff) << 4;
+
+ extra.tex_wrap_x = (cmd & 0xc0) ? 1 : 0;
+ extra.tex_wrap_y = (cmd & 0x30) ? 1 : 0;
+
+ for (i=0; i < 3; i++)
+ {
+ vert[i].p[3] = polygon_fifo[ptr++] + 0.5; // palette
+ vert[i].p[2] = (UINT16)(polygon_fifo[ptr++]);
+ vert[i].p[1] = (UINT16)(polygon_fifo[ptr++]);
+ vert[i].y = (INT16)(polygon_fifo[ptr++]);
+ vert[i].x = (INT16)(polygon_fifo[ptr++]);
+ vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
+ }
+
+ if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
+ {
+ render_triangle(m_cliprect, render_delegate(FUNC(tc0780fpa_renderer::render_texture_scan), this), 4, vert[0], vert[1], vert[2]);
+ }
+ break;
+ }
+
+ // Gouraud shaded Quad
+ case 0x04:
+ {
+ // 0x00: Command ID (0x0004)
+ // 0x01: Vertex 1 color
+ // 0x02: Vertex 1 Y
+ // 0x03: Vertex 1 X
+ // 0x04: Vertex 1 Z
+ // 0x05: Vertex 2 color
+ // 0x06: Vertex 2 Y
+ // 0x07: Vertex 2 X
+ // 0x08: Vertex 2 Z
+ // 0x09: Vertex 3 color
+ // 0x0a: Vertex 3 Y
+ // 0x0b: Vertex 3 X
+ // 0x0c: Vertex 3 Z
+ // 0x0d: Vertex 4 color
+ // 0x0e: Vertex 4 Y
+ // 0x0f: Vertex 4 X
+ // 0x10: Vertex 4 Z
+
+ for (i=0; i < 4; i++)
+ {
+ vert[i].p[1] = polygon_fifo[ptr++];
+ vert[i].y = (INT16)(polygon_fifo[ptr++]);
+ vert[i].x = (INT16)(polygon_fifo[ptr++]);
+ vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
+ }
+
+ if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000 && vert[3].p[0] < 0x8000)
+ {
+ if (vert[0].p[1] == vert[1].p[1] &&
+ vert[1].p[1] == vert[2].p[1] &&
+ vert[2].p[1] == vert[3].p[1])
+ {
+ // optimization: all colours the same -> render solid
+ render_polygon<4>(m_cliprect, render_delegate(FUNC(tc0780fpa_renderer::render_solid_scan), this), 2, vert);
+ }
+ else
+ {
+ render_polygon<4>(m_cliprect, render_delegate(FUNC(tc0780fpa_renderer::render_shade_scan), this), 2, vert);
+ }
+ }
+ break;
+ }
+
+ // Textured Quad
+ case 0x06:
+ {
+ // 0x00: Command ID (0x0006)
+ // 0x01: Texture base
+ // 0x02: Vertex 1 Palette
+ // 0x03: Vertex 1 V
+ // 0x04: Vertex 1 U
+ // 0x05: Vertex 1 Y
+ // 0x06: Vertex 1 X
+ // 0x07: Vertex 1 Z
+ // 0x08: Vertex 2 Palette
+ // 0x09: Vertex 2 V
+ // 0x0a: Vertex 2 U
+ // 0x0b: Vertex 2 Y
+ // 0x0c: Vertex 2 X
+ // 0x0d: Vertex 2 Z
+ // 0x0e: Vertex 3 Palette
+ // 0x0f: Vertex 3 V
+ // 0x10: Vertex 3 U
+ // 0x11: Vertex 3 Y
+ // 0x12: Vertex 3 X
+ // 0x13: Vertex 3 Z
+ // 0x14: Vertex 4 Palette
+ // 0x15: Vertex 4 V
+ // 0x16: Vertex 4 U
+ // 0x17: Vertex 4 Y
+ // 0x18: Vertex 4 X
+ // 0x19: Vertex 4 Z
+
+ tc0780fpa_polydata &extra = object_data_alloc();
+ UINT16 texbase = polygon_fifo[ptr++];
+
+ extra.tex_base_x = ((texbase >> 0) & 0xff) << 4;
+ extra.tex_base_y = ((texbase >> 8) & 0xff) << 4;
+
+ extra.tex_wrap_x = (cmd & 0xc0) ? 1 : 0;
+ extra.tex_wrap_y = (cmd & 0x30) ? 1 : 0;
+
+ for (i=0; i < 4; i++)
+ {
+ vert[i].p[3] = polygon_fifo[ptr++] + 0.5; // palette
+ vert[i].p[2] = (UINT16)(polygon_fifo[ptr++]);
+ vert[i].p[1] = (UINT16)(polygon_fifo[ptr++]);
+ vert[i].y = (INT16)(polygon_fifo[ptr++]);
+ vert[i].x = (INT16)(polygon_fifo[ptr++]);
+ vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
+ }
+
+ if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000 && vert[3].p[0] < 0x8000)
+ {
+ render_polygon<4>(m_cliprect, render_delegate(FUNC(tc0780fpa_renderer::render_texture_scan), this), 4, vert);
+ }
+ break;
+ }
+
+ default:
+ {
+ printf("tc0780fpa::render(): unknown command %04X %d, %d\n", cmd,ptr,length);
+ break;
+ }
+ }
+}
+
+const device_type TC0780FPA = &device_creator<tc0780fpa_device>;
+
+tc0780fpa_device::tc0780fpa_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, TC0780FPA, "TC0780FPA Polygon Renderer", tag, owner, clock, "tc0780fpa", __FILE__),
+ device_video_interface(mconfig, *this)
+{
+}
+
+//-------------------------------------------------
+// device_config_complete - perform any
+// operations now that the configuration is
+// complete
+//-------------------------------------------------
+
+void tc0780fpa_device::device_config_complete()
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void tc0780fpa_device::device_start()
+{
+ m_texture = std::make_unique<UINT8[]>(0x400000);
+ m_poly_fifo = std::make_unique<UINT16[]>(POLY_FIFO_SIZE);
+
+ m_renderer = std::make_unique<tc0780fpa_renderer>(*this, *m_screen, m_texture.get());
+
+ save_pointer(NAME(m_texture.get()), 0x400000);
+ save_pointer(NAME(m_poly_fifo.get()), POLY_FIFO_SIZE);
+ save_item(NAME(m_poly_fifo_ptr));
+ save_item(NAME(m_tex_address));
+ save_item(NAME(m_tex_offset));
+ save_item(NAME(m_texbase_x));
+ save_item(NAME(m_texbase_y));
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void tc0780fpa_device::device_reset()
+{
+ m_poly_fifo_ptr = 0;
+}
+
+//-------------------------------------------------
+// device_stop - device-specific stop
+//-------------------------------------------------
+
+void tc0780fpa_device::device_stop()
+{
+}
+
+
+/*****************************************************************************
+ DEVICE HANDLERS
+*****************************************************************************/
+
+READ16_MEMBER(tc0780fpa_device::tex_addr_r)
+{
+ return m_tex_address;
+}
+
+WRITE16_MEMBER(tc0780fpa_device::tex_addr_w)
+{
+ m_tex_address = data;
+
+ m_texbase_x = (((data >> 0) & 0x1f) << 1) | ((data >> 12) & 0x1);
+ m_texbase_y = (((data >> 5) & 0x1f) << 1) | ((data >> 13) & 0x1);
+
+ m_tex_offset = 0;
+}
+
+WRITE16_MEMBER(tc0780fpa_device::tex_w)
+{
+ int x = ((m_tex_offset >> 0) & 0x1f) | ((m_tex_offset >> 5) & 0x20);
+ int y = ((m_tex_offset >> 5) & 0x1f) | ((m_tex_offset >> 6) & 0x20);
+
+ int index = (((m_texbase_y * 32) + y) * 2048) + ((m_texbase_x * 32) + x);
+ m_texture[index] = data & 0xff;
+
+ m_tex_offset++;
+}
+
+WRITE16_MEMBER(tc0780fpa_device::poly_fifo_w)
+{
+ assert (m_poly_fifo_ptr < POLY_FIFO_SIZE); // never happens
+ m_poly_fifo[m_poly_fifo_ptr++] = data;
+
+ static const int cmd_length[8] = { 7, 13, -1, 20, 17, -1, 26, -1 };
+ UINT16 cmd = m_poly_fifo[0] & 0x7;
+
+ if (m_poly_fifo_ptr >= cmd_length[cmd])
+ {
+ m_renderer->render(m_poly_fifo.get(), m_poly_fifo_ptr);
+ m_poly_fifo_ptr = 0;
+ }
+
+}
+
+WRITE16_MEMBER(tc0780fpa_device::render_w)
+{
+}
+
+void tc0780fpa_device::draw(bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ m_renderer->draw(bitmap, cliprect);
+}
diff --git a/src/mame/video/tc0780fpa.h b/src/mame/video/tc0780fpa.h
new file mode 100644
index 00000000000..40d5955ef9c
--- /dev/null
+++ b/src/mame/video/tc0780fpa.h
@@ -0,0 +1,81 @@
+// license:LGPL-2.1+
+// copyright-holders:Ville Linde, Angelo Salese, hap
+
+#pragma once
+#ifndef __TC0780FPA_H__
+#define __TC0780FPA_H__
+
+#include "video/poly.h"
+
+
+struct tc0780fpa_polydata
+{
+ int tex_base_x;
+ int tex_base_y;
+ int tex_wrap_x;
+ int tex_wrap_y;
+};
+
+
+class tc0780fpa_renderer : public poly_manager<float, tc0780fpa_polydata, 6, 10000>
+{
+public:
+ tc0780fpa_renderer(device_t &parent, screen_device &screen, const UINT8 *texture_ram);
+ ~tc0780fpa_renderer() {}
+
+ void render_solid_scan(INT32 scanline, const extent_t &extent, const tc0780fpa_polydata &extradata, int threadid);
+ void render_shade_scan(INT32 scanline, const extent_t &extent, const tc0780fpa_polydata &extradata, int threadid);
+ void render_texture_scan(INT32 scanline, const extent_t &extent, const tc0780fpa_polydata &extradata, int threadid);
+
+ void render(UINT16 *polygon_fifo, int length);
+ void draw(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void swap_buffers();
+
+private:
+ std::unique_ptr<bitmap_ind16> m_fb[2];
+ std::unique_ptr<bitmap_ind16> m_zb;
+ const UINT8 *m_texture;
+
+ rectangle m_cliprect;
+
+ int m_current_fb;
+};
+
+
+class tc0780fpa_device : public device_t, public device_video_interface
+{
+public:
+ tc0780fpa_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ ~tc0780fpa_device() {}
+
+ void draw(bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ DECLARE_READ16_MEMBER(tex_addr_r);
+ DECLARE_WRITE16_MEMBER(tex_addr_w);
+ DECLARE_WRITE16_MEMBER(tex_w);
+ DECLARE_WRITE16_MEMBER(poly_fifo_w);
+ DECLARE_WRITE16_MEMBER(render_w);
+
+protected:
+ // device-level overrides
+ virtual void device_config_complete() override;
+ virtual void device_start() override;
+ virtual void device_stop() override;
+ virtual void device_reset() override;
+
+private:
+ std::unique_ptr<UINT8[]> m_texture;
+ std::unique_ptr<UINT16[]> m_poly_fifo;
+ int m_poly_fifo_ptr;
+
+ std::unique_ptr<tc0780fpa_renderer> m_renderer;
+
+ UINT16 m_tex_address;
+ UINT16 m_tex_offset;
+ int m_texbase_x;
+ int m_texbase_y;
+};
+
+extern const device_type TC0780FPA;
+
+#endif
diff --git a/src/mame/video/tceptor.cpp b/src/mame/video/tceptor.cpp
index 55347e4ce08..108bd062def 100644
--- a/src/mame/video/tceptor.cpp
+++ b/src/mame/video/tceptor.cpp
@@ -252,13 +252,13 @@ void tceptor_state::decode_bg(const char * region)
memcpy(src, &buffer[0], len);
/* decode the graphics */
- m_gfxdecode->set_gfx(gfx_index, global_alloc(gfx_element(m_palette, bg_layout, memregion(region)->base(), 0, 64, 0x0a00)));
+ m_gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(m_palette, bg_layout, memregion(region)->base(), 0, 64, 0x0a00));
}
void tceptor_state::decode_sprite(int gfx_index, const gfx_layout *layout, const void *data)
{
/* decode the graphics */
- m_gfxdecode->set_gfx(gfx_index, global_alloc(gfx_element(m_palette, *layout, (const UINT8 *)data, 0, 64, 1024)));
+ m_gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(m_palette, *layout, (const UINT8 *)data, 0, 64, 1024));
}
// fix sprite order
@@ -283,29 +283,28 @@ void tceptor_state::decode_sprite16(const char * region)
UINT8 *src = memregion(region)->base();
int len = memregion(region)->bytes();
- UINT8 *dst;
int i, y;
- dst = auto_alloc_array(machine(), UINT8, len);
+ m_decoded_16 = std::make_unique<UINT8[]>(len);
for (i = 0; i < len / (4*4*16); i++)
for (y = 0; y < 16; y++)
{
- memcpy(&dst[(i*4 + 0) * (2*16*16/8) + y * (2*16/8)],
+ memcpy(&m_decoded_16[(i*4 + 0) * (2*16*16/8) + y * (2*16/8)],
&src[i * (2*32*32/8) + y * (2*32/8)],
4);
- memcpy(&dst[(i*4 + 1) * (2*16*16/8) + y * (2*16/8)],
+ memcpy(&m_decoded_16[(i*4 + 1) * (2*16*16/8) + y * (2*16/8)],
&src[i * (2*32*32/8) + y * (2*32/8) + (4*8/8)],
4);
- memcpy(&dst[(i*4 + 2) * (2*16*16/8) + y * (2*16/8)],
+ memcpy(&m_decoded_16[(i*4 + 2) * (2*16*16/8) + y * (2*16/8)],
&src[i * (2*32*32/8) + y * (2*32/8) + (16*2*32/8)],
4);
- memcpy(&dst[(i*4 + 3) * (2*16*16/8) + y * (2*16/8)],
+ memcpy(&m_decoded_16[(i*4 + 3) * (2*16*16/8) + y * (2*16/8)],
&src[i * (2*32*32/8) + y * (2*32/8) + (4*8/8) + (16*2*32/8)],
4);
}
- decode_sprite(m_sprite16, &spr16_layout, dst);
+ decode_sprite(m_sprite16, &spr16_layout, m_decoded_16.get());
}
// fix sprite order
@@ -336,12 +335,9 @@ void tceptor_state::decode_sprite32(const char * region)
int len = memregion(region)->bytes();
int total = spr32_layout.total;
int size = spr32_layout.charincrement / 8;
- UINT8 *dst;
int i;
- dst = auto_alloc_array(machine(), UINT8, len);
-
- memset(dst, 0, len);
+ m_decoded_32 = make_unique_clear<UINT8[]>(len);
for (i = 0; i < total; i++)
{
@@ -350,18 +346,18 @@ void tceptor_state::decode_sprite32(const char * region)
code = (i & 0x07f) | ((i & 0x180) << 1) | 0x80;
code &= ~((i & 0x200) >> 2);
- memcpy(&dst[size * (i + 0)], &src[size * (code + 0)], size);
- memcpy(&dst[size * (i + total)], &src[size * (code + total)], size);
+ memcpy(&m_decoded_32[size * (i + 0)], &src[size * (code + 0)], size);
+ memcpy(&m_decoded_32[size * (i + total)], &src[size * (code + total)], size);
}
- decode_sprite(m_sprite32, &spr32_layout, dst);
+ decode_sprite(m_sprite32, &spr32_layout, m_decoded_32.get());
}
void tceptor_state::video_start()
{
int gfx_index;
- m_sprite_ram_buffered = auto_alloc_array_clear(machine(), UINT16, 0x200/2);
+ m_sprite_ram_buffered = make_unique_clear<UINT16[]>(0x200/2);
/* find first empty slot to decode gfx */
for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
@@ -392,7 +388,7 @@ void tceptor_state::video_start()
m_bg1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tceptor_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_bg2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tceptor_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
- save_pointer(NAME(m_sprite_ram_buffered), 0x200 / 2);
+ save_pointer(NAME(m_sprite_ram_buffered.get()), 0x200 / 2);
save_item(NAME(m_bg1_scroll_x));
save_item(NAME(m_bg1_scroll_y));
save_item(NAME(m_bg2_scroll_x));
@@ -553,6 +549,6 @@ void tceptor_state::screen_eof_tceptor(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_sprite_ram_buffered, m_sprite_ram, 0x200);
+ memcpy(m_sprite_ram_buffered.get(), m_sprite_ram, 0x200);
}
}
diff --git a/src/mame/video/tecmo_mix.cpp b/src/mame/video/tecmo_mix.cpp
index 72f35d7bdf1..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++)
{
@@ -235,6 +235,8 @@ void tecmo_mix_device::mix_bitmaps(screen_device &screen, bitmap_rgb32 &bitmap,
{
dd[x] = paldata[sprpixel + m_spregular_comp];
//dd[x] = rand();
+ // the bad tiles on the wildfang map (shown between levels) are drawn here.. why? looks like they should be transparent?
+ // most wildfang sprites use this and are fine, so what's going wrong?
}
}
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/tehkanwc.cpp b/src/mame/video/tehkanwc.cpp
index f5b44a8c08d..8ea458548a1 100644
--- a/src/mame/video/tehkanwc.cpp
+++ b/src/mame/video/tehkanwc.cpp
@@ -122,9 +122,9 @@ void tehkanwc_state::video_start()
void tehkanwc_state::gridiron_draw_led(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 led,int player)
{
if (led&0x80)
- output_set_digit_value(player, led&0x7f);
+ output().set_digit_value(player, led&0x7f);
else
- output_set_digit_value(player, 0x00);
+ output().set_digit_value(player, 0x00);
}
void tehkanwc_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/mame/video/terracre.cpp b/src/mame/video/terracre.cpp
index f29525a6312..326e5bf4b5b 100644
--- a/src/mame/video/terracre.cpp
+++ b/src/mame/video/terracre.cpp
@@ -161,8 +161,8 @@ WRITE16_MEMBER(terracre_state::amazon_flipscreen_w)
{
if( ACCESSING_BITS_0_7 )
{
- coin_counter_w( machine(), 0, data&0x01 );
- coin_counter_w( machine(), 1, (data&0x02)>>1 );
+ machine().bookkeeping().coin_counter_w(0, data&0x01 );
+ machine().bookkeeping().coin_counter_w(1, (data&0x02)>>1 );
flip_screen_set(data&0x04);
}
}
diff --git a/src/mame/video/tetrisp2.cpp b/src/mame/video/tetrisp2.cpp
index 7511f401e8d..5307b11b062 100644
--- a/src/mame/video/tetrisp2.cpp
+++ b/src/mame/video/tetrisp2.cpp
@@ -228,11 +228,11 @@ VIDEO_START_MEMBER(tetrisp2_state,tetrisp2)
m_tilemap_rot->set_transparent_pen(0);
// should be smaller and mirrored like m32 I guess
- m_priority = auto_alloc_array(machine(), UINT8, 0x40000);
+ m_priority = std::make_unique<UINT8[]>(0x40000);
ms32_rearrange_sprites(machine(), "gfx1");
save_item(NAME(m_flipscreen_old));
- save_pointer(NAME(m_priority), 0x40000);
+ save_pointer(NAME(m_priority.get()), 0x40000);
}
VIDEO_START_MEMBER(tetrisp2_state,nndmseal)
@@ -254,11 +254,11 @@ VIDEO_START_MEMBER(tetrisp2_state,rockntread)
m_tilemap_rot->set_transparent_pen(0);
// should be smaller and mirrored like m32 I guess
- m_priority = auto_alloc_array(machine(), UINT8, 0x40000);
+ m_priority = std::make_unique<UINT8[]>(0x40000);
ms32_rearrange_sprites(machine(), "gfx1");
save_item(NAME(m_flipscreen_old));
- save_pointer(NAME(m_priority), 0x40000);
+ save_pointer(NAME(m_priority.get()), 0x40000);
}
@@ -486,7 +486,7 @@ UINT32 tetrisp2_state::screen_update_tetrisp2(screen_device &screen, bitmap_ind1
else if (asc_pri == 2)
m_tilemap_fg->draw(screen, bitmap, cliprect, 0, 1 << 2);
- tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority,
+ tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority.get(),
m_spriteram, m_spriteram.bytes(), m_gfxdecode->gfx(0), (m_systemregs[0x00] & 0x02) );
return 0;
}
@@ -571,7 +571,7 @@ UINT32 tetrisp2_state::screen_update_rockntread(screen_device &screen, bitmap_in
else if (asc_pri == 2)
m_tilemap_fg->draw(screen, bitmap, cliprect, 0, 1 << 2);
- tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority,
+ tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority.get(),
m_spriteram, m_spriteram.bytes(), m_gfxdecode->gfx(0), (m_systemregs[0x00] & 0x02) );
return 0;
}
@@ -633,7 +633,7 @@ UINT32 tetrisp2_state::screen_update_rocknms_left(screen_device &screen, bitmap_
else if (asc_pri == 2)
m_tilemap_sub_fg->draw(screen, bitmap, cliprect, 0, 1 << 2);
- tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority,
+ tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority.get(),
m_spriteram2, m_spriteram2.bytes(), m_sub_gfxdecode->gfx(0), (m_systemregs[0x00] & 0x02) );
return 0;
@@ -694,7 +694,7 @@ UINT32 tetrisp2_state::screen_update_rocknms_right(screen_device &screen, bitmap
else if (asc_pri == 2)
m_tilemap_fg->draw(screen, bitmap, cliprect, 0, 1 << 2);
- tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority,
+ tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority.get(),
m_spriteram, m_spriteram.bytes(), m_gfxdecode->gfx(0), (m_systemregs[0x00] & 0x02) );
return 0;
@@ -737,7 +737,7 @@ VIDEO_START_MEMBER(stepstag_state,stepstag)
m_tilemap_rot->set_transparent_pen(0);
// should be smaller and mirrored like m32 I guess
- m_priority = auto_alloc_array(machine(), UINT8, 0x40000);
+ m_priority = std::make_unique<UINT8[]>(0x40000);
ms32_rearrange_sprites(machine(), "sprites_horiz");
ms32_rearrange_sprites(machine(), "sprites_vert");
@@ -748,7 +748,7 @@ UINT32 stepstag_state::screen_update_stepstag_left(screen_device &screen, bitmap
bitmap.fill(0, cliprect);
screen.priority().fill(0);
- tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority,
+ tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority.get(),
m_spriteram, m_spriteram.bytes(), m_gfxdecode->gfx(1), (m_systemregs[0x00] & 0x02) );
return 0;
}
@@ -757,7 +757,7 @@ UINT32 stepstag_state::screen_update_stepstag_right(screen_device &screen, bitma
bitmap.fill(0, cliprect);
screen.priority().fill(0);
- tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority,
+ tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority.get(),
m_spriteram3, m_spriteram3.bytes(), m_gfxdecode->gfx(1), (m_systemregs[0x00] & 0x02) );
return 0;
}
@@ -767,7 +767,7 @@ UINT32 stepstag_state::screen_update_stepstag_mid(screen_device &screen, bitmap_
bitmap.fill(0, cliprect);
screen.priority().fill(0);
- tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority,
+ tetrisp2_draw_sprites(bitmap, screen.priority(), cliprect, m_priority.get(),
m_spriteram2, m_spriteram2.bytes(), m_gfxdecode->gfx(0), (m_systemregs[0x00] & 0x02) );
m_tilemap_fg->draw(screen, bitmap, cliprect, 0, 1 << 2);
diff --git a/src/mame/video/thepit.cpp b/src/mame/video/thepit.cpp
index be3cdcade76..1018eac40ee 100644
--- a/src/mame/video/thepit.cpp
+++ b/src/mame/video/thepit.cpp
@@ -104,7 +104,7 @@ TILE_GET_INFO_MEMBER(thepit_state::solid_get_tile_info)
{
UINT8 back_color = (m_colorram[tile_index] & 0x70) >> 4;
int priority = (back_color != 0) && ((m_colorram[tile_index] & 0x80) == 0);
- tileinfo.pen_data = m_dummy_tile;
+ tileinfo.pen_data = m_dummy_tile.get();
tileinfo.palette_base = back_color + 32;
tileinfo.category = priority;
}
@@ -135,7 +135,7 @@ void thepit_state::video_start()
m_solid_tilemap->set_scroll_cols(32);
m_tilemap->set_scroll_cols(32);
- m_dummy_tile = auto_alloc_array_clear(machine(), UINT8, 8*8);
+ m_dummy_tile = make_unique_clear<UINT8[]>(8*8);
m_graphics_bank = 0; /* only used in intrepid */
diff --git a/src/mame/video/thief.cpp b/src/mame/video/thief.cpp
index 00862465ae9..95583b76f9f 100644
--- a/src/mame/video/thief.cpp
+++ b/src/mame/video/thief.cpp
@@ -72,14 +72,14 @@ WRITE8_MEMBER(thief_state::thief_color_plane_w){
}
READ8_MEMBER(thief_state::thief_videoram_r){
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
UINT8 *source = &videoram[offset];
if( m_video_control&0x02 ) source+=0x2000*4; /* foreground/background */
return source[m_read_mask*0x2000];
}
WRITE8_MEMBER(thief_state::thief_videoram_w){
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
UINT8 *dest = &videoram[offset];
if( m_video_control&0x02 )
dest+=0x2000*4; /* foreground/background */
@@ -94,14 +94,14 @@ WRITE8_MEMBER(thief_state::thief_videoram_w){
void thief_state::video_start(){
memset( &m_coprocessor, 0x00, sizeof(m_coprocessor) );
- m_videoram = auto_alloc_array_clear(machine(), UINT8, 0x2000*4*2 );
+ m_videoram = make_unique_clear<UINT8[]>(0x2000*4*2 );
- m_coprocessor.image_ram = auto_alloc_array(machine(), UINT8, 0x2000 );
- m_coprocessor.context_ram = auto_alloc_array(machine(), UINT8, 0x400 );
+ m_coprocessor.image_ram = std::make_unique<UINT8[]>(0x2000 );
+ m_coprocessor.context_ram = std::make_unique<UINT8[]>(0x400 );
}
UINT32 thief_state::screen_update_thief(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){
- UINT8 *videoram = m_videoram;
+ UINT8 *videoram = m_videoram.get();
UINT32 offs;
int flipscreen = m_video_control&1;
const UINT8 *source = videoram;
diff --git a/src/mame/video/thomson.cpp b/src/mame/video/thomson.cpp
index 1443fff7441..a5432b4c5f0 100644
--- a/src/mame/video/thomson.cpp
+++ b/src/mame/video/thomson.cpp
@@ -889,7 +889,7 @@ void thomson_state::thom_floppy_active( int write )
/* update icon */
fnew = FLOP_STATE;
if ( fold != fnew )
- output_set_value( "floppy", fnew );
+ output().set_value( "floppy", fnew );
}
@@ -1040,7 +1040,7 @@ void thomson_state::thom_vblank( screen_device &screen, bool state )
m_thom_floppy_rcount--;
fnew = FLOP_STATE;
if ( fnew != fold )
- output_set_value( "floppy", fnew );
+ output().set_value( "floppy", fnew );
/* prepare state for next frame */
for ( i = 0; i <= THOM_TOTAL_HEIGHT; i++ )
@@ -1159,7 +1159,7 @@ VIDEO_START_MEMBER( thomson_state, thom )
m_thom_floppy_wcount = 0;
save_item(NAME(m_thom_floppy_wcount));
save_item(NAME(m_thom_floppy_rcount));
- output_set_value( "floppy", 0 );
+ output().set_value( "floppy", 0 );
m_thom_video_timer = machine().scheduler().timer_alloc(FUNC_NULL);
diff --git a/src/mame/video/thoop2.cpp b/src/mame/video/thoop2.cpp
index cee5e1f77c0..e2b826941c5 100644
--- a/src/mame/video/thoop2.cpp
+++ b/src/mame/video/thoop2.cpp
@@ -90,7 +90,7 @@ void thoop2_state::video_start()
m_pant[1]->set_transmask(0,0xff01,0x00ff); /* pens 1-7 opaque, pens 0, 8-15 transparent */
for (i = 0; i < 5; i++){
- m_sprite_table[i] = auto_alloc_array(machine(), int, 512);
+ m_sprite_table[i] = std::make_unique<int[]>(512);
}
}
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/ti85.cpp b/src/mame/video/ti85.cpp
index 92ade7ae6fc..81410fb87df 100644
--- a/src/mame/video/ti85.cpp
+++ b/src/mame/video/ti85.cpp
@@ -140,7 +140,7 @@ PALETTE_INIT_MEMBER(ti85_state, ti85)
return;
}
- m_frames = auto_alloc_array_clear(machine(), UINT8, m_ti_number_of_frames*m_ti_video_memory_size);
+ m_frames = make_unique_clear<UINT8[]>(m_ti_number_of_frames*m_ti_video_memory_size);
}
void ti85_state::video_start()
@@ -165,22 +165,22 @@ UINT32 ti85_state::screen_update_ti85(screen_device &screen, bitmap_ind16 &bitma
lcdmem = ((m_LCD_memory_base & 0x3F) + 0xc0) << 0x08;
- memcpy (m_frames, m_frames+m_ti_video_memory_size, sizeof (UINT8) * (m_ti_number_of_frames-1) * m_ti_video_memory_size);
+ memcpy (m_frames.get(), m_frames.get()+m_ti_video_memory_size, sizeof (UINT8) * (m_ti_number_of_frames-1) * m_ti_video_memory_size);
for (y=0; y<m_ti_screen_y_size; y++)
for (x=0; x<m_ti_screen_x_size; x++)
- *(m_frames+(m_ti_number_of_frames-1)*m_ti_video_memory_size+y*m_ti_screen_x_size+x) = space.read_byte(lcdmem+y*m_ti_screen_x_size+x);
+ *(m_frames.get()+(m_ti_number_of_frames-1)*m_ti_video_memory_size+y*m_ti_screen_x_size+x) = space.read_byte(lcdmem+y*m_ti_screen_x_size+x);
for (y=0; y<m_ti_screen_y_size; y++)
for (x=0; x<m_ti_screen_x_size; x++)
for (b=0; b<8; b++)
{
- brightnes = ((*(m_frames+0*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
- + ((*(m_frames+1*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
- + ((*(m_frames+2*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
- + ((*(m_frames+3*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
- + ((*(m_frames+4*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
- + ((*(m_frames+5*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01);
+ brightnes = ((*(m_frames.get()+0*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
+ + ((*(m_frames.get()+1*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
+ + ((*(m_frames.get()+2*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
+ + ((*(m_frames.get()+3*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
+ + ((*(m_frames.get()+4*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01)
+ + ((*(m_frames.get()+5*m_ti_video_memory_size+y*m_ti_screen_x_size+x)>>(7-b)) & 0x01);
bitmap.pix16(y, x*8+b) = ti85_palette[m_LCD_contrast&0x1f][brightnes];
}
diff --git a/src/mame/video/tia.cpp b/src/mame/video/tia.cpp
index d6d08ecfb6d..c616ce695b0 100644
--- a/src/mame/video/tia.cpp
+++ b/src/mame/video/tia.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Wilbert Pol,Stefan Jokisch
/***************************************************************************
@@ -429,9 +429,9 @@ void tia_video_device::device_start()
int cx = m_screen->width();
screen_height = m_screen->height();
- helper[0] = auto_bitmap_ind16_alloc(machine(), cx, TIA_MAX_SCREEN_HEIGHT);
- helper[1] = auto_bitmap_ind16_alloc(machine(), cx, TIA_MAX_SCREEN_HEIGHT);
- helper[2] = auto_bitmap_ind16_alloc(machine(), cx, TIA_MAX_SCREEN_HEIGHT);
+ helper[0] = std::make_unique<bitmap_ind16>(cx, TIA_MAX_SCREEN_HEIGHT);
+ helper[1] = std::make_unique<bitmap_ind16>(cx, TIA_MAX_SCREEN_HEIGHT);
+ helper[2] = std::make_unique<bitmap_ind16>(cx, TIA_MAX_SCREEN_HEIGHT);
register_save_state();
}
diff --git a/src/mame/video/tia.h b/src/mame/video/tia.h
index 8626ef3c806..4ed1797cd2f 100644
--- a/src/mame/video/tia.h
+++ b/src/mame/video/tia.h
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Wilbert Pol,Stefan Jokisch
#ifndef _VIDEO_TIA_H_
#define _VIDEO_TIA_H_
@@ -198,7 +198,7 @@ private:
UINT8 REFLECT; /* Should playfield be reflected or not */
UINT8 NUSIZx_changed;
- bitmap_ind16 *helper[3];
+ std::unique_ptr<bitmap_ind16> helper[3];
UINT16 screen_height;
diff --git a/src/mame/video/tiamc1.cpp b/src/mame/video/tiamc1.cpp
index 460917a90d4..8bdf45ff7e3 100644
--- a/src/mame/video/tiamc1.cpp
+++ b/src/mame/video/tiamc1.cpp
@@ -95,7 +95,7 @@ PALETTE_INIT_MEMBER(tiamc1_state, tiamc1)
int r, g, b, ir, ig, ib;
float tcol;
- m_palette_ptr = auto_alloc_array(machine(), rgb_t, 256);
+ m_palette_ptr = std::make_unique<rgb_t[]>(256);
for (col = 0; col < 256; col++) {
ir = (col >> 3) & 7;
@@ -124,19 +124,17 @@ TILE_GET_INFO_MEMBER(tiamc1_state::get_bg2_tile_info)
void tiamc1_state::video_start()
{
- UINT8 *video_ram;
+ m_videoram = make_unique_clear<UINT8[]>(0x3040);
- video_ram = auto_alloc_array_clear(machine(), UINT8, 0x3040);
+ m_charram = m_videoram.get() + 0x0800; /* Ram is banked */
+ m_tileram = m_videoram.get() + 0x0000;
- m_charram = video_ram + 0x0800; /* Ram is banked */
- m_tileram = video_ram + 0x0000;
+ m_spriteram_y = m_videoram.get() + 0x3000;
+ m_spriteram_x = m_videoram.get() + 0x3010;
+ m_spriteram_n = m_videoram.get() + 0x3020;
+ m_spriteram_a = m_videoram.get() + 0x3030;
- m_spriteram_y = video_ram + 0x3000;
- m_spriteram_x = video_ram + 0x3010;
- m_spriteram_n = video_ram + 0x3020;
- m_spriteram_a = video_ram + 0x3030;
-
- save_pointer(NAME(video_ram), 0x3040);
+ save_pointer(NAME(m_videoram.get()), 0x3040);
m_bg_tilemap1 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tiamc1_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS,
8, 8, 32, 32);
diff --git a/src/mame/video/tigeroad.cpp b/src/mame/video/tigeroad.cpp
index 0b7f36c66d7..58047666e84 100644
--- a/src/mame/video/tigeroad.cpp
+++ b/src/mame/video/tigeroad.cpp
@@ -40,14 +40,14 @@ WRITE16_MEMBER(tigeroad_state::tigeroad_videoctrl_w)
/* bits 4-5 are coin lockouts */
if (m_has_coinlock)
{
- coin_lockout_w(machine(), 0, !(data & 0x10));
- coin_lockout_w(machine(), 1, !(data & 0x20));
+ machine().bookkeeping().coin_lockout_w(0, !(data & 0x10));
+ machine().bookkeeping().coin_lockout_w(1, !(data & 0x20));
}
/* bits 6-7 are coin counters */
- coin_counter_w(machine(), 0, data & 0x40);
- coin_counter_w(machine(), 1, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(1, data & 0x80);
}
}
diff --git a/src/mame/video/tmnt.cpp b/src/mame/video/tmnt.cpp
index 6718bd501ea..cc24f9c973b 100644
--- a/src/mame/video/tmnt.cpp
+++ b/src/mame/video/tmnt.cpp
@@ -292,8 +292,8 @@ WRITE16_MEMBER(tmnt_state::tmnt_0a0000_w)
if (ACCESSING_BITS_0_7)
{
/* bit 0/1 = coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02); /* 2 players version */
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02); /* 2 players version */
/* bit 3 high then low triggers irq on sound CPU */
if (m_last == 0x08 && (data & 0x08) == 0)
@@ -316,7 +316,7 @@ WRITE16_MEMBER(tmnt_state::punkshot_0a0020_w)
if (ACCESSING_BITS_0_7)
{
/* bit 0 = coin counter */
- coin_counter_w(machine(), 0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
/* bit 2 = trigger irq on sound CPU */
if (m_last == 0x04 && (data & 0x04) == 0)
@@ -334,8 +334,8 @@ WRITE16_MEMBER(tmnt_state::lgtnfght_0a0018_w)
if (ACCESSING_BITS_0_7)
{
/* bit 0,1 = coin counter */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 2 = trigger irq on sound CPU */
if (m_last == 0x00 && (data & 0x04) == 0x04)
@@ -353,8 +353,8 @@ WRITE16_MEMBER(tmnt_state::blswhstl_700300_w)
if (ACCESSING_BITS_0_7)
{
/* bit 0,1 = coin counter */
- coin_counter_w(machine(), 0,data & 0x01);
- coin_counter_w(machine(), 1,data & 0x02);
+ machine().bookkeeping().coin_counter_w(0,data & 0x01);
+ machine().bookkeeping().coin_counter_w(1,data & 0x02);
/* bit 3 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
@@ -389,8 +389,8 @@ WRITE16_MEMBER(tmnt_state::glfgreat_122000_w)
if (ACCESSING_BITS_0_7)
{
/* bit 0,1 = coin counter */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 4 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
@@ -439,8 +439,8 @@ WRITE16_MEMBER(tmnt_state::ssriders_1c0300_w)
if (ACCESSING_BITS_0_7)
{
/* bit 0,1 = coin counter */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 3 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
@@ -455,8 +455,8 @@ WRITE16_MEMBER(tmnt_state::prmrsocr_122000_w)
if (ACCESSING_BITS_0_7)
{
/* bit 0,1 = coin counter */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 4 = enable char ROM reading through the video RAM */
m_k052109->set_rmrd_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
diff --git a/src/mame/video/toaplan1.cpp b/src/mame/video/toaplan1.cpp
index 2363ed2510b..fb99840329c 100644
--- a/src/mame/video/toaplan1.cpp
+++ b/src/mame/video/toaplan1.cpp
@@ -222,15 +222,15 @@ void toaplan1_state::toaplan1_create_tilemaps()
void toaplan1_state::toaplan1_vram_alloc()
{
- m_pf1_tilevram16 = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
- m_pf2_tilevram16 = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
- m_pf3_tilevram16 = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
- m_pf4_tilevram16 = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
+ m_pf1_tilevram16 = make_unique_clear<UINT16[]>(TOAPLAN1_TILEVRAM_SIZE/2);
+ m_pf2_tilevram16 = make_unique_clear<UINT16[]>(TOAPLAN1_TILEVRAM_SIZE/2);
+ m_pf3_tilevram16 = make_unique_clear<UINT16[]>(TOAPLAN1_TILEVRAM_SIZE/2);
+ m_pf4_tilevram16 = make_unique_clear<UINT16[]>(TOAPLAN1_TILEVRAM_SIZE/2);
- save_pointer(NAME(m_pf1_tilevram16), TOAPLAN1_TILEVRAM_SIZE/2);
- save_pointer(NAME(m_pf2_tilevram16), TOAPLAN1_TILEVRAM_SIZE/2);
- save_pointer(NAME(m_pf3_tilevram16), TOAPLAN1_TILEVRAM_SIZE/2);
- save_pointer(NAME(m_pf4_tilevram16), TOAPLAN1_TILEVRAM_SIZE/2);
+ save_pointer(NAME(m_pf1_tilevram16.get()), TOAPLAN1_TILEVRAM_SIZE/2);
+ save_pointer(NAME(m_pf2_tilevram16.get()), TOAPLAN1_TILEVRAM_SIZE/2);
+ save_pointer(NAME(m_pf3_tilevram16.get()), TOAPLAN1_TILEVRAM_SIZE/2);
+ save_pointer(NAME(m_pf4_tilevram16.get()), TOAPLAN1_TILEVRAM_SIZE/2);
#ifdef MAME_DEBUG
m_display_pf1 = 1;
@@ -244,13 +244,13 @@ void toaplan1_state::toaplan1_vram_alloc()
void toaplan1_state::toaplan1_spritevram_alloc()
{
m_spriteram.allocate(TOAPLAN1_SPRITERAM_SIZE/2);
- m_buffered_spriteram = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_SPRITERAM_SIZE/2);
- m_spritesizeram16 = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_SPRITESIZERAM_SIZE/2);
- m_buffered_spritesizeram16 = auto_alloc_array_clear(machine(), UINT16, TOAPLAN1_SPRITESIZERAM_SIZE/2);
+ m_buffered_spriteram = make_unique_clear<UINT16[]>(TOAPLAN1_SPRITERAM_SIZE/2);
+ m_spritesizeram16 = make_unique_clear<UINT16[]>(TOAPLAN1_SPRITESIZERAM_SIZE/2);
+ m_buffered_spritesizeram16 = make_unique_clear<UINT16[]>(TOAPLAN1_SPRITESIZERAM_SIZE/2);
- save_pointer(NAME(m_buffered_spriteram), TOAPLAN1_SPRITERAM_SIZE/2);
- save_pointer(NAME(m_spritesizeram16), TOAPLAN1_SPRITESIZERAM_SIZE/2);
- save_pointer(NAME(m_buffered_spritesizeram16), TOAPLAN1_SPRITESIZERAM_SIZE/2);
+ save_pointer(NAME(m_buffered_spriteram.get()), TOAPLAN1_SPRITERAM_SIZE/2);
+ save_pointer(NAME(m_spritesizeram16.get()), TOAPLAN1_SPRITESIZERAM_SIZE/2);
+ save_pointer(NAME(m_buffered_spritesizeram16.get()), TOAPLAN1_SPRITESIZERAM_SIZE/2);
}
void toaplan1_state::toaplan1_set_scrolls()
@@ -294,8 +294,8 @@ VIDEO_START_MEMBER(toaplan1_rallybik_state,rallybik)
toaplan1_create_tilemaps();
toaplan1_vram_alloc();
- m_buffered_spriteram = auto_alloc_array_clear(machine(), UINT16, m_spriteram.bytes()/2);
- save_pointer(NAME(m_buffered_spriteram), m_spriteram.bytes()/2);
+ m_buffered_spriteram = make_unique_clear<UINT16[]>(m_spriteram.bytes()/2);
+ save_pointer(NAME(m_buffered_spriteram.get()), m_spriteram.bytes()/2);
m_pf1_tilemap->set_scrolldx(-0x00d-6, -0x80+6);
m_pf2_tilemap->set_scrolldx(-0x00d-4, -0x80+4);
@@ -608,14 +608,14 @@ void toaplan1_state::toaplan1_log_vram()
if ( machine().input().code_pressed(KEYCODE_M) )
{
UINT16 *spriteram16 = m_spriteram;
- UINT16 *buffered_spriteram16 = m_buffered_spriteram;
+ UINT16 *buffered_spriteram16 = m_buffered_spriteram.get();
offs_t sprite_voffs;
while (machine().input().code_pressed(KEYCODE_M)) ;
if (m_spritesizeram16) /* FCU controller */
{
int schar,sattr,sxpos,sypos,bschar,bsattr,bsxpos,bsypos;
- UINT16 *size = (UINT16 *)(m_spritesizeram16);
- UINT16 *bsize = (UINT16 *)(m_buffered_spritesizeram16);
+ UINT16 *size = (UINT16 *)(m_spritesizeram16.get());
+ UINT16 *bsize = (UINT16 *)(m_buffered_spritesizeram16.get());
logerror("Scrolls PF1-X PF1-Y PF2-X PF2-Y PF3-X PF3-Y PF4-X PF4-Y\n");
logerror("------> #%04x #%04x #%04x #%04x #%04x #%04x #%04x #%04x\n",
m_pf1_scrollx, m_pf1_scrolly, m_pf2_scrollx, m_pf2_scrolly, m_pf3_scrollx, m_pf3_scrolly, m_pf4_scrollx, m_pf4_scrolly);
@@ -659,8 +659,8 @@ void toaplan1_state::toaplan1_log_vram()
if ( machine().input().code_pressed(KEYCODE_SLASH) )
{
- UINT16 *size = (UINT16 *)(m_spritesizeram16);
- UINT16 *bsize = (UINT16 *)(m_buffered_spritesizeram16);
+ UINT16 *size = (UINT16 *)(m_spritesizeram16.get());
+ UINT16 *bsize = (UINT16 *)(m_buffered_spritesizeram16.get());
offs_t offs;
while (machine().input().code_pressed(KEYCODE_SLASH)) ;
if (m_spritesizeram16) /* FCU controller */
@@ -857,8 +857,8 @@ static void toaplan1_draw_sprite_custom(screen_device &screen, bitmap_ind16 &des
void toaplan1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- UINT16 *source = (UINT16 *)m_buffered_spriteram;
- UINT16 *size = (UINT16 *)m_buffered_spritesizeram16;
+ UINT16 *source = (UINT16 *)m_buffered_spriteram.get();
+ UINT16 *size = (UINT16 *)m_buffered_spritesizeram16.get();
int fcu_flipscreen = m_fcu_flipscreen;
int offs;
@@ -934,7 +934,7 @@ UINT32 toaplan1_rallybik_state::screen_update_rallybik(screen_device &screen, bi
toaplan1_log_vram();
- m_spritegen->draw_sprites_to_tempbitmap(cliprect, m_buffered_spriteram, m_spriteram.bytes());
+ m_spritegen->draw_sprites_to_tempbitmap(cliprect, m_buffered_spriteram.get(), m_spriteram.bytes());
// first draw everything, including "disabled" tiles and priority 0
m_pf1_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE | TILEMAP_DRAW_ALL_CATEGORIES, 0);
@@ -992,7 +992,7 @@ void toaplan1_rallybik_state::screen_eof_rallybik(screen_device &screen, bool st
// rising edge
if (state)
{
- memcpy(m_buffered_spriteram, m_spriteram, m_spriteram.bytes());
+ memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes());
}
}
@@ -1001,8 +1001,8 @@ void toaplan1_state::screen_eof_toaplan1(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_buffered_spriteram, m_spriteram, m_spriteram.bytes());
- memcpy(m_buffered_spritesizeram16, m_spritesizeram16, TOAPLAN1_SPRITESIZERAM_SIZE);
+ memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes());
+ memcpy(m_buffered_spritesizeram16.get(), m_spritesizeram16.get(), TOAPLAN1_SPRITESIZERAM_SIZE);
}
}
@@ -1011,8 +1011,8 @@ void toaplan1_state::screen_eof_samesame(screen_device &screen, bool state)
// rising edge
if (state)
{
- memcpy(m_buffered_spriteram, m_spriteram, m_spriteram.bytes());
- memcpy(m_buffered_spritesizeram16, m_spritesizeram16, TOAPLAN1_SPRITESIZERAM_SIZE);
+ memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes());
+ memcpy(m_buffered_spritesizeram16.get(), m_spritesizeram16.get(), TOAPLAN1_SPRITESIZERAM_SIZE);
m_maincpu->set_input_line(M68K_IRQ_2, HOLD_LINE); /* Frame done */
}
}
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/travrusa.cpp b/src/mame/video/travrusa.cpp
index 13bc6001f20..19b3f491e58 100644
--- a/src/mame/video/travrusa.cpp
+++ b/src/mame/video/travrusa.cpp
@@ -272,8 +272,8 @@ WRITE8_MEMBER(travrusa_state::travrusa_flipscreen_w)
flip_screen_set(data & 1);
- coin_counter_w(machine(), 0, data & 0x02);
- coin_counter_w(machine(), 1, data & 0x20);
+ machine().bookkeeping().coin_counter_w(0, data & 0x02);
+ machine().bookkeeping().coin_counter_w(1, data & 0x20);
}
diff --git a/src/mame/video/triplhnt.cpp b/src/mame/video/triplhnt.cpp
index 08785a53caf..8be7c11c274 100644
--- a/src/mame/video/triplhnt.cpp
+++ b/src/mame/video/triplhnt.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/tryout.cpp b/src/mame/video/tryout.cpp
index 43262b8f1e3..45c8d553151 100644
--- a/src/mame/video/tryout.cpp
+++ b/src/mame/video/tryout.cpp
@@ -165,16 +165,16 @@ void tryout_state::video_start()
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tryout_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(tryout_state::get_fg_memory_offset),this),8,8,32,32);
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tryout_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(tryout_state::get_bg_memory_offset),this),16,16,64,16);
- m_vram=auto_alloc_array(machine(), UINT8, 8 * 0x800);
- m_vram_gfx=auto_alloc_array(machine(), UINT8, 0x6000);
+ m_vram=std::make_unique<UINT8[]>(8 * 0x800);
+ m_vram_gfx=std::make_unique<UINT8[]>(0x6000);
- m_gfxdecode->gfx(2)->set_source(m_vram_gfx);
+ m_gfxdecode->gfx(2)->set_source(m_vram_gfx.get());
m_fg_tilemap->set_transparent_pen(0);
save_item(NAME(m_vram_bank));
- save_pointer(NAME(m_vram), 8 * 0x800);
- save_pointer(NAME(m_vram_gfx), 0x6000);
+ save_pointer(NAME(m_vram.get()), 8 * 0x800);
+ save_pointer(NAME(m_vram_gfx.get()), 0x6000);
}
void tryout_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
diff --git a/src/mame/video/tubep.cpp b/src/mame/video/tubep.cpp
index adac17e1a65..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
/***************************************************************************
@@ -340,7 +340,7 @@ PALETTE_INIT_MEMBER(tubep_state,tubep)
VIDEO_START_MEMBER(tubep_state,tubep)
{
- m_spritemap = auto_alloc_array(machine(), UINT8, 256*256*2);
+ m_spritemap = std::make_unique<UINT8[]>(256*256*2);
/* Set up save state */
save_item(NAME(m_romD_addr));
@@ -369,7 +369,7 @@ VIDEO_START_MEMBER(tubep_state,tubep)
VIDEO_RESET_MEMBER(tubep_state,tubep)
{
- memset(m_spritemap,0,256*256*2);
+ memset(m_spritemap.get(),0,256*256*2);
m_romD_addr = 0;
m_romEF_addr = 0;
@@ -567,7 +567,7 @@ void tubep_state::tubep_vblank_end()
m_DISP = m_DISP ^ 1;
/* logerror("EOF: DISP after this is=%i, and clearing it now.\n", m_DISP); */
/* clear the new frame (the one that was (just) displayed)*/
- memset(m_spritemap+m_DISP*256*256, 0x0f, 256*256);
+ memset(m_spritemap.get()+m_DISP*256*256, 0x0f, 256*256);
}
diff --git a/src/mame/video/turbo.cpp b/src/mame/video/turbo.cpp
index 618521951e9..c5e6d68a937 100644
--- a/src/mame/video/turbo.cpp
+++ b/src/mame/video/turbo.cpp
@@ -173,8 +173,8 @@ VIDEO_START_MEMBER(turbo_state,buckrog)
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(turbo_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32);
/* allocate the bitmap RAM */
- m_buckrog_bitmap_ram = auto_alloc_array(machine(), UINT8, 0xe000);
- save_pointer(NAME(m_buckrog_bitmap_ram), 0xe000);
+ m_buckrog_bitmap_ram = std::make_unique<UINT8[]>(0xe000);
+ save_pointer(NAME(m_buckrog_bitmap_ram.get()), 0xe000);
}
diff --git a/src/mame/video/turrett.cpp b/src/mame/video/turrett.cpp
index 4751d7a137a..421a9ce19b8 100644
--- a/src/mame/video/turrett.cpp
+++ b/src/mame/video/turrett.cpp
@@ -28,7 +28,7 @@ UINT32 turrett_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
{
int page = (m_video_ctrl & 1) ^ 1;
- const UINT16 *vram = m_video_ram[page];
+ const UINT16 *vram = m_video_ram[page].get();
INT8 fade_b = m_video_fade & 0x1f;
INT8 fade_g = (m_video_fade >> 5) & 0x1f;
diff --git a/src/mame/video/twincobr.cpp b/src/mame/video/twincobr.cpp
index 4f602dd688a..cff357a380a 100644
--- a/src/mame/video/twincobr.cpp
+++ b/src/mame/video/twincobr.cpp
@@ -93,15 +93,15 @@ VIDEO_START_MEMBER(twincobr_state,toaplan0)
twincobr_create_tilemaps();
- m_txvideoram16 = auto_alloc_array_clear(machine(), UINT16, m_txvideoram_size);
- m_fgvideoram16 = auto_alloc_array_clear(machine(), UINT16, m_fgvideoram_size);
- m_bgvideoram16 = auto_alloc_array_clear(machine(), UINT16, m_bgvideoram_size);
+ m_txvideoram16 = make_unique_clear<UINT16[]>(m_txvideoram_size);
+ m_fgvideoram16 = make_unique_clear<UINT16[]>(m_fgvideoram_size);
+ m_bgvideoram16 = make_unique_clear<UINT16[]>(m_bgvideoram_size);
m_display_on = 0;
- save_pointer(NAME(m_txvideoram16), m_txvideoram_size);
- save_pointer(NAME(m_fgvideoram16), m_fgvideoram_size);
- save_pointer(NAME(m_bgvideoram16), m_bgvideoram_size);
+ save_pointer(NAME(m_txvideoram16.get()), m_txvideoram_size);
+ save_pointer(NAME(m_fgvideoram16.get()), m_fgvideoram_size);
+ save_pointer(NAME(m_bgvideoram16.get()), m_bgvideoram_size);
save_item(NAME(m_txoffs));
save_item(NAME(m_fgoffs));
save_item(NAME(m_bgoffs));
diff --git a/src/mame/video/tx1.cpp b/src/mame/video/tx1.cpp
index 56a8556f2d9..9125963cf78 100644
--- a/src/mame/video/tx1.cpp
+++ b/src/mame/video/tx1.cpp
@@ -1099,12 +1099,12 @@ void tx1_state::tx1_draw_objects(UINT8 *bitmap)
VIDEO_START_MEMBER(tx1_state,tx1)
{
/* Allocate a large bitmap that covers the three screens */
- m_bitmap = auto_bitmap_ind16_alloc(machine(), 768, 256);
+ m_bitmap = std::make_unique<bitmap_ind16>(768, 256);
/* Allocate some bitmaps */
- m_chr_bmp = auto_alloc_array(machine(), UINT8, 256 * 3 * 240);
- m_obj_bmp = auto_alloc_array(machine(), UINT8, 256 * 3 * 240);
- m_rod_bmp = auto_alloc_array(machine(), UINT8, 256 * 3 * 240);
+ m_chr_bmp = std::make_unique<UINT8[]>(256 * 3 * 240);
+ m_obj_bmp = std::make_unique<UINT8[]>(256 * 3 * 240);
+ m_rod_bmp = std::make_unique<UINT8[]>(256 * 3 * 240);
/* Set a timer to run the interrupts */
m_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tx1_state::interrupt_callback),this));
@@ -1138,9 +1138,9 @@ void tx1_state::tx1_combine_layers(bitmap_ind16 &bitmap, int screen)
UINT32 bmp_offset = y * 768 + x_offset;
- UINT8 *chr_addr = m_chr_bmp + bmp_offset;
- UINT8 *rod_addr = m_rod_bmp + bmp_offset;
- UINT8 *obj_addr = m_obj_bmp + bmp_offset;
+ UINT8 *chr_addr = m_chr_bmp.get() + bmp_offset;
+ UINT8 *rod_addr = m_rod_bmp.get() + bmp_offset;
+ UINT8 *obj_addr = m_obj_bmp.get() + bmp_offset;
for (x = 0; x < 256; ++x)
{
@@ -1178,11 +1178,11 @@ void tx1_state::tx1_combine_layers(bitmap_ind16 &bitmap, int screen)
void tx1_state::tx1_update_layers()
{
- memset(m_obj_bmp, 0, 768*240);
+ memset(m_obj_bmp.get(), 0, 768*240);
- tx1_draw_char(m_chr_bmp);
- tx1_draw_road(m_rod_bmp);
- tx1_draw_objects(m_obj_bmp);
+ tx1_draw_char(m_chr_bmp.get());
+ tx1_draw_road(m_rod_bmp.get());
+ tx1_draw_objects(m_obj_bmp.get());
m_needs_update = false;
}
@@ -2946,9 +2946,9 @@ void tx1_state::bb_combine_layers(bitmap_ind16 &bitmap, int screen)
UINT32 bmp_offset = y * bmp_stride + x_offset;
- UINT8 *chr_addr = m_chr_bmp + bmp_offset;
- UINT8 *rod_addr = m_rod_bmp + bmp_offset;
- UINT8 *obj_addr = m_obj_bmp + bmp_offset;
+ UINT8 *chr_addr = m_chr_bmp.get() + bmp_offset;
+ UINT8 *rod_addr = m_rod_bmp.get() + bmp_offset;
+ UINT8 *obj_addr = m_obj_bmp.get() + bmp_offset;
UINT32 sky_en = BIT(m_vregs.sky, 7);
UINT32 sky_val = (((m_vregs.sky & 0x7f) + y) >> 2) & 0x3f;
@@ -2992,9 +2992,9 @@ void tx1_state::bb_combine_layers(bitmap_ind16 &bitmap, int screen)
VIDEO_START_MEMBER(tx1_state,buggyboy)
{
/* Allocate some bitmaps */
- m_chr_bmp = auto_alloc_array(machine(), UINT8, 3 * 256 * 240);
- m_obj_bmp = auto_alloc_array(machine(), UINT8, 3 * 256 * 240);
- m_rod_bmp = auto_alloc_array(machine(), UINT8, 3 * 256 * 240);
+ m_chr_bmp = std::make_unique<UINT8[]>(3 * 256 * 240);
+ m_obj_bmp = std::make_unique<UINT8[]>(3 * 256 * 240);
+ m_rod_bmp = std::make_unique<UINT8[]>(3 * 256 * 240);
/* Set a timer to run the interrupts */
m_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tx1_state::interrupt_callback),this));
@@ -3006,9 +3006,9 @@ VIDEO_START_MEMBER(tx1_state,buggyboy)
VIDEO_START_MEMBER(tx1_state,buggybjr)
{
/* Allocate some bitmaps */
- m_chr_bmp = auto_alloc_array(machine(), UINT8, 256 * 240);
- m_obj_bmp = auto_alloc_array(machine(), UINT8, 256 * 240);
- m_rod_bmp = auto_alloc_array(machine(), UINT8, 256 * 240);
+ m_chr_bmp = std::make_unique<UINT8[]>(256 * 240);
+ m_obj_bmp = std::make_unique<UINT8[]>(256 * 240);
+ m_rod_bmp = std::make_unique<UINT8[]>(256 * 240);
/* Set a timer to run the interrupts */
m_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tx1_state::interrupt_callback),this));
@@ -3035,12 +3035,12 @@ void tx1_state::screen_eof_buggyboy(screen_device &screen, bool state)
void tx1_state::bb_update_layers()
{
- memset(m_obj_bmp, 0, 768*240);
- memset(m_rod_bmp, 0, 768*240);
+ memset(m_obj_bmp.get(), 0, 768*240);
+ memset(m_rod_bmp.get(), 0, 768*240);
- buggyboy_draw_char(m_chr_bmp, 1);
- buggyboy_draw_road(m_rod_bmp);
- buggyboy_draw_objs(m_obj_bmp, 1);
+ buggyboy_draw_char(m_chr_bmp.get(), 1);
+ buggyboy_draw_road(m_rod_bmp.get());
+ buggyboy_draw_objs(m_obj_bmp.get(), 1);
m_needs_update = false;
}
@@ -3074,11 +3074,11 @@ UINT32 tx1_state::screen_update_buggyboy_right(screen_device &screen, bitmap_ind
UINT32 tx1_state::screen_update_buggybjr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- memset(m_obj_bmp, 0, 256*240);
+ memset(m_obj_bmp.get(), 0, 256*240);
- buggyboy_draw_char(m_chr_bmp, 0);
- buggybjr_draw_road(m_rod_bmp);
- buggyboy_draw_objs(m_obj_bmp, 0);
+ buggyboy_draw_char(m_chr_bmp.get(), 0);
+ buggybjr_draw_road(m_rod_bmp.get());
+ buggyboy_draw_objs(m_obj_bmp.get(), 0);
bb_combine_layers(bitmap, -1);
return 0;
diff --git a/src/mame/video/ultraman.cpp b/src/mame/video/ultraman.cpp
index ed969c5e21a..d68f1d86af0 100644
--- a/src/mame/video/ultraman.cpp
+++ b/src/mame/video/ultraman.cpp
@@ -93,8 +93,8 @@ WRITE16_MEMBER(ultraman_state::ultraman_gfxctrl_w)
m_k051316_3->mark_tmap_dirty();
}
- coin_counter_w(machine(), 0, data & 0x40);
- coin_counter_w(machine(), 1, data & 0x80);
+ machine().bookkeeping().coin_counter_w(0, data & 0x40);
+ machine().bookkeeping().coin_counter_w(1, data & 0x80);
}
}
diff --git a/src/mame/video/ultratnk.cpp b/src/mame/video/ultratnk.cpp
index 5efbf1a4677..bf552ecce03 100644
--- a/src/mame/video/ultratnk.cpp
+++ b/src/mame/video/ultratnk.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Phil Stroffolino, Stefan Jokisch
/***************************************************************************
diff --git a/src/mame/video/undrfire.cpp b/src/mame/video/undrfire.cpp
index ab2f2a187ec..10910ce46f6 100644
--- a/src/mame/video/undrfire.cpp
+++ b/src/mame/video/undrfire.cpp
@@ -11,7 +11,7 @@ void undrfire_state::video_start()
{
int i;
- m_spritelist = auto_alloc_array(machine(), struct uf_tempsprite, 0x4000);
+ m_spritelist = std::make_unique<uf_tempsprite[]>(0x4000);
for (i = 0; i < 16384; i++) /* Fix later - some weird colours in places */
m_palette->set_pen_color(i, rgb_t(0,0,0));
@@ -77,7 +77,7 @@ void undrfire_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
while processing sprite ram and then draw them all at the end */
- struct uf_tempsprite *sprite_ptr = m_spritelist;
+ struct uf_tempsprite *sprite_ptr = m_spritelist.get();
for (offs = (m_spriteram.bytes()/4-4);offs >= 0;offs -= 4)
{
@@ -192,7 +192,7 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
}
/* this happens only if primsks != NULL */
- while (sprite_ptr != m_spritelist)
+ while (sprite_ptr != m_spritelist.get())
{
sprite_ptr--;
@@ -222,7 +222,7 @@ void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &
/* pdrawgfx() needs us to draw sprites front to back, so we have to build a list
while processing sprite ram and then draw them all at the end */
- struct uf_tempsprite *sprite_ptr = m_spritelist;
+ struct uf_tempsprite *sprite_ptr = m_spritelist.get();
for (offs = (m_spriteram.bytes()/4-4);offs >= 0;offs -= 4)
{
@@ -326,7 +326,7 @@ void undrfire_state::draw_sprites_cbombers(screen_device &screen, bitmap_ind16 &
}
/* this happens only if primsks != NULL */
- while (sprite_ptr != m_spritelist)
+ while (sprite_ptr != m_spritelist.get())
{
sprite_ptr--;
diff --git a/src/mame/video/unico.cpp b/src/mame/video/unico.cpp
index ff18803010f..a6c335a5625 100644
--- a/src/mame/video/unico.cpp
+++ b/src/mame/video/unico.cpp
@@ -102,7 +102,7 @@ READ16_MEMBER(unico_state::unico_vram_r) { return m_vram[offset]; }
WRITE16_MEMBER(unico_state::unico_vram_w)
{
- UINT16 *vram = m_vram;
+ UINT16 *vram = m_vram.get();
int tile = ((offset / 0x2000) + 1) % 3;
COMBINE_DATA(&vram[offset]);
m_tilemap[tile]->mark_tile_dirty((offset & 0x1fff)/2);
@@ -127,13 +127,13 @@ WRITE16_MEMBER(unico_state::unico_spriteram_w) { COMBINE_DATA(&m_spriteram[offs
VIDEO_START_MEMBER(unico_state,unico)
{
- m_vram = auto_alloc_array_clear(machine(), UINT16, 0xc000 / 2);
- m_scroll = auto_alloc_array_clear(machine(), UINT16, 0x18 / 2);
- m_spriteram = auto_alloc_array_clear(machine(), UINT16, 0x800 / 2);
+ m_vram = make_unique_clear<UINT16[]>(0xc000 / 2);
+ m_scroll = make_unique_clear<UINT16[]>(0x18 / 2);
+ m_spriteram = make_unique_clear<UINT16[]>(0x800 / 2);
- save_pointer(NAME(m_vram), 0xc000/2);
- save_pointer(NAME(m_scroll), 0x18/2);
- save_pointer(NAME(m_spriteram), 0x800/2);
+ save_pointer(NAME(m_vram.get()), 0xc000/2);
+ save_pointer(NAME(m_scroll.get()), 0x18/2);
+ save_pointer(NAME(m_spriteram.get()), 0x800/2);
m_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(unico_state::get_tile_info),this),TILEMAP_SCAN_ROWS,
16,16, 0x40, 0x40);
@@ -191,7 +191,7 @@ VIDEO_START_MEMBER(unico_state,unico)
void unico_state::unico_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect)
{
- UINT16 *spriteram16 = m_spriteram;
+ UINT16 *spriteram16 = m_spriteram.get();
int offs;
/* Draw them backwards, for pdrawgfx */
diff --git a/src/mame/video/vc4000.cpp b/src/mame/video/vc4000.cpp
index 15252cba98c..45fa1079131 100644
--- a/src/mame/video/vc4000.cpp
+++ b/src/mame/video/vc4000.cpp
@@ -58,7 +58,7 @@ void vc4000_state::video_start()
m_video.sprites[3].data = &m_video.reg.d.sprite4;
m_video.sprites[3].mask = 1 << 3;
- m_bitmap = auto_bitmap_ind16_alloc(machine(), m_screen->width(), m_screen->height());
+ m_bitmap = std::make_unique<bitmap_ind16>(m_screen->width(), m_screen->height());
}
inline UINT8 vc4000_state::vc4000_joystick_return_to_centre(UINT8 joy)
diff --git a/src/mame/video/victory.cpp b/src/mame/video/victory.cpp
index 99ce602429b..b7f6ce15ff0 100644
--- a/src/mame/video/victory.cpp
+++ b/src/mame/video/victory.cpp
@@ -32,13 +32,13 @@
void victory_state::video_start()
{
/* allocate bitmapram */
- m_rram = auto_alloc_array(machine(), UINT8, 0x4000);
- m_gram = auto_alloc_array(machine(), UINT8, 0x4000);
- m_bram = auto_alloc_array(machine(), UINT8, 0x4000);
+ m_rram = std::make_unique<UINT8[]>(0x4000);
+ m_gram = std::make_unique<UINT8[]>(0x4000);
+ m_bram = std::make_unique<UINT8[]>(0x4000);
/* allocate bitmaps */
- m_bgbitmap = auto_alloc_array(machine(), UINT8, 256 * 256);
- m_fgbitmap = auto_alloc_array(machine(), UINT8, 256 * 256);
+ m_bgbitmap = std::make_unique<UINT8[]>(256 * 256);
+ m_fgbitmap = std::make_unique<UINT8[]>(256 * 256);
/* reset globals */
m_vblank_irq = 0;
@@ -51,9 +51,9 @@ void victory_state::video_start()
/* register for state saving */
save_item(NAME(m_paletteram));
- save_pointer(NAME(m_rram), 0x4000);
- save_pointer(NAME(m_gram), 0x4000);
- save_pointer(NAME(m_bram), 0x4000);
+ save_pointer(NAME(m_rram.get()), 0x4000);
+ save_pointer(NAME(m_gram.get()), 0x4000);
+ save_pointer(NAME(m_bram.get()), 0x4000);
save_item(NAME(m_vblank_irq));
save_item(NAME(m_fgcoll));
save_item(NAME(m_fgcollx));
diff --git a/src/mame/video/vigilant.cpp b/src/mame/video/vigilant.cpp
index 0f95bdcde96..23449692bd4 100644
--- a/src/mame/video/vigilant.cpp
+++ b/src/mame/video/vigilant.cpp
@@ -21,7 +21,7 @@ static const rectangle bottomvisiblearea(16*8, 48*8-1, 6*8, 32*8-1);
void vigilant_state::video_start()
{
- m_bg_bitmap = auto_bitmap_ind16_alloc(machine(),512*4,256);
+ m_bg_bitmap = std::make_unique<bitmap_ind16>(512*4,256);
save_item(NAME(m_horiz_scroll_low));
save_item(NAME(m_horiz_scroll_high));
diff --git a/src/mame/video/volfied.cpp b/src/mame/video/volfied.cpp
index 3bf38ccd55f..5b1d808340e 100644
--- a/src/mame/video/volfied.cpp
+++ b/src/mame/video/volfied.cpp
@@ -9,12 +9,12 @@
void volfied_state::video_start()
{
- m_video_ram = auto_alloc_array(machine(), UINT16, 0x40000);
+ m_video_ram = std::make_unique<UINT16[]>(0x40000);
m_video_ctrl = 0;
m_video_mask = 0;
- save_pointer(NAME(m_video_ram), 0x40000);
+ save_pointer(NAME(m_video_ram.get()), 0x40000);
save_item(NAME(m_video_ctrl));
save_item(NAME(m_video_mask));
}
@@ -91,7 +91,7 @@ void volfied_state::refresh_pixel_layer( bitmap_ind16 &bitmap )
*********************************************************/
- UINT16* p = m_video_ram;
+ UINT16* p = m_video_ram.get();
int width = m_screen->width();
int height = m_screen->height();
diff --git a/src/mame/video/vrender0.h b/src/mame/video/vrender0.h
index fffcf5d6bd2..b990afb8a45 100644
--- a/src/mame/video/vrender0.h
+++ b/src/mame/video/vrender0.h
@@ -55,8 +55,6 @@ private:
UINT32 m_LastPalUpdate;
RenderStateInfo m_RenderState;
-
- UINT16 Alpha(UINT16 Src, UINT16 Dst);
};
extern const device_type VIDEO_VRENDER0;
diff --git a/src/mame/video/vs920a.cpp b/src/mame/video/vs920a.cpp
index 6e88864c216..7d1c973af55 100644
--- a/src/mame/video/vs920a.cpp
+++ b/src/mame/video/vs920a.cpp
@@ -48,8 +48,8 @@ void vs920a_text_tilemap_device::device_start()
if(!m_gfxdecode->started())
throw device_missing_dependencies();
- m_vram = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x1000/2);
- save_pointer(NAME(m_vram), 0x1000/2);
+ m_vram = make_unique_clear<UINT16[]>(0x1000/2);
+ save_pointer(NAME(m_vram.get()), 0x1000/2);
save_item(NAME(m_pal_base));
diff --git a/src/mame/video/vs920a.h b/src/mame/video/vs920a.h
index 15dee511634..5d945a86631 100644
--- a/src/mame/video/vs920a.h
+++ b/src/mame/video/vs920a.h
@@ -10,7 +10,7 @@ public:
static void set_gfx_region(device_t &device, int gfxregion);
tilemap_t* m_tmap;
- UINT16* m_vram;
+ std::unique_ptr<UINT16[]> m_vram;
UINT16 m_pal_base;
TILE_GET_INFO_MEMBER(get_tile_info);
diff --git a/src/mame/video/vulgus.cpp b/src/mame/video/vulgus.cpp
index baaff6e7ae7..63e911f9d8a 100644
--- a/src/mame/video/vulgus.cpp
+++ b/src/mame/video/vulgus.cpp
@@ -142,8 +142,8 @@ WRITE8_MEMBER(vulgus_state::bgvideoram_w)
WRITE8_MEMBER(vulgus_state::c804_w)
{
/* bits 0 and 1 are coin counters */
- coin_counter_w(machine(), 0, data & 0x01);
- coin_counter_w(machine(), 1, data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x01);
+ machine().bookkeeping().coin_counter_w(1, data & 0x02);
/* bit 7 flips screen */
flip_screen_set(data & 0x80);
diff --git a/src/mame/video/wecleman.cpp b/src/mame/video/wecleman.cpp
index 98783789c4f..cb1441c4d48 100644
--- a/src/mame/video/wecleman.cpp
+++ b/src/mame/video/wecleman.cpp
@@ -1023,7 +1023,7 @@ UINT32 wecleman_state::screen_update_wecleman(screen_device &screen, bitmap_rgb3
video_on = m_irqctrl & 0x40;
- set_led_status(machine(), 0, m_selected_ip & 0x04); // Start lamp
+ output().set_led_value(0, m_selected_ip & 0x04); // Start lamp
fg_y = (m_txtram[0x0f24>>1] & (TILEMAP_DIMY - 1));
bg_y = (m_txtram[0x0f26>>1] & (TILEMAP_DIMY - 1));
@@ -1109,7 +1109,7 @@ UINT32 wecleman_state::screen_update_hotchase(screen_device &screen, bitmap_ind1
video_on = m_irqctrl & 0x40;
- set_led_status(machine(), 0, m_selected_ip & 0x04); // Start lamp
+ output().set_led_value(0, m_selected_ip & 0x04); // Start lamp
get_sprite_info();
diff --git a/src/mame/video/williams.cpp b/src/mame/video/williams.cpp
index 84f5d7a5578..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
@@ -276,7 +276,7 @@ void williams_state::create_palette_lookup()
2, resistances_b, weights_b, 0, 0);
/* build a palette lookup */
- m_palette_lookup = auto_alloc_array(machine(), rgb_t, 256);
+ m_palette_lookup = std::make_unique<rgb_t[]>(256);
for (i = 0; i < 256; i++)
{
int r = combine_3_weights(weights_r, BIT(i,0), BIT(i,1), BIT(i,2));
@@ -432,7 +432,7 @@ WRITE8_MEMBER(williams2_state::williams2_xscroll_high_w)
WRITE8_MEMBER(blaster_state::blaster_remap_select_w)
{
m_blitter_remap_index = data;
- m_blitter_remap = m_blitter_remap_lookup + data * 256;
+ m_blitter_remap = m_blitter_remap_lookup.get() + data * 256;
}
@@ -461,9 +461,9 @@ void williams_state::blitter_init(int blitter_config, const UINT8 *remap_prom)
m_blitter_xor = (blitter_config == WILLIAMS_BLITTER_SC01) ? 4 : 0;
/* create the remap table; if no PROM, make an identity remap table */
- m_blitter_remap_lookup = auto_alloc_array(machine(), UINT8, 256 * 256);
+ m_blitter_remap_lookup = std::make_unique<UINT8[]>(256 * 256);
m_blitter_remap_index = 0;
- m_blitter_remap = m_blitter_remap_lookup;
+ m_blitter_remap = m_blitter_remap_lookup.get();
for (i = 0; i < 256; i++)
{
const UINT8 *table = remap_prom ? (remap_prom + (i & 0x7f) * 16) : dummy_table;
diff --git a/src/mame/video/wolfpack.cpp b/src/mame/video/wolfpack.cpp
index 33e26e690e4..07b3aea0acc 100644
--- a/src/mame/video/wolfpack.cpp
+++ b/src/mame/video/wolfpack.cpp
@@ -1,4 +1,4 @@
-// license:???
+// license:BSD-3-Clause
// copyright-holders:Stefan Jokisch
/***************************************************************************
@@ -100,7 +100,7 @@ void wolfpack_state::video_start()
int i;
- m_LFSR = auto_alloc_array(machine(), UINT8, 0x8000);
+ m_LFSR = std::make_unique<UINT8[]>(0x8000);
m_screen->register_screen_bitmap(m_helper);
diff --git a/src/mame/video/x68k.cpp b/src/mame/video/x68k.cpp
index 770ab644f8d..13f6288b642 100644
--- a/src/mame/video/x68k.cpp
+++ b/src/mame/video/x68k.cpp
@@ -26,10 +26,10 @@
1 sprite layer - up to 128 16x16 sprites, 16 colours per sprite, maximum 16 sprites per scanline (not yet implemented).
Questions: What do the other bits in m_video.reg[2] do?
- What is "special priority mode"?
How is the intensity applied during blending if at all?
Black appears to be opaque only at priority 2 but not 3, is that right?
Are the gfx layers blended from the bottom up or all at once?
+ Special priority in 16bit color mode?
*/
@@ -783,7 +783,12 @@ bool x68k_state::x68k_draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprec
break;
}
if(colour || (priority == 3))
- bitmap.pix16(scanline, pixel) = colour;
+ {
+ if(((m_video.reg[2] & 0x1800) == 0x1000) && (colour & 1))
+ m_special.pix16(scanline, pixel) = colour;
+ else
+ bitmap.pix16(scanline, pixel) = colour;
+ }
loc++;
loc &= 0x3ff;
}
@@ -824,6 +829,8 @@ bool x68k_state::x68k_draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprec
else
bitmap.pix16(scanline, pixel) = (pal[colour] & 0xfffe) + blend;
}
+ else if(((m_video.reg[2] & 0x1800) == 0x1000) && (colour & 1))
+ m_special.pix16(scanline, pixel) = colour;
else
bitmap.pix16(scanline, pixel) = colour;
}
@@ -860,6 +867,8 @@ bool x68k_state::x68k_draw_gfx_scanline( bitmap_ind16 &bitmap, rectangle cliprec
else
bitmap.pix16(scanline, pixel) = (pal[colour] & 0xfffe) + blend;
}
+ if(((m_video.reg[2] & 0x1800) == 0x1000) && (colour & 1))
+ m_special.pix16(scanline, pixel) = colour;
else
bitmap.pix16(scanline, pixel) = colour;
}
@@ -900,11 +909,13 @@ void x68k_state::x68k_draw_gfx(bitmap_rgb32 &bitmap,rectangle cliprect)
if(m_crtc.reg[20] & 0x0800) // if graphic layers are set to buffer, then they aren't visible
return;
- m_gfxbitmap->fill(0, cliprect);
+ m_gfxbitmap.fill(0, cliprect);
+ if((m_video.reg[2] & 0x1800) == 0x1000)
+ m_special.fill(0, cliprect);
for(priority=3;priority>=0;priority--)
{
- gfxblend = x68k_draw_gfx_scanline(*m_gfxbitmap,cliprect,priority);
+ gfxblend = x68k_draw_gfx_scanline(m_gfxbitmap,cliprect,priority);
}
for(scanline=cliprect.min_y;scanline<=cliprect.max_y;scanline++)
@@ -915,13 +926,13 @@ void x68k_state::x68k_draw_gfx(bitmap_rgb32 &bitmap,rectangle cliprect)
{
if((m_video.reg[0] & 0x03) == 3)
{
- colour = m_gfxbitmap->pix16(scanline, pixel);
+ colour = m_gfxbitmap.pix16(scanline, pixel);
if(colour || (m_video.gfx_pri == 2))
bitmap.pix32(scanline, pixel) = GGGGGRRRRRBBBBBI_decoder(colour);
}
else if(gfxblend)
{
- colour = m_gfxbitmap->pix16(scanline, pixel);
+ colour = m_gfxbitmap.pix16(scanline, pixel);
if(((m_video.reg[2] & 0x1900) == 0x1900) && (m_video.gfx_pri != 2) && (colour & 1))
blend = true;
else
@@ -936,7 +947,7 @@ void x68k_state::x68k_draw_gfx(bitmap_rgb32 &bitmap,rectangle cliprect)
}
else
{
- colour = m_gfxbitmap->pix16(scanline, pixel) & 0xff;
+ colour = m_gfxbitmap.pix16(scanline, pixel) & 0xff;
if(((m_video.reg[2] & 0x1900) == 0x1900) && (m_video.gfx_pri != 2) && (colour & 1))
{
blend = true;
@@ -1083,11 +1094,11 @@ VIDEO_START_MEMBER(x68k_state,x68000)
break;
/* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(gfx_index, global_alloc(gfx_element(m_pcgpalette, x68k_pcg_8, memregion("user1")->base(), 0, 32, 0)));
+ m_gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(m_pcgpalette, x68k_pcg_8, memregion("user1")->base(), 0, 32, 0));
gfx_index++;
- m_gfxdecode->set_gfx(gfx_index, global_alloc(gfx_element(m_pcgpalette, x68k_pcg_16, memregion("user1")->base(), 0, 32, 0)));
+ m_gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(m_pcgpalette, x68k_pcg_16, memregion("user1")->base(), 0, 32, 0));
m_gfxdecode->gfx(gfx_index)->set_colors(32);
/* Tilemaps */
@@ -1101,11 +1112,9 @@ VIDEO_START_MEMBER(x68k_state,x68000)
m_bg0_16->set_transparent_pen(0);
m_bg1_16->set_transparent_pen(0);
- m_pcgbitmap = auto_bitmap_ind16_alloc(machine(), 1024, 1024);
- m_pcgbitmap->fill(0);
-
- m_gfxbitmap = auto_bitmap_ind16_alloc(machine(), 1024, 1024);
- m_gfxbitmap->fill(0);
+ m_screen->register_screen_bitmap(m_pcgbitmap);
+ m_screen->register_screen_bitmap(m_gfxbitmap);
+ m_screen->register_screen_bitmap(m_special);
// m_scanline_timer->adjust(attotime::zero, 0, attotime::from_hz(55.45)/568);
}
@@ -1118,7 +1127,7 @@ UINT32 x68k_state::screen_update_x68000(screen_device &screen, bitmap_rgb32 &bit
int x;
tilemap_t* x68k_bg0;
tilemap_t* x68k_bg1;
- int pixel, scanline;
+ int pixel = 0, scanline = 0;
//UINT8 *rom;
if((m_spritereg[0x408] & 0x03) == 0x00) // Sprite/BG H-Res 0=8x8, 1=16x16, 2 or 3 = undefined.
@@ -1176,46 +1185,46 @@ UINT32 x68k_state::screen_update_x68000(screen_device &screen, bitmap_rgb32 &bit
// Sprite / BG Tiles
if(priority == m_video.sprite_pri /*&& (m_spritereg[0x404] & 0x0200)*/ && (m_video.reg[2] & 0x0040))
{
- m_pcgbitmap->fill(0, rect);
- x68k_draw_sprites(*m_pcgbitmap,1,rect);
+ m_pcgbitmap.fill(0, rect);
+ x68k_draw_sprites(m_pcgbitmap,1,rect);
if((m_spritereg[0x404] & 0x0008))
{
if((m_spritereg[0x404] & 0x0030) == 0x10) // BG1 TXSEL
{
x68k_bg0->set_scrollx(0,(m_spritereg[0x402] - m_crtc.hbegin - m_crtc.bg_hshift) & 0x3ff);
x68k_bg0->set_scrolly(0,(m_spritereg[0x403] - m_crtc.vbegin) & 0x3ff);
- x68k_bg0->draw(screen, *m_pcgbitmap,rect,0,0);
+ x68k_bg0->draw(screen, m_pcgbitmap,rect,0,0);
}
else
{
x68k_bg1->set_scrollx(0,(m_spritereg[0x402] - m_crtc.hbegin - m_crtc.bg_hshift) & 0x3ff);
x68k_bg1->set_scrolly(0,(m_spritereg[0x403] - m_crtc.vbegin) & 0x3ff);
- x68k_bg1->draw(screen, *m_pcgbitmap,rect,0,0);
+ x68k_bg1->draw(screen, m_pcgbitmap,rect,0,0);
}
}
- x68k_draw_sprites(*m_pcgbitmap,2,rect);
+ x68k_draw_sprites(m_pcgbitmap,2,rect);
if((m_spritereg[0x404] & 0x0001))
{
if((m_spritereg[0x404] & 0x0006) == 0x02) // BG0 TXSEL
{
x68k_bg0->set_scrollx(0,(m_spritereg[0x400] - m_crtc.hbegin - m_crtc.bg_hshift) & 0x3ff);
x68k_bg0->set_scrolly(0,(m_spritereg[0x401] - m_crtc.vbegin) & 0x3ff);
- x68k_bg0->draw(screen, *m_pcgbitmap,rect,0,0);
+ x68k_bg0->draw(screen, m_pcgbitmap,rect,0,0);
}
else
{
x68k_bg1->set_scrollx(0,(m_spritereg[0x400] - m_crtc.hbegin - m_crtc.bg_hshift) & 0x3ff);
x68k_bg1->set_scrolly(0,(m_spritereg[0x401] - m_crtc.vbegin) & 0x3ff);
- x68k_bg1->draw(screen, *m_pcgbitmap,rect,0,0);
+ x68k_bg1->draw(screen, m_pcgbitmap,rect,0,0);
}
}
- x68k_draw_sprites(*m_pcgbitmap,3,rect);
+ x68k_draw_sprites(m_pcgbitmap,3,rect);
for(scanline=rect.min_y;scanline<=rect.max_y;scanline++)
{
for(pixel=m_crtc.hbegin;pixel<=m_crtc.hend;pixel++)
{
- UINT8 colour = m_pcgbitmap->pix16(scanline, pixel) & 0xff;
+ UINT8 colour = m_pcgbitmap.pix16(scanline, pixel) & 0xff;
if((colour && (m_pcgpalette->pen(colour) & 0xffffff)) || ((m_video.reg[1] & 0x3000) == 0x2000))
bitmap.pix32(scanline, pixel) = m_pcgpalette->pen(colour);
}
@@ -1232,6 +1241,20 @@ UINT32 x68k_state::screen_update_x68000(screen_device &screen, bitmap_rgb32 &bit
}
}
+ if((m_video.reg[2] & 0x1800) == 0x1000) // special priority
+ {
+ UINT16 colour;
+ for(scanline=rect.min_y;scanline<=rect.max_y;scanline++)
+ {
+ for(pixel=m_crtc.hbegin;pixel<=m_crtc.hend;pixel++)
+ {
+ colour = m_special.pix16(scanline, pixel) & 0xff;
+ if(colour)
+ bitmap.pix32(scanline, pixel) = m_gfxpalette->pen(colour & ~1);
+ }
+ }
+ }
+
#ifdef MAME_DEBUG
if(machine().input().code_pressed(KEYCODE_9))
{
diff --git a/src/mame/video/xmen.cpp b/src/mame/video/xmen.cpp
index ceefb936ba6..f25a51d5fcd 100644
--- a/src/mame/video/xmen.cpp
+++ b/src/mame/video/xmen.cpp
@@ -53,8 +53,8 @@ VIDEO_START_MEMBER(xmen_state,xmen6p)
{
m_k053246->k053247_get_ram( &m_k053247_ram);
- m_screen_left = auto_bitmap_ind16_alloc(machine(), 64 * 8, 32 * 8);
- m_screen_right = auto_bitmap_ind16_alloc(machine(), 64 * 8, 32 * 8);
+ m_screen_left = std::make_unique<bitmap_ind16>(64 * 8, 32 * 8);
+ m_screen_right = std::make_unique<bitmap_ind16>(64 * 8, 32 * 8);
save_item(NAME(*m_screen_left));
save_item(NAME(*m_screen_right));
@@ -168,7 +168,7 @@ void xmen_state::screen_eof_xmen6p(screen_device &screen, bool state)
}
- renderbitmap = m_screen_right;
+ renderbitmap = m_screen_right.get();
}
else
{
@@ -187,7 +187,7 @@ void xmen_state::screen_eof_xmen6p(screen_device &screen, bool state)
}
- renderbitmap = m_screen_left;
+ renderbitmap = m_screen_left.get();
}
diff --git a/src/mame/video/yiear.cpp b/src/mame/video/yiear.cpp
index 68d00cbcf47..5fa3cac6f7a 100644
--- a/src/mame/video/yiear.cpp
+++ b/src/mame/video/yiear.cpp
@@ -84,8 +84,8 @@ WRITE8_MEMBER(yiear_state::yiear_control_w)
m_yiear_irq_enable = data & 0x04;
/* bits 3 and 4 are coin counters */
- coin_counter_w(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 1, data & 0x10);
+ machine().bookkeeping().coin_counter_w(0, data & 0x08);
+ machine().bookkeeping().coin_counter_w(1, data & 0x10);
}
TILE_GET_INFO_MEMBER(yiear_state::get_bg_tile_info)
diff --git a/src/mame/video/zac2650.cpp b/src/mame/video/zac2650.cpp
index cfb6701d90b..58a6c1a68f7 100644
--- a/src/mame/video/zac2650.cpp
+++ b/src/mame/video/zac2650.cpp
@@ -35,7 +35,7 @@ WRITE8_MEMBER(zac2650_state::zac_s2636_w)
m_gfxdecode->gfx(2)->mark_dirty(offset/8);
if (offset == 0xc7)
{
- m_s2636->write(space, offset, data);
+ m_s2636->write_data(space, offset, data);
}
}
diff --git a/src/mame/video/zx.cpp b/src/mame/video/zx.cpp
index 43ec24aa467..7f9089653a7 100644
--- a/src/mame/video/zx.cpp
+++ b/src/mame/video/zx.cpp
@@ -138,8 +138,8 @@ void zx_state::video_start()
m_ula_hsync = timer_alloc(TIMER_ULA_HSYNC);
m_ula_char_buffer = 0xffff;
- m_bitmap_render = auto_bitmap_ind16_alloc(machine(), 384, 311);
- m_bitmap_buffer = auto_bitmap_ind16_alloc(machine(), 384, 311);
+ m_bitmap_render = std::make_unique<bitmap_ind16>(384, 311);
+ m_bitmap_buffer = std::make_unique<bitmap_ind16>(384, 311);
}
UINT32 zx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
diff --git a/src/osd/modules/debugger/debugint.cpp b/src/osd/modules/debugger/debugint.cpp
index 1f03d125a31..40a6e2a297b 100644
--- a/src/osd/modules/debugger/debugint.cpp
+++ b/src/osd/modules/debugger/debugint.cpp
@@ -17,6 +17,8 @@
#include "debug/debugvw.h"
#include "debug/dvdisasm.h"
#include "debug/dvmemory.h"
+#include "debug/dvbpoints.h"
+#include "debug/dvwpoints.h"
#include "debug/debugcon.h"
#include "debug/debugcpu.h"
@@ -60,7 +62,7 @@ private:
#define BORDER_XTHICKNESS 1
#define HSB_HEIGHT 20
#define VSB_WIDTH 20
-#define TITLE_HEIGHT 20
+#define TITLE_HEIGHT (debug_font_height + 3*BORDER_YTHICKNESS)
enum
{
@@ -156,11 +158,12 @@ class DView_edit
DISABLE_COPYING(DView_edit);
public:
- DView_edit(): active(0), container(nullptr) { }
+ DView_edit(DView* owner): active(0), container(nullptr), owner(owner) { }
~DView_edit() { }
int active;
render_container * container;
std::string str;
+ DView* owner;
};
/***************************************************************************
@@ -180,7 +183,8 @@ public:
type(0),
state(0),
ofs_x(0),
- ofs_y(0)
+ ofs_y(0),
+ editor(this)
{
this->target = target;
//dv->container = render_target_get_component_container(target, name, &pos);
@@ -273,6 +277,8 @@ static DView * focus_view;
static ui_menu * menu;
static DView_edit * cur_editor;
+static int win_count;
+static void* menu_sel; // selected item in the menu
static void set_focus_view(DView *dv)
{
@@ -287,7 +293,7 @@ static void set_focus_view(DView *dv)
focus_view = dv;
LIST_REMOVE(list, dv, DView);
LIST_ADD_FRONT(list, dv, DView);
- dv->target->debug_top(*dv->container);
+ dv->target->debug_append(*dv->container);
}
}
@@ -381,7 +387,7 @@ static void dview_draw_box(DView *dv, int rtype, int x, int y, int w, int h, rgb
static void dview_draw_line(DView *dv, int rtype, int x1, int y1, int x2, int y2, rgb_t col)
{
rectangle r;
-
+
dview_get_rect(dv, rtype, r);
dv->container->add_line(NX(dv, x1 + r.min_x), NY(dv, y1 + r.min_y),
NX(dv, x2 + r.min_x), NY(dv, y2 + r.min_y), UI_LINE_WIDTH, col,
@@ -447,10 +453,10 @@ static void dview_draw_hsb(DView *dv)
static void dview_draw_vsb(DView *dv)
{
- int vt;
- int ts;
+ INT64 vt;
+ INT64 ts;
//int sz = SLIDER_SIZE;
- int sz;
+ INT64 sz;
rectangle r;
adjustment *sb = &dv->vsb;
@@ -522,9 +528,12 @@ static void dview_draw_title(DView *dv)
for (i = 0; i<strlen(dv->title.c_str()); i++)
{
- dview_draw_char(dv, RECT_DVIEW_TITLE, str_x,
+ if(str_x < r.width() - debug_font_width)
+ {
+ dview_draw_char(dv, RECT_DVIEW_TITLE, str_x,
BORDER_YTHICKNESS, debug_font_height, //r.max_y - 2 * BORDER_YTHICKNESS,
rgb_t(0xff,0xff,0xff,0xff), (UINT16) dv->title[i] );
+ }
str_x += debug_font->char_width(debug_font_height, debug_font_aspect,(UINT16) dv->title[i]) + 2*BORDER_XTHICKNESS;
}
}
@@ -749,20 +758,18 @@ static void dview_draw(DView *dv)
UINT16 s = ' ';
unsigned char v = viewdata->byte;
-// if (v != ' ')
- {
- if(v < 128) {
- s = v;
- } else {
- s = 0xc0 | (v>>6);
- s |= (0x80 | (v & 0x3f));
- }
- map_attr_to_fg_bg(viewdata->attrib, &fg, &bg);
- if (bg != bg_base)
- dview_draw_box(dv, RECT_DVIEW_CLIENT, xx, yy,
- debug_font_width, debug_font_height, bg);
- dview_draw_char(dv, RECT_DVIEW_CLIENT, xx, yy, debug_font_height, fg, s);
+ if(v < 128) {
+ s = v;
+ } else {
+ s = 0xc0 | (v>>6);
+ s |= (0x80 | (v & 0x3f));
}
+ map_attr_to_fg_bg(viewdata->attrib, &fg, &bg);
+ if (bg != bg_base)
+ dview_draw_box(dv, RECT_DVIEW_CLIENT, xx, yy,
+ debug_font_width, debug_font_height, bg);
+ if (v != ' ')
+ dview_draw_char(dv, RECT_DVIEW_CLIENT, xx, yy, debug_font_height, fg, s);
xx += debug_font_width;
viewdata++;
}
@@ -782,6 +789,7 @@ static void dview_size_allocate(DView *dv)
debug_view_xy size, pos, col, vsize;
render_container::user_settings rcus;
rectangle r;
+ std::string title;
dv->container->get_user_settings(rcus);
rcus.m_xoffset = (float) dv->ofs_x / (float) dv->rt_width;
@@ -799,12 +807,12 @@ static void dview_size_allocate(DView *dv)
dview_get_rect(dv, RECT_DVIEW_CLIENT, r);
dv->hsb.visible = (size.x * debug_font_width > r.width() ? 1 : 0);
- dv->vsb.visible = (size.y * debug_font_height > r.height() ? 1 : 0);
+ dv->vsb.visible = ((INT64)size.y * (INT64)debug_font_height > r.height() ? 1 : 0);
dview_get_rect(dv, RECT_DVIEW_CLIENT, r);
-// dv->hsb.visible = (size.x * debug_font_width > r.width() ? 1 : 0);
-// dv->vsb.visible = (size.y * debug_font_height > r.height() ? 1 : 0);
-// dview_get_rect(dv, RECT_DVIEW_CLIENT, r);
+// dv->hsb.visible = (size.x * debug_font_width > r.width() ? 1 : 0);
+// dv->vsb.visible = (size.y * debug_font_height > r.height() ? 1 : 0);
+// dview_get_rect(dv, RECT_DVIEW_CLIENT, r);
col.y = (r.height() - 2 * BORDER_YTHICKNESS /*+ debug_font_height - 1*/) / debug_font_height;
col.x = (r.width() - 2 * BORDER_XTHICKNESS /*+ debug_font_width - 1*/) / debug_font_width;
@@ -912,9 +920,9 @@ void debug_internal::init_debugger(running_machine &machine)
debug_font = m_machine->render().font_alloc("Courier New");
else
debug_font = m_machine->render().font_alloc(font_name);
-
+
debug_font_width = 0;
- if(font_size == 0)
+ if(font_size < 8)
debug_font_height = 16; // default
else
debug_font_height = font_size;
@@ -1007,6 +1015,10 @@ static void on_memory_window_activate(DView *dv, const ui_menu_event *event)
ndv->editor.container = &dv->machine().render().ui_container();
source = ndv->view->source();
dview_set_title(ndv, source->name());
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ ndv->bounds.setx(0,500);
+ win_count++;
+ dview_set_state(ndv,VIEW_STATE_VISIBLE,true);
set_focus_view(ndv);
}
@@ -1023,8 +1035,10 @@ static void on_disassembly_window_activate(DView *dv, const ui_menu_event *event
ndv->editor.container = &dv->machine().render().ui_container();
source = ndv->view->source();
dview_set_title(ndv, source->name());
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ win_count++;
+ dview_set_state(ndv,VIEW_STATE_VISIBLE,true);
set_focus_view(ndv);
-
}
static void on_disasm_cpu_activate(DView *dv, const ui_menu_event *event)
@@ -1050,6 +1064,40 @@ static void on_log_window_activate(DView *dv, const ui_menu_event *event)
target = &dv->machine().render().ui_target();
ndv = dview_alloc(target, dv->machine(), DVT_LOG, 0);
dview_set_title(ndv, "Log");
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ ndv->bounds.setx(0,600);
+ win_count++;
+ dview_set_state(ndv,VIEW_STATE_VISIBLE,true);
+ set_focus_view(ndv);
+}
+
+static void on_bp_window_activate(DView *dv, const ui_menu_event *event)
+{
+ DView *ndv;
+ render_target *target;
+
+ target = &dv->machine().render().ui_target();
+ ndv = dview_alloc(target, dv->machine(), DVT_BREAK_POINTS, 0);
+ dview_set_title(ndv, "Breakpoints");
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ ndv->bounds.setx(0,600);
+ win_count++;
+ dview_set_state(ndv,VIEW_STATE_VISIBLE,true);
+ set_focus_view(ndv);
+}
+
+static void on_wp_window_activate(DView *dv, const ui_menu_event *event)
+{
+ DView *ndv;
+ render_target *target;
+
+ target = &dv->machine().render().ui_target();
+ ndv = dview_alloc(target, dv->machine(), DVT_WATCH_POINTS, 0);
+ dview_set_title(ndv, "Watchpoints");
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ ndv->bounds.setx(0,600);
+ win_count++;
+ dview_set_state(ndv,VIEW_STATE_VISIBLE,true);
set_focus_view(ndv);
}
@@ -1057,6 +1105,7 @@ static void on_close_activate(DView *dv, const ui_menu_event *event)
{
if (focus_view == dv)
set_focus_view(dv->next);
+ win_count--;
dview_free(dv);
}
@@ -1167,7 +1216,7 @@ static void on_memory_data_format(DView *dv, const ui_menu_event *event)
{
debug_view_memory *memview = downcast<debug_view_memory *>(focus_view->view);
int format = memview->get_data_format();
- int idx;
+ int idx = 0;
int order[7] = { 1, 2, 4, 8, 9, 10, 11 };
for(int x=0; x<7; x++)
@@ -1175,11 +1224,11 @@ static void on_memory_data_format(DView *dv, const ui_menu_event *event)
if(order[x] == format)
idx = x;
}
-
+
if (event->iptkey == IPT_UI_RIGHT)
{
idx++;
- if(idx >= 7)
+ if(idx >= 7)
idx = 0;
memview->set_data_format(order[idx]);
dview_set_state(dv, VIEW_STATE_NEEDS_UPDATE, TRUE);
@@ -1187,7 +1236,7 @@ static void on_memory_data_format(DView *dv, const ui_menu_event *event)
if (event->iptkey == IPT_UI_LEFT)
{
idx--;
- if(idx < 0)
+ if(idx < 0)
idx = 6;
memview->set_data_format(order[idx]);
dview_set_state(dv, VIEW_STATE_NEEDS_UPDATE, TRUE);
@@ -1226,34 +1275,33 @@ static void on_memory_region(DView *dv, const ui_menu_event *event)
static void render_editor(DView_edit *editor)
{
- float width, maxwidth;
- float x1, y1, x2, y2;
-
- editor->container->empty();
- /* get the size of the text */
- editor->container->manager().machine().ui().draw_text_full(editor->container, editor->str.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, 0.5f);
-
- /* compute our bounds */
- x1 = 0.5f - 0.5f * maxwidth;
- x2 = x1 + maxwidth;
- y1 = 0.25f;
- y2 = 0.45f - UI_BOX_TB_BORDER;
-
- /* draw a box */
- editor->container->manager().machine().ui().draw_outlined_box(editor->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 */
- editor->container->manager().machine().ui().draw_text_full(editor->container, editor->str.c_str(), x1, y1, x2 - x1, JUSTIFY_CENTER, WRAP_TRUNCATE,
- DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, nullptr);
-
+ DView* dv = editor->owner;
+ rectangle r;
+ const char* str = editor->str.c_str();
+ int str_x = 2 * BORDER_XTHICKNESS;
+ int start;
+// int editor_width;
+
+ dview_get_rect(dv,RECT_DVIEW_HSB,r);
+
+// editor_width = debug_font->string_width(debug_font_height, debug_font_aspect, editor->str.c_str());
+ // figure out which character to start drawing, so that you can always see the end of the string you're typing
+ start = strlen(str) - (r.width() / (debug_font_width + 2*BORDER_XTHICKNESS));
+ if(start < 0)
+ start = 0;
+
+ dview_draw_box(dv,RECT_DVIEW_HSB,0,0,r.width(),r.height(),rgb_t(0xff,0xff,0xff,0xff));
+ dview_draw_line(dv,RECT_DVIEW_HSB,0,0,r.width(),0,rgb_t(0xff,0xc0,0xc0,0xc0));
+ dview_draw_line(dv,RECT_DVIEW_HSB,r.width(),0,r.width(),r.height(),rgb_t(0xff,0x60,0x60,0x60));
+ dview_draw_line(dv,RECT_DVIEW_HSB,r.width(),r.height(),0,r.height(),rgb_t(0xff,0x60,0x60,0x60));
+ dview_draw_line(dv,RECT_DVIEW_HSB,0,r.height(),0,0,rgb_t(0xff,0xc0,0xc0,0xc0));
+
+ for(int x=start;x<strlen(str);x++)
+ {
+ if(str_x < r.width() - debug_font_width)
+ dview_draw_char(dv,RECT_DVIEW_HSB,str_x,BORDER_YTHICKNESS,r.height(),rgb_t(0xff,0x00,0x00,0x00),(UINT16)str[x]);
+ str_x += debug_font->char_width(r.height(),debug_font_aspect,(UINT16)str[x]) + 2*BORDER_XTHICKNESS;
+ }
}
/*-------------------------------------------------
@@ -1275,8 +1323,11 @@ static void CreateMainMenu(running_machine &machine)
std::string title;
if (menu)
+ {
+ menu_sel = menu->get_selection();
global_free( menu);
- menu = global_alloc_clear(ui_menu_debug(machine, &machine.render().ui_container()));
+ }
+ menu = global_alloc_clear<ui_menu_debug>(machine, &machine.render().ui_container());
switch (focus_view->type)
{
@@ -1295,6 +1346,12 @@ static void CreateMainMenu(running_machine &machine)
case DVT_STATE:
title = "State:";
break;
+ case DVT_BREAK_POINTS:
+ title = "Breakpoints:";
+ break;
+ case DVT_WATCH_POINTS:
+ title = "Watchpoints:";
+ break;
}
menu->item_append(title.append(focus_view->title).c_str(), nullptr, MENU_FLAG_DISABLE, nullptr);
@@ -1349,25 +1406,28 @@ static void CreateMainMenu(running_machine &machine)
/* add input menu items */
- menu->item_append("New Memory Window", nullptr, 0, (void *)on_memory_window_activate);
- menu->item_append("New Disassembly Window", nullptr, 0, (void *)on_disassembly_window_activate);
- menu->item_append("New Error Log Window", nullptr, 0, (void *)on_log_window_activate);
+ menu->item_append("New Memory Window", "[Ctrl+M]", 0, (void *)on_memory_window_activate);
+ menu->item_append("New Disassembly Window", "[Ctrl+D]", 0, (void *)on_disassembly_window_activate);
+ menu->item_append("New Error Log Window", "[Ctrl+L]", 0, (void *)on_log_window_activate);
+ menu->item_append("New Breakpoints Window", "[Ctrl+B]", 0, (void *)on_bp_window_activate);
+ menu->item_append("New Watchpoints Window", "[Ctrl+W]", 0, (void *)on_wp_window_activate);
menu->item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
- menu->item_append("Run", nullptr, 0, (void *)on_run_activate);
- menu->item_append("Run and Hide Debugger", nullptr, 0, (void *)on_run_h_activate);
- menu->item_append("Run to Next CPU", nullptr, 0, (void *)on_run_cpu_activate);
- menu->item_append("Run until Next Interrupt on This CPU", nullptr, 0, (void *)on_run_irq_activate);
- menu->item_append("Run until Next VBLANK", nullptr, 0, (void *)on_run_vbl_activate);
+ menu->item_append("Run", "[F5]", 0, (void *)on_run_activate);
+ menu->item_append("Run and Hide Debugger", "[F12]", 0, (void *)on_run_h_activate);
+ menu->item_append("Run to Next CPU", "[F6]", 0, (void *)on_run_cpu_activate);
+ menu->item_append("Run until Next Interrupt on This CPU", "[F7]", 0, (void *)on_run_irq_activate);
+ menu->item_append("Run until Next VBLANK", "[F8]", 0, (void *)on_run_vbl_activate);
menu->item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
- menu->item_append("Step Into", nullptr, 0, (void *)on_step_into_activate);
- menu->item_append("Step Over", nullptr, 0, (void *)on_step_over_activate);
+ menu->item_append("Step Into", "[F11]", 0, (void *)on_step_into_activate);
+ menu->item_append("Step Over", "[F10]", 0, (void *)on_step_over_activate);
menu->item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
- menu->item_append("Soft Reset", nullptr, 0, (void *)on_soft_reset_activate);
- menu->item_append("Hard Reset", nullptr, 0, (void *)on_hard_reset_activate);
+ menu->item_append("Soft Reset", "[F3]", 0, (void *)on_soft_reset_activate);
+ menu->item_append("Hard Reset", "[Shift+F3]", 0, (void *)on_hard_reset_activate);
menu->item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
if (!dview_is_state(focus_view, VIEW_STATE_FOLLOW_CPU))
- menu->item_append("Close Window", nullptr, 0, (void *)on_close_activate);
+ menu->item_append("Close Window", "[Shift+F4]", 0, (void *)on_close_activate);
menu->item_append("Exit", nullptr, 0, (void *)on_exit_activate);
+ menu->set_selection(menu_sel);
}
static int map_point(DView *dv, INT32 target_x, INT32 target_y, INT32 *mapped_x, INT32 *mapped_y)
@@ -1403,7 +1463,7 @@ static void handle_mouse(running_machine &machine)
if (menu != nullptr)
return;
- mouse_target = ui_input_find_mouse(machine, &x, &y, &button);
+ mouse_target = machine.ui_input().find_mouse(&x, &y, &button);
if (mouse_target == nullptr)
return;
@@ -1419,6 +1479,186 @@ static void handle_mouse(running_machine &machine)
}
}
+static void handle_keys(running_machine &machine)
+{
+ if (menu != nullptr)
+ return;
+
+ // global keys
+ if(machine.input().code_pressed_once(KEYCODE_F3))
+ {
+ if(machine.input().code_pressed(KEYCODE_LSHIFT))
+ machine.schedule_hard_reset();
+ else
+ {
+ machine.schedule_soft_reset();
+ 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))
+ debug_cpu_get_visible_cpu(machine)->debug()->go_next_device();
+ if(machine.input().code_pressed_once(KEYCODE_F7))
+ debug_cpu_get_visible_cpu(machine)->debug()->go_interrupt();
+ if(machine.input().code_pressed_once(KEYCODE_F8))
+ debug_cpu_get_visible_cpu(machine)->debug()->go_vblank();
+ if(machine.input().code_pressed_once(KEYCODE_F10))
+ debug_cpu_get_visible_cpu(machine)->debug()->single_step_over();
+ if(machine.input().code_pressed_once(KEYCODE_F11))
+ debug_cpu_get_visible_cpu(machine)->debug()->single_step();
+ if(machine.input().code_pressed_once(KEYCODE_F12))
+ {
+ debug_hide_all();
+ debug_cpu_get_visible_cpu(machine)->debug()->go();
+ }
+
+ // TODO: make common functions to be shared here and with the menu callbacks
+ if(machine.input().code_pressed_once(KEYCODE_D))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ {
+ DView *ndv;
+ render_target *target;
+ const debug_view_source *source;
+
+ target = &machine.render().ui_target();
+
+ ndv = dview_alloc(target, machine, DVT_DISASSEMBLY, 0);
+ ndv->editor.active = TRUE;
+ ndv->editor.container = &machine.render().ui_container();
+ source = ndv->view->source();
+ dview_set_title(ndv, source->name());
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ win_count++;
+ set_focus_view(ndv);
+ }
+ }
+ if(machine.input().code_pressed_once(KEYCODE_M))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ {
+ DView *ndv;
+ render_target *target;
+ const debug_view_source *source;
+
+ target = &machine.render().ui_target();
+
+ ndv = dview_alloc(target, machine, DVT_MEMORY, 0);
+ ndv->editor.active = TRUE;
+ ndv->editor.container = &machine.render().ui_container();
+ source = ndv->view->source();
+ dview_set_title(ndv, source->name());
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ ndv->bounds.setx(0,500);
+ win_count++;
+
+ set_focus_view(ndv);
+ }
+ }
+ if(machine.input().code_pressed_once(KEYCODE_L))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ {
+ DView *ndv;
+ render_target *target;
+
+ target = &machine.render().ui_target();
+ ndv = dview_alloc(target, machine, DVT_LOG, 0);
+ dview_set_title(ndv, "Log");
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ ndv->bounds.setx(0,600);
+ win_count++;
+ set_focus_view(ndv);
+ }
+ }
+ if(machine.input().code_pressed_once(KEYCODE_B))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ {
+ DView *ndv;
+ render_target *target;
+
+ target = &machine.render().ui_target();
+ ndv = dview_alloc(target, machine, DVT_BREAK_POINTS, 0);
+ dview_set_title(ndv, "Breakpoints");
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ ndv->bounds.setx(0,600);
+ win_count++;
+ set_focus_view(ndv);
+ }
+ }
+ if(machine.input().code_pressed_once(KEYCODE_W))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ {
+ DView *ndv;
+ render_target *target;
+
+ target = &machine.render().ui_target();
+ ndv = dview_alloc(target, machine, DVT_WATCH_POINTS, 0);
+ dview_set_title(ndv, "Watchpoints");
+ ndv->ofs_x = ndv->ofs_y = win_count * TITLE_HEIGHT;
+ ndv->bounds.setx(0,600);
+ win_count++;
+ set_focus_view(ndv);
+ }
+ }
+ if (!dview_is_state(focus_view, VIEW_STATE_FOLLOW_CPU))
+ {
+ if(machine.input().code_pressed_once(KEYCODE_F4))
+ {
+ if(machine.input().code_pressed(KEYCODE_LSHIFT)) // use shift+F4, as ctrl+F4 is used to toggle keepaspect.
+ {
+ DView* dv = focus_view;
+ set_focus_view(focus_view->next);
+ win_count--;
+ dview_free(dv);
+ }
+ }
+ }
+
+
+ // pass keypresses to debug view with focus
+ if(machine.input().code_pressed_once(KEYCODE_UP))
+ focus_view->view->process_char(DCH_UP);
+ if(machine.input().code_pressed_once(KEYCODE_DOWN))
+ focus_view->view->process_char(DCH_DOWN);
+ if(machine.input().code_pressed_once(KEYCODE_LEFT))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ focus_view->view->process_char(DCH_CTRLLEFT);
+ else
+ focus_view->view->process_char(DCH_LEFT);
+ }
+ if(machine.input().code_pressed_once(KEYCODE_RIGHT))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ focus_view->view->process_char(DCH_CTRLRIGHT);
+ else
+ focus_view->view->process_char(DCH_RIGHT);
+ }
+ if(machine.input().code_pressed_once(KEYCODE_PGUP))
+ focus_view->view->process_char(DCH_PUP);
+ if(machine.input().code_pressed_once(KEYCODE_PGDN))
+ focus_view->view->process_char(DCH_PDOWN);
+ if(machine.input().code_pressed_once(KEYCODE_HOME))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ focus_view->view->process_char(DCH_CTRLHOME);
+ else
+ focus_view->view->process_char(DCH_HOME);
+ }
+ if(machine.input().code_pressed_once(KEYCODE_END))
+ {
+ if(machine.input().code_pressed(KEYCODE_LCONTROL))
+ focus_view->view->process_char(DCH_CTRLEND);
+ else
+ focus_view->view->process_char(DCH_END);
+ }
+}
+
/*-------------------------------------------------
handle_editor - handle the editor
@@ -1426,12 +1666,12 @@ static void handle_mouse(running_machine &machine)
static void handle_editor(running_machine &machine)
{
- if (focus_view->editor.active)
+ if (focus_view->editor.active && dview_is_state(focus_view, VIEW_STATE_VISIBLE))
{
ui_event event;
/* loop while we have interesting events */
- while (ui_input_pop_event(machine, &event))
+ while (machine.ui_input().pop_event(&event))
{
switch (event.event_type)
{
@@ -1462,13 +1702,13 @@ static void handle_editor(running_machine &machine)
if (cur_editor != nullptr)
{
render_editor(cur_editor);
- if (ui_input_pressed(machine, IPT_UI_SELECT))
+ if (machine.ui_input().pressed(IPT_UI_SELECT))
{
process_string(focus_view, focus_view->editor.str.c_str());
focus_view->editor.str = "";
cur_editor = nullptr;
}
- if (ui_input_pressed(machine, IPT_UI_CANCEL))
+ if (machine.ui_input().pressed(IPT_UI_CANCEL))
cur_editor = nullptr;
}
}
@@ -1485,7 +1725,7 @@ static void handle_menus(running_machine &machine)
const ui_menu_event *event;
machine.render().ui_container().empty();
- ui_input_frame_update(machine);
+ machine.ui_input().frame_update();
if (menu != nullptr)
{
/* process the menu */
@@ -1498,8 +1738,9 @@ static void handle_menus(running_machine &machine)
//ui_menu_stack_push(ui_menu_alloc(machine, menu->container, (ui_menu_handler_func)event->itemref,nullptr));
CreateMainMenu(machine);
}
- else if (ui_input_pressed(machine, IPT_UI_CONFIGURE))
+ else if (machine.ui_input().pressed(IPT_UI_CONFIGURE))
{
+ menu_sel = menu->get_selection();
global_free(menu);
menu = nullptr;
}
@@ -1507,7 +1748,7 @@ static void handle_menus(running_machine &machine)
else
{
/* turn on menus if requested */
- if (ui_input_pressed(machine, IPT_UI_CONFIGURE))
+ if (machine.ui_input().pressed(IPT_UI_CONFIGURE))
CreateMainMenu(machine);
/* turn on editor if requested */
//if (ui_input_pressed(machine, IPT_UI_UP) && focus_view->editor.active)
@@ -1564,15 +1805,10 @@ static void dview_update_view(DView *dv)
static void update_views(void)
{
- DView *dv, *prev;
+ DView *dv;
- LIST_GET_LAST(list, dv);
- while (dv != nullptr)
- {
+ for(dv=list;dv!=nullptr;dv=dv->next)
dview_update_view(dv);
- LIST_GET_PREVIOUS(list, dv, prev);
- dv = prev;
- }
}
@@ -1583,30 +1819,43 @@ void debug_internal::wait_for_debugger(device_t &device, bool firststop)
render_target *target = &device.machine().render().ui_target();
//set_view_by_name(target, "Debug");
+ win_count = 0;
DView *disassembly = dview_alloc(target, device.machine(), DVT_DISASSEMBLY, VIEW_STATE_FOLLOW_CPU);
disassembly->editor.active = TRUE;
disassembly->editor.container = &device.machine().render().ui_container();
- disassembly->ofs_x = 300;
+ disassembly->ofs_x = 500;
+ disassembly->bounds.setx(0,600);
+ win_count++;
- dview_alloc(target, device.machine(), DVT_STATE, VIEW_STATE_FOLLOW_CPU);
+ DView *statewin = dview_alloc(target, device.machine(), DVT_STATE, VIEW_STATE_FOLLOW_CPU);
+ statewin->ofs_x = 300;
+ statewin->bounds.set(0,200,0,600);
+ win_count++;
DView *console = dview_alloc(target, device.machine(), DVT_CONSOLE, VIEW_STATE_FOLLOW_CPU);
dview_set_title(console, "Console");
console->editor.active = TRUE;
console->editor.container = &device.machine().render().ui_container();
console->bounds.setx(0,600);
- console->ofs_x = 600;
+ console->ofs_x = 500;
+ console->ofs_y = 300;
+ win_count++;
set_focus_view(console);
}
followers_set_cpu(&device);
- debug_show_all();
+ if(firststop)
+ {
+ debug_show_all();
+ device.machine().ui_input().reset();
+ }
//ui_update_and_render(device.machine(), device.machine().render().ui_container()());
update_views();
device.machine().osd().update(false);
handle_menus(device.machine());
handle_mouse(device.machine());
+ handle_keys(device.machine());
//osd_sleep(osd_ticks_per_second()/60);
}
diff --git a/src/osd/modules/debugger/debugqt.cpp b/src/osd/modules/debugger/debugqt.cpp
index 692e58d6551..e553585f729 100644
--- a/src/osd/modules/debugger/debugqt.cpp
+++ b/src/osd/modules/debugger/debugqt.cpp
@@ -8,10 +8,6 @@
//
//============================================================
-#if (!defined(NO_MEM_TRACKING))
-#define NO_MEM_TRACKING
-#endif
-
#include "debug_module.h"
#include "modules/osdmodule.h"
@@ -19,8 +15,9 @@
#include <vector>
-#include <QtGui/QtGui>
-#include <QtGui/QApplication>
+#include <QtWidgets/QApplication>
+#include <QtCore/QAbstractEventDispatcher>
+#include <QtCore/QAbstractNativeEventFilter>
#include "emu.h"
#include "config.h"
@@ -36,6 +33,9 @@
#include "qt/deviceinformationwindow.h"
class debug_qt : public osd_module, public debug_module
+#if defined(WIN32) && !defined(SDLMAME_WIN32)
+, public QAbstractNativeEventFilter
+#endif
{
public:
debug_qt()
@@ -52,7 +52,9 @@ public:
virtual void init_debugger(running_machine &machine);
virtual void wait_for_debugger(device_t &device, bool firststop);
virtual void debugger_update();
-
+#if defined(WIN32) && !defined(SDLMAME_WIN32)
+ virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE;
+#endif
private:
running_machine *m_machine;
};
@@ -75,10 +77,10 @@ static MainWindow* mainQtWindow = NULL;
std::vector<WindowQtConfig*> xmlConfigurations;
-static void xml_configuration_load(running_machine &machine, int config_type, xml_data_node *parentnode)
+static void xml_configuration_load(running_machine &machine, config_type cfg_type, xml_data_node *parentnode)
{
// We only care about game files
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
// Might not have any data
@@ -110,10 +112,10 @@ static void xml_configuration_load(running_machine &machine, int config_type, xm
}
-static void xml_configuration_save(running_machine &machine, int config_type, xml_data_node *parentnode)
+static void xml_configuration_save(running_machine &machine, config_type cfg_type, xml_data_node *parentnode)
{
// We only write to game configurations
- if (config_type != CONFIG_TYPE_GAME)
+ if (cfg_type != config_type::CONFIG_TYPE_GAME)
return;
for (int i = 0; i < xmlConfigurations.size(); i++)
@@ -234,6 +236,12 @@ static void bring_main_window_to_front()
#if defined(WIN32) && !defined(SDLMAME_WIN32)
bool winwindow_qt_filter(void *message);
+
+bool debug_qt::nativeEventFilter(const QByteArray &eventType, void *message, long *)
+{
+ winwindow_qt_filter(message);
+ return false;
+}
#endif
void debug_qt::init_debugger(running_machine &machine)
@@ -243,7 +251,7 @@ void debug_qt::init_debugger(running_machine &machine)
// If you're starting from scratch, create a new qApp
new QApplication(qtArgc, qtArgv);
#if defined(WIN32) && !defined(SDLMAME_WIN32)
- QAbstractEventDispatcher::instance()->setEventFilter((QAbstractEventDispatcher::EventFilter)&winwindow_qt_filter);
+ QAbstractEventDispatcher::instance()->installNativeEventFilter(this);
#endif
}
else
@@ -260,8 +268,7 @@ void debug_qt::init_debugger(running_machine &machine)
m_machine = &machine;
// Setup the configuration XML saving and loading
- config_register(machine,
- "debugger",
+ machine.configuration().config_register("debugger",
config_saveload_delegate(FUNC(xml_configuration_load), &machine),
config_saveload_delegate(FUNC(xml_configuration_save), &machine));
}
diff --git a/src/osd/modules/debugger/osx/disassemblyviewer.mm b/src/osd/modules/debugger/osx/disassemblyviewer.mm
index d50bb34262e..83ca9d46c11 100644
--- a/src/osd/modules/debugger/osx/disassemblyviewer.mm
+++ b/src/osd/modules/debugger/osx/disassemblyviewer.mm
@@ -189,7 +189,7 @@
// fail to do this and the display doesn't update
machine->debug_view().update_all();
- debugger_refresh_display(*machine);
+ machine->debugger().refresh_display();
}
}
@@ -208,7 +208,7 @@
(UINT32)bp->index(),
bp->enabled() ? "enabled" : "disabled");
machine->debug_view().update_all();
- debugger_refresh_display(*machine);
+ machine->debugger().refresh_display();
}
}
}
diff --git a/src/osd/modules/debugger/osx/memoryview.mm b/src/osd/modules/debugger/osx/memoryview.mm
index 9ad7c09bd0f..c32476bd89b 100644
--- a/src/osd/modules/debugger/osx/memoryview.mm
+++ b/src/osd/modules/debugger/osx/memoryview.mm
@@ -213,8 +213,22 @@
keyEquivalent:@"F"
atIndex:index++];
[chunkItem setTarget:self];
- [chunkItem setTag:tag];
+ [chunkItem setTag:9];
+
+ NSMenuItem *chunkItem2 = [menu insertItemWithTitle:@"64-bit floats"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"D"
+ atIndex:index++];
+ [chunkItem2 setTarget:self];
+ [chunkItem2 setTag:10];
+ NSMenuItem *chunkItem3 = [menu insertItemWithTitle:@"80-bit floats"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"E"
+ atIndex:index++];
+ [chunkItem3 setTarget:self];
+ [chunkItem3 setTag:11];
+
[menu insertItem:[NSMenuItem separatorItem] atIndex:index++];
NSMenuItem *logicalItem = [menu insertItemWithTitle:@"Logical Addresses"
diff --git a/src/osd/modules/debugger/qt/breakpointswindow.cpp b/src/osd/modules/debugger/qt/breakpointswindow.cpp
index d1aea9fbd46..7b30459c8e9 100644
--- a/src/osd/modules/debugger/qt/breakpointswindow.cpp
+++ b/src/osd/modules/debugger/qt/breakpointswindow.cpp
@@ -1,6 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
+#include <QtWidgets/QActionGroup>
+#include <QtWidgets/QHBoxLayout>
+#include <QtWidgets/QMenu>
+#include <QtWidgets/QMenuBar>
+#include <QtWidgets/QVBoxLayout>
#include "breakpointswindow.h"
@@ -54,7 +58,7 @@ BreakpointsWindow::BreakpointsWindow(running_machine* machine, QWidget* parent)
typeBreak->setShortcut(QKeySequence("Ctrl+1"));
typeWatch->setShortcut(QKeySequence("Ctrl+2"));
typeBreak->setChecked(true);
- connect(typeGroup, SIGNAL(triggered(QAction*)), this, SLOT(typeChanged(QAction*)));
+ connect(typeGroup, &QActionGroup::triggered, this, &BreakpointsWindow::typeChanged);
// Assemble the options menu
QMenu* optionsMenu = menuBar()->addMenu("&Options");
diff --git a/src/osd/modules/debugger/qt/breakpointswindow.h b/src/osd/modules/debugger/qt/breakpointswindow.h
index 9a041f8de07..6c4335e334c 100644
--- a/src/osd/modules/debugger/qt/breakpointswindow.h
+++ b/src/osd/modules/debugger/qt/breakpointswindow.h
@@ -3,8 +3,6 @@
#ifndef __DEBUG_QT_BREAK_POINTS_WINDOW_H__
#define __DEBUG_QT_BREAK_POINTS_WINDOW_H__
-#include <QtGui/QtGui>
-
#include "debuggerview.h"
#include "windowqt.h"
diff --git a/src/osd/modules/debugger/qt/dasmwindow.cpp b/src/osd/modules/debugger/qt/dasmwindow.cpp
index 14de9080876..ae8f1ff35e3 100644
--- a/src/osd/modules/debugger/qt/dasmwindow.cpp
+++ b/src/osd/modules/debugger/qt/dasmwindow.cpp
@@ -1,6 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
+#include <QtWidgets/QHBoxLayout>
+#include <QtWidgets/QVBoxLayout>
+#include <QtWidgets/QAction>
+#include <QtWidgets/QMenu>
+#include <QtWidgets/QMenuBar>
#include "dasmwindow.h"
@@ -30,17 +34,17 @@ DasmWindow::DasmWindow(running_machine* machine, QWidget* parent) :
// The input edit
m_inputEdit = new QLineEdit(topSubFrame);
- connect(m_inputEdit, SIGNAL(returnPressed()), this, SLOT(expressionSubmitted()));
+ connect(m_inputEdit, &QLineEdit::returnPressed, this, &DasmWindow::expressionSubmitted);
// The cpu combo box
m_cpuComboBox = new QComboBox(topSubFrame);
m_cpuComboBox->setObjectName("cpu");
m_cpuComboBox->setMinimumWidth(300);
- connect(m_cpuComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(cpuChanged(int)));
+ connect(m_cpuComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &DasmWindow::cpuChanged);
// The main disasm window
m_dasmView = new DebuggerView(DVT_DISASSEMBLY, m_machine, this);
- connect(m_dasmView, SIGNAL(updated()), this, SLOT(dasmViewUpdated()));
+ connect(m_dasmView, &DebuggerView::updated, this, &DasmWindow::dasmViewUpdated);
// Force a recompute of the disassembly region
downcast<debug_view_disasm*>(m_dasmView->view())->set_expression("curpc");
@@ -77,9 +81,9 @@ DasmWindow::DasmWindow(running_machine* machine, QWidget* parent) :
m_breakpointToggleAct->setShortcut(Qt::Key_F9);
m_breakpointEnableAct->setShortcut(Qt::SHIFT + Qt::Key_F9);
m_runToCursorAct->setShortcut(Qt::Key_F4);
- connect(m_breakpointToggleAct, SIGNAL(triggered(bool)), this, SLOT(toggleBreakpointAtCursor(bool)));
- connect(m_breakpointEnableAct, SIGNAL(triggered(bool)), this, SLOT(enableBreakpointAtCursor(bool)));
- connect(m_runToCursorAct, SIGNAL(triggered(bool)), this, SLOT(runToCursor(bool)));
+ connect(m_breakpointToggleAct, &QAction::triggered, this, &DasmWindow::toggleBreakpointAtCursor);
+ connect(m_breakpointEnableAct, &QAction::triggered, this, &DasmWindow::enableBreakpointAtCursor);
+ connect(m_runToCursorAct, &QAction::triggered, this, &DasmWindow::runToCursor);
// Right bar options
QActionGroup* rightBarGroup = new QActionGroup(this);
@@ -97,7 +101,7 @@ DasmWindow::DasmWindow(running_machine* machine, QWidget* parent) :
rightActEncrypted->setShortcut(QKeySequence("Ctrl+E"));
rightActComments->setShortcut(QKeySequence("Ctrl+C"));
rightActRaw->setChecked(true);
- connect(rightBarGroup, SIGNAL(triggered(QAction*)), this, SLOT(rightBarChanged(QAction*)));
+ connect(rightBarGroup, &QActionGroup::triggered, this, &DasmWindow::rightBarChanged);
// Assemble the options menu
QMenu* optionsMenu = menuBar()->addMenu("&Options");
@@ -162,7 +166,7 @@ void DasmWindow::toggleBreakpointAtCursor(bool changedTo)
debug_console_printf(*m_machine, "Breakpoint %X cleared\n", bpindex);
}
m_machine->debug_view().update_all();
- debugger_refresh_display(*m_machine);
+ m_machine->debugger().refresh_display();
}
refreshAll();
@@ -187,7 +191,7 @@ void DasmWindow::enableBreakpointAtCursor(bool changedTo)
cpuinfo->breakpoint_enable(bp->index(), !bp->enabled());
debug_console_printf(*m_machine, "Breakpoint %X %s\n", (UINT32)bp->index(), bp->enabled() ? "enabled" : "disabled");
m_machine->debug_view().update_all();
- debugger_refresh_display(*m_machine);
+ m_machine->debugger().refresh_display();
}
}
diff --git a/src/osd/modules/debugger/qt/dasmwindow.h b/src/osd/modules/debugger/qt/dasmwindow.h
index 9912841603a..44368c4e11f 100644
--- a/src/osd/modules/debugger/qt/dasmwindow.h
+++ b/src/osd/modules/debugger/qt/dasmwindow.h
@@ -3,7 +3,8 @@
#ifndef __DEBUG_QT_DASM_WINDOW_H__
#define __DEBUG_QT_DASM_WINDOW_H__
-#include <QtGui/QtGui>
+#include <QtWidgets/QLineEdit>
+#include <QtWidgets/QComboBox>
#include "debuggerview.h"
#include "windowqt.h"
diff --git a/src/osd/modules/debugger/qt/debuggerview.cpp b/src/osd/modules/debugger/qt/debuggerview.cpp
index d1be4815288..319ee370392 100644
--- a/src/osd/modules/debugger/qt/debuggerview.cpp
+++ b/src/osd/modules/debugger/qt/debuggerview.cpp
@@ -1,6 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
+#include <QtWidgets/QScrollBar>
+#include <QtWidgets/QApplication>
+#include <QtGui/QPainter>
+#include <QtGui/QKeyEvent>
#include "debuggerview.h"
@@ -28,10 +31,10 @@ DebuggerView::DebuggerView(const debug_view_type& type,
DebuggerView::debuggerViewUpdate,
this);
- connect(verticalScrollBar(), SIGNAL(valueChanged(int)),
- this, SLOT(verticalScrollSlot(int)));
- connect(horizontalScrollBar(), SIGNAL(valueChanged(int)),
- this, SLOT(horizontalScrollSlot(int)));
+ connect(verticalScrollBar(), &QScrollBar::valueChanged,
+ this, &DebuggerView::verticalScrollSlot);
+ connect(horizontalScrollBar(), &QScrollBar::valueChanged,
+ this, &DebuggerView::horizontalScrollSlot);
}
@@ -41,127 +44,12 @@ DebuggerView::~DebuggerView()
m_machine->debug_view().free_view(*m_view);
}
-// TODO: remove this version no later than January 1, 2015
-#if QT_VERSION < QT_VERSION_CHECK(4, 7, 0)
-void DebuggerView::paintEvent(QPaintEvent* event)
-{
- // Tell the MAME debug view how much real estate is available
- QFontMetrics actualFont = fontMetrics();
- const int fontWidth = MAX(1, actualFont.width('_'));
- const int fontHeight = MAX(1, actualFont.height());
- m_view->set_visible_size(debug_view_xy(width()/fontWidth, height()/fontHeight));
-
-
- // Handle the scroll bars
- const int horizontalScrollCharDiff = m_view->total_size().x - m_view->visible_size().x;
- const int horizontalScrollSize = horizontalScrollCharDiff < 0 ? 0 : horizontalScrollCharDiff;
- horizontalScrollBar()->setRange(0, horizontalScrollSize);
-
- // If the horizontal scroll bar appears, make sure to adjust the vertical scrollbar accordingly
- const int verticalScrollAdjust = horizontalScrollSize > 0 ? 1 : 0;
-
- const int verticalScrollCharDiff = m_view->total_size().y - m_view->visible_size().y;
- const int verticalScrollSize = verticalScrollCharDiff < 0 ? 0 : verticalScrollCharDiff+verticalScrollAdjust;
- bool atEnd = false;
- if (verticalScrollBar()->value() == verticalScrollBar()->maximum())
- {
- atEnd = true;
- }
- verticalScrollBar()->setRange(0, verticalScrollSize);
- if (m_preferBottom && atEnd)
- {
- verticalScrollBar()->setValue(verticalScrollSize);
- }
-
-
- // Draw the viewport widget
- QPainter painter(viewport());
- painter.fillRect(0, 0, width(), height(), QBrush(Qt::white));
- painter.setBackgroundMode(Qt::OpaqueMode);
- painter.setBackground(QColor(255,255,255));
-
- // Background control
- QBrush bgBrush;
- bgBrush.setStyle(Qt::SolidPattern);
- painter.setPen(QPen(QColor(0,0,0)));
-
- size_t viewDataOffset = 0;
- const debug_view_xy& visibleCharDims = m_view->visible_size();
- for (int y = 0; y < visibleCharDims.y; y++)
- {
- for (int x = 0; x < visibleCharDims.x; x++)
- {
- const unsigned char textAttr = m_view->viewdata()[viewDataOffset].attrib;
-
- if (x == 0 || textAttr != m_view->viewdata()[viewDataOffset-1].attrib)
- {
- // Text color handling
- QColor fgColor(0,0,0);
- QColor bgColor(255,255,255);
-
- if(textAttr & DCA_VISITED)
- {
- bgColor.setRgb(0xc6, 0xe2, 0xff);
- }
- if(textAttr & DCA_ANCILLARY)
- {
- bgColor.setRgb(0xe0, 0xe0, 0xe0);
- }
- if(textAttr & DCA_SELECTED)
- {
- bgColor.setRgb(0xff, 0x80, 0x80);
- }
- if(textAttr & DCA_CURRENT)
- {
- bgColor.setRgb(0xff, 0xff, 0x00);
- }
- if ((textAttr & DCA_SELECTED) && (textAttr & DCA_CURRENT))
- {
- bgColor.setRgb(0xff,0xc0,0x80);
- }
- if(textAttr & DCA_CHANGED)
- {
- fgColor.setRgb(0xff, 0x00, 0x00);
- }
- if(textAttr & DCA_INVALID)
- {
- fgColor.setRgb(0x00, 0x00, 0xff);
- }
- if(textAttr & DCA_DISABLED)
- {
- fgColor.setRgb((fgColor.red() + bgColor.red()) >> 1,
- (fgColor.green() + bgColor.green()) >> 1,
- (fgColor.blue() + bgColor.blue()) >> 1);
- }
- if(textAttr & DCA_COMMENT)
- {
- fgColor.setRgb(0x00, 0x80, 0x00);
- }
-
- bgBrush.setColor(bgColor);
- painter.setBackground(bgBrush);
- painter.setPen(QPen(fgColor));
- }
-
- // Your character is not guaranteed to take up the entire fontWidth x fontHeight, so fill before.
- painter.fillRect(x*fontWidth, y*fontHeight, fontWidth, fontHeight, bgBrush);
-
- // There is a touchy interplay between font height, drawing difference, visible position, etc
- // Fonts don't get drawn "down and to the left" like boxes, so some wiggling is needed.
- painter.drawText(x*fontWidth,
- (y*fontHeight + (fontHeight*0.80)),
- QString(m_view->viewdata()[viewDataOffset].byte));
- viewDataOffset++;
- }
- }
-}
-#else
void DebuggerView::paintEvent(QPaintEvent* event)
{
// Tell the MAME debug view how much real estate is available
QFontMetrics actualFont = fontMetrics();
const double fontWidth = actualFont.width(QString(100, '_')) / 100.;
- const int fontHeight = MAX(1, actualFont.height());
+ const int fontHeight = MAX(1, actualFont.lineSpacing());
m_view->set_visible_size(debug_view_xy(width()/fontWidth, height()/fontHeight));
@@ -272,7 +160,6 @@ void DebuggerView::paintEvent(QPaintEvent* event)
}
}
}
-#endif
void DebuggerView::keyPressEvent(QKeyEvent* event)
{
diff --git a/src/osd/modules/debugger/qt/debuggerview.h b/src/osd/modules/debugger/qt/debuggerview.h
index e064b86e9c1..7b1aed6fd2c 100644
--- a/src/osd/modules/debugger/qt/debuggerview.h
+++ b/src/osd/modules/debugger/qt/debuggerview.h
@@ -3,7 +3,7 @@
#ifndef __DEBUG_QT_DEBUGGER_VIEW_H__
#define __DEBUG_QT_DEBUGGER_VIEW_H__
-#include <QtGui/QtGui>
+#include <QtWidgets/QAbstractScrollArea>
#include "debug/debugvw.h"
diff --git a/src/osd/modules/debugger/qt/deviceinformationwindow.cpp b/src/osd/modules/debugger/qt/deviceinformationwindow.cpp
index 303dc650b70..54cc4406d23 100644
--- a/src/osd/modules/debugger/qt/deviceinformationwindow.cpp
+++ b/src/osd/modules/debugger/qt/deviceinformationwindow.cpp
@@ -1,6 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
+#include <QtWidgets/QFrame>
+#include <QtWidgets/QLabel>
+#include <QtWidgets/QVBoxLayout>
#include "deviceinformationwindow.h"
diff --git a/src/osd/modules/debugger/qt/deviceinformationwindow.h b/src/osd/modules/debugger/qt/deviceinformationwindow.h
index 6ea38de60c3..b0d9898488a 100644
--- a/src/osd/modules/debugger/qt/deviceinformationwindow.h
+++ b/src/osd/modules/debugger/qt/deviceinformationwindow.h
@@ -3,8 +3,6 @@
#ifndef __DEBUG_QT_DEVICE_INFORMATION_WINDOW_H__
#define __DEBUG_QT_DEVICE_INFORMATION_WINDOW_H__
-#include <QtGui/QtGui>
-
#include "windowqt.h"
//============================================================
diff --git a/src/osd/modules/debugger/qt/deviceswindow.cpp b/src/osd/modules/debugger/qt/deviceswindow.cpp
index 0a71fd8fbdf..b9c8f276f69 100644
--- a/src/osd/modules/debugger/qt/deviceswindow.cpp
+++ b/src/osd/modules/debugger/qt/deviceswindow.cpp
@@ -1,7 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
-
#include "deviceswindow.h"
#include "deviceinformationwindow.h"
@@ -128,8 +126,8 @@ DevicesWindow::DevicesWindow(running_machine* machine, QWidget* parent) :
m_devices_view->setModel(&m_devices_model);
m_devices_view->expandAll();
m_devices_view->resizeColumnToContents(0);
- connect(m_devices_view->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &,const QModelIndex &)), this, SLOT(currentRowChanged(const QModelIndex &,const QModelIndex &)));
- connect(m_devices_view, SIGNAL(activated(const QModelIndex &)), this, SLOT(activated(const QModelIndex &)));
+ connect(m_devices_view->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &DevicesWindow::currentRowChanged);
+ connect(m_devices_view, &QTreeView::activated, this, &DevicesWindow::activated);
setCentralWidget(m_devices_view);
}
diff --git a/src/osd/modules/debugger/qt/deviceswindow.h b/src/osd/modules/debugger/qt/deviceswindow.h
index 614dd11edde..13965b9dce5 100644
--- a/src/osd/modules/debugger/qt/deviceswindow.h
+++ b/src/osd/modules/debugger/qt/deviceswindow.h
@@ -3,7 +3,7 @@
#ifndef __DEBUG_QT_DEVICES_WINDOW_H__
#define __DEBUG_QT_DEVICES_WINDOW_H__
-#include <QtGui/QtGui>
+#include <QtWidgets/QTreeView>
#include "windowqt.h"
diff --git a/src/osd/modules/debugger/qt/logwindow.cpp b/src/osd/modules/debugger/qt/logwindow.cpp
index 95b379f9c28..b6e704cd5c6 100644
--- a/src/osd/modules/debugger/qt/logwindow.cpp
+++ b/src/osd/modules/debugger/qt/logwindow.cpp
@@ -1,6 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
+#include <QtWidgets/QVBoxLayout>
#include "logwindow.h"
diff --git a/src/osd/modules/debugger/qt/logwindow.h b/src/osd/modules/debugger/qt/logwindow.h
index 97aa81c41a1..a406cfb8eb3 100644
--- a/src/osd/modules/debugger/qt/logwindow.h
+++ b/src/osd/modules/debugger/qt/logwindow.h
@@ -3,8 +3,6 @@
#ifndef __DEBUG_QT_LOG_WINDOW_H__
#define __DEBUG_QT_LOG_WINDOW_H__
-#include <QtGui/QtGui>
-
#include "debuggerview.h"
#include "windowqt.h"
diff --git a/src/osd/modules/debugger/qt/mainwindow.cpp b/src/osd/modules/debugger/qt/mainwindow.cpp
index bb4db219912..ef4a3ea809c 100644
--- a/src/osd/modules/debugger/qt/mainwindow.cpp
+++ b/src/osd/modules/debugger/qt/mainwindow.cpp
@@ -1,6 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
+#include <QtWidgets/QAction>
+#include <QtWidgets/QMenu>
+#include <QtWidgets/QMenuBar>
+#include <QtWidgets/QDockWidget>
+#include <QtWidgets/QScrollBar>
+#include <QtWidgets/QFileDialog>
+#include <QtGui/QCloseEvent>
#include "mainwindow.h"
@@ -23,7 +29,7 @@ MainWindow::MainWindow(running_machine* machine, QWidget* parent) :
// The input line
m_inputEdit = new QLineEdit(mainWindowFrame);
- connect(m_inputEdit, SIGNAL(returnPressed()), this, SLOT(executeCommand()));
+ connect(m_inputEdit, &QLineEdit::returnPressed, this, &MainWindow::executeCommandSlot);
m_inputEdit->installEventFilter(this);
@@ -52,9 +58,9 @@ MainWindow::MainWindow(running_machine* machine, QWidget* parent) :
m_breakpointToggleAct->setShortcut(Qt::Key_F9);
m_breakpointEnableAct->setShortcut(Qt::SHIFT + Qt::Key_F9);
m_runToCursorAct->setShortcut(Qt::Key_F4);
- connect(m_breakpointToggleAct, SIGNAL(triggered(bool)), this, SLOT(toggleBreakpointAtCursor(bool)));
- connect(m_breakpointEnableAct, SIGNAL(triggered(bool)), this, SLOT(enableBreakpointAtCursor(bool)));
- connect(m_runToCursorAct, SIGNAL(triggered(bool)), this, SLOT(runToCursor(bool)));
+ connect(m_breakpointToggleAct, &QAction::triggered, this, &MainWindow::toggleBreakpointAtCursor);
+ connect(m_breakpointEnableAct, &QAction::triggered, this, &MainWindow::enableBreakpointAtCursor);
+ connect(m_runToCursorAct, &QAction::triggered, this, &MainWindow::runToCursor);
// Right bar options
QActionGroup* rightBarGroup = new QActionGroup(this);
@@ -72,7 +78,7 @@ MainWindow::MainWindow(running_machine* machine, QWidget* parent) :
rightActEncrypted->setShortcut(QKeySequence("Ctrl+E"));
rightActComments->setShortcut(QKeySequence("Ctrl+C"));
rightActRaw->setChecked(true);
- connect(rightBarGroup, SIGNAL(triggered(QAction*)), this, SLOT(rightBarChanged(QAction*)));
+ connect(rightBarGroup, &QActionGroup::triggered, this, &MainWindow::rightBarChanged);
// Assemble the options menu
QMenu* optionsMenu = menuBar()->addMenu("&Options");
@@ -115,7 +121,7 @@ MainWindow::MainWindow(running_machine* machine, QWidget* parent) :
dasmDock->setAllowedAreas(Qt::TopDockWidgetArea);
m_dasmFrame = new DasmDockWidget(m_machine, dasmDock);
dasmDock->setWidget(m_dasmFrame);
- connect(m_dasmFrame->view(), SIGNAL(updated()), this, SLOT(dasmViewUpdated()));
+ connect(m_dasmFrame->view(), &DebuggerView::updated, this, &MainWindow::dasmViewUpdated);
addDockWidget(Qt::TopDockWidgetArea, dasmDock);
dockMenu->addAction(dasmDock->toggleViewAction());
@@ -300,6 +306,10 @@ void MainWindow::rightBarChanged(QAction* changedTo)
m_dasmFrame->view()->viewport()->update();
}
+void MainWindow::executeCommandSlot()
+{
+ executeCommand(true);
+}
void MainWindow::executeCommand(bool withClear)
{
@@ -477,8 +487,8 @@ void MainWindow::createImagesMenu()
mountAct->setData(QVariant(interfaceIndex));
unmountAct->setObjectName("unmount");
unmountAct->setData(QVariant(interfaceIndex));
- connect(mountAct, SIGNAL(triggered(bool)), this, SLOT(mountImage(bool)));
- connect(unmountAct, SIGNAL(triggered(bool)), this, SLOT(unmountImage(bool)));
+ connect(mountAct, &QAction::triggered, this, &MainWindow::mountImage);
+ connect(unmountAct, &QAction::triggered, this, &MainWindow::unmountImage);
if (!img->exists())
unmountAct->setEnabled(false);
diff --git a/src/osd/modules/debugger/qt/mainwindow.h b/src/osd/modules/debugger/qt/mainwindow.h
index 53a9969baa2..4a93608772f 100644
--- a/src/osd/modules/debugger/qt/mainwindow.h
+++ b/src/osd/modules/debugger/qt/mainwindow.h
@@ -3,9 +3,12 @@
#ifndef __DEBUG_QT_MAIN_WINDOW_H__
#define __DEBUG_QT_MAIN_WINDOW_H__
-#include <QtGui/QtGui>
#include <vector>
+#include <QtWidgets/QLineEdit>
+#include <QtWidgets/QVBoxLayout>
+#include <QtWidgets/QComboBox>
+
#include "debug/dvdisasm.h"
#include "debuggerview.h"
@@ -43,7 +46,7 @@ private slots:
void runToCursor(bool changedTo);
void rightBarChanged(QAction* changedTo);
- void executeCommand(bool withClear=true);
+ void executeCommandSlot();
void mountImage(bool changedTo);
void unmountImage(bool changedTo);
@@ -72,6 +75,7 @@ private:
int m_historyIndex;
std::vector<QString> m_inputHistory;
void addToHistory(const QString& command);
+ void executeCommand(bool withClear);
};
diff --git a/src/osd/modules/debugger/qt/memorywindow.cpp b/src/osd/modules/debugger/qt/memorywindow.cpp
index e78691db6f8..3992dc0fd85 100644
--- a/src/osd/modules/debugger/qt/memorywindow.cpp
+++ b/src/osd/modules/debugger/qt/memorywindow.cpp
@@ -1,6 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
+#include <QtGui/QClipboard>
+#include <QtGui/QMouseEvent>
+#include <QtWidgets/QActionGroup>
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QHBoxLayout>
+#include <QtWidgets/QMenu>
+#include <QtWidgets/QMenuBar>
+#include <QtWidgets/QScrollBar>
+#include <QtWidgets/QToolTip>
+#include <QtWidgets/QVBoxLayout>
#include "memorywindow.h"
@@ -30,13 +39,13 @@ MemoryWindow::MemoryWindow(running_machine* machine, QWidget* parent) :
// The input edit
m_inputEdit = new QLineEdit(topSubFrame);
- connect(m_inputEdit, SIGNAL(returnPressed()), this, SLOT(expressionSubmitted()));
+ connect(m_inputEdit, &QLineEdit::returnPressed, this, &MemoryWindow::expressionSubmitted);
// The memory space combo box
m_memoryComboBox = new QComboBox(topSubFrame);
m_memoryComboBox->setObjectName("memoryregion");
m_memoryComboBox->setMinimumWidth(300);
- connect(m_memoryComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(memoryRegionChanged(int)));
+ connect(m_memoryComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &MemoryWindow::memoryRegionChanged);
// The main memory window
m_memTable = new DebuggerMemView(DVT_MEMORY, m_machine, this);
@@ -97,7 +106,7 @@ MemoryWindow::MemoryWindow(running_machine* machine, QWidget* parent) :
formatActEight->setShortcut(QKeySequence("Ctrl+8"));
formatAct32bitFloat->setShortcut(QKeySequence("Ctrl+9"));
formatActOne->setChecked(true);
- connect(dataFormat, SIGNAL(triggered(QAction*)), this, SLOT(formatChanged(QAction*)));
+ connect(dataFormat, &QActionGroup::triggered, this, &MemoryWindow::formatChanged);
// Create a address display group
QActionGroup* addressGroup = new QActionGroup(this);
addressGroup->setObjectName("addressgroup");
@@ -110,22 +119,22 @@ MemoryWindow::MemoryWindow(running_machine* machine, QWidget* parent) :
addressActLogical->setShortcut(QKeySequence("Ctrl+G"));
addressActPhysical->setShortcut(QKeySequence("Ctrl+Y"));
addressActLogical->setChecked(true);
- connect(addressGroup, SIGNAL(triggered(QAction*)), this, SLOT(addressChanged(QAction*)));
+ connect(addressGroup, &QActionGroup::triggered, this, &MemoryWindow::addressChanged);
// Create a reverse view radio
QAction* reverseAct = new QAction("Reverse View", this);
reverseAct->setObjectName("reverse");
reverseAct->setCheckable(true);
reverseAct->setShortcut(QKeySequence("Ctrl+R"));
- connect(reverseAct, SIGNAL(toggled(bool)), this, SLOT(reverseChanged(bool)));
+ connect(reverseAct, &QAction::toggled, this, &MemoryWindow::reverseChanged);
// Create increase and decrease bytes-per-line actions
QAction* increaseBplAct = new QAction("Increase Bytes Per Line", this);
QAction* decreaseBplAct = new QAction("Decrease Bytes Per Line", this);
increaseBplAct->setShortcut(QKeySequence("Ctrl+P"));
decreaseBplAct->setShortcut(QKeySequence("Ctrl+O"));
- connect(increaseBplAct, SIGNAL(triggered(bool)), this, SLOT(increaseBytesPerLine(bool)));
- connect(decreaseBplAct, SIGNAL(triggered(bool)), this, SLOT(decreaseBytesPerLine(bool)));
+ connect(increaseBplAct, &QAction::triggered, this, &MemoryWindow::increaseBytesPerLine);
+ connect(decreaseBplAct, &QAction::triggered, this, &MemoryWindow::decreaseBytesPerLine);
// Assemble the options menu
QMenu* optionsMenu = menuBar()->addMenu("&Options");
diff --git a/src/osd/modules/debugger/qt/memorywindow.h b/src/osd/modules/debugger/qt/memorywindow.h
index 75b3c994bb7..d5fb74f677a 100644
--- a/src/osd/modules/debugger/qt/memorywindow.h
+++ b/src/osd/modules/debugger/qt/memorywindow.h
@@ -3,7 +3,8 @@
#ifndef __DEBUG_QT_MEMORY_WINDOW_H__
#define __DEBUG_QT_MEMORY_WINDOW_H__
-#include <QtGui/QtGui>
+#include <QtWidgets/QLineEdit>
+#include <QtWidgets/QComboBox>
#include "debuggerview.h"
#include "windowqt.h"
diff --git a/src/osd/modules/debugger/qt/windowqt.cpp b/src/osd/modules/debugger/qt/windowqt.cpp
index e455e586b00..adaf96ab2e1 100644
--- a/src/osd/modules/debugger/qt/windowqt.cpp
+++ b/src/osd/modules/debugger/qt/windowqt.cpp
@@ -1,6 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#define NO_MEM_TRACKING
+#include <QtWidgets/QMenu>
+#include <QtWidgets/QMenuBar>
#include "windowqt.h"
#include "logwindow.h"
@@ -27,71 +28,71 @@ WindowQt::WindowQt(running_machine* machine, QWidget* parent) :
// The Debug menu bar
QAction* debugActOpenMemory = new QAction("New &Memory Window", this);
debugActOpenMemory->setShortcut(QKeySequence("Ctrl+M"));
- connect(debugActOpenMemory, SIGNAL(triggered()), this, SLOT(debugActOpenMemory()));
+ connect(debugActOpenMemory, &QAction::triggered, this, &WindowQt::debugActOpenMemory);
QAction* debugActOpenDasm = new QAction("New &Dasm Window", this);
debugActOpenDasm->setShortcut(QKeySequence("Ctrl+D"));
- connect(debugActOpenDasm, SIGNAL(triggered()), this, SLOT(debugActOpenDasm()));
+ connect(debugActOpenDasm, &QAction::triggered, this, &WindowQt::debugActOpenDasm);
QAction* debugActOpenLog = new QAction("New &Log Window", this);
debugActOpenLog->setShortcut(QKeySequence("Ctrl+L"));
- connect(debugActOpenLog, SIGNAL(triggered()), this, SLOT(debugActOpenLog()));
+ connect(debugActOpenLog, &QAction::triggered, this, &WindowQt::debugActOpenLog);
QAction* debugActOpenPoints = new QAction("New &Break|Watchpoints Window", this);
debugActOpenPoints->setShortcut(QKeySequence("Ctrl+B"));
- connect(debugActOpenPoints, SIGNAL(triggered()), this, SLOT(debugActOpenPoints()));
+ connect(debugActOpenPoints, &QAction::triggered, this, &WindowQt::debugActOpenPoints);
QAction* debugActOpenDevices = new QAction("New D&evices Window", this);
debugActOpenDevices->setShortcut(QKeySequence("Shift+Ctrl+D"));
- connect(debugActOpenDevices, SIGNAL(triggered()), this, SLOT(debugActOpenDevices()));
+ connect(debugActOpenDevices, &QAction::triggered, this, &WindowQt::debugActOpenDevices);
QAction* dbgActRun = new QAction("Run", this);
dbgActRun->setShortcut(Qt::Key_F5);
- connect(dbgActRun, SIGNAL(triggered()), this, SLOT(debugActRun()));
+ connect(dbgActRun, &QAction::triggered, this, &WindowQt::debugActRun);
QAction* dbgActRunAndHide = new QAction("Run And Hide Debugger", this);
dbgActRunAndHide->setShortcut(Qt::Key_F12);
- connect(dbgActRunAndHide, SIGNAL(triggered()), this, SLOT(debugActRunAndHide()));
+ connect(dbgActRunAndHide, &QAction::triggered, this, &WindowQt::debugActRunAndHide);
QAction* dbgActRunToNextCpu = new QAction("Run to Next CPU", this);
dbgActRunToNextCpu->setShortcut(Qt::Key_F6);
- connect(dbgActRunToNextCpu, SIGNAL(triggered()), this, SLOT(debugActRunToNextCpu()));
+ connect(dbgActRunToNextCpu, &QAction::triggered, this, &WindowQt::debugActRunToNextCpu);
QAction* dbgActRunNextInt = new QAction("Run to Next Interrupt on This CPU", this);
dbgActRunNextInt->setShortcut(Qt::Key_F7);
- connect(dbgActRunNextInt, SIGNAL(triggered()), this, SLOT(debugActRunNextInt()));
+ connect(dbgActRunNextInt, &QAction::triggered, this, &WindowQt::debugActRunNextInt);
QAction* dbgActRunNextVBlank = new QAction("Run to Next VBlank", this);
dbgActRunNextVBlank->setShortcut(Qt::Key_F8);
- connect(dbgActRunNextVBlank, SIGNAL(triggered()), this, SLOT(debugActRunNextVBlank()));
+ connect(dbgActRunNextVBlank, &QAction::triggered, this, &WindowQt::debugActRunNextVBlank);
QAction* dbgActStepInto = new QAction("Step Into", this);
dbgActStepInto->setShortcut(Qt::Key_F11);
- connect(dbgActStepInto, SIGNAL(triggered()), this, SLOT(debugActStepInto()));
+ connect(dbgActStepInto, &QAction::triggered, this, &WindowQt::debugActStepInto);
QAction* dbgActStepOver = new QAction("Step Over", this);
dbgActStepOver->setShortcut(Qt::Key_F10);
- connect(dbgActStepOver, SIGNAL(triggered()), this, SLOT(debugActStepOver()));
+ connect(dbgActStepOver, &QAction::triggered, this, &WindowQt::debugActStepOver);
QAction* dbgActStepOut = new QAction("Step Out", this);
dbgActStepOut->setShortcut(QKeySequence("Shift+F11"));
- connect(dbgActStepOut, SIGNAL(triggered()), this, SLOT(debugActStepOut()));
+ connect(dbgActStepOut, &QAction::triggered, this, &WindowQt::debugActStepOut);
QAction* dbgActSoftReset = new QAction("Soft Reset", this);
dbgActSoftReset->setShortcut(Qt::Key_F3);
- connect(dbgActSoftReset, SIGNAL(triggered()), this, SLOT(debugActSoftReset()));
+ connect(dbgActSoftReset, &QAction::triggered, this, &WindowQt::debugActSoftReset);
QAction* dbgActHardReset = new QAction("Hard Reset", this);
dbgActHardReset->setShortcut(QKeySequence("Shift+F3"));
- connect(dbgActHardReset, SIGNAL(triggered()), this, SLOT(debugActHardReset()));
+ connect(dbgActHardReset, &QAction::triggered, this, &WindowQt::debugActHardReset);
QAction* dbgActClose = new QAction("Close &Window", this);
dbgActClose->setShortcut(QKeySequence::Close);
- connect(dbgActClose, SIGNAL(triggered()), this, SLOT(debugActClose()));
+ connect(dbgActClose, &QAction::triggered, this, &WindowQt::debugActClose);
QAction* dbgActQuit = new QAction("&Quit", this);
dbgActQuit->setShortcut(QKeySequence::Quit);
- connect(dbgActQuit, SIGNAL(triggered()), this, SLOT(debugActQuit()));
+ connect(dbgActQuit, &QAction::triggered, this, &WindowQt::debugActQuit);
// Construct the menu
QMenu* debugMenu = menuBar()->addMenu("&Debug");
diff --git a/src/osd/modules/debugger/qt/windowqt.h b/src/osd/modules/debugger/qt/windowqt.h
index 5b16b47463f..e2e334792b2 100644
--- a/src/osd/modules/debugger/qt/windowqt.h
+++ b/src/osd/modules/debugger/qt/windowqt.h
@@ -3,7 +3,7 @@
#ifndef __DEBUG_QT_WINDOW_QT_H__
#define __DEBUG_QT_WINDOW_QT_H__
-#include <QtGui/QtGui>
+#include <QtWidgets/QMainWindow>
#include "emu.h"
#include "config.h"
diff --git a/src/osd/modules/debugger/win/debugviewinfo.cpp b/src/osd/modules/debugger/win/debugviewinfo.cpp
index 1e36655d65d..3a8aab66d74 100644
--- a/src/osd/modules/debugger/win/debugviewinfo.cpp
+++ b/src/osd/modules/debugger/win/debugviewinfo.cpp
@@ -10,7 +10,7 @@
#include "debugwininfo.h"
#include "uimetrics.h"
-
+#include "debugger.h"
#include "debug/debugcpu.h"
#include "strconv.h"
diff --git a/src/osd/modules/debugger/win/disasmbasewininfo.cpp b/src/osd/modules/debugger/win/disasmbasewininfo.cpp
index f7f516ca24c..0cc9287bb0a 100644
--- a/src/osd/modules/debugger/win/disasmbasewininfo.cpp
+++ b/src/osd/modules/debugger/win/disasmbasewininfo.cpp
@@ -191,7 +191,7 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam)
debug_console_printf(machine(), "Breakpoint %X cleared\n", bpindex);
}
machine().debug_view().update_all();
- debugger_refresh_display(machine());
+ machine().debugger().refresh_display();
}
else if (dasmview->source_is_visible_cpu())
{
@@ -224,7 +224,7 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam)
debug->breakpoint_enable(bp->index(), !bp->enabled());
debug_console_printf(machine(), "Breakpoint %X %s\n", (UINT32)bp->index(), bp->enabled() ? "enabled" : "disabled");
machine().debug_view().update_all();
- debugger_refresh_display(machine());
+ machine().debugger().refresh_display();
}
else if (dasmview->source_is_visible_cpu())
{
diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp
index 39767eb6210..b36bbf60df3 100644
--- a/src/osd/modules/lib/osdobj_common.cpp
+++ b/src/osd/modules/lib/osdobj_common.cpp
@@ -13,8 +13,6 @@
#include "osdepend.h"
#include "modules/lib/osdobj_common.h"
-extern bool g_print_verbose;
-
const options_entry osd_options::s_option_entries[] =
{
{ NULL, NULL, OPTION_HEADER, "OSD KEYBOARD MAPPING OPTIONS" },
@@ -155,6 +153,7 @@ osd_options::osd_options()
osd_common_t::osd_common_t(osd_options &options)
: osd_output(), m_machine(NULL),
m_options(options),
+ m_print_verbose(false),
m_sound(NULL),
m_debugger(NULL)
{
@@ -186,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
@@ -278,10 +278,12 @@ void osd_common_t::output_callback(osd_output_channel channel, const char *msg,
vfprintf(stderr, msg, args);
break;
case OSD_OUTPUT_CHANNEL_INFO:
- case OSD_OUTPUT_CHANNEL_VERBOSE:
case OSD_OUTPUT_CHANNEL_LOG:
vfprintf(stdout, msg, args);
break;
+ case OSD_OUTPUT_CHANNEL_VERBOSE:
+ if (verbose()) vfprintf(stdout, msg, args);
+ break;
case OSD_OUTPUT_CHANNEL_DEBUG:
#ifdef MAME_DEBUG
vfprintf(stdout, msg, args);
@@ -333,7 +335,7 @@ void osd_common_t::init(running_machine &machine)
osd_options &options = downcast<osd_options &>(machine.options());
// extract the verbose printing option
if (options.verbose())
- g_print_verbose = true;
+ set_verbose(true);
// ensure we get called on the way out
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(osd_common_t::osd_exit), this));
diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h
index d1aca5f4e43..a73931f3fa1 100644
--- a/src/osd/modules/lib/osdobj_common.h
+++ b/src/osd/modules/lib/osdobj_common.h
@@ -202,7 +202,6 @@ public:
// getters
running_machine &machine() { assert(m_machine != nullptr); return *m_machine; }
-
virtual void debugger_update();
virtual void init_subsystems();
@@ -228,6 +227,8 @@ public:
// osd_output interface ...
virtual void output_callback(osd_output_channel channel, const char *msg, va_list args) override;
+ bool verbose() const { return m_print_verbose; }
+ void set_verbose(bool print_verbose) { m_print_verbose = print_verbose; }
protected:
virtual bool input_init();
@@ -238,6 +239,8 @@ private:
running_machine * m_machine;
osd_options& m_options;
+ bool m_print_verbose;
+
osd_module_manager m_mod_man;
font_module *m_font_module;
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index 712646f7a9a..507553ccc14 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -1367,7 +1367,7 @@ 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->defocus[1] == 0.0f && options->defocus[2] == 0.0f)
+ if (options->phosphor[0] == 0.0f && options->defocus[0] == 0.0f && options->defocus[1] == 0.0f)
{
return next_index;
}
@@ -1416,11 +1416,11 @@ 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] = {
+ float back_color[3] = {
static_cast<float>(back_color_rgb.r()) / 255.0f,
static_cast<float>(back_color_rgb.g()) / 255.0f,
static_cast<float>(back_color_rgb.b()) / 255.0f };
@@ -1851,7 +1851,7 @@ bool shaders::register_prescaled_texture(texture_info *texture)
//============================================================
bool shaders::add_cache_target(renderer* d3d, texture_info* info, int width, int height, int xprescale, int yprescale, int screen_index)
{
- cache_target* target = (cache_target*)global_alloc_clear(cache_target);
+ cache_target* target = (cache_target*)global_alloc_clear<cache_target>();
if (!target->init(d3d, d3dintf, width, height, xprescale, yprescale))
{
@@ -1932,7 +1932,7 @@ bool shaders::add_render_target(renderer* d3d, texture_info* info, int width, in
}
}
- render_target* target = (render_target*)global_alloc_clear(render_target);
+ render_target* target = (render_target*)global_alloc_clear<render_target>();
if (!target->init(d3d, d3dintf, width, height, xprescale, yprescale))
{
@@ -2779,18 +2779,18 @@ static INT32 slider_ntsc_enable(running_machine &machine, void *arg, std::string
// 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;
+// 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)
@@ -3091,7 +3091,7 @@ void uniform::update()
if (shadersys->curr_render_target != NULL)
{
float targetdims[2] = {
- static_cast<float>(shadersys->curr_render_target->target_width),
+ 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);
}
diff --git a/src/osd/modules/render/drawd3d.cpp b/src/osd/modules/render/drawd3d.cpp
index 4f3d9e2bf56..b8730696a54 100644
--- a/src/osd/modules/render/drawd3d.cpp
+++ b/src/osd/modules/render/drawd3d.cpp
@@ -915,11 +915,11 @@ try_again:
// create shader options only once
if (m_shaders_options == NULL)
{
- m_shaders_options = (hlsl_options*)global_alloc_clear(hlsl_options);
+ m_shaders_options = (hlsl_options*)global_alloc_clear<hlsl_options>();
m_shaders_options->params_init = false;
}
- m_shaders = (shaders*)global_alloc_clear(shaders);
+ m_shaders = (shaders*)global_alloc_clear<shaders>();
m_shaders->init(d3dintf, &window().machine(), this);
int failed = m_shaders->create_resources(false);
diff --git a/src/osd/modules/render/drawsdl.cpp b/src/osd/modules/render/drawsdl.cpp
index ed3c73af73d..221ac79ef4d 100644
--- a/src/osd/modules/render/drawsdl.cpp
+++ b/src/osd/modules/render/drawsdl.cpp
@@ -446,6 +446,14 @@ int sdl_info::create()
if (!m_sdl_renderer)
{
+ if (video_config.waitvsync)
+ m_sdl_renderer = SDL_CreateRenderer(window().sdl_window(), -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_SOFTWARE);
+ else
+ m_sdl_renderer = SDL_CreateRenderer(window().sdl_window(), -1, SDL_RENDERER_SOFTWARE);
+ }
+
+ if (!m_sdl_renderer)
+ {
fatalerror("Error on creating renderer: %s\n", SDL_GetError());
}
diff --git a/src/osd/modules/sound/coreaudio_sound.cpp b/src/osd/modules/sound/coreaudio_sound.cpp
index 04c179274dd..ff6303b0df8 100644
--- a/src/osd/modules/sound/coreaudio_sound.cpp
+++ b/src/osd/modules/sound/coreaudio_sound.cpp
@@ -146,7 +146,7 @@ private:
CFIndex const len = CFStringGetMaximumSizeForEncoding(
CFStringGetLength(str),
kCFStringEncodingUTF8);
- char *const result = global_alloc_array_clear(char, len + 1);
+ char *const result = global_alloc_array_clear<char>(len + 1);
if (!CFStringGetCString(str, result, len + 1, kCFStringEncodingUTF8))
{
global_free_array(result);
@@ -229,7 +229,7 @@ int sound_coreaudio::init(const osd_options &options)
// Allocate buffer
m_headroom = m_sample_bytes * (clamped_latency() * sample_rate() / 40);
m_buffer_size = m_sample_bytes * MAX(sample_rate() * (clamped_latency() + 3) / 40, 256);
- m_buffer = global_alloc_array_clear(INT8, m_buffer_size);
+ m_buffer = global_alloc_array_clear<INT8>(m_buffer_size);
if (!m_buffer)
{
osd_printf_error("Could not allocate stream buffer\n");
@@ -648,7 +648,7 @@ bool sound_coreaudio::get_output_device_id(
return false;
}
property_size /= sizeof(AudioDeviceID);
- AudioDeviceID *const devices = global_alloc_array_clear(AudioDeviceID, property_size);
+ AudioDeviceID *const devices = global_alloc_array_clear<AudioDeviceID>(property_size);
property_size *= sizeof(AudioDeviceID);
err = AudioObjectGetPropertyData(
kAudioObjectSystemObject,
diff --git a/src/osd/modules/sound/sdl_sound.cpp b/src/osd/modules/sound/sdl_sound.cpp
index c2f83b41954..de8d57af11c 100644
--- a/src/osd/modules/sound/sdl_sound.cpp
+++ b/src/osd/modules/sound/sdl_sound.cpp
@@ -518,7 +518,7 @@ int sound_sdl::sdl_create_buffers(void)
{
osd_printf_verbose("sdl_create_buffers: creating stream buffer of %u bytes\n", stream_buffer_size);
- stream_buffer = global_alloc_array_clear(INT8, stream_buffer_size);
+ stream_buffer = global_alloc_array_clear<INT8>(stream_buffer_size);
stream_playpos = 0;
buf_locked = 0;
return 0;
diff --git a/src/osd/modules/sound/xaudio2_sound.cpp b/src/osd/modules/sound/xaudio2_sound.cpp
new file mode 100644
index 00000000000..7df854c0364
--- /dev/null
+++ b/src/osd/modules/sound/xaudio2_sound.cpp
@@ -0,0 +1,731 @@
+// 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>
+
+#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();
+ }
+ }
+
+ void operator()(osd_lock* obj) const
+ {
+ if (obj != nullptr)
+ {
+ osd_lock_free(obj);
+ }
+ }
+};
+
+// 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 std::unique_ptr<osd_lock, xaudio2_custom_deleter> osd_lock_ptr;
+
+// Typedef for pointer to XAudio2Create
+typedef HRESULT(__stdcall* PFN_XAUDIO2CREATE)(IXAudio2**, UINT32, XAUDIO2_PROCESSOR);
+
+//============================================================
+// Helper classes
+//============================================================
+
+// Helper for locking within a particular scope without having to manually release
+class osd_scoped_lock
+{
+private:
+ osd_lock * m_lock;
+public:
+ osd_scoped_lock(osd_lock* lock)
+ {
+ m_lock = lock;
+ osd_lock_acquire(m_lock);
+ }
+
+ ~osd_scoped_lock()
+ {
+ if (m_lock != nullptr)
+ {
+ osd_lock_release(m_lock);
+ }
+ }
+};
+
+// 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;
+ osd_lock_ptr 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_buffer_lock(osd_lock_alloc()),
+ 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;
+
+ osd_scoped_lock scope_lock(m_buffer_lock.get());
+
+ 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)
+ {
+ auto scoped_lock = osd_scoped_lock(m_buffer_lock.get());
+ 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;
+
+ osd_scoped_lock lock_scope(m_buffer_lock.get());
+
+ // 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/osdcore.cpp b/src/osd/osdcore.cpp
index 91ba3fc4266..632124e2e7c 100644
--- a/src/osd/osdcore.cpp
+++ b/src/osd/osdcore.cpp
@@ -3,8 +3,6 @@
#include "osdcore.h"
-bool g_print_verbose = false;
-
static const int MAXSTACK = 10;
static osd_output *m_stack[MAXSTACK];
static int m_ptr = -1;
@@ -104,10 +102,6 @@ void CLIB_DECL osd_printf_verbose(const char *format, ...)
{
va_list argptr;
- /* if we're not verbose, skip it */
- if (!g_print_verbose)
- return;
-
/* do the output */
va_start(argptr, format);
if (m_ptr >= 0) m_stack[m_ptr]->output_callback(OSD_OUTPUT_CHANNEL_VERBOSE, format, argptr);
diff --git a/src/osd/osdcore.h b/src/osd/osdcore.h
index b7180accac8..0a4f351e5e9 100644
--- a/src/osd/osdcore.h
+++ b/src/osd/osdcore.h
@@ -945,6 +945,17 @@ void osd_list_network_adapters(void);
-----------------------------------------------------------------------------*/
const char *osd_get_volume_name(int idx);
+/*-----------------------------------------------------------------------------
+ osd_subst_env: substitute environment variables with values
+
+ Parameters:
+
+ dst - result pointer
+ src - source string
+
+-----------------------------------------------------------------------------*/
+void osd_subst_env(char **dst, const char *src);
+
/* ----- output management ----- */
// output channels
diff --git a/src/osd/osdmini/minimisc.cpp b/src/osd/osdmini/minimisc.cpp
index c6bb413b292..2bf613b0b7c 100644
--- a/src/osd/osdmini/minimisc.cpp
+++ b/src/osd/osdmini/minimisc.cpp
@@ -99,3 +99,15 @@ int osd_setenv(const char *name, const char *value, int overwrite)
{
return 0;
}
+
+//============================================================
+// osd_subst_env
+//============================================================
+int 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/osdnet.cpp b/src/osd/osdnet.cpp
index 057a562ee76..7acfbd57f88 100644
--- a/src/osd/osdnet.cpp
+++ b/src/osd/osdnet.cpp
@@ -7,7 +7,7 @@ static class simple_list<osd_netdev::entry_t> netdev_list;
void add_netdev(const char *name, const char *description, create_netdev func)
{
- auto entry = global_alloc_clear(osd_netdev::entry_t);
+ auto entry = global_alloc_clear<osd_netdev::entry_t>();
entry->id = netdev_list.count();
strncpy(entry->name, name, 255);
entry->name[255] = '\0';
diff --git a/src/osd/sdl/input.cpp b/src/osd/sdl/input.cpp
index e2732c0a61c..4dfb5bd0ad0 100644
--- a/src/osd/sdl/input.cpp
+++ b/src/osd/sdl/input.cpp
@@ -1741,7 +1741,7 @@ void sdlinput_poll(running_machine &machine)
devinfo->keyboard.state[OSD_SDL_INDEX_KEYSYM(&event.key.keysym)] = 0x80;
#if (SDLMAME_SDL2)
if (event.key.keysym.sym < 0x20)
- ui_input_push_char_event(machine, sdl_window_list->target(), event.key.keysym.sym);
+ machine.ui_input().push_char_event(sdl_window_list->target(), event.key.keysym.sym);
#else
ui_input_push_char_event(machine, sdl_window_list->target(), (unicode_char) event.key.keysym.unicode);
#endif
@@ -1845,14 +1845,14 @@ void sdlinput_poll(running_machine &machine)
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) )
{
- ui_input_push_mouse_down_event(machine, window->target(), cx, cy);
+ machine.ui_input().push_mouse_down_event(window->target(), cx, cy);
// FIXME Parameter ?
if ((click-last_click < 250)
&& (cx >= last_x - 4 && cx <= last_x + 4)
&& (cy >= last_y - 4 && cy <= last_y + 4) )
{
last_click = 0;
- ui_input_push_mouse_double_click_event(machine, window->target(), cx, cy);
+ machine.ui_input().push_mouse_double_click_event(window->target(), cx, cy);
}
else
{
@@ -1879,7 +1879,7 @@ void sdlinput_poll(running_machine &machine)
if (window != NULL && window->xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
{
- ui_input_push_mouse_up_event(machine, window->target(), cx, cy);
+ machine.ui_input().push_mouse_up_event(window->target(), cx, cy);
}
}
break;
@@ -1903,7 +1903,7 @@ void sdlinput_poll(running_machine &machine)
sdl_window_info *window = GET_FOCUS_WINDOW(&event.motion);
if (window != NULL && window->xy_to_render_target(event.motion.x, event.motion.y, &cx, &cy) )
- ui_input_push_mouse_move_event(machine, window->target(), cx, cy);
+ machine.ui_input().push_mouse_move_event(window->target(), cx, cy);
}
break;
case SDL_JOYBALLMOTION:
@@ -1937,7 +1937,7 @@ void sdlinput_poll(running_machine &machine)
if (window != NULL )
{
osd_uchar_from_osdchar(&result, event.text.text, 1);
- ui_input_push_char_event(machine, window->target(), result);
+ machine.ui_input().push_char_event(window->target(), result);
}
}
break;
@@ -1954,7 +1954,7 @@ void sdlinput_poll(running_machine &machine)
machine.schedule_exit();
break;
case SDL_WINDOWEVENT_LEAVE:
- ui_input_push_mouse_leave_event(machine, window->target());
+ machine.ui_input().push_mouse_leave_event(window->target());
app_has_mouse_focus = 0;
break;
case SDL_WINDOWEVENT_MOVED:
@@ -2219,7 +2219,7 @@ static device_info *generic_device_alloc(device_info **devlist_head_ptr, const c
device_info *devinfo;
// allocate memory for the device object
- devinfo = global_alloc_clear(device_info);
+ devinfo = global_alloc_clear<device_info>();
devinfo->head = devlist_head_ptr;
// allocate a UTF8 copy of the name
diff --git a/src/osd/sdl/osdsdl.h b/src/osd/sdl/osdsdl.h
index bf8e4535cdf..e82c75406cc 100644
--- a/src/osd/sdl/osdsdl.h
+++ b/src/osd/sdl/osdsdl.h
@@ -119,12 +119,12 @@ public:
const char *keymap_file() const { return value(SDLOPTION_KEYMAP_FILE); }
// joystick mapping
- const char *joy_index(int index) const { std::string temp; return value(strformat(temp, "%s%d", SDLOPTION_JOYINDEX, index).c_str()); }
+ const char *joy_index(int index) const { return value(strformat("%s%d", SDLOPTION_JOYINDEX, index).c_str()); }
bool sixaxis() const { return bool_value(SDLOPTION_SIXAXIS); }
#if (SDLMAME_SDL2)
- const char *mouse_index(int index) const { std::string temp; return value(strformat(temp, "%s%d", SDLOPTION_MOUSEINDEX, index).c_str()); }
- const char *keyboard_index(int index) const { std::string temp; return value(strformat(temp, "%s%d", SDLOPTION_KEYBINDEX, index).c_str()); }
+ const char *mouse_index(int index) const { return value(strformat("%s%d", SDLOPTION_MOUSEINDEX, index).c_str()); }
+ const char *keyboard_index(int index) const { return value(strformat("%s%d", SDLOPTION_KEYBINDEX, index).c_str()); }
#endif
const char *video_driver() const { return value(SDLOPTION_VIDEODRIVER); }
diff --git a/src/osd/sdl/output.cpp b/src/osd/sdl/output.cpp
index 7f8d9d51f57..34cf7523d8b 100644
--- a/src/osd/sdl/output.cpp
+++ b/src/osd/sdl/output.cpp
@@ -89,7 +89,7 @@ bool sdl_osd_interface::output_init()
fflush(output);
}
- output_set_notifier(NULL, notifier_callback, NULL);
+ machine().output().set_notifier(NULL, notifier_callback, NULL);
return true;
}
diff --git a/src/osd/sdl/sdlfile.cpp b/src/osd/sdl/sdlfile.cpp
index a0a49801a95..b6088c8aa54 100644
--- a/src/osd/sdl/sdlfile.cpp
+++ b/src/osd/sdl/sdlfile.cpp
@@ -117,8 +117,7 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
#else
struct stat64 st;
#endif
- char *tmpstr, *envstr;
- int i, j;
+ char *tmpstr;
file_error filerr = FILERR_NONE;
tmpstr = NULL;
@@ -169,42 +168,7 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
goto error;
}
- tmpstr = (char *) osd_malloc_array(strlen((*file)->filename)+1);
- strcpy(tmpstr, (*file)->filename);
-
- // does path start with an environment variable?
- if (tmpstr[0] == '$')
- {
- envstr = (char *) osd_malloc_array(strlen(tmpstr)+1);
-
- strcpy(envstr, tmpstr);
-
- i = 0;
- while (envstr[i] != PATHSEPCH && envstr[i] != 0 && envstr[i] != '.')
- {
- i++;
- }
-
- envstr[i] = '\0';
-
- const char *envval = osd_getenv(&envstr[1]);
- if (envval != NULL)
- {
- j = strlen(envval) + strlen(tmpstr) + 1;
- osd_free(tmpstr);
- tmpstr = (char *) osd_malloc_array(j);
-
- // start with the value of $HOME
- strcpy(tmpstr, envval);
- // replace the null with a path separator again
- envstr[i] = PATHSEPCH;
- // append it
- strcat(tmpstr, &envstr[i]);
- }
- else
- fprintf(stderr, "Warning: osd_open environment variable %s not found.\n", envstr);
- osd_free(envstr);
- }
+ osd_subst_env(&tmpstr, (*file)->filename);
#if defined(SDLMAME_WIN32) || defined(SDLMAME_OS2)
access |= O_BINARY;
@@ -597,4 +561,49 @@ const char *osd_get_volume_name(int idx)
return "/";
}
+//============================================================
+// osd_subst_env
+//============================================================
+void osd_subst_env(char **dst, const char *src)
+{
+ int i, j;
+ char *envstr;
+
+ osd_free(*dst);
+ *dst = (char *) osd_malloc_array(strlen(src)+1);
+ strcpy(*dst, src);
+
+ // start with an environment variable?
+ if (*dst[0] == '$')
+ {
+ envstr = (char *) osd_malloc_array(strlen(src)+1);
+ strcpy(envstr, src);
+
+ i = 0;
+ while (!osd_is_path_separator(envstr[i]) && envstr[i] != 0 && envstr[i] != '.')
+ {
+ i++;
+ }
+
+ envstr[i] = '\0';
+
+ const char *envval = osd_getenv(&envstr[1]);
+ if (envval != NULL)
+ {
+ j = strlen(envval) + strlen(*dst) + 1;
+ osd_free(*dst);
+ *dst = (char *) osd_malloc_array(j);
+
+ // start with the value of $HOME
+ strcpy(*dst, envval);
+ // replace the null with a path separator again
+ envstr[i] = PATHSEPCH;
+ // append it
+ strcat(*dst, &envstr[i]);
+ }
+ else
+ fprintf(stderr, "Warning: osd_subst_env variable %s not found.\n", envstr);
+ osd_free(envstr);
+ }
+}
#endif
diff --git a/src/osd/sdl/sdlsocket.cpp b/src/osd/sdl/sdlsocket.cpp
index 549729bf3e2..5d3e7030deb 100644
--- a/src/osd/sdl/sdlsocket.cpp
+++ b/src/osd/sdl/sdlsocket.cpp
@@ -24,7 +24,6 @@
#include <netdb.h>
#include <errno.h>
-#define NO_MEM_TRACKING
#include "emu.h"
#include "sdlfile.h"
diff --git a/src/osd/sdl/video.cpp b/src/osd/sdl/video.cpp
index 20de4ee671f..c5de6be41d9 100644
--- a/src/osd/sdl/video.cpp
+++ b/src/osd/sdl/video.cpp
@@ -336,7 +336,7 @@ void sdl_monitor_info::add_primary_monitor(void *data)
osd_monitor_info **tailptr = &sdl_monitor_info::list;
// allocate a new monitor info
- osd_monitor_info *monitor = global_alloc_clear(sdl_monitor_info(0, "", 1.0f));
+ osd_monitor_info *monitor = global_alloc_clear<sdl_monitor_info>(0, "", 1.0f);
//monitor->refresh();
// guess the aspect ratio assuming square pixels
@@ -413,7 +413,7 @@ void sdl_monitor_info::init()
// allocate a new monitor info
- monitor = global_alloc_clear(sdl_monitor_info(i, temp, 1.0f));
+ monitor = global_alloc_clear<sdl_monitor_info>(i, temp, 1.0f);
osd_printf_verbose("Adding monitor %s (%d x %d)\n", monitor->devicename(),
monitor->position_size().width(), monitor->position_size().height());
@@ -509,7 +509,7 @@ static void check_osd_inputs(running_machine &machine)
sdl_window_info *window = sdlinput_get_focus_window();
// check for toggling fullscreen mode
- if (ui_input_pressed(machine, IPT_OSD_1))
+ if (machine.ui_input().pressed(IPT_OSD_1))
{
sdl_window_info *curwin = sdl_window_list;
@@ -520,14 +520,14 @@ static void check_osd_inputs(running_machine &machine)
}
}
- if (ui_input_pressed(machine, IPT_OSD_2))
+ if (machine.ui_input().pressed(IPT_OSD_2))
{
//FIXME: on a per window basis
video_config.fullstretch = !video_config.fullstretch;
machine.ui().popup_time(1, "Uneven stretch %s", video_config.fullstretch? "enabled":"disabled");
}
- if (ui_input_pressed(machine, IPT_OSD_4))
+ if (machine.ui_input().pressed(IPT_OSD_4))
{
//FIXME: on a per window basis
video_config.keepaspect = !video_config.keepaspect;
@@ -536,17 +536,17 @@ static void check_osd_inputs(running_machine &machine)
#if (USE_OPENGL || SDLMAME_SDL2)
//FIXME: on a per window basis
- if (ui_input_pressed(machine, IPT_OSD_5))
+ if (machine.ui_input().pressed(IPT_OSD_5))
{
video_config.filter = !video_config.filter;
machine.ui().popup_time(1, "Filter %s", video_config.filter? "enabled":"disabled");
}
#endif
- if (ui_input_pressed(machine, IPT_OSD_6))
+ if (machine.ui_input().pressed(IPT_OSD_6))
window->modify_prescale(-1);
- if (ui_input_pressed(machine, IPT_OSD_7))
+ if (machine.ui_input().pressed(IPT_OSD_7))
window->modify_prescale(1);
}
diff --git a/src/osd/windows/input.cpp b/src/osd/windows/input.cpp
index ccfd7b24006..0165e4820f0 100644
--- a/src/osd/windows/input.cpp
+++ b/src/osd/windows/input.cpp
@@ -858,7 +858,7 @@ static device_info *generic_device_alloc(running_machine &machine, device_info *
device_info *devinfo;
// allocate memory for the device object
- devinfo = global_alloc_clear(device_info(machine));
+ devinfo = global_alloc_clear<device_info>(machine);
devinfo->head = devlist_head_ptr;
// allocate a UTF8 copy of the name
@@ -1831,7 +1831,7 @@ static device_info *rawinput_device_create(running_machine &machine, device_info
// determine the length of the device name, allocate it, and fetch it if not nameless
if ((*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, NULL, &name_length) != 0)
goto error;
- tname = global_alloc_array_clear(TCHAR, name_length+1);
+ tname = global_alloc_array_clear<TCHAR>(name_length+1);
if (name_length > 1 && (*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, tname, &name_length) == -1)
goto error;
diff --git a/src/osd/windows/ledutil.cpp b/src/osd/windows/ledutil.cpp
index 6106005145e..85c7cca1fe1 100644
--- a/src/osd/windows/ledutil.cpp
+++ b/src/osd/windows/ledutil.cpp
@@ -398,7 +398,7 @@ static LRESULT handle_copydata(WPARAM wparam, LPARAM lparam)
strcpy(string, data->string);
idmaplist = entry;
- DEBUG_PRINTF((" id %d = '%s'\n", entry->id, entry->name));
+ DEBUG_PRINTF((" id %d = '%s'\n", (int)entry->id, entry->name));
return 0;
}
diff --git a/src/osd/windows/output.cpp b/src/osd/windows/output.cpp
index 0419d9bc2a7..3b390b1f3a1 100644
--- a/src/osd/windows/output.cpp
+++ b/src/osd/windows/output.cpp
@@ -39,6 +39,7 @@ struct registered_client
registered_client * next; // next client in the list
LPARAM id; // client-specified ID
HWND hwnd; // client HWND
+ running_machine * machine;
};
@@ -69,8 +70,8 @@ static UINT om_mame_get_id_string;
static int create_window_class(void);
static LRESULT CALLBACK output_window_proc(HWND wnd, UINT message, WPARAM wparam, LPARAM lparam);
-static LRESULT register_client(HWND hwnd, LPARAM id);
-static LRESULT unregister_client(HWND hwnd, LPARAM id);
+static LRESULT register_client(running_machine &machine, HWND hwnd, LPARAM id);
+static LRESULT unregister_client(running_machine &machine, HWND hwnd, LPARAM id);
static LRESULT send_id_string(running_machine &machine, HWND hwnd, LPARAM id);
static void notifier_callback(const char *outname, INT32 value, void *param);
@@ -128,7 +129,7 @@ bool windows_osd_interface::output_init()
PostMessage(HWND_BROADCAST, om_mame_start, (WPARAM)output_hwnd, 0);
// register a notifier for output changes
- output_set_notifier(nullptr, notifier_callback, nullptr);
+ machine().output().set_notifier(nullptr, notifier_callback, &machine());
return true;
}
@@ -194,11 +195,11 @@ static LRESULT CALLBACK output_window_proc(HWND wnd, UINT message, WPARAM wparam
// register a new client
if (message == om_mame_register_client)
- return register_client((HWND)wparam, lparam);
+ return register_client(machine,(HWND)wparam, lparam);
// unregister a client
else if (message == om_mame_unregister_client)
- return unregister_client((HWND)wparam, lparam);
+ return unregister_client(machine,(HWND)wparam, lparam);
// get a string for an ID
else if (message == om_mame_get_id_string)
@@ -213,7 +214,7 @@ static LRESULT CALLBACK output_window_proc(HWND wnd, UINT message, WPARAM wparam
// register_client
//============================================================
-static LRESULT register_client(HWND hwnd, LPARAM id)
+static LRESULT register_client(running_machine &machine, HWND hwnd, LPARAM id)
{
registered_client **client;
@@ -223,7 +224,7 @@ static LRESULT register_client(HWND hwnd, LPARAM id)
if ((*client)->id == id)
{
(*client)->hwnd = hwnd;
- output_notify_all(notifier_callback, *client);
+ machine.output().notify_all(notifier_callback, *client);
return 1;
}
@@ -232,9 +233,10 @@ static LRESULT register_client(HWND hwnd, LPARAM id)
(*client)->next = nullptr;
(*client)->id = id;
(*client)->hwnd = hwnd;
+ (*client)->machine = &machine;
// request a notification for all outputs
- output_notify_all(notifier_callback, *client);
+ machine.output().notify_all(notifier_callback, *client);
return 0;
}
@@ -243,7 +245,7 @@ static LRESULT register_client(HWND hwnd, LPARAM id)
// unregister_client
//============================================================
-static LRESULT unregister_client(HWND hwnd, LPARAM id)
+static LRESULT unregister_client(running_machine &machine, HWND hwnd, LPARAM id)
{
registered_client **client;
int found = FALSE;
@@ -278,7 +280,7 @@ static LRESULT send_id_string(running_machine &machine, HWND hwnd, LPARAM id)
if (id == 0)
name = machine.system().name;
else
- name = output_id_to_name(id);
+ name = machine.output().id_to_name(id);
// a NULL name is an empty string
if (name == nullptr)
@@ -308,9 +310,11 @@ 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;
-
// loop over clients and notify them
for (client = clientlist; client != nullptr; client = client->next)
+ {
+ printf("there are clients\n");
if (param == nullptr || param == client)
- PostMessage(client->hwnd, om_mame_update_state, output_name_to_id(outname), value);
+ PostMessage(client->hwnd, om_mame_update_state, client->machine->output().name_to_id(outname), value);
+ }
}
diff --git a/src/osd/windows/video.cpp b/src/osd/windows/video.cpp
index 4f53cb49813..b4f665a2135 100644
--- a/src/osd/windows/video.cpp
+++ b/src/osd/windows/video.cpp
@@ -323,19 +323,19 @@ finishit:
static void check_osd_inputs(running_machine &machine)
{
// check for toggling fullscreen mode
- if (ui_input_pressed(machine, IPT_OSD_1))
+ if (machine.ui_input().pressed(IPT_OSD_1))
winwindow_toggle_full_screen();
// check for taking fullscreen snap
- if (ui_input_pressed(machine, IPT_OSD_2))
+ if (machine.ui_input().pressed(IPT_OSD_2))
winwindow_take_snap();
// check for taking fullscreen video
- if (ui_input_pressed(machine, IPT_OSD_3))
+ if (machine.ui_input().pressed(IPT_OSD_3))
winwindow_take_video();
// check for taking fullscreen video
- if (ui_input_pressed(machine, IPT_OSD_4))
+ if (machine.ui_input().pressed(IPT_OSD_4))
winwindow_toggle_fsfx();
}
diff --git a/src/osd/windows/window.cpp b/src/osd/windows/window.cpp
index 21a264ec8e4..6111859a255 100644
--- a/src/osd/windows/window.cpp
+++ b/src/osd/windows/window.cpp
@@ -1292,17 +1292,17 @@ LRESULT CALLBACK win_window_info::video_window_proc(HWND wnd, UINT message, WPAR
// input events
case WM_MOUSEMOVE:
- ui_input_push_mouse_move_event(window->machine(), window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
+ window->machine().ui_input().push_mouse_move_event(window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
break;
case WM_MOUSELEAVE:
- ui_input_push_mouse_leave_event(window->machine(), window->m_target);
+ window->machine().ui_input().push_mouse_leave_event(window->m_target);
break;
case WM_LBUTTONDOWN:
{
DWORD ticks = GetTickCount();
- ui_input_push_mouse_down_event(window->machine(), window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
+ window->machine().ui_input().push_mouse_down_event(window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
// check for a double-click
if (ticks - window->m_lastclicktime < GetDoubleClickTime() &&
@@ -1310,7 +1310,7 @@ LRESULT CALLBACK win_window_info::video_window_proc(HWND wnd, UINT message, WPAR
GET_Y_LPARAM(lparam) >= window->m_lastclicky - 4 && GET_Y_LPARAM(lparam) <= window->m_lastclicky + 4)
{
window->m_lastclicktime = 0;
- ui_input_push_mouse_double_click_event(window->machine(), window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
+ window->machine().ui_input().push_mouse_double_click_event(window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
}
else
{
@@ -1322,11 +1322,11 @@ LRESULT CALLBACK win_window_info::video_window_proc(HWND wnd, UINT message, WPAR
}
case WM_LBUTTONUP:
- ui_input_push_mouse_up_event(window->machine(), window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
+ window->machine().ui_input().push_mouse_up_event(window->m_target, GET_X_LPARAM(lparam), GET_Y_LPARAM(lparam));
break;
case WM_CHAR:
- ui_input_push_char_event(window->machine(), window->m_target, (unicode_char) wparam);
+ window->machine().ui_input().push_char_event(window->m_target, (unicode_char) wparam);
break;
// pause the system when we start a menu or resize
diff --git a/src/osd/windows/winfile.cpp b/src/osd/windows/winfile.cpp
index da4b0361591..b83f0e041d9 100644
--- a/src/osd/windows/winfile.cpp
+++ b/src/osd/windows/winfile.cpp
@@ -20,6 +20,7 @@
// MAMEOS headers
#include "strconv.h"
#include "winutil.h"
+#include "winutf8.h"
#include "winfile.h"
@@ -45,9 +46,12 @@ extern const char *winfile_ptty_identifier;
// osd_open
//============================================================
-file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64 *filesize)
+file_error osd_open(const char *orig_path, UINT32 openflags, osd_file **file, UINT64 *filesize)
{
file_error filerr = FILERR_NONE;
+ char *path = nullptr;
+
+ osd_subst_env(&path, orig_path);
// convert path to TCHAR
TCHAR *t_path = tstring_from_utf8(path);
@@ -153,6 +157,7 @@ error:
*file = NULL;
}
osd_free(t_path);
+ osd_free(path);
return filerr;
}
diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp
index 27907f49783..2a14281f7fc 100644
--- a/src/osd/windows/winmain.cpp
+++ b/src/osd/windows/winmain.cpp
@@ -593,7 +593,7 @@ void windows_osd_interface::init(running_machine &machine)
for (win_window_info *info = win_window_list; info != NULL; info = info->m_next)
{
strprintf(tempstring, "Orientation(%s)", info->m_monitor->devicename());
- output_set_value(tempstring.c_str(), info->m_targetorient);
+ machine.output().set_value(tempstring.c_str(), info->m_targetorient);
}
// hook up the debugger log
diff --git a/src/osd/windows/winmain.h b/src/osd/windows/winmain.h
index a9f7066bf90..7656ab4ee31 100644
--- a/src/osd/windows/winmain.h
+++ b/src/osd/windows/winmain.h
@@ -156,8 +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_jitter() const { return float_value(WINOPTION_SCANLINE_JITTER); }
- float screen_hum_bar_alpha() const { return float_value(WINOPTION_HUM_BAR_ALPHA); }
+ 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); }
diff --git a/src/osd/windows/winutil.cpp b/src/osd/windows/winutil.cpp
index 3d32bf92e6d..f7d120e6ea2 100644
--- a/src/osd/windows/winutil.cpp
+++ b/src/osd/windows/winutil.cpp
@@ -9,9 +9,11 @@
// standard windows headers
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
+#include <direct.h>
// MAMEOS headers
#include "winutil.h"
+#include "strconv.h"
//============================================================
// win_error_to_file_error
@@ -122,6 +124,18 @@ BOOL win_is_gui_application(void)
return is_gui_frontend;
}
+//============================================================
+// osd_subst_env
+//============================================================
+void osd_subst_env(char **dst, const char *src)
+{
+ TCHAR buffer[MAX_PATH];
+
+ TCHAR *t_src = tstring_from_utf8(src);
+ ExpandEnvironmentStrings(t_src, buffer, ARRAY_LENGTH(buffer));
+ *dst = utf8_from_tstring(buffer);
+}
+
//-------------------------------------------------
// Universal way to get module handle
//-------------------------------------------------
diff --git a/src/tools/chdman.cpp b/src/tools/chdman.cpp
index 88a629b97dd..8a2f8bc5299 100644
--- a/src/tools/chdman.cpp
+++ b/src/tools/chdman.cpp
@@ -775,7 +775,6 @@ static int print_help(const char *argv0, const char *error = nullptr)
printf("Usage:\n");
for (auto & desc : s_commands)
{
-
printf(" %s %s%s\n", argv0, desc.name, desc.description);
}
printf("\nFor help with any command, run:\n");
@@ -1342,6 +1341,7 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_
static void do_info(parameters_t &params)
{
+ bool verbose = params.find(OPTION_VERBOSE) != params.end();
// parse out input files
chd_file input_parent_chd;
chd_file input_chd;
@@ -1370,13 +1370,13 @@ static void do_info(parameters_t &params)
sha1_t overall = input_chd.sha1();
if (overall != sha1_t::null)
{
- printf("SHA1: %s\n", overall.as_string(tempstr));
+ printf("SHA1: %s\n", overall.as_string().c_str());
if (input_chd.version() >= 4)
- printf("Data SHA1: %s\n", input_chd.raw_sha1().as_string(tempstr));
+ printf("Data SHA1: %s\n", input_chd.raw_sha1().as_string().c_str());
}
sha1_t parent = input_chd.parent_sha1();
if (parent != sha1_t::null)
- printf("Parent SHA1: %s\n", parent.as_string(tempstr));
+ printf("Parent SHA1: %s\n", parent.as_string().c_str());
// print out metadata
dynamic_buffer buffer;
@@ -1414,15 +1414,17 @@ static void do_info(parameters_t &params)
printf("Metadata: Tag=%08x Index=%d Length=%d bytes\n", metatag, metaindex, int(buffer.size()));
printf(" ");
- // print up to 60 characters of metadata
- UINT32 count = MIN(60, buffer.size());
+ UINT32 count = buffer.size();
+ // limit output to 60 characters of metadata if not verbose
+ if (!verbose)
+ count = MIN(60, count);
for (int chnum = 0; chnum < count; chnum++)
printf("%c", isprint(UINT8(buffer[chnum])) ? buffer[chnum] : '.');
printf("\n");
}
// print compression stats if verbose
- if (params.find(OPTION_VERBOSE) != params.end())
+ if (verbose)
{
UINT32 compression_types[10] = { 0 };
for (UINT32 hunknum = 0; hunknum < input_chd.hunk_count(); hunknum++)
@@ -1524,9 +1526,8 @@ static void do_verify(parameters_t &params)
// finish up
if (raw_sha1 != computed_sha1)
{
- std::string tempstr;
- fprintf(stderr, "Error: Raw SHA1 in header = %s\n", raw_sha1.as_string(tempstr));
- fprintf(stderr, " actual SHA1 = %s\n", computed_sha1.as_string(tempstr));
+ fprintf(stderr, "Error: Raw SHA1 in header = %s\n", raw_sha1.as_string().c_str());
+ fprintf(stderr, " actual SHA1 = %s\n", computed_sha1.as_string().c_str());
// fix it if requested; this also fixes the overall one so we don't need to do any more
if (params.find(OPTION_FIX) != params.end())
@@ -1547,9 +1548,8 @@ static void do_verify(parameters_t &params)
printf("Overall SHA1 verification successful!\n");
else
{
- std::string tempstr;
- fprintf(stderr, "Error: Overall SHA1 in header = %s\n", input_chd.sha1().as_string(tempstr));
- fprintf(stderr, " actual SHA1 = %s\n", computed_overall_sha1.as_string(tempstr));
+ fprintf(stderr, "Error: Overall SHA1 in header = %s\n", input_chd.sha1().as_string().c_str());
+ fprintf(stderr, " actual SHA1 = %s\n", computed_overall_sha1.as_string().c_str());
// fix it if requested
if (params.find(OPTION_FIX) != params.end())
@@ -2404,14 +2404,13 @@ static void do_extract_cd(parameters_t &params)
// output the metadata about the track to the TOC file
const cdrom_track_info &trackinfo = toc->tracks[tracknum];
- std::string temp;
if (mode == MODE_GDI)
{
- output_track_metadata(mode, output_toc_file, tracknum, trackinfo, core_filename_extract_base(temp, trackbin_name.c_str()).c_str(), discoffs, outputoffs);
+ output_track_metadata(mode, output_toc_file, tracknum, trackinfo, core_filename_extract_base(trackbin_name.c_str()).c_str(), discoffs, outputoffs);
}
else
{
- output_track_metadata(mode, output_toc_file, tracknum, trackinfo, core_filename_extract_base(temp, output_bin_file_str->c_str()).c_str(), discoffs, outputoffs);
+ output_track_metadata(mode, output_toc_file, tracknum, trackinfo, core_filename_extract_base(output_bin_file_str->c_str()).c_str(), discoffs, outputoffs);
}
// If this is bin/cue output and the CHD contains subdata, warn the user and don't include
diff --git a/src/tools/regrep.cpp b/src/tools/regrep.cpp
index 121ebac6865..d533121574a 100644
--- a/src/tools/regrep.cpp
+++ b/src/tools/regrep.cpp
@@ -407,10 +407,10 @@ static int read_summary_log(const char *filename, int index)
}
}
- /* look for the M.A.M.E. header */
- else if (strncmp(linestart, "M.A.M.E. v", 10) == 0)
+ /* look for the MAME header */
+ else if (strncmp(linestart, "MAME v", 6) == 0)
{
- char *start = linestart + 10;
+ char *start = linestart + 6;
char *end;
/* find the end */
diff --git a/src/version.cpp b/src/version.cpp
index ce17119e68e..65db62b5d62 100644
--- a/src/version.cpp
+++ b/src/version.cpp
@@ -8,7 +8,7 @@
***************************************************************************/
-#define BARE_BUILD_VERSION "0.168"
+#define BARE_BUILD_VERSION "0.170"
extern const char bare_build_version[];
extern const char build_version[];